Index: UFCalibrage.dfm
===================================================================
--- UFCalibrage.dfm	(révision 0)
+++ UFCalibrage.dfm	(révision 3)
@@ -0,0 +1,397 @@
+object FCalibrage: TFCalibrage
+  Left = 0
+  Top = 0
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'Calibration'
+  ClientHeight = 368
+  ClientWidth = 504
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  DesignSize = (
+    504
+    368)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object LTitle: TLabel
+    Left = 8
+    Top = 8
+    Width = 488
+    Height = 23
+    Alignment = taCenter
+    Anchors = [akLeft, akTop, akRight]
+    AutoSize = False
+    Caption = 'Summary of the curve-fitting procedure'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -21
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    ExplicitWidth = 584
+  end
+  object LMethod: TLabel
+    Left = 16
+    Top = 52
+    Width = 36
+    Height = 13
+    Caption = 'Method'
+  end
+  object LTime: TLabel
+    Left = 16
+    Top = 76
+    Width = 93
+    Height = 13
+    Caption = 'CPU time (seconds)'
+  end
+  object LInfo: TLabel
+    Left = 8
+    Top = 320
+    Width = 48
+    Height = 13
+    Anchors = [akLeft, akBottom]
+    Caption = 'Warning'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clRed
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    ExplicitTop = 344
+  end
+  object BBOk: TBitBtn
+    Left = 416
+    Top = 336
+    Width = 80
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    NumGlyphs = 2
+    TabOrder = 0
+  end
+  object EMethod: TEdit
+    Left = 176
+    Top = 48
+    Width = 120
+    Height = 21
+    ReadOnly = True
+    TabOrder = 1
+  end
+  object ETime: TEdit
+    Left = 176
+    Top = 72
+    Width = 64
+    Height = 21
+    ReadOnly = True
+    TabOrder = 2
+  end
+  object GBParam: TGroupBox
+    Left = 8
+    Top = 200
+    Width = 488
+    Height = 112
+    Caption = 'Estimated parameters'
+    TabOrder = 3
+    object LCoefEntGest: TLabel
+      Left = 8
+      Top = 36
+      Width = 160
+      Height = 13
+      Caption = 'Maintenance coefficient gestation'
+    end
+    object LCoefEntLact: TLabel
+      Left = 8
+      Top = 60
+      Width = 157
+      Height = 13
+      Caption = 'Maintenance coefficient lactation'
+    end
+    object LFinal: TLabel
+      Left = 320
+      Top = 16
+      Width = 80
+      Height = 13
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'Final value'
+    end
+    object LInitial: TLabel
+      Left = 240
+      Top = 16
+      Width = 80
+      Height = 13
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'Initial value'
+    end
+    object LRatioLipProt: TLabel
+      Left = 8
+      Top = 84
+      Width = 165
+      Height = 13
+      Caption = 'Protein mobilization during lactation'
+    end
+    object LStDev: TLabel
+      Left = 400
+      Top = 16
+      Width = 80
+      Height = 13
+      Hint = 'Standard deviation'
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'SD'
+      ParentShowHint = False
+      ShowHint = True
+    end
+    object ECoefEntGestFinal: TEdit
+      Left = 328
+      Top = 32
+      Width = 64
+      Height = 21
+      ReadOnly = True
+      TabOrder = 0
+    end
+    object ECoefEntGestInitial: TEdit
+      Left = 248
+      Top = 32
+      Width = 64
+      Height = 21
+      ReadOnly = True
+      TabOrder = 1
+    end
+    object ECoefEntGestStDev: TEdit
+      Left = 408
+      Top = 32
+      Width = 64
+      Height = 21
+      Hint = 'Standard deviation'
+      ParentShowHint = False
+      ReadOnly = True
+      ShowHint = True
+      TabOrder = 2
+    end
+    object ECoefEntLactFinal: TEdit
+      Left = 328
+      Top = 56
+      Width = 64
+      Height = 21
+      ReadOnly = True
+      TabOrder = 3
+    end
+    object ECoefEntLactInitial: TEdit
+      Left = 248
+      Top = 56
+      Width = 64
+      Height = 21
+      ReadOnly = True
+      TabOrder = 4
+    end
+    object ECoefEntLactStDev: TEdit
+      Left = 408
+      Top = 56
+      Width = 64
+      Height = 21
+      Hint = 'Standard deviation'
+      ParentShowHint = False
+      ReadOnly = True
+      ShowHint = True
+      TabOrder = 5
+    end
+    object ERatioLipProtFinal: TEdit
+      Left = 328
+      Top = 80
+      Width = 64
+      Height = 21
+      ReadOnly = True
+      TabOrder = 6
+    end
+    object ERatioLipProtInitial: TEdit
+      Left = 248
+      Top = 80
+      Width = 64
+      Height = 21
+      ReadOnly = True
+      TabOrder = 7
+    end
+    object ERatioLipProtStDev: TEdit
+      Left = 408
+      Top = 80
+      Width = 64
+      Height = 21
+      Hint = 'Standard deviation'
+      ParentShowHint = False
+      ReadOnly = True
+      ShowHint = True
+      TabOrder = 8
+    end
+  end
+  object GBVariables: TGroupBox
+    Left = 8
+    Top = 104
+    Width = 488
+    Height = 88
+    Caption = 'Dependent variables'
+    TabOrder = 4
+    object LP2: TLabel
+      Left = 8
+      Top = 60
+      Width = 85
+      Height = 13
+      Caption = 'Backfat thickness'
+    end
+    object LPV: TLabel
+      Left = 8
+      Top = 36
+      Width = 58
+      Height = 13
+      Caption = 'Body weight'
+    end
+    object LR2: TLabel
+      Left = 320
+      Top = 16
+      Width = 80
+      Height = 13
+      Hint = 'Percentage of variation explained'
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'R'#178
+      ParentShowHint = False
+      ShowHint = True
+    end
+    object LRSD: TLabel
+      Left = 240
+      Top = 16
+      Width = 80
+      Height = 13
+      Hint = 'Residual standard deviation'
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'RSD'
+      ParentShowHint = False
+      ShowHint = True
+    end
+    object LVar: TLabel
+      Left = 400
+      Top = 16
+      Width = 80
+      Height = 13
+      Hint = 'Percentage of the weighted residual sum of squares'
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'wRSS'
+      ParentShowHint = False
+      ShowHint = True
+    end
+    object Lw: TLabel
+      Left = 160
+      Top = 16
+      Width = 80
+      Height = 13
+      Hint = 'Statistical weight'
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'Stat. weight'
+      ParentShowHint = False
+      ShowHint = True
+    end
+    object EP2RSD: TEdit
+      Left = 248
+      Top = 56
+      Width = 64
+      Height = 21
+      Hint = 'Residual standard deviation'
+      ParentShowHint = False
+      ReadOnly = True
+      ShowHint = True
+      TabOrder = 0
+    end
+    object EPVRSD: TEdit
+      Left = 248
+      Top = 32
+      Width = 64
+      Height = 21
+      Hint = 'Residual standard deviation'
+      ParentShowHint = False
+      ReadOnly = True
+      ShowHint = True
+      TabOrder = 1
+    end
+    object EPVR2: TEdit
+      Left = 328
+      Top = 32
+      Width = 64
+      Height = 21
+      Hint = 'Percentage of variation explained'
+      ParentShowHint = False
+      ReadOnly = True
+      ShowHint = True
+      TabOrder = 2
+    end
+    object EP2R2: TEdit
+      Left = 328
+      Top = 56
+      Width = 64
+      Height = 21
+      Hint = 'Percentage of variation explained'
+      ParentShowHint = False
+      ReadOnly = True
+      ShowHint = True
+      TabOrder = 3
+    end
+    object EPVVar: TEdit
+      Left = 408
+      Top = 32
+      Width = 64
+      Height = 21
+      Hint = 'Percentage of the weighted residual sum of squares'
+      ParentShowHint = False
+      ReadOnly = True
+      ShowHint = True
+      TabOrder = 4
+    end
+    object EP2Var: TEdit
+      Left = 408
+      Top = 56
+      Width = 64
+      Height = 21
+      Hint = 'Percentage of the weighted residual sum of squares'
+      ParentShowHint = False
+      ReadOnly = True
+      ShowHint = True
+      TabOrder = 5
+    end
+    object EwP2: TEdit
+      Left = 168
+      Top = 56
+      Width = 64
+      Height = 21
+      Hint = 'Statistical weight'
+      ParentShowHint = False
+      ReadOnly = True
+      ShowHint = True
+      TabOrder = 6
+    end
+    object EwPds: TEdit
+      Left = 168
+      Top = 32
+      Width = 64
+      Height = 21
+      Hint = 'Statistical weight'
+      ParentShowHint = False
+      ReadOnly = True
+      ShowHint = True
+      TabOrder = 7
+    end
+  end
+end
Index: UFLogeT.dfm
===================================================================
--- UFLogeT.dfm	(révision 0)
+++ UFLogeT.dfm	(révision 3)
@@ -0,0 +1,1103 @@
+object FLogeT: TFLogeT
+  Left = 165
+  Top = 156
+  HelpContext = 4700
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Housing of sow'
+  ClientHeight = 516
+  ClientWidth = 616
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBLoge: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 616
+    Height = 48
+    Align = alTop
+    Caption = 'Housing'
+    TabOrder = 0
+    object SBAddLoge: TSpeedButton
+      Left = 264
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Add a housing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000800000800000800000800000800000
+        8000008000008000008000008000008000008000008000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBAddLogeClick
+    end
+    object SBDelLoge: TSpeedButton
+      Left = 296
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Delete the current housing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF0000000000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBDelLogeClick
+    end
+    object SBRename: TSpeedButton
+      Left = 328
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Rename the current housing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FF80808080808080
+        8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFF800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFF0000FFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFF0000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FF808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFF800000FFFFFFFFFFFF800000FF
+        FFFFFFFFFF800000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FF80808080808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFF800000800000800000800000800000800000800000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBRenameClick
+    end
+    object SBComment: TSpeedButton
+      Left = 360
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Add additional information to the current housing plan (comment)'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        00000000000000000000000000000000000000FF0000FFFF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000080000080FF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF
+        FF0000FF0000FF0000FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00080
+        80000080000080000080FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF0000FF000080FFFF0000FF0000FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080
+        80808080808080808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0800000800000008080000080000080FF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00
+        00FF000080FFFFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000
+        00800000008080FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0800000800000800000800000800000FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF00
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FF808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000008000008000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+        0000800000800000800000800000000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0800000800000800000800000800000C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFF4080FFFF0000FF
+        0000FF0000FF0000FFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FF808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C000408080000080
+        0000800000800000C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFF4080FF4080FFFF0000FF0000FFFFFFFFFFFFFFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80808080808080
+        8080808080FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0004080004080800000800000C0C0C0C0C0C0C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF0000004080FF4080FF40
+        80FFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C000000000408000408000
+        4080C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080FF00FFFF
+        00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0000000000000C0C0C0C0C0C0C0C0C00000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBCommentClick
+    end
+    object SBSave: TSpeedButton
+      Left = 392
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Save the current housing conditions'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000C0C0C0C0C0C0000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000808080808080000000800000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF8080808080808080808080808080808080808080808080808080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000000000800000000000FF00FFFF00FF000000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF000000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000FF0000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080808080808080FF00
+        FFFF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000800000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00000000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00000000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080000000FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBSaveClick
+    end
+    object SBPrint: TSpeedButton
+      Left = 424
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'View the report for the current housing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+        808080808080808080808080808080808080808080808080808080FF00FFFF00
+        FF808080808080FF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+        00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+        00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+        C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+        FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+        C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+        8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+        808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBPrintClick
+    end
+    object JvEnterAsTab: TJvEnterAsTab
+      Left = 456
+      Top = 16
+      Width = 28
+      Height = 28
+    end
+    object CBLoge: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBLogeChange
+    end
+  end
+  object TC: TTabControl
+    Left = 0
+    Top = 48
+    Width = 616
+    Height = 468
+    Align = alClient
+    HotTrack = True
+    TabOrder = 1
+    Tabs.Strings = (
+      'Gestation'
+      'Lactation'
+      'IWC')
+    TabIndex = 0
+    Visible = False
+    OnChange = TCChange
+    object PLoge: TPanel
+      Left = 4
+      Top = 24
+      Width = 608
+      Height = 440
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object GBRule: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 608
+        Height = 200
+        Hint = 
+          'The first rule starts at the beginning of a simulation and the l' +
+          'ast rule terminates at the end of a simulation'
+        Align = alTop
+        Caption = 'Rules'
+        TabOrder = 0
+        DesignSize = (
+          608
+          200)
+        object LModeFin: TLabel
+          Left = 32
+          Top = 16
+          Width = 101
+          Height = 13
+          Caption = 'Termination condition'
+        end
+        object LNo: TLabel
+          Left = 16
+          Top = 16
+          Width = 7
+          Height = 13
+          Caption = '#'
+        end
+        object SBAddRule: TSpeedButton
+          Left = 16
+          Top = 168
+          Width = 80
+          Height = 24
+          Hint = 'Insert a rule before the selected rule'
+          Caption = 'Insert'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+            8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+            00008000008000000000FF00FFFF00FFFF00FF00000000000000000000000000
+            000000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FF00000000000000000000000000
+            0000008000008000008000008000008000008000008000000000FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+            8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+            00008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBAddRuleClick
+        end
+        object SBDelRule: TSpeedButton
+          Left = 104
+          Top = 168
+          Width = 80
+          Height = 24
+          Hint = 'Delete the selected rule'
+          Caption = 'Delete'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+            8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+            FF00FF000000000080000080000080000080000080000080000080000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF0000000000FF0000FF0000FF00
+            00FF0000FF0000FF0000FF000000000000000000000000000000FF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FF00000000008000008000008000
+            0080000080000080000080000000000000000000000000000000FF00FFFF00FF
+            FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+            8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+            FF00FF000000000080000080000080000080000080000080000080000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBDelRuleClick
+        end
+        object LBRule: TListBox
+          Left = 8
+          Top = 32
+          Width = 592
+          Height = 134
+          Style = lbOwnerDrawFixed
+          Anchors = [akLeft, akTop, akRight]
+          ItemHeight = 13
+          TabOrder = 0
+          OnClick = LBRuleClick
+          OnDrawItem = LBRuleDrawItem
+        end
+      end
+      object GBParam: TGroupBox
+        Left = 0
+        Top = 200
+        Width = 608
+        Height = 240
+        Align = alBottom
+        Caption = 'Parameters of the selected rule'
+        TabOrder = 1
+        object GBEnd: TGroupBox
+          Left = 8
+          Top = 16
+          Width = 424
+          Height = 48
+          Hint = 'Termination conditition of the selected rule'
+          Caption = 'Termination condition'
+          TabOrder = 0
+          object LUnitFin: TLabel
+            Left = 176
+            Top = 20
+            Width = 6
+            Height = 13
+            Caption = 'd'
+          end
+          object PBValFin: TPBNumEdit
+            Left = 136
+            Top = 16
+            Width = 33
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 0
+            NumberFormat = Standard
+            OnChange = PBValFinChange
+            TabOrder = 0
+          end
+          object CBModeFin: TComboBox
+            Left = 8
+            Top = 16
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            Enabled = False
+            ItemHeight = 13
+            ItemIndex = 0
+            TabOrder = 1
+            Text = 'Duration'
+            Items.Strings = (
+              'Duration')
+          end
+        end
+        object GBComport: TGroupBox
+          Left = 8
+          Top = 136
+          Width = 424
+          Height = 96
+          Hint = 'Description of the behavior of the animal'
+          Caption = 'Behavior'
+          TabOrder = 2
+          object LDebout: TLabel
+            Left = 8
+            Top = 20
+            Width = 89
+            Height = 13
+            Caption = 'Standing time (min)'
+          end
+          object SBReset: TSpeedButton
+            Left = 248
+            Top = 16
+            Width = 80
+            Height = 24
+            Hint = 'Re-initialize the behavior to an average activity'
+            Caption = 'Reset'
+            Glyph.Data = {
+              36090000424D3609000000000000360000002800000030000000100000000100
+              18000000000000090000C40E0000C40E00000000000000000000FF00FFFF00FF
+              FF00FF8080808080808080808080808080808080808080808080808080808080
+              80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+              00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+              FF00FF8080808080808080808080808080808080808080808080808080808080
+              80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+              0000000000000000000000000000000000808080FF00FFFF00FFFF00FFFF00FF
+              8080808080808080808080808080808080808080808080808080808080808080
+              80FF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+              0000000000000000000000000000000000808080FF00FFFF00FFFF00FFFF00FF
+              000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+              00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+              00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+              000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+              00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+              0000FF0000FFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+              808080FF00FFFF00FFFF00FFFF00FF808080808080FF00FFFF00FFFF00FF8080
+              80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+              0000800000C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+              000000FFFFFFFF0000FFFFFFFF0000FFFFFFFFFFFFFF0000FFFFFFFFFFFF0000
+              00808080FF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FF808080FF
+              00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+              000000C0C0C0800000C0C0C0800000C0C0C0C0C0C0800000C0C0C0C0C0C00000
+              00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFF0000FF0000FFFFFFFF
+              FFFFFFFFFFFFFFFFFF0000FFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+              808080FF00FF808080808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+              80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0800000800000C0C0C0C0
+              C0C0C0C0C0C0C0C0800000C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+              000000FFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+              00808080FF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080808080FF
+              00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+              000000C0C0C0800000800000800000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+              00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFFFF0000FF0000FF0000FFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+              808080FF00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FF8080
+              80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+              C0C0800000800000800000C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+              000000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FFFFFF0000
+              00808080FF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF
+              00FFFF00FF808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+              000000C0C0C0800000C0C0C0C0C0C0C0C0C0C0C0C0800000800000C0C0C00000
+              00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFF0000FFFFFFFF
+              FFFFFF0000FFFFFFFF0000FFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+              808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080FF00FF8080
+              80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0800000C0C0C0C0
+              C0C0800000C0C0C0800000C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+              000000FFFFFFFFFFFFFFFFFFFF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+              00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+              8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+              000000C0C0C0C0C0C0C0C0C0800000800000C0C0C0C0C0C0C0C0C0C0C0C00000
+              00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+              808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+              80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+              C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+              000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000
+              00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+              00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+              000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000000000000000000000
+              00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+              808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+              FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+              C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+              000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+              FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+              00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+              000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+              FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+              0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+              808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+              FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+              0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+            NumGlyphs = 3
+            ParentShowHint = False
+            ShowHint = True
+            OnClick = SBResetClick
+          end
+          object PBAct: TPBSuperSpin
+            Left = 128
+            Top = 16
+            Width = 48
+            Height = 22
+            Cursor = crDefault
+            Alignment = taRightJustify
+            Decimals = 0
+            MaxValue = 360.000000000000000000
+            MinValue = 120.000000000000000000
+            NumberFormat = Standard
+            OnChange = PBActChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            Increment = 1.000000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+          object PAct: TPanel
+            Left = 8
+            Top = 48
+            Width = 240
+            Height = 40
+            BevelOuter = bvNone
+            TabOrder = 1
+            object LActive: TLabel
+              Left = 192
+              Top = 24
+              Width = 30
+              Height = 13
+              Caption = 'Active'
+            end
+            object LCalme: TLabel
+              Left = 8
+              Top = 24
+              Width = 23
+              Height = 13
+              Caption = 'Calm'
+            end
+            object LMoyenne: TLabel
+              Left = 96
+              Top = 24
+              Width = 27
+              Height = 13
+              Caption = 'Mean'
+            end
+            object TBAct: TTrackBar
+              Left = 16
+              Top = 0
+              Width = 200
+              Height = 22
+              BorderWidth = 1
+              LineSize = 15
+              Max = 360
+              Min = 120
+              PageSize = 60
+              Frequency = 60
+              Position = 240
+              SelEnd = 240
+              TabOrder = 0
+              ThumbLength = 12
+              OnChange = TBActChange
+            end
+          end
+        end
+        object GBLogement: TGroupBox
+          Left = 8
+          Top = 64
+          Width = 424
+          Height = 72
+          Hint = 'Description of the housing'
+          Caption = 'Housing'
+          TabOrder = 1
+          object LTyp: TLabel
+            Left = 8
+            Top = 20
+            Width = 24
+            Height = 13
+            Caption = 'Type'
+          end
+          object LSol: TLabel
+            Left = 8
+            Top = 44
+            Width = 23
+            Height = 13
+            Caption = 'Floor'
+          end
+          object LTemp: TLabel
+            Left = 248
+            Top = 20
+            Width = 60
+            Height = 13
+            Caption = 'Temperature'
+          end
+          object CBTyp: TComboBox
+            Left = 88
+            Top = 16
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 13
+            TabOrder = 0
+            OnChange = CBTypChange
+            Items.Strings = (
+              'Individual'
+              'In groups'
+              'Out-doors')
+          end
+          object CBSol: TComboBox
+            Left = 88
+            Top = 40
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 13
+            TabOrder = 1
+            OnChange = CBSolChange
+            Items.Strings = (
+              'Slatted floor'
+              'Straw-bedded')
+          end
+          object PBTemp: TPBSuperSpin
+            Left = 368
+            Top = 16
+            Width = 48
+            Height = 22
+            Cursor = crDefault
+            Alignment = taRightJustify
+            Decimals = 0
+            NumberFormat = Standard
+            OnChange = PBTempChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 2
+            Increment = 1.000000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+        end
+      end
+    end
+  end
+end
Index: UFRapSimulP.dfm
===================================================================
--- UFRapSimulP.dfm	(révision 0)
+++ UFRapSimulP.dfm	(révision 3)
@@ -0,0 +1,2351 @@
+object FRapSimulP: TFRapSimulP
+  Left = 0
+  Top = 80
+  Caption = 'Simulation report for growing pigs'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE'
+      'QRSTRINGSBAND1')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Simulation for growing pigs'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 532
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        1407.583333333333000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QREFeed: TQRExpr
+        Left = 363
+        Top = 452
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          960.437500000000000000
+          1195.916666666667000000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREWastage: TQRExpr
+        Left = -118
+        Top = 432
+        Width = 518
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -312.208333333333300000
+          1143.000000000000000000
+          1370.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._Conso_ = 0, 0, (1 - CDSRapport._Ingere_ / CDSRapp' +
+          'ort._Conso_) * 100)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELD: TQRExpr
+        Left = -188
+        Top = 372
+        Width = 588
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -497.416666666666700000
+          984.250000000000000000
+          1555.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._lFin_ - CDSRapport._lDeb_) * 1000 / (CDSRapport._Ag' +
+          'eFin_ - CDSRapport._AgeDeb_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPD: TQRExpr
+        Left = -196
+        Top = 352
+        Width = 596
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -518.583333333333300000
+          931.333333333333300000
+          1576.916666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._pFin_ - CDSRapport._pDeb_) * 1000 / (CDSRapport._Ag' +
+          'eFin_ - CDSRapport._AgeDeb_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAliMoy: TQRExpr
+        Left = -68
+        Top = 412
+        Width = 468
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -179.916666666666700000
+          1090.083333333333000000
+          1238.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._Conso_ * 1000 / (CDSRapport._AgeFin_ - CDSRapport._A' +
+          'geDeb_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREGMQ: TQRExpr
+        Left = -248
+        Top = 332
+        Width = 648
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -656.166666666666700000
+          878.416666666666700000
+          1714.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._PoidsFin_ - CDSRapport._PoidsDeb_) * 1000 / (CDSRap' +
+          'port._AgeFin_ - CDSRapport._AgeDeb_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDuree: TQRExpr
+        Left = 120
+        Top = 272
+        Width = 280
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          317.500000000000000000
+          719.666666666666700000
+          740.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeFin_ - CDSRapport._AgeDeb_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCaract: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 116
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          254.000000000000000000
+          306.916666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Characteristics'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLPerf: TQRLabel
+        Left = 40
+        Top = 200
+        Width = 151
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          529.166666666666700000
+          399.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Global performance'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLSimul: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLProfil: TQRLabel
+        Left = 40
+        Top = 128
+        Width = 91
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          338.666666666666700000
+          240.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Animal profile'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSeqAli: TQRLabel
+        Left = 40
+        Top = 148
+        Width = 130
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          391.583333333333300000
+          343.958333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed sequence plan'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLRation: TQRLabel
+        Left = 40
+        Top = 168
+        Width = 126
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          444.500000000000000000
+          333.375000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed rationing plan'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPoidsDeb: TQRLabel
+        Left = 40
+        Top = 292
+        Width = 119
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          772.583333333333300000
+          314.854166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial body weight'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPoidsFin: TQRLabel
+        Left = 40
+        Top = 312
+        Width = 115
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          825.500000000000000000
+          304.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Final body weight'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSimul: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 48
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          127.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Simul_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTProfil: TQRDBText
+        Left = 264
+        Top = 128
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          338.666666666666700000
+          116.416666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Profil_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSeqAli: TQRDBText
+        Left = 264
+        Top = 148
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          391.583333333333300000
+          140.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_SeqAli_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRation: TQRDBText
+        Left = 264
+        Top = 168
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          444.500000000000000000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ration_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsDeb: TQRDBText
+        Left = 329
+        Top = 292
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          870.479166666666700000
+          772.583333333333300000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsDeb_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsFin: TQRDBText
+        Left = 334
+        Top = 312
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          883.708333333333300000
+          825.500000000000000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsFin_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAgeDeb: TQRLabel
+        Left = 40
+        Top = 232
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          613.833333333333300000
+          171.979166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial age'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAgeFin: TQRLabel
+        Left = 40
+        Top = 252
+        Width = 61
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          666.750000000000000000
+          161.395833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Final age'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeDeb: TQRDBText
+        Left = 339
+        Top = 232
+        Width = 61
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          896.937500000000000000
+          613.833333333333300000
+          161.395833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeDeb_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeFin: TQRDBText
+        Left = 344
+        Top = 252
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          910.166666666666700000
+          666.750000000000000000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeFin_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLDuree: TQRLabel
+        Left = 40
+        Top = 272
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          719.666666666666700000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Duration'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLGMQ: TQRLabel
+        Left = 40
+        Top = 332
+        Width = 121
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          878.416666666666700000
+          320.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average daily gain'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPD: TQRLabel
+        Left = 40
+        Top = 352
+        Width = 173
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          931.333333333333300000
+          457.729166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average protein deposition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLD: TQRLabel
+        Left = 40
+        Top = 372
+        Width = 156
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          984.250000000000000000
+          412.750000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average lipid deposition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliTot: TQRLabel
+        Left = 40
+        Top = 392
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1037.166666666667000000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total feed usage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliMoy: TQRLabel
+        Left = 40
+        Top = 412
+        Width = 163
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1090.083333333333000000
+          431.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average daily feed usage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliTot: TQRDBText
+        Left = 348
+        Top = 392
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          920.750000000000000000
+          1037.166666666667000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Conso_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLWastage: TQRLabel
+        Left = 40
+        Top = 432
+        Width = 90
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1143.000000000000000000
+          238.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed wastage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTMP: TQRLabel
+        Left = 40
+        Top = 492
+        Width = 148
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1301.750000000000000000
+          391.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lean meat at slaughter'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMP: TQRDBText
+        Left = 358
+        Top = 492
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          947.208333333333300000
+          1301.750000000000000000
+          111.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMP_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP2: TQRLabel
+        Left = 40
+        Top = 472
+        Width = 189
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1248.833333333333000000
+          500.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Backfat thickness at slaughter'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2: TQRDBText
+        Left = 369
+        Top = 472
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          976.312500000000000000
+          1248.833333333333000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRLRC: TQRLabel
+        Left = 40
+        Top = 512
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1354.666666666667000000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Dressing'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC: TQRDBText
+        Left = 367
+        Top = 512
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          971.020833333333300000
+          1354.666666666667000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLFeed: TQRLabel
+        Left = 40
+        Top = 452
+        Width = 98
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1195.916666666667000000
+          259.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed efficiency'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 650
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 27
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          21.166666666666670000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 383
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          63.500000000000000000
+          1013.354166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1711.854166666667000000
+          63.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFSimul: TStringField
+      FieldName = '_Simul_'
+      Size = 25
+    end
+    object SFProfil: TStringField
+      FieldName = '_Profil_'
+      Size = 25
+    end
+    object SFSeqAli: TStringField
+      FieldName = '_SeqAli_'
+      Size = 25
+    end
+    object SFRation: TStringField
+      FieldName = '_Ration_'
+      Size = 25
+    end
+    object IFAgeDeb: TIntegerField
+      FieldName = '_AgeDeb_'
+    end
+    object IFAgeFin: TIntegerField
+      FieldName = '_AgeFin_'
+    end
+    object FFPoidsDeb: TFloatField
+      FieldName = '_PoidsDeb_'
+    end
+    object FFPoidsFin: TFloatField
+      FieldName = '_PoidsFin_'
+    end
+    object FFpDeb: TFloatField
+      FieldName = '_pDeb_'
+    end
+    object FFpFin: TFloatField
+      FieldName = '_pFin_'
+    end
+    object FFlDeb: TFloatField
+      FieldName = '_lDeb_'
+    end
+    object FFlFin: TFloatField
+      FieldName = '_lFin_'
+    end
+    object FFConso: TFloatField
+      FieldName = '_Conso_'
+    end
+    object FFIngere: TFloatField
+      FieldName = '_Ingere_'
+    end
+    object FFP2: TFloatField
+      FieldName = '_P2_'
+    end
+    object FFTMP: TFloatField
+      FieldName = '_TMP_'
+    end
+    object FFRC: TFloatField
+      FieldName = '_RC_'
+    end
+  end
+end
Index: UFRapSeqAliP.pas
===================================================================
--- UFRapSeqAliP.pas	(révision 0)
+++ UFRapSeqAliP.pas	(révision 3)
@@ -0,0 +1,114 @@
+unit UFRapSeqAliP ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapSeqAliP = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    CDSRapport: TClientDataSet;
+    SFSeqAli: TStringField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLSeqAli: TQRLabel;
+    QRDBTSeqAli: TQRDBText;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    DSRelation: TDataSource;
+    CDSRegles: TClientDataSet;
+    SFIndex: TStringField;
+    IFNo: TIntegerField;
+    SFModeFin: TStringField;
+    SFAliment: TStringField;
+    QRLRegles: TQRLabel;
+    QRLNo: TQRLabel;
+    QRDBTNo: TQRDBText;
+    QRShape2: TQRShape;
+    QRLModeFin: TQRLabel;
+    QRDBTModeFin: TQRDBText;
+    QRLAliment: TQRLabel;
+    QRDBTAliment: TQRDBText;
+    QRSDRegles: TQRSubDetail;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapSeqAliP: TFRapSeqAliP;
+
+implementation
+
+uses
+  UStrings, UUtil, UFSeqAliP, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapSeqAliP }
+
+procedure TFRapSeqAliP.FormCreate(Sender: TObject);
+var
+  regle : integer ;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_SeqAli_'] := FSeqAliP.CBSeqAli.Text;
+    Post;
+  end ;
+  QRMMemo.Lines.Add(FSeqAliP.CBSeqAli.Hint);
+  with CDSRegles do
+  begin
+    CreateDataSet;
+    for regle := 1 to PSeqAliP.NbRule do
+    begin
+      Append;
+      FieldValues['_SeqAli_'] := FSeqAliP.CBSeqAli.Text;
+      FieldValues['_No_'] := regle;
+      FieldValues['_ModeFin_'] := FSeqAliP.StrModeFin(regle);
+      FieldValues['_Aliment_'] := FSeqAliP.StrAliment(regle);
+      Post;
+    end ;
+  end ;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFRapSimulT.dfm
===================================================================
--- UFRapSimulT.dfm	(révision 0)
+++ UFRapSimulT.dfm	(révision 3)
@@ -0,0 +1,4858 @@
+object FRapSimulT: TFRapSimulT
+  Left = 0
+  Top = 80
+  Caption = 'Simulation report for sows'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Simulation report for sows'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRShape3: TQRShape
+        Left = 480
+        Top = 36
+        Width = 200
+        Height = 28
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          74.083333333333300000
+          1270.000000000000000000
+          95.250000000000000000
+          529.166666666667000000)
+        Pen.Width = 4
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRDBTCycle: TQRDBText
+        Left = 578
+        Top = 40
+        Width = 62
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1529.291666666667000000
+          105.833333333333300000
+          164.041666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Cycle_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRExpr32: TQRExpr
+        Left = -131
+        Top = 332
+        Width = 811
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -346.604166666666700000
+          878.416666666666700000
+          2145.770833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeLact_ > 0, CDSRapport._Sevres_ * (CDSRapport' +
+          '._PdsSev_ - CDSRapport._PdsNais_) / CDSRapport._DureeLact_, 0)'
+        Mask = '0.000;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr33: TQRExpr
+        Left = -50
+        Top = 332
+        Width = 650
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -132.291666666666700000
+          878.416666666666700000
+          1719.791666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeLact_ > 0, CDSRapport._Sevres_ * (CDSRapport' +
+          '._PdsSev_ - CDSRapport._PdsNais_), 0)'
+        Mask = '0.00;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr31: TQRExpr
+        Left = 203
+        Top = 332
+        Width = 277
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          537.104166666666700000
+          878.416666666666700000
+          732.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Sevres_ * CDSRapport._PdsSev_'
+        Mask = '0.0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr34: TQRExpr
+        Left = 72
+        Top = 332
+        Width = 288
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          190.500000000000000000
+          878.416666666666700000
+          762.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._NesVifs_ * CDSRapport._PdsNais_'
+        Mask = '0.0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCaract: TQRLabel
+        Left = 40
+        Top = 40
+        Width = 116
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          105.833333333333300000
+          306.916666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Characteristics'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLSimul: TQRLabel
+        Left = 40
+        Top = 72
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          190.500000000000000000
+          185.208333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Simulation'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLProfil: TQRLabel
+        Left = 40
+        Top = 92
+        Width = 91
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          243.416666666666700000
+          240.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Animal profile'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSimul: TQRDBText
+        Left = 264
+        Top = 72
+        Width = 48
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          190.500000000000000000
+          127.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Simul_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTProfil: TQRDBText
+        Left = 264
+        Top = 92
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          243.416666666666700000
+          116.416666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Profil_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel1: TQRLabel
+        Left = 40
+        Top = 112
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          296.333333333333300000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Housing'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLoge: TQRDBText
+        Left = 264
+        Top = 112
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          296.333333333333300000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Loge_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLInit: TQRLabel
+        Left = 40
+        Top = 132
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          349.250000000000000000
+          211.666666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initialization'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTInit: TQRDBText
+        Left = 264
+        Top = 132
+        Width = 32
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          349.250000000000000000
+          84.666666666666670000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Init_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr30: TQRExpr
+        Left = -4
+        Top = 332
+        Width = 284
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -10.583333333333330000
+          878.416666666666700000
+          751.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._NesTot_ * CDSRapport._PdsNais_'
+        Mask = '0.0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr29: TQRExpr
+        Left = -47
+        Top = 748
+        Width = 487
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          -124.354166666667000000
+          1979.083333333330000000
+          1288.520833333330000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeLact_ > 0, CDSRapport._Lait_ / CDSRapport._D' +
+          'ureeLact_, 0)'
+        Mask = '0.00;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr27: TQRExpr
+        Left = 11
+        Top = 312
+        Width = 669
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          29.104166666666670000
+          825.500000000000000000
+          1770.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeLact_ > 0, (CDSRapport._PdsSev_ - CDSRapport' +
+          '._PdsNais_) / CDSRapport._DureeLact_, 0)'
+        Mask = '0.000;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr28: TQRExpr
+        Left = 100
+        Top = 312
+        Width = 500
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          264.583333333333300000
+          825.500000000000000000
+          1322.916666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeLact_ > 0, CDSRapport._PdsSev_ - CDSRapport.' +
+          '_PdsNais_, 0)'
+        Mask = '0.00;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr26: TQRExpr
+        Left = -267
+        Top = 728
+        Width = 947
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          -706.437500000000000000
+          1926.166666666670000000
+          2505.604166666670000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._LDGest_ + CDSRapport._LDLact_ + CDSRapport._LDISSF_' +
+          ') / (CDSRapport._DureeGest_ + CDSRapport._DureeLact_ + CDSRappor' +
+          't._DureeISSF_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr22: TQRExpr
+        Left = -273
+        Top = 708
+        Width = 953
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          -722.312500000000000000
+          1873.250000000000000000
+          2521.479166666670000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._PDGest_ + CDSRapport._PDLact_ + CDSRapport._PDISSF_' +
+          ') / (CDSRapport._DureeGest_ + CDSRapport._DureeLact_ + CDSRappor' +
+          't._DureeISSF_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr23: TQRExpr
+        Left = 41
+        Top = 728
+        Width = 519
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          108.479166666667000000
+          1926.166666666670000000
+          1373.187500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeISSF_ > 0, CDSRapport._LDISSF_ / CDSRapport.' +
+          '_DureeISSF_, 0)'
+        Mask = '0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr19: TQRExpr
+        Left = 39
+        Top = 708
+        Width = 521
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          103.187500000000000000
+          1873.250000000000000000
+          1378.479166666670000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeISSF_ > 0, CDSRapport._PDISSF_ / CDSRapport.' +
+          '_DureeISSF_, 0)'
+        Mask = '0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr24: TQRExpr
+        Left = -67
+        Top = 728
+        Width = 507
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          -177.270833333333000000
+          1926.166666666670000000
+          1341.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeLact_ > 0, CDSRapport._LDLact_ / CDSRapport.' +
+          '_DureeLact_, 0)'
+        Mask = '0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr20: TQRExpr
+        Left = -69
+        Top = 708
+        Width = 509
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          -182.562500000000000000
+          1873.250000000000000000
+          1346.729166666670000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeLact_ > 0, CDSRapport._PDLact_ / CDSRapport.' +
+          '_DureeLact_, 0)'
+        Mask = '0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr25: TQRExpr
+        Left = -196
+        Top = 728
+        Width = 516
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          -518.583333333333000000
+          1926.166666666670000000
+          1365.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeGest_ > 0, CDSRapport._LDGest_ / CDSRapport.' +
+          '_DureeGest_, 0)'
+        Mask = '0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr21: TQRExpr
+        Left = -198
+        Top = 708
+        Width = 518
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          -523.875000000000000000
+          1873.250000000000000000
+          1370.541666666670000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeGest_ > 0, CDSRapport._PDGest_ / CDSRapport.' +
+          '_DureeGest_, 0)'
+        Mask = '0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr18: TQRExpr
+        Left = -138
+        Top = 568
+        Width = 818
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -365.125000000000000000
+          1502.833333333333000000
+          2164.291666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeGest_ > 0, CDSRapport._P2Gest_, IF(CDSRappor' +
+          't._DureeLact_ > 0, CDSRapport._P2Lact_, CDSRapport._P2ISSF_))'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr16: TQRExpr
+        Left = -680
+        Top = 488
+        Width = 1360
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -1799.166666666667000000
+          1291.166666666667000000
+          3598.333333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeISSF_ > 0, CDSRapport._PVISSF_ + CDSRapport.' +
+          '_GainTotISSF_, IF(CDSRapport._DureeLact_ > 0, CDSRapport._PVLact' +
+          '_ + CDSRapport._GainTotLact_, CDSRapport._PVGest_ + CDSRapport._' +
+          'GainTotGest_))'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr17: TQRExpr
+        Left = -647
+        Top = 588
+        Width = 1327
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -1711.854166666667000000
+          1555.750000000000000000
+          3511.020833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeISSF_ > 0, CDSRapport._P2ISSF_ + CDSRapport.' +
+          '_P2VarISSF_, IF(CDSRapport._DureeLact_ > 0, CDSRapport._P2Lact_ ' +
+          '+ CDSRapport._P2VarLact_, CDSRapport._P2Gest_ + CDSRapport._P2Va' +
+          'rGest_))'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr15: TQRExpr
+        Left = -144
+        Top = 468
+        Width = 824
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -381.000000000000000000
+          1238.250000000000000000
+          2180.166666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeGest_ > 0, CDSRapport._PVGest_, IF(CDSRappor' +
+          't._DureeLact_ > 0, CDSRapport._PVLact_, CDSRapport._PVISSF_))'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr14: TQRExpr
+        Left = -330
+        Top = 668
+        Width = 1010
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -873.125000000000000000
+          1767.416666666667000000
+          2672.291666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._ConsoGest_ + CDSRapport._ConsoLact_ + CDSRapport._C' +
+          'onsoISSF_) / (CDSRapport._DureeGest_ + CDSRapport._DureeLact_ + ' +
+          'CDSRapport._DureeISSF_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr10: TQRExpr
+        Left = 20
+        Top = 668
+        Width = 540
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          52.916666666666670000
+          1767.416666666667000000
+          1428.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeISSF_ > 0, CDSRapport._ConsoISSF_ / CDSRappo' +
+          'rt._DureeISSF_, 0)'
+        Mask = '0.00;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr11: TQRExpr
+        Left = -88
+        Top = 668
+        Width = 528
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -232.833333333333300000
+          1767.416666666667000000
+          1397.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeLact_ > 0, CDSRapport._ConsoLact_ / CDSRappo' +
+          'rt._DureeLact_, 0)'
+        Mask = '0.00;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr12: TQRExpr
+        Left = -217
+        Top = 668
+        Width = 537
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -574.145833333333300000
+          1767.416666666667000000
+          1420.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._DureeGest_ > 0, CDSRapport._ConsoGest_ / CDSRappo' +
+          'rt._DureeGest_, 0)'
+        Mask = '0.00;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr13: TQRExpr
+        Left = 184
+        Top = 648
+        Width = 496
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          486.833333333333300000
+          1714.500000000000000000
+          1312.333333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._ConsoGest_ + CDSRapport._ConsoLact_ + CDSRapport._Co' +
+          'nsoISSF_'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr6: TQRExpr
+        Left = 187
+        Top = 608
+        Width = 493
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          494.770833333333300000
+          1608.666666666667000000
+          1304.395833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._P2VarGest_ + CDSRapport._P2VarLact_ + CDSRapport._P2' +
+          'VarISSF_'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr9: TQRExpr
+        Left = 253
+        Top = 588
+        Width = 307
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          669.395833333333300000
+          1555.750000000000000000
+          812.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._P2ISSF_ + CDSRapport._P2VarISSF_'
+        Mask = '0.0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr8: TQRExpr
+        Left = 141
+        Top = 588
+        Width = 299
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          373.062500000000000000
+          1555.750000000000000000
+          791.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._P2Lact_ + CDSRapport._P2VarLact_'
+        Mask = '0.0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr7: TQRExpr
+        Left = 15
+        Top = 588
+        Width = 305
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          39.687500000000000000
+          1555.750000000000000000
+          806.979166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._P2Gest_ + CDSRapport._P2VarGest_'
+        Mask = '0.0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr5: TQRExpr
+        Left = 242
+        Top = 488
+        Width = 318
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          640.291666666666700000
+          1291.166666666667000000
+          841.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PVISSF_ + CDSRapport._GainTotISSF_'
+        Mask = '0.0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr4: TQRExpr
+        Left = 130
+        Top = 488
+        Width = 310
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          343.958333333333300000
+          1291.166666666667000000
+          820.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PVLact_ + CDSRapport._GainTotLact_'
+        Mask = '0.0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr1: TQRExpr
+        Left = 4
+        Top = 488
+        Width = 316
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          10.583333333333330000
+          1291.166666666667000000
+          836.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PVGest_ + CDSRapport._GainTotGest_'
+        Mask = '0.0;;#'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr3: TQRExpr
+        Left = 154
+        Top = 528
+        Width = 526
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          407.458333333333300000
+          1397.000000000000000000
+          1391.708333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._GainNetGest_ + CDSRapport._GainNetLact_ + CDSRapport' +
+          '._GainNetISSF_'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRExpr2: TQRExpr
+        Left = 160
+        Top = 508
+        Width = 520
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          423.333333333333300000
+          1344.083333333333000000
+          1375.833333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._GainTotGest_ + CDSRapport._GainTotLact_ + CDSRapport' +
+          '._GainTotISSF_'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAge: TQRExpr
+        Left = 193
+        Top = 428
+        Width = 487
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          510.645833333333300000
+          1132.416666666667000000
+          1288.520833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._DureeGest_ + CDSRapport._DureeLact_ + CDSRapport._Du' +
+          'reeISSF_'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSeqAli: TQRLabel
+        Left = 40
+        Top = 152
+        Width = 130
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          402.166666666666700000
+          343.958333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed sequence plan'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLRation: TQRLabel
+        Left = 40
+        Top = 172
+        Width = 126
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          455.083333333333300000
+          333.375000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed rationing plan'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSeqAli: TQRDBText
+        Left = 264
+        Top = 152
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          402.166666666666700000
+          140.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_SeqAli_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRation: TQRDBText
+        Left = 264
+        Top = 172
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          455.083333333333300000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ration_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCycle: TQRLabel
+        Left = 520
+        Top = 40
+        Width = 58
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1375.833333333333000000
+          105.833333333333300000
+          153.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'LITTER'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLSaillie: TQRLabel
+        Left = 259
+        Top = 404
+        Width = 61
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          685.270833333333300000
+          1068.916666666667000000
+          161.395833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Gestation'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPoids: TQRLabel
+        Left = 80
+        Top = 468
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1238.250000000000000000
+          97.895833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'initial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMiseBas: TQRLabel
+        Left = 380
+        Top = 404
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1005.416666666667000000
+          1068.916666666667000000
+          158.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lactation'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP2: TQRLabel
+        Left = 80
+        Top = 568
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1502.833333333333000000
+          97.895833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'initial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAge: TQRLabel
+        Left = 40
+        Top = 428
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1132.416666666667000000
+          198.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Duration (d)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLVariation: TQRLabel
+        Left = 533
+        Top = 404
+        Width = 27
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1410.229166666667000000
+          1068.916666666667000000
+          71.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'IWC'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel2: TQRLabel
+        Left = 627
+        Top = 404
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1658.937500000000000000
+          1068.916666666667000000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Balance'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel3: TQRLabel
+        Left = 80
+        Top = 488
+        Width = 29
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1291.166666666667000000
+          76.729166666666670000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'final'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel4: TQRLabel
+        Left = 80
+        Top = 508
+        Width = 61
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1344.083333333333000000
+          161.395833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'total gain'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel5: TQRLabel
+        Left = 80
+        Top = 528
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1397.000000000000000000
+          140.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'net gain'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel6: TQRLabel
+        Left = 80
+        Top = 608
+        Width = 29
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1608.666666666667000000
+          76.729166666666670000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'gain'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel7: TQRLabel
+        Left = 80
+        Top = 588
+        Width = 29
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1555.750000000000000000
+          76.729166666666670000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'final'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSail: TQRDBText
+        Left = 243
+        Top = 428
+        Width = 77
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          642.937500000000000000
+          1132.416666666667000000
+          203.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeGest_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText1: TQRDBText
+        Left = 366
+        Top = 428
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          968.375000000000000000
+          1132.416666666667000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText2: TQRDBText
+        Left = 482
+        Top = 428
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1275.291666666667000000
+          1132.416666666667000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeISSF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText3: TQRDBText
+        Left = 259
+        Top = 468
+        Width = 61
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          685.270833333333300000
+          1238.250000000000000000
+          161.395833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVGest_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText4: TQRDBText
+        Left = 382
+        Top = 468
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1010.708333333333000000
+          1238.250000000000000000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVLact_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText5: TQRDBText
+        Left = 498
+        Top = 468
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1317.625000000000000000
+          1238.250000000000000000
+          164.041666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVISSF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText6: TQRDBText
+        Left = 232
+        Top = 508
+        Width = 88
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          613.833333333333300000
+          1344.083333333333000000
+          232.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GainTotGest_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText7: TQRDBText
+        Left = 355
+        Top = 508
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          939.270833333333300000
+          1344.083333333333000000
+          224.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GainTotLact_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText8: TQRDBText
+        Left = 471
+        Top = 508
+        Width = 89
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1246.187500000000000000
+          1344.083333333333000000
+          235.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GainTotISSF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText9: TQRDBText
+        Left = 230
+        Top = 528
+        Width = 90
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          608.541666666666700000
+          1397.000000000000000000
+          238.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GainNetGest_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText10: TQRDBText
+        Left = 353
+        Top = 528
+        Width = 87
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          933.979166666666700000
+          1397.000000000000000000
+          230.187500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GainNetLact_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText11: TQRDBText
+        Left = 469
+        Top = 528
+        Width = 91
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1240.895833333333000000
+          1397.000000000000000000
+          240.770833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GainNetISSF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText12: TQRDBText
+        Left = 261
+        Top = 568
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          690.562500000000000000
+          1502.833333333333000000
+          156.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2Gest_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText13: TQRDBText
+        Left = 384
+        Top = 568
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1016.000000000000000000
+          1502.833333333333000000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2Lact_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText14: TQRDBText
+        Left = 500
+        Top = 568
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1322.916666666667000000
+          1502.833333333333000000
+          158.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2ISSF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText15: TQRDBText
+        Left = 241
+        Top = 608
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          637.645833333333300000
+          1608.666666666667000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2VarGest_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText16: TQRDBText
+        Left = 364
+        Top = 608
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          963.083333333333300000
+          1608.666666666667000000
+          201.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2VarLact_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText17: TQRDBText
+        Left = 480
+        Top = 608
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1270.000000000000000000
+          1608.666666666667000000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2VarISSF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLIngere: TQRLabel
+        Left = 40
+        Top = 628
+        Width = 103
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1661.583333333333000000
+          272.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed intake (kg)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliTot: TQRLabel
+        Left = 80
+        Top = 648
+        Width = 29
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1714.500000000000000000
+          76.729166666666670000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'total'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliMoy: TQRLabel
+        Left = 80
+        Top = 668
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1767.416666666667000000
+          129.645833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'per day'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText18: TQRDBText
+        Left = 240
+        Top = 648
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          1714.500000000000000000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ConsoGest_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText19: TQRDBText
+        Left = 363
+        Top = 648
+        Width = 77
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          960.437500000000000000
+          1714.500000000000000000
+          203.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ConsoLact_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText20: TQRDBText
+        Left = 479
+        Top = 648
+        Width = 81
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1267.354166666667000000
+          1714.500000000000000000
+          214.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ConsoISSF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel8: TQRLabel
+        Left = 80
+        Top = 708
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          211.666666666667000000
+          1873.250000000000000000
+          158.750000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'protein'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel9: TQRLabel
+        Left = 80
+        Top = 728
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          211.666666666667000000
+          1926.166666666670000000
+          113.770833333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'lipid'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel10: TQRLabel
+        Left = 200
+        Top = 244
+        Width = 160
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          529.166666666667000000
+          645.583333333333000000
+          423.333333333333000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Birth'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel11: TQRLabel
+        Left = 422
+        Top = 244
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1116.541666666667000000
+          645.583333333333300000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Weaning'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel12: TQRLabel
+        Left = 520
+        Top = 244
+        Width = 160
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1375.833333333330000000
+          645.583333333333000000
+          423.333333333333000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Gain'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel14: TQRLabel
+        Left = 40
+        Top = 312
+        Width = 159
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          825.500000000000000000
+          420.687500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Weight of the piglets (kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel15: TQRLabel
+        Left = 40
+        Top = 292
+        Width = 113
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          772.583333333333300000
+          298.979166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Number of piglets'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel16: TQRLabel
+        Left = 40
+        Top = 332
+        Width = 108
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          878.416666666666700000
+          285.750000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Litter weight (kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel17: TQRLabel
+        Left = 40
+        Top = 748
+        Width = 154
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1979.083333333330000000
+          407.458333333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Milk production (kg/d)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText21: TQRDBText
+        Left = 224
+        Top = 292
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          592.666666666666700000
+          772.583333333333300000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NesTot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText22: TQRDBText
+        Left = 426
+        Top = 292
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1127.125000000000000000
+          772.583333333333300000
+          142.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Sevres_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText23: TQRDBText
+        Left = 216
+        Top = 312
+        Width = 64
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          571.500000000000000000
+          825.500000000000000000
+          169.333333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsNais_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText24: TQRDBText
+        Left = 421
+        Top = 312
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1113.895833333333000000
+          825.500000000000000000
+          156.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSev_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel18: TQRLabel
+        Left = 40
+        Top = 448
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1185.333333333333000000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Body weight (kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel19: TQRLabel
+        Left = 40
+        Top = 548
+        Width = 146
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1449.916666666667000000
+          386.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Backfat thickness (mm)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel20: TQRLabel
+        Left = 40
+        Top = 688
+        Width = 135
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1820.333333333330000000
+          357.187500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Deposition (g/d)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRShape2: TQRShape
+        Left = 200
+        Top = 260
+        Width = 160
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          529.166666666667000000
+          687.916666666667000000
+          423.333333333333000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRShape1: TQRShape
+        Left = 520
+        Top = 260
+        Width = 160
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          1375.833333333330000000
+          687.916666666667000000
+          423.333333333333000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRDBText25: TQRDBText
+        Left = 300
+        Top = 292
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          793.750000000000000000
+          772.583333333333300000
+          158.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NesVifs_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText26: TQRDBText
+        Left = 296
+        Top = 312
+        Width = 64
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          783.166666666666700000
+          825.500000000000000000
+          169.333333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsNais_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel13: TQRLabel
+        Left = 218
+        Top = 268
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          576.791666666666700000
+          709.083333333333300000
+          164.041666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'total born'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel21: TQRLabel
+        Left = 295
+        Top = 268
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          780.520833333333300000
+          709.083333333333300000
+          171.979166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'born alive'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel22: TQRLabel
+        Left = 631
+        Top = 268
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1669.520833333333000000
+          709.083333333333300000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'per day'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel23: TQRLabel
+        Left = 571
+        Top = 268
+        Width = 29
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1510.770833333333000000
+          709.083333333333300000
+          76.729166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'total'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel24: TQRLabel
+        Left = 40
+        Top = 372
+        Width = 136
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          984.250000000000000000
+          359.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sow performance'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLabel25: TQRLabel
+        Left = 40
+        Top = 212
+        Width = 141
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          560.916666666666700000
+          373.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Litter performance'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFSimul: TStringField
+      FieldName = '_Simul_'
+      Size = 25
+    end
+    object SFProfil: TStringField
+      FieldName = '_Profil_'
+      Size = 25
+    end
+    object SFLoge: TStringField
+      DisplayWidth = 25
+      FieldName = '_Loge_'
+    end
+    object SFInit: TStringField
+      DisplayWidth = 80
+      FieldName = '_Init_'
+      Size = 80
+    end
+    object IFCycle: TIntegerField
+      FieldName = '_Cycle_'
+    end
+    object SFSeqAli: TStringField
+      FieldName = '_SeqAli_'
+      Size = 25
+    end
+    object SFRation: TStringField
+      FieldName = '_Ration_'
+      Size = 40
+    end
+    object CDSRapport_NesTot_: TFloatField
+      FieldName = '_NesTot_'
+    end
+    object CDSRapport_Sevres_: TFloatField
+      FieldName = '_Sevres_'
+    end
+    object FFNesVifs: TFloatField
+      FieldName = '_NesVifs_'
+    end
+    object CDSRapport_PdsNais_: TFloatField
+      FieldName = '_PdsNais_'
+    end
+    object CDSRapport_PdsSev_: TFloatField
+      FieldName = '_PdsSev_'
+    end
+    object CDSRapport_Lait_: TFloatField
+      FieldName = '_Lait_'
+    end
+    object CDSRapport_DureeGest_: TIntegerField
+      FieldName = '_DureeGest_'
+    end
+    object CDSRapport_PVGest_: TFloatField
+      FieldName = '_PVGest_'
+    end
+    object CDSRapport_GainTotGest_: TFloatField
+      FieldName = '_GainTotGest_'
+    end
+    object CDSRapport_GainNetGest_: TFloatField
+      FieldName = '_GainNetGest_'
+    end
+    object CDSRapport_P2Gest_: TFloatField
+      FieldName = '_P2Gest_'
+    end
+    object CDSRapport_P2VarGest_: TFloatField
+      FieldName = '_P2VarGest_'
+    end
+    object CDSRapport_ConsoGest_: TFloatField
+      FieldName = '_ConsoGest_'
+    end
+    object CDSRapport_PDGest_: TFloatField
+      FieldName = '_PDGest_'
+    end
+    object CDSRapport_LDGest_: TFloatField
+      FieldName = '_LDGest_'
+    end
+    object CDSRapport_DureeLact_: TIntegerField
+      FieldName = '_DureeLact_'
+    end
+    object CDSRapport_PVLact_: TFloatField
+      FieldName = '_PVLact_'
+    end
+    object CDSRapport_GainTotLact_: TFloatField
+      FieldName = '_GainTotLact_'
+    end
+    object CDSRapport_GainNetLact_: TFloatField
+      FieldName = '_GainNetLact_'
+    end
+    object CDSRapport_P2Lact_: TFloatField
+      FieldName = '_P2Lact_'
+    end
+    object CDSRapport_P2VarLact_: TFloatField
+      FieldName = '_P2VarLact_'
+    end
+    object CDSRapport_ConsoLact_: TFloatField
+      FieldName = '_ConsoLact_'
+    end
+    object CDSRapport_PDLact_: TFloatField
+      FieldName = '_PDLact_'
+    end
+    object CDSRapport_LDLact_: TFloatField
+      FieldName = '_LDLact_'
+    end
+    object CDSRapport_DureeISSF_: TIntegerField
+      FieldName = '_DureeISSF_'
+    end
+    object CDSRapport_PVISSF_: TFloatField
+      FieldName = '_PVISSF_'
+    end
+    object CDSRapport_GainTotISSF_: TFloatField
+      FieldName = '_GainTotISSF_'
+    end
+    object CDSRapport_GainNetISSF_: TFloatField
+      FieldName = '_GainNetISSF_'
+    end
+    object CDSRapport_P2ISSF_: TFloatField
+      FieldName = '_P2ISSF_'
+    end
+    object CDSRapport_P2VarISSF_: TFloatField
+      FieldName = '_P2VarISSF_'
+    end
+    object CDSRapport_ConsoISSF_: TFloatField
+      FieldName = '_ConsoISSF_'
+    end
+    object CDSRapport_PDISSF_: TFloatField
+      FieldName = '_PDISSF_'
+    end
+    object CDSRapport_LDISSF_: TFloatField
+      FieldName = '_LDISSF_'
+    end
+  end
+end
Index: UFRapBesLactT.pas
===================================================================
--- UFRapBesLactT.pas	(révision 0)
+++ UFRapBesLactT.pas	(révision 3)
@@ -0,0 +1,255 @@
+unit UFRapBesLactT ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, Math, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapBesLactT = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    CDSRapport: TClientDataSet;
+    IFPortee: TIntegerField;
+    FFGMQPort: TFloatField;
+    FFPdsMB: TFloatField;
+    FFP2MB: TFloatField;
+    IFDureeLact: TIntegerField;
+    FFBesEMEnt: TFloatField;
+    FFBesEMLait: TFloatField;
+    FFBesEMTot: TFloatField;
+    FFAppED: TFloatField;
+    FFAppEM: TFloatField;
+    FFAppEN: TFloatField;
+    FFBesAli: TFloatField;
+    FFLys: TFloatField;
+    FFMet: TFloatField;
+    FFMetCys: TFloatField;
+    FFTrp: TFloatField;
+    FFThr: TFloatField;
+    FFPhe: TFloatField;
+    FFPheTyr: TFloatField;
+    FFLeu: TFloatField;
+    FFIle: TFloatField;
+    FFVal: TFloatField;
+    FFHis: TFloatField;
+    FFArg: TFloatField;
+    QREBesENTot: TQRExpr;
+    QRLBesENTot: TQRLabel;
+    QREPctPort: TQRExpr;
+    QREPctEnt: TQRExpr;
+    QRDBText3: TQRDBText;
+    QRDBText2: TQRDBText;
+    QRDBText1: TQRDBText;
+    QRLPoids: TQRLabel;
+    QRLCaract: TQRLabel;
+    QRLMiseBas: TQRLabel;
+    QRLP2: TQRLabel;
+    QRLAge: TQRLabel;
+    QRLPortee: TQRLabel;
+    QRLSevres: TQRLabel;
+    QRLPdsPt: TQRLabel;
+    QRDBTPdsMB: TQRDBText;
+    QRDBTP2MB: TQRDBText;
+    QRDBTAgeMB: TQRDBText;
+    QRLNRJ: TQRLabel;
+    QRLAA: TQRLabel;
+    QRLNRJEnt: TQRLabel;
+    QRLNRJPort: TQRLabel;
+    QRLNRJTot: TQRLabel;
+    QRDBTEMEnt: TQRDBText;
+    QRLEMEnt: TQRLabel;
+    QRLPctEnt: TQRLabel;
+    QRDBTEMPort: TQRDBText;
+    QRLEMPort: TQRLabel;
+    QRLPctPort: TQRLabel;
+    QRDBTBesEMTot: TQRDBText;
+    QRLBesEMTot: TQRLabel;
+    QREArgPctLys: TQRExpr;
+    QREHisPctLys: TQRExpr;
+    QREValPctLys: TQRExpr;
+    QREIlePctLys: TQRExpr;
+    QRELeuPctLys: TQRExpr;
+    QREPheTyrPctLys: TQRExpr;
+    QREPhePctLys: TQRExpr;
+    QREThrPctLys: TQRExpr;
+    QRETrpPctLys: TQRExpr;
+    QREMetCysPctLys: TQRExpr;
+    QREMetPctLys: TQRExpr;
+    QRELysPctLys: TQRExpr;
+    QREArgAli: TQRExpr;
+    QREHisAli: TQRExpr;
+    QREValAli: TQRExpr;
+    QREIleAli: TQRExpr;
+    QRELeuAli: TQRExpr;
+    QREPheTyrAli: TQRExpr;
+    QREPheAli: TQRExpr;
+    QREThrAli: TQRExpr;
+    QRETrpAli: TQRExpr;
+    QREMetCysAli: TQRExpr;
+    QREMetAli: TQRExpr;
+    QRELysAli: TQRExpr;
+    QRLAATot: TQRLabel;
+    QRLAAAli: TQRLabel;
+    QRLPctLys: TQRLabel;
+    QRLLys: TQRLabel;
+    QRLMet: TQRLabel;
+    QRLMetCys: TQRLabel;
+    QRLTrp: TQRLabel;
+    QRLThr: TQRLabel;
+    QRLPhe: TQRLabel;
+    QRLPheTyr: TQRLabel;
+    QRLLeu: TQRLabel;
+    QRLIle: TQRLabel;
+    QRLVal: TQRLabel;
+    QRLHis: TQRLabel;
+    QRLArg: TQRLabel;
+    QRDBTLysTot: TQRDBText;
+    QRDBTMetTot: TQRDBText;
+    QRDBTMetCysTot: TQRDBText;
+    QRDBTTrpTot: TQRDBText;
+    QRDBTThrTot: TQRDBText;
+    QRDBTPheTot: TQRDBText;
+    QRDBTPheTyrTot: TQRDBText;
+    QRDBTLeuTot: TQRDBText;
+    QRDBTIleTot: TQRDBText;
+    QRDBTValTot: TQRDBText;
+    QRDBTHisTot: TQRDBText;
+    QRDBTArgTot: TQRDBText;
+    QRShape1: TQRShape;
+    QRLDeficit: TQRLabel;
+    QRDBTBesAli: TQRDBText;
+    QRLBesAli: TQRLabel;
+    QREDefEN: TQRExpr;
+    QRLDefEN: TQRLabel;
+    QRDBTDefEM: TQRDBText;
+    QRLDefEM: TQRLabel;
+    QRDBTDefAli: TQRDBText;
+    QRLDefAli: TQRLabel;
+    FFDefEM: TFloatField;
+    FFDefAli: TFloatField;
+    QRLMin: TQRLabel;
+    QRECaAli: TQRExpr;
+    QREPAli: TQRExpr;
+    QRLabel2: TQRLabel;
+    QRLabel3: TQRLabel;
+    QRLP: TQRLabel;
+    QRLCa: TQRLabel;
+    QRDBTPTot: TQRDBText;
+    QRDBTCaTot: TQRDBText;
+    FFP: TFloatField;
+    FFCa: TFloatField;
+    FFSevres: TFloatField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLabel1: TQRLabel;
+    QRLabel4: TQRLabel;
+    QRLabel5: TQRLabel;
+    QRLabel6: TQRLabel;
+    QREAppEM: TQRExpr;
+    QREAppEN: TQRExpr;
+    QREAppAli: TQRExpr;
+    QRSDDate: TQRSysData;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapBesLactT: TFRapBesLactT;
+
+implementation
+
+uses
+  UStrings, UUtil, UFBesLactT, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapBesLactT }
+
+procedure TFRapBesLactT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Portee_'] := FBesLactT.PBPortee.AsInteger ;
+    FieldValues['_DureeLact_'] := FBesLactT.DureeLact ;
+    FieldValues['_Sevres_'] := FBesLactT.PBSevres.AsFloat ;
+    FieldValues['_GMQPort_'] := FBesLactT.PBGMQ.AsFloat ;
+    FieldValues['_PdsMB_'] := FBesLactT.PBPdsApMB.AsFloat ;
+    FieldValues['_P2MB_'] := FBesLactT.PBP2MB.AsFloat ;
+    FieldValues['_BesEMEnt_'] := FBesLactT.BesEMEntTot ;
+    FieldValues['_BesEMLait_'] := FBesLactT.BesEMLaitTot ;
+    FieldValues['_BesEMTot_'] := FBesLactT.BesEMTot ;
+    FieldValues['_AppED_'] := FBesLactT.AppEDTot ;
+    FieldValues['_AppEM_'] := FBesLactT.AppEMTot ;
+    FieldValues['_AppEN_'] := FBesLactT.AppENTot ;
+    if (FBesLactT.AppEMTot = 0)
+    then
+      FieldValues['_BesAli_'] := 0
+    else
+      FieldValues['_BesAli_'] := FBesLactT.BesEMTot * FBesLactT.AppAliTot / FBesLactT.AppEMTot ;
+    if (FBesLactT.BesEMTot > FBesLactT.AppEMTot / PProfilT.DureeLact)
+    then // D�ficit
+    begin
+      FieldValues['_DefEM_'] := FBesLactT.BesEMTot - FBesLactT.AppEMTot / PProfilT.DureeLact ;
+      FieldValues['_DefAli_'] := FBesLactT.BesEMTot * FBesLactT.AppAliTot / FBesLactT.AppEMTot - FBesLactT.AppAliTot / PProfilT.DureeLact ;
+    end
+    else // Exc�s
+    begin
+      FieldValues['_DefEM_'] := 0 ;
+      FieldValues['_DefAli_'] := 0 ;
+    end ;
+    FieldValues['_Lys_'] := Mean (Slice (FBesLactT.BesAA[1], FBesLactT.DureeLact)) ;
+    FieldValues['_Met_'] := Mean (Slice (FBesLactT.BesAA[2], FBesLactT.DureeLact)) ;
+    FieldValues['_MetCys_'] := Mean (Slice (FBesLactT.BesAA[13], FBesLactT.DureeLact)) ;
+    FieldValues['_Trp_'] := Mean (Slice (FBesLactT.BesAA[4], FBesLactT.DureeLact)) ;
+    FieldValues['_Thr_'] := Mean (Slice (FBesLactT.BesAA[5], FBesLactT.DureeLact)) ;
+    FieldValues['_Phe_'] := Mean (Slice (FBesLactT.BesAA[6], FBesLactT.DureeLact)) ;
+    FieldValues['_PheTyr_'] := Mean (Slice (FBesLactT.BesAA[14], FBesLactT.DureeLact)) ;
+    FieldValues['_Leu_'] := Mean (Slice (FBesLactT.BesAA[8], FBesLactT.DureeLact)) ;
+    FieldValues['_Ile_'] := Mean (Slice (FBesLactT.BesAA[9], FBesLactT.DureeLact)) ;
+    FieldValues['_Val_'] := Mean (Slice (FBesLactT.BesAA[10], FBesLactT.DureeLact)) ;
+    FieldValues['_His_'] := Mean (Slice (FBesLactT.BesAA[11], FBesLactT.DureeLact)) ;
+    FieldValues['_Arg_'] := Mean (Slice (FBesLactT.BesAA[12], FBesLactT.DureeLact)) ;
+    FieldValues['_P_'] := Mean (Slice (FBesLactT.BesP, FBesLactT.DureeLact)) ;
+    FieldValues['_Ca_'] := Mean (Slice (FBesLactT.BesCa, FBesLactT.DureeLact)) ;
+    Post;
+  end ;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFRapBesGestE.pas
===================================================================
--- UFRapBesGestE.pas	(révision 0)
+++ UFRapBesGestE.pas	(révision 3)
@@ -0,0 +1,345 @@
+unit UFRapBesGestE ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, Math, UVariables, gnugettext;
+
+type
+  TFRapBesGestE = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    CDSRapport: TClientDataSet;
+    QRLSaillie: TQRLabel;
+    QRLPoids: TQRLabel;
+    QRLCaract: TQRLabel;
+    QRLMiseBas: TQRLabel;
+    QRLP2: TQRLabel;
+    QRLAge: TQRLabel;
+    QRLNesVifs: TQRLabel;
+    QRLPdsPt: TQRLabel;
+    FFPdsSail: TFloatField;
+    FFPdsMB: TFloatField;
+    FFP2Sail: TFloatField;
+    FFP2MB: TFloatField;
+    IFAgeSail: TIntegerField;
+    IFAgeMB: TIntegerField;
+    QRLVariation: TQRLabel;
+    QRDBTPdsSail: TQRDBText;
+    QRDBTPdsMB: TQRDBText;
+    QREPds: TQRExpr;
+    QRDBTP2Sail: TQRDBText;
+    QRDBTP2MB: TQRDBText;
+    QREP2: TQRExpr;
+    QRDBTAgeSail: TQRDBText;
+    QRDBTAgeMB: TQRDBText;
+    QREAge: TQRExpr;
+    IFCycle: TIntegerField;
+    FFPdsPort: TFloatField;
+    QRDBText2: TQRDBText;
+    QRDBText3: TQRDBText;
+    QRLNRJ: TQRLabel;
+    QRLAA: TQRLabel;
+    QRLNRJEnt: TQRLabel;
+    QRLNRJAct: TQRLabel;
+    QRLNRJThe: TQRLabel;
+    QRLNRJPort: TQRLabel;
+    QRLNRJRes: TQRLabel;
+    QRLNRJTot: TQRLabel;
+    QRDBTEMEnt: TQRDBText;
+    QRLEMEnt: TQRLabel;
+    QRLPctEnt: TQRLabel;
+    QRDBTEMThe: TQRDBText;
+    QRLEMThe: TQRLabel;
+    QRLPctThe: TQRLabel;
+    QRDBTEMRes: TQRDBText;
+    QRLEMRes: TQRLabel;
+    QRLPctRes: TQRLabel;
+    QRDBTEMAct: TQRDBText;
+    QRLEMAct: TQRLabel;
+    QRLPctAct: TQRLabel;
+    QRDBTEMPort: TQRDBText;
+    QRLEMPort: TQRLabel;
+    QRLPctPort: TQRLabel;
+    QRDBTEMTot: TQRDBText;
+    QREPctEnt: TQRExpr;
+    QREPctThe: TQRExpr;
+    QREPctRes: TQRExpr;
+    QREPctAct: TQRExpr;
+    QREPctPort: TQRExpr;
+    FFBesEMEnt: TFloatField;
+    FFBesEMAct: TFloatField;
+    FFBesEMThe: TFloatField;
+    FFBesEMPort: TFloatField;
+    FFBesEMRes: TFloatField;
+    FFBesEMTot: TFloatField;
+    FFAppED: TFloatField;
+    FFAppEM: TFloatField;
+    FFAppEN: TFloatField;
+    FFBesAli: TFloatField;
+    QRLEMTot: TQRLabel;
+    QRLENTot: TQRLabel;
+    QREENTot: TQRExpr;
+    QRLAli: TQRLabel;
+    QRDBTAli: TQRDBText;
+    QRLAATot: TQRLabel;
+    QRLAAAli: TQRLabel;
+    QRLPctLys: TQRLabel;
+    QRLAATot35: TQRLabel;
+    QRLAATot105: TQRLabel;
+    QRLAAAli35: TQRLabel;
+    QRLAAAli105: TQRLabel;
+    QRLLys: TQRLabel;
+    QRLMet: TQRLabel;
+    QRLMetCys: TQRLabel;
+    QRLTrp: TQRLabel;
+    QRLThr: TQRLabel;
+    QRLPhe: TQRLabel;
+    QRLPheTyr: TQRLabel;
+    QRLLeu: TQRLabel;
+    QRLIle: TQRLabel;
+    QRLVal: TQRLabel;
+    QRLHis: TQRLabel;
+    QRLArg: TQRLabel;
+    QRDBTLysTot35: TQRDBText;
+    QRDBTMetTot35: TQRDBText;
+    QRDBTMetCysTot35: TQRDBText;
+    QRDBTTrpTot35: TQRDBText;
+    QRDBTThrTot35: TQRDBText;
+    QRDBTPheTot35: TQRDBText;
+    QRDBTPheTyrTot35: TQRDBText;
+    QRDBTLeuTot35: TQRDBText;
+    QRDBTIleTot35: TQRDBText;
+    QRDBTValTot305: TQRDBText;
+    QRDBTHisTot35: TQRDBText;
+    QRDBTArgTot35: TQRDBText;
+    QRDBTLysTot105: TQRDBText;
+    QRDBTMetTot105: TQRDBText;
+    QRDBTMetCysTot105: TQRDBText;
+    QRDBTTrpTot105: TQRDBText;
+    QRDBTThrTot105: TQRDBText;
+    QRDBTPheTot105: TQRDBText;
+    QRDBTPheTyrTot105: TQRDBText;
+    QRDBTLeuTot105: TQRDBText;
+    QRDBTIleTot105: TQRDBText;
+    QRDBTValTot105: TQRDBText;
+    QRDBTHisTot105: TQRDBText;
+    QRDBTArgTot105: TQRDBText;
+    QRELysAli35: TQRExpr;
+    QREMetAli35: TQRExpr;
+    QREMetCysAli35: TQRExpr;
+    QRETrpAli35: TQRExpr;
+    QREThrAli35: TQRExpr;
+    QREPheAli35: TQRExpr;
+    QREPheTyrAli35: TQRExpr;
+    QRELeuAli35: TQRExpr;
+    QREIleAli35: TQRExpr;
+    QREValAli35: TQRExpr;
+    QREHisAli35: TQRExpr;
+    QREArgAli35: TQRExpr;
+    QRELysAli105: TQRExpr;
+    QREMetAli105: TQRExpr;
+    QREMetCysAli105: TQRExpr;
+    QRETrpAli105: TQRExpr;
+    QREThrAli105: TQRExpr;
+    QREPheAli105: TQRExpr;
+    QREPheTyrAli105: TQRExpr;
+    QRELeuAli105: TQRExpr;
+    QREIleAli105: TQRExpr;
+    QREValAli105: TQRExpr;
+    QREHisAli105: TQRExpr;
+    QREArgAli105: TQRExpr;
+    QRELysPctLys: TQRExpr;
+    QREMetPctLys: TQRExpr;
+    QREMetCysPctLys: TQRExpr;
+    QRETrpPctLys: TQRExpr;
+    QREThrPctLys: TQRExpr;
+    QREPhePctLys: TQRExpr;
+    QREPheTyrPctLys: TQRExpr;
+    QRELeuPctLys: TQRExpr;
+    QREIlePctLys: TQRExpr;
+    QREValPctLys: TQRExpr;
+    QREHisPctLys: TQRExpr;
+    QREArgPctLys: TQRExpr;
+    FFLys105: TFloatField;
+    FFMet105: TFloatField;
+    FFMetCys105: TFloatField;
+    FFTrp105: TFloatField;
+    FFThr105: TFloatField;
+    FFPhe105: TFloatField;
+    FFPheTyr105: TFloatField;
+    FFLeu105: TFloatField;
+    FFIle105: TFloatField;
+    FFVal105: TFloatField;
+    FFHis105: TFloatField;
+    FFArg105: TFloatField;
+    FFLys35: TFloatField;
+    FFMet35: TFloatField;
+    FFMetCys35: TFloatField;
+    FFTrp35: TFloatField;
+    FFThr35: TFloatField;
+    FFPhe35: TFloatField;
+    FFPheTyr35: TFloatField;
+    FFLeu35: TFloatField;
+    FFIle35: TFloatField;
+    FFVal35: TFloatField;
+    FFHis35: TFloatField;
+    FFArg35: TFloatField;
+    QRShape1: TQRShape;
+    QRShape2: TQRShape;
+    QRShape3: TQRShape;
+    QRLMinAli: TQRLabel;
+    QRLMinTot: TQRLabel;
+    QRShape4: TQRShape;
+    QRShape5: TQRShape;
+    QRLMin: TQRLabel;
+    QRLMinTot35: TQRLabel;
+    QRLMinTot105: TQRLabel;
+    QRLMinAli35: TQRLabel;
+    QRLMinAli105: TQRLabel;
+    QREPAli105: TQRExpr;
+    QREPAli35: TQRExpr;
+    QRLabel9: TQRLabel;
+    QRDBTP35Tot: TQRDBText;
+    QRDBTP105Tot: TQRDBText;
+    QRECaAli105: TQRExpr;
+    QRECaAli35: TQRExpr;
+    QRLabel10: TQRLabel;
+    QRDBTCa35Tot: TQRDBText;
+    QRDBTCa105Tot: TQRDBText;
+    FFP35: TFloatField;
+    FFCa35: TFloatField;
+    FFP105: TFloatField;
+    FFCa105: TFloatField;
+    FFNesTotaux: TFloatField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    SFProfil: TStringField;
+    SFLoge: TStringField;
+    QRLProfil: TQRLabel;
+    QRDBTProfil: TQRDBText;
+    QRLabel1: TQRLabel;
+    QRDBTLoge: TQRDBText;
+    QRShape6: TQRShape;
+    QRDBTCycle: TQRDBText;
+    QRLCycle: TQRLabel;
+    QRSDDate: TQRSysData;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapBesGestE: TFRapBesGestE;
+
+implementation
+
+uses
+  UStrings, UUtil, UFBesGestE, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapBesGestE }
+
+procedure TFRapBesGestE.FormCreate(Sender: TObject);
+var
+  Cycle: integer;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    for Cycle := 1 to NB_CYCLES do
+    begin
+      Append;
+      FieldValues['_Cycle_'] := Cycle ;
+      FieldValues['_Profil_'] := FBesGestE.CBProfil.Text ;
+      FieldValues['_Loge_'] := FBesGestE.CBLoge.Text ;
+      FieldValues['_NesTotaux_'] := PProfilT.Porcelets[Cycle].NesTotaux ;
+      FieldValues['_PdsPort_'] := PProfilT.Porcelets[Cycle].NesTotaux * PProfilT.Porcelets[Cycle].PdsNais ;
+      FieldValues['_PdsSail_'] := PProfilT.Truies[Cycle].PdsSail ;
+      FieldValues['_PdsMB_'] := PProfilT.pmax * (1 - Exp ((- PProfilT.a / 1000) * Power (PProfilT.Truies[Cycle].AgeSail + DureeGest, PProfilT.b))) ;
+      FieldValues['_P2Sail_'] := PProfilT.Truies[Cycle].P2Sail ;
+      FieldValues['_P2MB_'] := PProfilT.Truies[Cycle].P2MB ;
+      FieldValues['_AgeSail_'] := PProfilT.Truies[Cycle].AgeSail ;
+      FieldValues['_AgeMB_'] := PProfilT.Truies[Cycle].AgeSail + DureeGest ;
+      FieldValues['_BesEMEnt_'] := FBesGestE.BesEMEntTot[Cycle] ;
+      FieldValues['_BesEMAct_'] := FBesGestE.BesEMActTot[Cycle] ;
+      FieldValues['_BesEMThe_'] := FBesGestE.BesEMTheTot[Cycle] ;
+      FieldValues['_BesEMPort_'] := FBesGestE.BesEMPortTot[Cycle] ;
+      FieldValues['_BesEMRes_'] := FBesGestE.BesEMResTot[Cycle] ;
+      FieldValues['_BesEMTot_'] := FBesGestE.BesEMTot[Cycle] ;
+      FieldValues['_AppED_'] := FBesGestE.AppEDTot[Cycle] ;
+      FieldValues['_AppEM_'] := FBesGestE.AppEMTot[Cycle] ;
+      FieldValues['_AppEN_'] := FBesGestE.AppENTot[Cycle] ;
+      if (FBesGestE.AppEMTot[Cycle] = 0)
+      then
+        FieldValues['_BesAli_'] := 0
+      else
+        FieldValues['_BesAli_'] := FBesGestE.BesEMTot[Cycle] * FBesGestE.AppAliTot[Cycle] / FBesGestE.AppEMTot[Cycle] ;
+      FieldValues['_Lys35_'] := FBesGestE.BesAA[Cycle, 1, 35] ;
+      FieldValues['_Met35_'] := FBesGestE.BesAA[Cycle, 2, 35] ;
+      FieldValues['_MetCys35_'] := FBesGestE.BesAA[Cycle, 13, 35] ;
+      FieldValues['_Trp35_'] := FBesGestE.BesAA[Cycle, 4, 35] ;
+      FieldValues['_Thr35_'] := FBesGestE.BesAA[Cycle, 5, 35] ;
+      FieldValues['_Phe35_'] := FBesGestE.BesAA[Cycle, 6, 35] ;
+      FieldValues['_PheTyr35_'] := FBesGestE.BesAA[Cycle, 14, 35] ;
+      FieldValues['_Leu35_'] := FBesGestE.BesAA[Cycle, 8, 35] ;
+      FieldValues['_Ile35_'] := FBesGestE.BesAA[Cycle, 9, 35] ;
+      FieldValues['_Val35_'] := FBesGestE.BesAA[Cycle, 10, 35] ;
+      FieldValues['_His35_'] := FBesGestE.BesAA[Cycle, 11, 35] ;
+      FieldValues['_Arg35_'] := FBesGestE.BesAA[Cycle, 12, 35] ;
+      FieldValues['_Lys105_'] := FBesGestE.BesAA[Cycle, 1, 105] ;
+      FieldValues['_Met105_'] := FBesGestE.BesAA[Cycle, 2, 105] ;
+      FieldValues['_MetCys105_'] := FBesGestE.BesAA[Cycle, 13, 105] ;
+      FieldValues['_Trp105_'] := FBesGestE.BesAA[Cycle, 4, 105] ;
+      FieldValues['_Thr105_'] := FBesGestE.BesAA[Cycle, 5, 105] ;
+      FieldValues['_Phe105_'] := FBesGestE.BesAA[Cycle, 6, 105] ;
+      FieldValues['_PheTyr105_'] := FBesGestE.BesAA[Cycle, 14, 105] ;
+      FieldValues['_Leu105_'] := FBesGestE.BesAA[Cycle, 8, 105] ;
+      FieldValues['_Ile105_'] := FBesGestE.BesAA[Cycle, 9, 105] ;
+      FieldValues['_Val105_'] := FBesGestE.BesAA[Cycle, 10, 105] ;
+      FieldValues['_His105_'] := FBesGestE.BesAA[Cycle, 11, 105] ;
+      FieldValues['_Arg105_'] := FBesGestE.BesAA[Cycle, 12, 105] ;
+      FieldValues['_P35_'] := FBesGestE.BesP[Cycle, 35] ;
+      FieldValues['_Ca35_'] := FBesGestE.BesCa[Cycle, 35] ;
+      FieldValues['_P105_'] := FBesGestE.BesP[Cycle, 105] ;
+      FieldValues['_Ca105_'] := FBesGestE.BesCa[Cycle, 105] ;
+      Post;
+    end ;
+  end ;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFRapSeqAliT.pas
===================================================================
--- UFRapSeqAliT.pas	(révision 0)
+++ UFRapSeqAliT.pas	(révision 3)
@@ -0,0 +1,136 @@
+unit UFRapSeqAliT ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapSeqAliT = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    CDSRapport: TClientDataSet;
+    SFSeqAli: TStringField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLSeqAli: TQRLabel;
+    QRDBTSeqAli: TQRDBText;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    DSRelation: TDataSource;
+    CDSRegles: TClientDataSet;
+    SFIndex: TStringField;
+    IFNo: TIntegerField;
+    SFModeFin: TStringField;
+    SFAliment: TStringField;
+    QRLRegles: TQRLabel;
+    QRLNo: TQRLabel;
+    QRDBTNo: TQRDBText;
+    QRShape2: TQRShape;
+    QRLModeFin: TQRLabel;
+    QRDBTModeFin: TQRDBText;
+    QRLAliment: TQRLabel;
+    QRDBTAliment: TQRDBText;
+    QRSDRegles: TQRSubDetail;
+    TBRapport: TQRBand;
+    QRDBTEtat: TQRDBText;
+    IFEtat: TIntegerField;
+    CDSRapport_Etat_: TIntegerField;
+    SFStrEtat: TStringField;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapSeqAliT: TFRapSeqAliT;
+
+implementation
+
+uses
+  UStrings, UUtil, UFSeqAliT, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapSeqAliT }
+
+procedure TFRapSeqAliT.FormCreate(Sender: TObject);
+var
+  etat, regle, nb : integer;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    for etat := 0 to 2 do
+    begin
+      Append;
+      FieldValues['_SeqAli_'] := FSeqAliT.CBSeqAli.Text;
+      FieldValues['_Etat_'] := etat;
+      FieldValues['_StrEtat_'] := FSeqAliT.TC.Tabs[etat];
+      Post;
+    end;
+  end;
+  QRMMemo.Lines.Add(FSeqAliT.CBSeqAli.Hint);
+  with CDSRegles do
+  begin
+    CreateDataSet;
+    for etat := 0 to 2 do
+    begin
+      case etat of
+        0 : // Gestation
+          nb := PSeqAliT.NbRuleGest;
+        1 : // Lactation
+          nb := PSeqAliT.NbRuleLact;
+        else // I.S.S.F.
+          nb := PSeqAliT.NbRuleISSF;
+      end;
+      for regle := 1 to nb do
+      begin
+        Append;
+        FieldValues['_SeqAli_'] := FSeqAliT.CBSeqAli.Text;
+        FieldValues['_Etat_'] := etat;
+        FieldValues['_No_'] := regle;
+        FieldValues['_ModeFin_'] := FSeqAliT.StrModeFin(etat, regle);
+        FieldValues['_Aliment_'] := FSeqAliT.StrAliment(etat, regle);
+        Post;
+      end;
+    end;
+  end;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFLicense.dfm
===================================================================
--- UFLicense.dfm	(révision 0)
+++ UFLicense.dfm	(révision 3)
@@ -0,0 +1,456 @@
+object FLicense: TFLicense
+  Left = 160
+  Top = 160
+  HelpContext = 200
+  Caption = 'License information'
+  ClientHeight = 568
+  ClientWidth = 816
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PLicense: TPanel
+    Left = 400
+    Top = 0
+    Width = 416
+    Height = 568
+    Align = alRight
+    BevelOuter = bvNone
+    TabOrder = 0
+    DesignSize = (
+      416
+      568)
+    object BBOk: TBitBtn
+      Left = 240
+      Top = 534
+      Width = 80
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      NumGlyphs = 2
+      TabOrder = 5
+    end
+    object BBCancel: TBitBtn
+      Left = 328
+      Top = 534
+      Width = 80
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      NumGlyphs = 2
+      TabOrder = 6
+    end
+    object GBLicenseType: TGroupBox
+      Left = 8
+      Top = 8
+      Width = 400
+      Height = 96
+      Caption = 'License'
+      TabOrder = 0
+      object RBEvaluation: TRadioButton
+        Left = 8
+        Top = 18
+        Width = 80
+        Height = 17
+        Caption = 'Evaluation'
+        TabOrder = 0
+        OnClick = RBLicenseTypeClick
+      end
+      object RBEducation: TRadioButton
+        Left = 8
+        Top = 42
+        Width = 80
+        Height = 17
+        Caption = 'Education'
+        TabOrder = 1
+        OnClick = RBLicenseTypeClick
+      end
+      object RBComplete: TRadioButton
+        Left = 8
+        Top = 66
+        Width = 80
+        Height = 17
+        Caption = 'Complete'
+        TabOrder = 2
+        OnClick = RBLicenseTypeClick
+      end
+      object PComplete: TPanel
+        Left = 136
+        Top = 64
+        Width = 160
+        Height = 24
+        BevelOuter = bvNone
+        TabOrder = 3
+        object LLicenseNumber: TLabel
+          Left = 0
+          Top = 4
+          Width = 75
+          Height = 13
+          Caption = 'License number'
+        end
+        object PBLicenseNumber: TPBNumEdit
+          Left = 120
+          Top = 0
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBLicenseNumberChange
+          TabOrder = 0
+        end
+      end
+      object PEducation: TPanel
+        Left = 96
+        Top = 40
+        Width = 296
+        Height = 24
+        BevelOuter = bvNone
+        TabOrder = 4
+        object LCourse: TLabel
+          Left = 0
+          Top = 4
+          Width = 33
+          Height = 13
+          Caption = 'Course'
+        end
+        object ECourse: TEdit
+          Left = 40
+          Top = 0
+          Width = 256
+          Height = 21
+          MaxLength = 40
+          TabOrder = 0
+          OnChange = ECourseChange
+        end
+      end
+    end
+    object PInfo: TPanel
+      Left = 8
+      Top = 110
+      Width = 400
+      Height = 344
+      BevelOuter = bvNone
+      TabOrder = 1
+      object LPhone: TLabel
+        Left = 8
+        Top = 260
+        Width = 31
+        Height = 13
+        Caption = 'Phone'
+      end
+      object LMail: TLabel
+        Left = 8
+        Top = 316
+        Width = 27
+        Height = 13
+        Caption = 'e-mail'
+      end
+      object LLastName: TLabel
+        Left = 8
+        Top = 36
+        Width = 49
+        Height = 13
+        Caption = 'Last name'
+      end
+      object LFirstName: TLabel
+        Left = 8
+        Top = 12
+        Width = 48
+        Height = 13
+        Caption = 'First name'
+      end
+      object LFax: TLabel
+        Left = 8
+        Top = 284
+        Width = 17
+        Height = 13
+        Caption = 'Fax'
+      end
+      object LCompany: TLabel
+        Left = 8
+        Top = 68
+        Width = 44
+        Height = 13
+        Caption = 'Company'
+      end
+      object LOrganisation: TLabel
+        Left = 8
+        Top = 68
+        Width = 46
+        Height = 13
+        Caption = 'University'
+        Visible = False
+      end
+      object GBAddress: TGroupBox
+        Left = 0
+        Top = 96
+        Width = 400
+        Height = 144
+        Caption = 'Address'
+        TabOrder = 3
+        object LPostalCode: TLabel
+          Left = 8
+          Top = 68
+          Width = 44
+          Height = 13
+          Caption = 'ZIP code'
+        end
+        object LCity: TLabel
+          Left = 8
+          Top = 92
+          Width = 17
+          Height = 13
+          Caption = 'City'
+        end
+        object LCountry: TLabel
+          Left = 8
+          Top = 116
+          Width = 36
+          Height = 13
+          Caption = 'Country'
+        end
+        object EAddress1: TEdit
+          Left = 8
+          Top = 16
+          Width = 384
+          Height = 21
+          MaxLength = 60
+          TabOrder = 0
+          OnChange = EAddress1Change
+        end
+        object EAddress2: TEdit
+          Left = 8
+          Top = 40
+          Width = 384
+          Height = 21
+          MaxLength = 60
+          TabOrder = 1
+          OnChange = EAddress2Change
+        end
+        object EPostalCode: TEdit
+          Left = 88
+          Top = 64
+          Width = 64
+          Height = 21
+          MaxLength = 10
+          TabOrder = 2
+          OnChange = EPostalCodeChange
+        end
+        object ECity: TEdit
+          Left = 88
+          Top = 88
+          Width = 192
+          Height = 21
+          MaxLength = 30
+          TabOrder = 3
+          OnChange = ECityChange
+        end
+        object ECountry: TEdit
+          Left = 88
+          Top = 112
+          Width = 192
+          Height = 21
+          CharCase = ecUpperCase
+          MaxLength = 30
+          TabOrder = 4
+          OnChange = ECountryChange
+        end
+      end
+      object EPhone: TEdit
+        Left = 88
+        Top = 256
+        Width = 128
+        Height = 21
+        MaxLength = 20
+        TabOrder = 4
+        OnChange = EPhoneChange
+      end
+      object EMail: TEdit
+        Left = 88
+        Top = 312
+        Width = 256
+        Height = 21
+        Hint = 'Address to which the license activation key will be sent'
+        MaxLength = 60
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 6
+        OnChange = EMailChange
+      end
+      object ELastName: TEdit
+        Left = 88
+        Top = 32
+        Width = 192
+        Height = 21
+        MaxLength = 30
+        TabOrder = 1
+        OnChange = ELastNameChange
+      end
+      object EFirstName: TEdit
+        Left = 88
+        Top = 8
+        Width = 192
+        Height = 21
+        MaxLength = 30
+        TabOrder = 0
+        OnChange = EFirstNameChange
+      end
+      object EFax: TEdit
+        Left = 88
+        Top = 280
+        Width = 128
+        Height = 21
+        MaxLength = 20
+        TabOrder = 5
+        OnChange = EFaxChange
+      end
+      object ECompany: TEdit
+        Left = 88
+        Top = 64
+        Width = 256
+        Height = 21
+        MaxLength = 40
+        TabOrder = 2
+        OnChange = ECompanyChange
+      end
+    end
+    object BBHelp: TBitBtn
+      Left = 152
+      Top = 534
+      Width = 80
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Caption = 'Help'
+      NumGlyphs = 2
+      TabOrder = 4
+      OnClick = BBHelpClick
+    end
+    object GBExport: TGroupBox
+      Left = 8
+      Top = 456
+      Width = 264
+      Height = 64
+      Caption = 'Request a license activation key'
+      TabOrder = 2
+      object BBAutomatic: TBitBtn
+        Left = 24
+        Top = 24
+        Width = 80
+        Height = 25
+        Hint = 
+          'Send information from which the license activation key will be g' +
+          'enerated (network connection needed)'
+        Caption = 'Automatic'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = BBAutomaticClick
+      end
+      object BBManual: TBitBtn
+        Left = 160
+        Top = 24
+        Width = 80
+        Height = 25
+        Hint = 
+          'Create a license activation file that you have to upload manuall' +
+          'y'
+        Caption = 'Manual'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = BBManualClick
+      end
+    end
+    object GBImport: TGroupBox
+      Left = 280
+      Top = 456
+      Width = 128
+      Height = 64
+      Caption = 'Validate the license'
+      TabOrder = 3
+      object BBImport: TBitBtn
+        Left = 24
+        Top = 24
+        Width = 80
+        Height = 25
+        Hint = 
+          'Import the license activation file (InraPorc.lic) that you recie' +
+          'ved by e-mail'
+        Caption = 'Import'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = BBImportClick
+      end
+    end
+  end
+  object REHelp: TRichEdit
+    Left = 0
+    Top = 0
+    Width = 400
+    Height = 568
+    Align = alClient
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 1
+  end
+  object SaveDialogLicFile: TSaveDialog
+    Options = [ofOverwritePrompt, ofHideReadOnly, ofNoChangeDir, ofEnableSizing]
+    Left = 40
+    Top = 8
+  end
+  object OpenDialogLicFile: TOpenDialog
+    Options = [ofHideReadOnly, ofNoChangeDir, ofEnableSizing]
+    Left = 40
+    Top = 64
+  end
+  object IdHTTPLicense: TIdHTTP
+    IOHandler = IdSSL
+    AllowCookies = True
+    HandleRedirects = True
+    ProxyParams.BasicAuthentication = False
+    ProxyParams.ProxyPort = 0
+    Request.ContentLength = -1
+    Request.ContentRangeEnd = -1
+    Request.ContentRangeStart = -1
+    Request.ContentRangeInstanceLength = -1
+    Request.Accept = 'text/html, */*'
+    Request.BasicAuthentication = False
+    Request.UserAgent = 'Mozilla/3.0 (compatible; Indy Library)'
+    Request.Ranges.Units = 'bytes'
+    Request.Ranges = <>
+    HTTPOptions = [hoForceEncodeParams]
+    Left = 40
+    Top = 120
+  end
+  object IdSSL: TIdSSLIOHandlerSocketOpenSSL
+    MaxLineAction = maException
+    Port = 0
+    DefaultPort = 0
+    SSLOptions.Mode = sslmUnassigned
+    SSLOptions.VerifyMode = []
+    SSLOptions.VerifyDepth = 0
+    Left = 40
+    Top = 176
+  end
+end
Index: UFTarif.pas
===================================================================
--- UFTarif.pas	(révision 0)
+++ UFTarif.pas	(révision 3)
@@ -0,0 +1,165 @@
+unit UFTarif ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, Grids, ValEdit, StdCtrls, PBNumEdit, UVariables, gnugettext;
+
+type
+  TFTarif = class(TForm)
+    LBAliment: TListBox;
+    LAliment: TLabel;
+    PBPrix: TPBNumEdit;
+    LMonnaie: TLabel;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormShow(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure FormDeactivate(Sender: TObject);
+    procedure LBAlimentClick(Sender: TObject);
+    procedure PBPrixChange(Sender: TObject);
+    procedure LBAlimentDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure PBPrixKeyPress(Sender: TObject; var Key: Char);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified : boolean ;
+    procedure Save ;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FTarif: TFTarif;
+
+implementation
+
+uses
+  UStrings, UInit, UFindRec ;
+
+{$R *.dfm}
+
+{ TFTarif }
+
+procedure TFTarif.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 304 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 328 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+end;
+
+procedure TFTarif.FormShow (Sender : TObject) ;
+begin
+  Modified := FALSE ;
+end ;
+
+procedure TFTarif.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+begin
+  if Modified then Save ;
+  Action := caFree ;
+  NumWinTarif := -1 ;
+end ;
+
+procedure TFTarif.FormActivate (Sender : TObject) ;
+begin
+  LMonnaie.Caption := Format ('%s / 1000 %s', [CurrencySign, StrKg]) ;
+  StringsAliment (LBAliment.Items, 0, TRUE) ;
+  LBAlimentClick (nil) ;
+end ;
+
+procedure TFTarif.FormDeactivate (Sender : TObject) ;
+begin
+  if Modified then Save ;
+end ;
+
+procedure TFTarif.Save ;
+begin
+  Modified := FALSE ;
+  if MessageDlg (MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+  then
+    SaveAliment
+  else
+  begin
+    LoadAliment ;
+    LBAliment.Repaint ;
+  end ;
+end ;
+
+procedure TFTarif.LBAlimentClick (Sender : TObject) ;
+begin
+  if LBAliment.ItemIndex = -1
+  then
+  begin
+    PBPrix.Enabled := FALSE ;
+    Update := TRUE ;
+    PBPrix.Text := '' ;
+    Update := FALSE ;
+  end
+  else
+  begin
+    PBPrix.Enabled := TRUE ;
+    Update := TRUE ;
+    PAliment := ListAliment[FindIdxAliment (LBAliment.Items[LBAliment.ItemIndex])] ;
+    PBPrix.AsFloat := PAliment.Prix ;
+    Update := FALSE ;
+    ActiveControl := PBPrix ;
+    PBPrix.SelectAll ;
+  end ;
+end ;
+
+procedure TFTarif.LBAlimentDrawItem (Control : TWinControl ; Index : Integer ;
+  Rect : TRect ; State : TOwnerDrawState) ;
+begin
+  with (Control as TListBox).Canvas do
+  begin
+    // Cadre principal
+    FillRect (Rect) ;
+    // Nom
+    SetTextAlign (Handle, TA_LEFT) ;
+    TextRect (Rect, Rect.Left + 2, Rect.Top, LBAliment.Items[Index]) ;
+    // Prix
+    Rect.Left := 224 ;
+    if (LBAliment.Items.Count > 20)
+    then
+      Rect.Right := Rect.Right - 1
+    else
+      // L'ascensseur fait 17 pixels
+      Rect.Right := Rect.Right - 18 ;
+    SetTextAlign (Handle, TA_RIGHT) ;
+    PAliment := ListAliment[FindIdxAliment (LBAliment.Items[Index])] ;
+    TextRect (Rect, Rect.Right - 2, Rect.Top, Format ('%6.2f', [PAliment.Prix])) ;
+  end ;
+end ;
+
+procedure TFTarif.PBPrixChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PAliment := ListAliment[FindIdxAliment (LBAliment.Items[LBAliment.ItemIndex])] ;
+    PAliment.Prix := PBPrix.AsFloat ;
+    LBAliment.Repaint ;
+  end ;
+end ;
+
+procedure TFTarif.PBPrixKeyPress(Sender: TObject; var Key: Char);
+begin
+  if Key = #13
+  then
+    if LBAliment.ItemIndex < LBAliment.Count - 1
+    then
+    begin
+      LBAliment.ItemIndex := LBAliment.ItemIndex + 1 ;
+      LBAlimentClick (nil) ;
+      Key := #0 ;
+    end ;
+end;
+
+end.
Index: UFLoader.pas
===================================================================
--- UFLoader.pas	(révision 0)
+++ UFLoader.pas	(révision 3)
@@ -0,0 +1,139 @@
+unit UFLoader;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, ComCtrls;
+
+type
+  TFLoader = class(TForm)
+    PBLoader: TProgressBar;
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+    procedure Init;
+  end;
+
+var
+  FLoader: TFLoader;
+
+implementation
+
+uses
+  Dialogs, SysUtils, gnugettext, UVariables, UStrings, UInit, UUtil, UFIntro,
+  UFLicense;
+
+{$R *.dfm}
+
+procedure TFLoader.Init;
+var
+  FileName: String;
+  VolumeSerialNumber: String;
+  Ok: Boolean;
+  s: String;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  // Langue
+  UseLanguage(LanguageCode);
+  TranslateComponent(Self);
+  if ParamCount > 1
+  then // Nombre de param�tres incorrect
+    MessageDlg(Format(MsgParamCount, [ParamCount, ParamStr(0), ExtractFileName(Application.ExeName)]), mtError, [mbOk], 0);
+  PBLoader.StepIt;
+  // Licence
+  InitLicense;
+  LoadLicense;
+  if (MajorVersion > 9)
+  or (MinorVersion > 9)
+  or (ReleaseVersion > 9)
+  or (BuildVersion > 9)
+  then // Num�ro de version incorrect
+  begin
+    MessageDlg(Format(StrVersion, [MajorVersion, MinorVersion, ReleaseVersion, BuildVersion]), mtError, [mbOk], 0);
+    Application.Terminate;
+    Exit;
+  end;
+  if ((LicenseType = 1) or (LicenseType = 2)) and (StrToInt(FormatDateTime('yyyymmdd', Date)) > StrToInt(Copy(FinalDate, 7, 4) + Copy(FinalDate, 4, 2) + Copy(FinalDate, 1, 2)))
+  then // Date limite d�pass�e
+    MessageDlg(MsgFinalDate, mtWarning, [mbOk], 0);
+  if (LicenseType = 2) and (DriveType(Drive) <> DRIVE_FIXED)
+  then // La version compl�te doit �tre install�e sur un disque fixe
+    MessageDlg(MsgFixedDrive, mtWarning, [mbOk], 0);
+  VolumeSerialNumber := BdRReadString('\Software\InraPorc\License', 'VolumeSerialNumber', Volume);
+  if ((LicenseType = 1) or (LicenseType = 2)) and (Volume <> VolumeSerialNumber)
+  then // Changement de disque
+    MessageDlg(MsgDiskChanged, mtWarning, [mbOk], 0);
+  // Aide
+  if Copy(LanguageCode, 1, 2) = 'fr'
+  then // Fran�ais
+    FileName := ChangeFileExt(Application.ExeName, '_fr.chm')
+  else // Anglais
+    FileName := ChangeFileExt(Application.ExeName, '_en.chm');
+  if FileExists(FileName)
+  then
+    Application.HelpFile := FileName;
+  // Contrat de licence
+  case LicenseType of
+    1: s := 'AcceptEducation';
+    2: s := 'AcceptComplete';
+    else s := 'AcceptEvaluation';
+  end;
+  if not BdRReadBoolean('\Software\InraPorc', s, False)
+  then
+  begin
+    FIntro := TFIntro.Create(Self);
+    Ok := FIntro.ShowModal = mrOk;
+    FIntro.Release;
+    if Ok
+    then // Accepter
+      BdRWriteBoolean('\Software\InraPorc', s, True)
+    else // Refuser
+    begin
+      Application.Terminate;
+      Exit;
+    end;
+  end;
+  PBLoader.StepIt;
+  // Configuration
+  LoadConfig;
+  // Donn�es
+  if ParamCount = 1
+  then // R�pertoire pass� en param�tre
+    if DirectoryExists(ParamStr(1))
+    then // R�pertoire enregistr� dans la configuration
+      DataFolderExists := SetCurrentDir(ParamStr(1))
+    else
+    begin
+      MessageDlg(Format(MsgDataDirectory, [ParamStr(1)]), mtError, [mbOk], 0);
+      DataFolderExists := False;
+    end
+  else // R�pertoire par d�faut (Configuration)
+    if DirectoryExists(Folder)
+    then // R�pertoire enregistr� dans la configuration
+      DataFolderExists := SetCurrentDir(Folder)
+    else
+    begin
+      MessageDlg(Format(MsgDataDirectory, [Folder]), mtError, [mbOk], 0);
+      DataFolderExists := False;
+    end;
+  PBLoader.StepIt;
+  InitData;
+  PBLoader.StepIt;
+  LoadData;
+  PBLoader.StepIt;
+  if ((LicenseType = 0) or (LicenseType = 1)) and TooMuchRecords
+  then // Trop d'enregistrements
+    MessageDlg(MsgTooMuchRecords, mtWarning, [mbOk], 0);
+  if not IsComplete and not IsEducation
+  then
+  begin
+    FLicense := TFLicense.Create(Self);
+    FLicense.ShowModal;
+    FLicense.Release;
+  end;
+end;
+
+end.
Index: UFRapBesLactE.dfm
===================================================================
--- UFRapBesLactE.dfm	(révision 0)
+++ UFRapBesLactE.dfm	(révision 3)
@@ -0,0 +1,4626 @@
+object FRapBesLactE: TFRapBesLactE
+  Left = 0
+  Top = 80
+  Caption = 'Report of requirements during lactation (herd)'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Requirements of the sow during lactation'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QREAppAli: TQRExpr
+        Left = 255
+        Top = 300
+        Width = 265
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          674.687500000000000000
+          793.750000000000000000
+          701.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesAli_ - CDSRapport._DefAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAppEN: TQRExpr
+        Left = -190
+        Top = 300
+        Width = 590
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -502.708333333333300000
+          793.750000000000000000
+          1561.041666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._BesEMTot_ - CDSRapport._DefEM_) / CDSRapport._AppEM' +
+          '_ * CDSRapport._AppEN_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAppEM: TQRExpr
+        Left = -13
+        Top = 300
+        Width = 293
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -34.395833333333330000
+          793.750000000000000000
+          775.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMTot_ - CDSRapport._DefEM_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel6: TQRLabel
+        Left = 528
+        Top = 300
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1397.000000000000000000
+          793.750000000000000000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'kg feed'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel5: TQRLabel
+        Left = 408
+        Top = 300
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          793.750000000000000000
+          105.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ NE'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel4: TQRLabel
+        Left = 288
+        Top = 300
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          793.750000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel1: TQRLabel
+        Left = 40
+        Top = 300
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          793.750000000000000000
+          201.083333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed intake'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDefEN: TQRExpr
+        Left = -19
+        Top = 320
+        Width = 419
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -50.270833333333330000
+          846.666666666666700000
+          1108.604166666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._DefEM_ / CDSRapport._AppEM_ * CDSRapport._AppEN_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRShape1: TQRShape
+        Left = 32
+        Top = 272
+        Width = 654
+        Height = 24
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          63.500000000000000000
+          84.666666666666700000
+          719.666666666667000000
+          1730.375000000000000000)
+        Pen.Width = 4
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QREBesENTot: TQRExpr
+        Left = -41
+        Top = 276
+        Width = 441
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -108.479166666666700000
+          730.250000000000000000
+          1166.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMTot_ / CDSRapport._AppEM_ * CDSRapport._AppEN_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLBesENTot: TQRLabel
+        Left = 408
+        Top = 276
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          730.250000000000000000
+          105.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ NE'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctPort: TQRExpr
+        Left = 48
+        Top = 252
+        Width = 352
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          127.000000000000000000
+          666.750000000000000000
+          931.333333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMLait_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctEnt: TQRExpr
+        Left = 49
+        Top = 232
+        Width = 351
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          129.645833333333300000
+          613.833333333333300000
+          928.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMEnt_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText3: TQRDBText
+        Left = 210
+        Top = 104
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          555.625000000000000000
+          275.166666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GMQPort_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText2: TQRDBText
+        Left = 226
+        Top = 84
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          597.958333333333300000
+          222.250000000000000000
+          142.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Sevres_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPoids: TQRLabel
+        Left = 40
+        Top = 148
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          391.583333333333300000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Body weight (kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCaract: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 116
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          21.166666666666670000
+          306.916666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Characteristics'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLMiseBas: TQRLabel
+        Left = 334
+        Top = 128
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          883.708333333333300000
+          338.666666666666700000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Farrowing'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP2: TQRLabel
+        Left = 40
+        Top = 168
+        Width = 146
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          444.500000000000000000
+          386.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Backfat thickness (mm)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAge: TQRLabel
+        Left = 40
+        Top = 64
+        Width = 150
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          169.333333333333300000
+          396.875000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Duration of lactation (d)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSevres: TQRLabel
+        Left = 40
+        Top = 84
+        Width = 168
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          222.250000000000000000
+          444.500000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Number of piglets weaned'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPdsPt: TQRLabel
+        Left = 40
+        Top = 104
+        Width = 121
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          275.166666666666700000
+          320.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Litter growth (kg/d)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsMB: TQRDBText
+        Left = 342
+        Top = 148
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          391.583333333333300000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsMB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MB: TQRDBText
+        Left = 349
+        Top = 168
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          923.395833333333300000
+          444.500000000000000000
+          134.937500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeMB: TQRDBText
+        Left = 206
+        Top = 64
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          545.041666666666700000
+          169.333333333333300000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJ: TQRLabel
+        Left = 40
+        Top = 200
+        Width = 235
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          529.166666666666700000
+          621.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Mean daily energy requirement'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLAA: TQRLabel
+        Left = 40
+        Top = 352
+        Width = 374
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          931.333333333333300000
+          989.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible amino acid requirement (standardized)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLNRJEnt: TQRLabel
+        Left = 40
+        Top = 232
+        Width = 83
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          613.833333333333300000
+          219.604166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Maintenance'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJPort: TQRLabel
+        Left = 40
+        Top = 252
+        Width = 27
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          666.750000000000000000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Milk'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJTot: TQRLabel
+        Left = 40
+        Top = 276
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          730.250000000000000000
+          87.312500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMEnt: TQRDBText
+        Left = 202
+        Top = 232
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          534.458333333333300000
+          613.833333333333300000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMEnt_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMEnt: TQRLabel
+        Left = 288
+        Top = 232
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          613.833333333333300000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctEnt: TQRLabel
+        Left = 408
+        Top = 232
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          613.833333333333300000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMPort: TQRDBText
+        Left = 201
+        Top = 252
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          531.812500000000000000
+          666.750000000000000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMLait_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMPort: TQRLabel
+        Left = 288
+        Top = 252
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          666.750000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctPort: TQRLabel
+        Left = 408
+        Top = 252
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          666.750000000000000000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTBesEMTot: TQRDBText
+        Left = 204
+        Top = 276
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          730.250000000000000000
+          201.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMTot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLBesEMTot: TQRLabel
+        Left = 288
+        Top = 276
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          730.250000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREArgPctLys: TQRExpr
+        Left = 292
+        Top = 616
+        Width = 268
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          772.583333333333300000
+          1629.833333333333000000
+          709.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Arg_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREHisPctLys: TQRExpr
+        Left = 293
+        Top = 596
+        Width = 267
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          775.229166666666700000
+          1576.916666666667000000
+          706.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._His_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREValPctLys: TQRExpr
+        Left = 293
+        Top = 576
+        Width = 267
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          775.229166666666700000
+          1524.000000000000000000
+          706.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Val_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREIlePctLys: TQRExpr
+        Left = 299
+        Top = 556
+        Width = 261
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          791.104166666666700000
+          1471.083333333333000000
+          690.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ile_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELeuPctLys: TQRExpr
+        Left = 291
+        Top = 536
+        Width = 269
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          769.937500000000000000
+          1418.166666666667000000
+          711.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Leu_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheTyrPctLys: TQRExpr
+        Left = 271
+        Top = 516
+        Width = 289
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          717.020833333333300000
+          1365.250000000000000000
+          764.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PheTyr_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPhePctLys: TQRExpr
+        Left = 289
+        Top = 496
+        Width = 271
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1312.333333333333000000
+          717.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Phe_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREThrPctLys: TQRExpr
+        Left = 294
+        Top = 476
+        Width = 266
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          777.875000000000000000
+          1259.416666666667000000
+          703.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Thr_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRETrpPctLys: TQRExpr
+        Left = 294
+        Top = 456
+        Width = 266
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          777.875000000000000000
+          1206.500000000000000000
+          703.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Trp_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetCysPctLys: TQRExpr
+        Left = 267
+        Top = 436
+        Width = 293
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          706.437500000000000000
+          1153.583333333333000000
+          775.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._MetCys_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetPctLys: TQRExpr
+        Left = 290
+        Top = 416
+        Width = 270
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          767.291666666666700000
+          1100.666666666667000000
+          714.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Met_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELysPctLys: TQRExpr
+        Left = 291
+        Top = 396
+        Width = 269
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          769.937500000000000000
+          1047.750000000000000000
+          711.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Lys_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREArgAli: TQRExpr
+        Left = 45
+        Top = 616
+        Width = 395
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          119.062500000000000000
+          1629.833333333333000000
+          1045.104166666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Arg_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREHisAli: TQRExpr
+        Left = 46
+        Top = 596
+        Width = 394
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          121.708333333333300000
+          1576.916666666667000000
+          1042.458333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._His_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREValAli: TQRExpr
+        Left = 46
+        Top = 576
+        Width = 394
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          121.708333333333300000
+          1524.000000000000000000
+          1042.458333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Val_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREIleAli: TQRExpr
+        Left = 52
+        Top = 556
+        Width = 388
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          137.583333333333300000
+          1471.083333333333000000
+          1026.583333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ile_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELeuAli: TQRExpr
+        Left = 44
+        Top = 536
+        Width = 396
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          116.416666666666700000
+          1418.166666666667000000
+          1047.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Leu_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheTyrAli: TQRExpr
+        Left = 24
+        Top = 516
+        Width = 416
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          63.500000000000000000
+          1365.250000000000000000
+          1100.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._PheTyr_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_' +
+          ')'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheAli: TQRExpr
+        Left = 42
+        Top = 496
+        Width = 398
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          111.125000000000000000
+          1312.333333333333000000
+          1053.041666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Phe_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREThrAli: TQRExpr
+        Left = 47
+        Top = 476
+        Width = 393
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          124.354166666666700000
+          1259.416666666667000000
+          1039.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Thr_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRETrpAli: TQRExpr
+        Left = 47
+        Top = 456
+        Width = 393
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          124.354166666666700000
+          1206.500000000000000000
+          1039.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Trp_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetCysAli: TQRExpr
+        Left = 20
+        Top = 436
+        Width = 420
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          52.916666666666670000
+          1153.583333333333000000
+          1111.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._MetCys_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_' +
+          ')'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetAli: TQRExpr
+        Left = 43
+        Top = 416
+        Width = 397
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          113.770833333333300000
+          1100.666666666667000000
+          1050.395833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Met_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELysAli: TQRExpr
+        Left = 44
+        Top = 396
+        Width = 396
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          116.416666666666700000
+          1047.750000000000000000
+          1047.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Lys_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAATot: TQRLabel
+        Left = 299
+        Top = 376
+        Width = 21
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          791.104166666666700000
+          994.833333333333300000
+          55.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'g/d'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAAAli: TQRLabel
+        Left = 412
+        Top = 376
+        Width = 28
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1090.083333333333000000
+          994.833333333333300000
+          74.083333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'g/kg'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctLys: TQRLabel
+        Left = 524
+        Top = 376
+        Width = 36
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1386.416666666667000000
+          994.833333333333300000
+          95.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '% Lys'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLys: TQRLabel
+        Left = 40
+        Top = 396
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1047.750000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lysine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMet: TQRLabel
+        Left = 40
+        Top = 416
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1100.666666666667000000
+          190.500000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMetCys: TQRLabel
+        Left = 40
+        Top = 436
+        Width = 134
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1153.583333333333000000
+          354.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine + Cystine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTrp: TQRLabel
+        Left = 40
+        Top = 456
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1206.500000000000000000
+          193.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Tryptophan'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLThr: TQRLabel
+        Left = 40
+        Top = 476
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1259.416666666667000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Threonine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPhe: TQRLabel
+        Left = 40
+        Top = 496
+        Width = 93
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1312.333333333333000000
+          246.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPheTyr: TQRLabel
+        Left = 40
+        Top = 516
+        Width = 163
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1365.250000000000000000
+          431.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine + Tyrosine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLeu: TQRLabel
+        Left = 40
+        Top = 536
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1418.166666666667000000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Leucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLIle: TQRLabel
+        Left = 40
+        Top = 556
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1471.083333333333000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Isoleucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLVal: TQRLabel
+        Left = 40
+        Top = 576
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1524.000000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Valine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLHis: TQRLabel
+        Left = 40
+        Top = 596
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1576.916666666667000000
+          148.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Histidine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLArg: TQRLabel
+        Left = 40
+        Top = 616
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1629.833333333333000000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Arginine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLysTot: TQRDBText
+        Left = 284
+        Top = 396
+        Width = 36
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          751.416666666666700000
+          1047.750000000000000000
+          95.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Lys_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetTot: TQRDBText
+        Left = 283
+        Top = 416
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          748.770833333333300000
+          1100.666666666667000000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Met_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetCysTot: TQRDBText
+        Left = 260
+        Top = 436
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          687.916666666666700000
+          1153.583333333333000000
+          158.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_MetCys_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTrpTot: TQRDBText
+        Left = 287
+        Top = 456
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1206.500000000000000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Trp_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTThrTot: TQRDBText
+        Left = 287
+        Top = 476
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1259.416666666667000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Thr_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTot: TQRDBText
+        Left = 282
+        Top = 496
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          746.125000000000000000
+          1312.333333333333000000
+          100.541666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Phe_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTyrTot: TQRDBText
+        Left = 264
+        Top = 516
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          1365.250000000000000000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PheTyr_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLeuTot: TQRDBText
+        Left = 284
+        Top = 536
+        Width = 36
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          751.416666666666700000
+          1418.166666666667000000
+          95.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Leu_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTIleTot: TQRDBText
+        Left = 292
+        Top = 556
+        Width = 28
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          772.583333333333300000
+          1471.083333333333000000
+          74.083333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ile_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTValTot: TQRDBText
+        Left = 286
+        Top = 576
+        Width = 34
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          756.708333333333300000
+          1524.000000000000000000
+          89.958333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Val_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTHisTot: TQRDBText
+        Left = 286
+        Top = 596
+        Width = 34
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          756.708333333333300000
+          1576.916666666667000000
+          89.958333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_His_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTArgTot: TQRDBText
+        Left = 285
+        Top = 616
+        Width = 35
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          754.062500000000000000
+          1629.833333333333000000
+          92.604166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Arg_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLDeficit: TQRLabel
+        Left = 40
+        Top = 320
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          846.666666666666700000
+          177.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Deficiency'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTBesAli: TQRDBText
+        Left = 467
+        Top = 276
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1235.604166666667000000
+          730.250000000000000000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesAli_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLBesAli: TQRLabel
+        Left = 528
+        Top = 276
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1397.000000000000000000
+          730.250000000000000000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'kg feed'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLDefEN: TQRLabel
+        Left = 408
+        Top = 320
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          846.666666666666700000
+          105.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ NE'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTDefEM: TQRDBText
+        Left = 226
+        Top = 320
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          597.958333333333300000
+          846.666666666666700000
+          142.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DefEM_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLDefEM: TQRLabel
+        Left = 288
+        Top = 320
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          846.666666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTDefAli: TQRDBText
+        Left = 471
+        Top = 320
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1246.187500000000000000
+          846.666666666666700000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DefAli_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLDefAli: TQRLabel
+        Left = 528
+        Top = 320
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1397.000000000000000000
+          846.666666666666700000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'kg feed'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMin: TQRLabel
+        Left = 40
+        Top = 648
+        Width = 152
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          1714.500000000000000000
+          402.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Mineral requirement'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRECaAli: TQRExpr
+        Left = 49
+        Top = 712
+        Width = 391
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          129.645833333333000000
+          1883.833333333330000000
+          1034.520833333330000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ca_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPAli: TQRExpr
+        Left = 56
+        Top = 692
+        Width = 384
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          148.166666666667000000
+          1830.916666666670000000
+          1016.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._P_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel2: TQRLabel
+        Left = 299
+        Top = 672
+        Width = 21
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          791.104166666666700000
+          1778.000000000000000000
+          55.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'g/d'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel3: TQRLabel
+        Left = 412
+        Top = 672
+        Width = 28
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1090.083333333333000000
+          1778.000000000000000000
+          74.083333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'g/kg'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP: TQRLabel
+        Left = 40
+        Top = 692
+        Width = 135
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1830.916666666670000000
+          357.187500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible phosphorus'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCa: TQRLabel
+        Left = 40
+        Top = 712
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1883.833333333330000000
+          224.895833333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total calcium'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPTot: TQRDBText
+        Left = 296
+        Top = 692
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          783.166666666667000000
+          1830.916666666670000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCaTot: TQRDBText
+        Left = 289
+        Top = 712
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          764.645833333333000000
+          1883.833333333330000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ca_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRShape6: TQRShape
+        Left = 480
+        Top = 4
+        Width = 200
+        Height = 28
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          74.083333333333300000
+          1270.000000000000000000
+          10.583333333333300000
+          529.166666666667000000)
+        Pen.Width = 4
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRDBTCycle: TQRDBText
+        Left = 578
+        Top = 8
+        Width = 62
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1529.291666666667000000
+          21.166666666666670000
+          164.041666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Cycle_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLCycle: TQRLabel
+        Left = 520
+        Top = 8
+        Width = 58
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1375.833333333333000000
+          21.166666666666670000
+          153.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'LITTER'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLProfil: TQRLabel
+        Left = 40
+        Top = 40
+        Width = 91
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          105.833333333333300000
+          240.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Animal profile'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTProfil: TQRDBText
+        Left = 264
+        Top = 40
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          105.833333333333300000
+          116.416666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Profil_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object IFCycle: TIntegerField
+      FieldName = '_Cycle_'
+    end
+    object SFProfil: TStringField
+      FieldName = '_Profil_'
+      Size = 25
+    end
+    object IFDureeLact: TIntegerField
+      FieldName = '_DureeLact_'
+    end
+    object FFPdsMB: TFloatField
+      FieldName = '_PdsMB_'
+    end
+    object FFP2MB: TFloatField
+      FieldName = '_P2MB_'
+    end
+    object FFSevres: TFloatField
+      FieldName = '_Sevres_'
+    end
+    object FFGMQPort: TFloatField
+      FieldName = '_GMQPort_'
+    end
+    object FFBesEMEnt: TFloatField
+      FieldName = '_BesEMEnt_'
+    end
+    object FFBesEMLait: TFloatField
+      FieldName = '_BesEMLait_'
+    end
+    object FFBesEMTot: TFloatField
+      FieldName = '_BesEMTot_'
+    end
+    object FFAppED: TFloatField
+      FieldName = '_AppED_'
+    end
+    object FFAppEM: TFloatField
+      FieldName = '_AppEM_'
+    end
+    object FFAppEN: TFloatField
+      FieldName = '_AppEN_'
+    end
+    object FFBesAli: TFloatField
+      FieldName = '_BesAli_'
+    end
+    object FFDefEM: TFloatField
+      FieldName = '_DefEM_'
+    end
+    object FFDefAli: TFloatField
+      FieldName = '_DefAli_'
+    end
+    object FFLys: TFloatField
+      FieldName = '_Lys_'
+    end
+    object FFMet: TFloatField
+      FieldName = '_Met_'
+    end
+    object FFMetCys: TFloatField
+      FieldName = '_MetCys_'
+    end
+    object FFTrp: TFloatField
+      FieldName = '_Trp_'
+    end
+    object FFThr: TFloatField
+      FieldName = '_Thr_'
+    end
+    object FFPhe: TFloatField
+      FieldName = '_Phe_'
+    end
+    object FFPheTyr: TFloatField
+      FieldName = '_PheTyr_'
+    end
+    object FFLeu: TFloatField
+      FieldName = '_Leu_'
+    end
+    object FFIle: TFloatField
+      FieldName = '_Ile_'
+    end
+    object FFVal: TFloatField
+      FieldName = '_Val_'
+    end
+    object FFHis: TFloatField
+      FieldName = '_His_'
+    end
+    object FFArg: TFloatField
+      FieldName = '_Arg_'
+    end
+    object FFP: TFloatField
+      FieldName = '_P_'
+    end
+    object FFCa: TFloatField
+      FieldName = '_Ca_'
+    end
+  end
+end
Index: UFGraphAli.dfm
===================================================================
--- UFGraphAli.dfm	(révision 0)
+++ UFGraphAli.dfm	(révision 3)
@@ -0,0 +1,317 @@
+object FGraphAli: TFGraphAli
+  Left = 165
+  Top = 200
+  HelpContext = 2700
+  Caption = 'Contribution of feed ingredients to the chemical composition'
+  ClientHeight = 354
+  ClientWidth = 544
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBConfig: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 544
+    Height = 48
+    Align = alTop
+    Caption = 'Select a graph'
+    TabOrder = 0
+    object CBTSFibres: TComboBox
+      Left = 192
+      Top = 16
+      Width = 160
+      Height = 21
+      Style = csDropDownList
+      ItemHeight = 13
+      ItemIndex = 0
+      TabOrder = 5
+      Text = 'Crude fiber'
+      Visible = False
+      OnChange = CBTSFibresChange
+      Items.Strings = (
+        'Crude fiber'
+        'NDF'
+        'ADF'
+        'ADL'
+        'Total dietary fiber')
+    end
+    object CBTSMineraux: TComboBox
+      Left = 192
+      Top = 16
+      Width = 160
+      Height = 21
+      Style = csDropDownList
+      ItemHeight = 13
+      ItemIndex = 0
+      TabOrder = 4
+      Text = 'Calcium (Ca)'
+      Visible = False
+      OnChange = CBTSMinerauxChange
+      Items.Strings = (
+        'Calcium (Ca)'
+        'Phosphorus (P)'
+        'Sodium (Na)'
+        'Potassium (K)'
+        'Magnesium (Mg)'
+        'Chlorine (Cl)'
+        'Sulfur (S)'
+        'Copper (Cu)'
+        'Zinc (Zn)'
+        'Manganese (Mn)'
+        'Iron (Fe)'
+        'Selenium (Se)'
+        'Cobalt (Co)'
+        'Molybdene (Mo)'
+        'Iodine (I)'
+        'Digestible phosphorus'
+        'Phytic acid phosphorus'
+        'Phytase activity')
+    end
+    object CBTSAG: TComboBox
+      Left = 192
+      Top = 16
+      Width = 160
+      Height = 21
+      Style = csDropDownList
+      ItemHeight = 13
+      ItemIndex = 0
+      TabOrder = 7
+      Text = 'C6:0 + C8:0 + C10:0'
+      Visible = False
+      OnChange = CBTSAGChange
+      Items.Strings = (
+        'C6:0 + C8:0 + C10:0'
+        'C12:0'
+        'C14:0'
+        'C16:0'
+        'C16:1'
+        'C18:0'
+        'C18:1'
+        'C18:2'
+        'C18:3'
+        'C18:4'
+        'C20:0'
+        'C20:1'
+        'C20:4'
+        'C20:5'
+        'C22:0'
+        'C22:1'
+        'C22:5'
+        'C22:6'
+        'C24:0')
+    end
+    object CBOnglet: TComboBox
+      Left = 16
+      Top = 16
+      Width = 160
+      Height = 21
+      Style = csDropDownList
+      ItemHeight = 13
+      ItemIndex = 0
+      TabOrder = 0
+      Text = 'Elementary composition'
+      OnChange = CBOngletChange
+      Items.Strings = (
+        'Elementary composition'
+        'Amino acids'
+        'Fatty acids'
+        'Minerals'
+        'Fiber')
+    end
+    object RBCrois: TRadioButton
+      Left = 368
+      Top = 12
+      Width = 80
+      Height = 16
+      Caption = 'Growing pig'
+      Checked = True
+      TabOrder = 1
+      TabStop = True
+      OnClick = RBTypeClick
+    end
+    object RBTruie: TRadioButton
+      Left = 368
+      Top = 28
+      Width = 80
+      Height = 16
+      Caption = 'Sow'
+      TabOrder = 2
+      OnClick = RBTypeClick
+    end
+    object CBTSAA: TComboBox
+      Left = 192
+      Top = 16
+      Width = 160
+      Height = 21
+      Style = csDropDownList
+      ItemHeight = 13
+      ItemIndex = 1
+      TabOrder = 3
+      Text = 'Lysine'
+      Visible = False
+      OnChange = CBTSAAChange
+      Items.Strings = (
+        'Crude protein'
+        'Lysine'
+        'Methionine'
+        'Cystine'
+        'Tryptophan'
+        'Threonine'
+        'Phenylalanine'
+        'Tyrosine'
+        'Leucine'
+        'Isoleucine'
+        'Valine'
+        'Histidine'
+        'Arginine'
+        'Digestible crude protein'
+        'Digestible lysine'
+        'Digestible methionine'
+        'Digestible cystine'
+        'Digestible tryptophan'
+        'Digestible threonine'
+        'Digestible phenylalanine'
+        'Digestible tyrosine'
+        'Digestible leucine'
+        'Digestible isoleucine'
+        'Digestible valine'
+        'Digestible histidine'
+        'Digestible arginine')
+    end
+    object CBTSElem: TComboBox
+      Left = 192
+      Top = 16
+      Width = 160
+      Height = 21
+      Style = csDropDownList
+      ItemHeight = 13
+      ItemIndex = 0
+      TabOrder = 6
+      Text = 'As-fed'
+      OnChange = CBTSElemChange
+      Items.Strings = (
+        'As-fed'
+        'Dry matter'
+        'Ash'
+        'Organic matter'
+        'Crude fat'
+        'Crude protein'
+        'Starch'
+        'Sugars'
+        'Digestible organic matter'
+        'Digestible crude fat'
+        'Digestible crude protein'
+        'Gross energy'
+        'Digestible energy'
+        'Metabolizable energy'
+        'Net energy')
+    end
+  end
+  object Graph: TChart
+    Left = 0
+    Top = 48
+    Width = 544
+    Height = 306
+    AllowPanning = pmNone
+    Foot.Alignment = taLeftJustify
+    Foot.Font.Color = clBlack
+    Foot.Font.Style = []
+    Foot.Text.Strings = (
+      'Feed')
+    LeftWall.Color = clGray
+    Legend.ColorWidth = 10
+    Legend.Font.Charset = ANSI_CHARSET
+    Legend.LegendStyle = lsValues
+    Legend.Symbol.Width = 10
+    Legend.TextStyle = ltsRightPercent
+    Legend.Visible = False
+    MarginBottom = 1
+    MarginLeft = 1
+    MarginRight = 1
+    MarginTop = 1
+    SubTitle.Font.Color = clBlack
+    SubTitle.Text.Strings = (
+      'Total')
+    Title.Font.Height = -16
+    Title.Font.Style = [fsBold]
+    Title.Text.Strings = (
+      'Title')
+    AxisVisible = False
+    BottomAxis.Title.Caption = 'X'
+    BottomAxis.Title.Font.Style = [fsBold]
+    DepthAxis.Title.Font.Style = [fsBold]
+    LeftAxis.Title.Caption = 'Y'
+    LeftAxis.Title.Font.Style = [fsBold]
+    RightAxis.Title.Font.Style = [fsBold]
+    TopAxis.Title.Font.Style = [fsBold]
+    View3DOptions.Elevation = 315
+    View3DOptions.Orthogonal = False
+    View3DOptions.Perspective = 0
+    View3DOptions.Rotation = 360
+    View3DWalls = False
+    Zoom.Allow = False
+    Align = alClient
+    BevelOuter = bvNone
+    PopupMenu = PM
+    TabOrder = 1
+    PrintMargins = (
+      5
+      5
+      5
+      5)
+    object Series1: TPieSeries
+      Marks.Arrow.Color = clBlack
+      Marks.Arrow.Visible = True
+      Marks.Callout.Brush.Color = clBlack
+      Marks.Callout.Arrow.Color = clBlack
+      Marks.Callout.Arrow.Visible = True
+      Marks.Brush.Color = clWhite
+      Marks.Brush.Style = bsClear
+      Marks.Frame.Visible = False
+      Marks.Style = smsLabelPercent
+      Marks.Visible = True
+      PercentFormat = '(##0.0 %)'
+      Title = 'Composition'
+      ValueFormat = '#,##0'
+      XValues.Order = loAscending
+      YValues.Name = 'Pie-chart'
+      YValues.Order = loNone
+      Circled = True
+      Gradient.Direction = gdRadial
+      OtherSlice.Legend.Visible = False
+      OtherSlice.Style = poBelowPercent
+      OtherSlice.Value = 2.000000000000000000
+      PieValues.Name = 'Pie-chart'
+      PieValues.Order = loNone
+    end
+  end
+  object PM: TPopupMenu
+    Top = 48
+    object MI3D: TMenuItem
+      Caption = '2D / 3D'
+      OnClick = MI3DClick
+    end
+    object MIPreview: TMenuItem
+      Caption = 'Print preview'
+      OnClick = MIPreviewClick
+    end
+    object MIPrint: TMenuItem
+      Caption = 'Print...'
+      OnClick = MIPrintClick
+    end
+  end
+  object PD: TPrintDialog
+    Left = 32
+    Top = 48
+  end
+end
Index: UFResBesGestE.pas
===================================================================
--- UFResBesGestE.pas	(révision 0)
+++ UFResBesGestE.pas	(révision 3)
@@ -0,0 +1,544 @@
+unit UFResBesGestE;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, CheckLst, Menus, Printers, 
+  Math, Contnrs, PBNumEdit, PBSuperSpin, Grids, TeEngine, Series, TeeProcs, 
+  Chart, TeeEdit, UVariables, gnugettext;
+
+type
+  TFResBesGestE = class(TForm)
+    PC: TPageControl;
+    TabNRJ: TTabSheet;
+    TabAA: TTabSheet;
+    CBAA3: TComboBox;
+    CBAA4: TComboBox;
+    GBAAY: TGroupBox;
+    Graph: TChart;
+    GBNRJY: TGroupBox;
+    CBNRJ3: TComboBox;
+    LBAA: TListBox;
+    LBNRJ: TListBox;
+    TSAli: TTabSheet;
+    TSMin: TTabSheet;
+    GBMinY: TGroupBox;
+    CBMin3: TComboBox;
+    CBMin4: TComboBox;
+    CBNRJ4: TComboBox;
+    PM: TPopupMenu;
+    MI3D: TMenuItem;
+    MIPreview: TMenuItem;
+    MIPrint: TMenuItem;
+    PD: TPrintDialog;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormShow(Sender: TObject);
+    procedure PCChange(Sender: TObject);
+    procedure CBNRJ3Change(Sender: TObject);
+    procedure CBNRJ4Change(Sender: TObject);
+    procedure CBAA3Change(Sender: TObject);
+    procedure CBAA4Change(Sender: TObject);
+    procedure CBAli2Change(Sender: TObject);
+    procedure CBMin3Change(Sender: TObject);
+    procedure CBMin4Change(Sender: TObject);
+    procedure MI3DClick(Sender: TObject);
+    procedure MIPreviewClick(Sender: TObject);
+    procedure MIPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+    BarAli : TBarSeries ;
+    ListNRJ : TStrings ;
+    BarNRJ : array of TBarSeries ;
+    ListAA : TStrings ;
+    BarAA35 : TBarSeries ;
+    BarAA105 : TBarSeries ;
+    BarMin35 : TBarSeries ;
+    BarMin105 : TBarSeries ;
+    procedure ResetGraph ;
+    procedure InitAli ;
+    procedure AffGraphAli ;
+    procedure InitNRJ ;
+    procedure AffGraphNRJ ;
+    procedure InitAA ;
+    procedure AffGraphAA ;
+    procedure InitMin ;
+    procedure AffGraphMin ;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FResBesGestE: TFResBesGestE;
+
+implementation
+
+uses
+  UStrings, UFindRec, UUtil, UEchelle, UFBesGestE, UFPrevGraph ;
+
+{$R *.dfm}
+
+{ TFResBesGestE }
+
+procedure TFResBesGestE.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 544 + (Width - ClientWidth);
+  Width := 640;
+  Constraints.MinHeight := 400 + (Height - ClientHeight);
+  Height := 480;
+  CBNRJ3.ItemIndex := 0;
+  CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
+  CBNRJ4.Items.Add('%');
+  CBNRJ4.ItemIndex := 0;
+  CBAA3.ItemIndex := 0;
+  CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+  CBAA4.ItemIndex := 0;
+  CBMin3.ItemIndex := 0;
+  CBMin4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+  CBMin4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+  CBMin4.ItemIndex := 0;
+end;
+
+procedure TFResBesGestE.FormShow (Sender : TObject) ;
+begin
+  MIPrint.Enabled := IsComplete or IsEducation ;
+  // Aliment
+  InitAli ;
+  // Energie
+  InitNRJ ;
+  // Acides Amin�s
+  InitAA ;
+  // Min�raux
+  InitMin ;
+  // Affichage principal
+  PC.ActivePageIndex := 0 ;
+  PCChange (nil) ;
+end ;
+
+procedure TFResBesGestE.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+var
+  i : integer ;
+begin
+  // Aliment
+  BarAli.Free ;
+  // Energie
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Free ;
+  SetLength (BarNRJ, 0) ;
+  ListNRJ.Free ;
+  // Acides Amin�s
+  BarAA35.Free ;
+  BarAA105.Free ;
+  ListAA.Free ;
+  // Min�raux
+  BarMin35.Free ;
+  BarMin105.Free ;
+end ;
+
+procedure TFResBesGestE.PCChange (Sender : TObject) ;
+begin
+  case PC.ActivePageIndex of
+    0 : // Aliment
+      AffGraphAli ;
+    1 : // Energie
+      AffGraphNRJ ;
+    2 : // Acides Amin�s
+      AffGraphAA ;
+    3 : // Min�raux
+      AffGraphMin ;
+  end ;
+end ;
+
+procedure TFResBesGestE.ResetGraph ;
+var
+  i : integer ;
+begin
+  Graph.UndoZoom ;
+  Graph.View3D := FALSE ;
+  Graph.Legend.Visible := TRUE ;
+  Graph.Legend.Inverted := TRUE ;
+  Graph.Title.Text.Clear ;
+  Graph.SubTitle.Text.Clear ;
+  Graph.LeftAxis.Automatic := FALSE ;
+  Graph.BottomAxis.MinimumOffset := 0;
+  Graph.BottomAxis.MaximumOffset := 0;
+  // Aliment
+  BarAli.Active := FALSE ;
+  // Energie
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Active := FALSE ;
+  // Acides Amin�s
+  BarAA35.Active := FALSE ;
+  BarAA105.Active := FALSE ;
+  // Min�raux
+  BarMin35.Active := FALSE ;
+  BarMin105.Active := FALSE ;
+end ;
+
+procedure TFResBesGestE.MI3DClick (Sender : TObject) ;
+begin
+  Graph.View3D := not (Graph.View3D) ;
+end ;
+
+procedure TFResBesGestE.MIPreviewClick (Sender : TObject) ;
+begin
+  FPrevGraph := TFPrevGraph.Create (Self) ;
+  with FPrevGraph do
+  begin
+    TPPGraph.Panels.Add (Graph) ;
+    ShowModal ;
+    Release ;
+  end ;
+end ;
+
+procedure TFResBesGestE.MIPrintClick (Sender : TObject) ;
+begin
+  if PD.Execute
+  then
+  begin
+    Printer.Orientation := poLandscape ;
+    Graph.Print ;
+  end ;
+end ;
+
+/////////////////
+//   Aliment   //
+/////////////////
+procedure TFResBesGestE.InitAli ;
+begin
+  // BarAli : s�rie (barre) graphique
+  BarAli := TBarSeries.Create (Graph) ;
+  BarAli.ParentChart := Graph ;
+  BarAli.Title := ' ' ;
+  BarAli.SeriesColor := clTeal ;
+  BarAli.BarPen.Color := BarAli.SeriesColor ;
+  BarAli.Marks.Style := smsValue ;
+  BarAli.Marks.ArrowLength := 0 ;
+  BarAli.Marks.Arrow.Visible := FALSE ;
+  BarAli.Marks.Brush.Style := bsClear ;
+  BarAli.Marks.Frame.Visible := FALSE ;
+  BarAli.Marks.Font.Style := [fsBold] ;
+  Graph.AddSeries (BarAli) ;
+end ;
+
+procedure TFResBesGestE.AffGraphAli ;
+var
+  j : integer ;
+
+  // Ordonn�e
+  function AliY : double ;
+  begin
+    with FBesGestE do
+      if (AppEMTot[j] = 0)
+      then
+        result := 0
+      else
+        result := BesEMTot[j] * AppAliTot[j] / AppEMTot[j] ;
+  end ;
+
+// AffGraphAli
+begin
+  ResetGraph ;
+  Graph.Legend.Visible := FALSE ;
+  Graph.Title.Text.Add (TSAli.Caption) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s/%s)', [TSAli.Caption, StrKg, StrJ]) ;
+  Graph.BottomAxis.Title.Caption := _('Litter');
+  // Affichage de la barre
+  BarAli.Active := TRUE ;
+  BarAli.Clear ;
+  for j := 1 to NB_CYCLES do
+    BarAli.AddBar (AliY, Format ('%d', [j]), clTeeColor) ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResBesGestE.CBAli2Change(Sender: TObject);
+begin
+
+end;
+
+/////////////////
+//   Energie   //
+/////////////////
+procedure TFResBesGestE.InitNRJ ;
+const
+  TabColor : array[0..4] of TColor
+    = (clOlive, clGray, clAqua, clPurple, clNavy) ;
+var
+  i : integer ;
+begin
+  // ListNRJ : liste pour l'�nergie
+  ListNRJ := TStringList.Create ;
+  ListNRJ.Assign (LBNRJ.Items) ;
+  // BarNRJ : s�ries (barres) graphiques
+  SetLength (BarNRJ, ListNRJ.Count) ;
+  for i := 0 to ListNRJ.Count - 1 do
+  begin
+    BarNRJ[i] := TBarSeries.Create (Graph) ;
+    BarNRJ[i].ParentChart := Graph ;
+    BarNRJ[i].Title := ListNRJ[i] ;
+    BarNRJ[i].SeriesColor := TabColor[i] ;
+    BarNRJ[i].BarPen.Color := BarNRJ[i].SeriesColor ;
+    BarNRJ[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarNRJ[i]) ;
+  end ;
+end ;
+
+procedure TFResBesGestE.AffGraphNRJ ;
+var
+  i, j : integer ;
+  m : double ;
+
+  // Ordonn�e
+  function NRJY : double ;
+  begin
+    case i of
+      0 : // Entretien
+        result := FBesGestE.BesEMEntTot[j] ;
+      1 : // Activit�
+        result := FBesGestE.BesEMActTot[j] ;
+      2 : // Thermor�gulation
+        result := FBesGestE.BesEMTheTot[j] ;
+      3 : // Port�e
+        result := FBesGestE.BesEMPortTot[j] ;
+      4 : // R�serve
+        result := FBesGestE.BesEMResTot[j] ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphNRJ
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (TabNRJ.Caption) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]) ;
+  Graph.BottomAxis.Title.Caption := _('Litter');
+  // Affichage des barres
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Active := TRUE ;
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Clear ;
+  if (CBNRJ4.ItemIndex = 1)
+  then
+    for i := 0 to ListNRJ.Count - 1 do
+      BarNRJ[i].MultiBar := mbStacked100
+  else
+    for i := 0 to ListNRJ.Count - 1 do
+      BarNRJ[i].MultiBar := mbStacked ;
+  for j := 1 to NB_CYCLES do
+  begin
+    case CBNRJ3.ItemIndex of
+      0 : // Energie digestible
+        m := FBesGestE.AppEDTot[j] / FBesGestE.AppEMTot[j] ;
+      2 : // Energie nette
+        m := FBesGestE.AppENTot[j] / FBesGestE.AppEMTot[j] ;
+      else
+        m := 1 ;
+    end ;
+    for i := 0 to ListNRJ.Count - 1 do
+      BarNRJ[i].AddBar (NRJY * m, Format ('%d', [j]), clTeeColor) ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResBesGestE.CBNRJ3Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+procedure TFResBesGestE.CBNRJ4Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+///////////////////////
+//   Acides amin�s   //
+///////////////////////
+procedure TFResBesGestE.InitAA ;
+const
+  TabColor : array[0..3] of TColor
+    = (clOlive, clPurple, clNavy, clGreen) ;
+begin
+  // ListAA : liste pour les acides amin�s
+  ListAA := TStringList.Create ;
+  ListAA.Assign (LBAA.Items) ;
+  // BarAA35 et BarAA105 : s�ries (barres) graphiques
+  BarAA35 := TBarSeries.Create (Graph) ;
+  BarAA35.ParentChart := Graph ;
+  BarAA35.Title := Str35j ;
+  BarAA35.SeriesColor := clGreen ;
+  BarAA35.BarPen.Color := BarAA35.SeriesColor ;
+  BarAA35.Marks.Visible := FALSE ;
+  Graph.AddSeries (BarAA35) ;
+  BarAA105 := TBarSeries.Create (Graph) ;
+  BarAA105.ParentChart := Graph ;
+  BarAA105.Title := Str105j ;
+  BarAA105.SeriesColor := clNavy ;
+  BarAA105.BarPen.Color := BarAA105.SeriesColor ;
+  BarAA105.Marks.Visible := FALSE ;
+  Graph.AddSeries (BarAA105) ;
+end ;
+
+procedure TFResBesGestE.AffGraphAA ;
+var
+  h, i, j : integer ;
+
+  // Ordonn�e
+  function AAY : double ;
+  var
+    a : integer ;
+    d : double ;
+  begin
+    case h of
+      3 : // met+cys
+        a := 13 ;
+      7 : // phe+tyr
+        a := 14 ;
+      else
+        a := h ;
+    end ;
+    // Diviseur
+    case CBAA4.ItemIndex of
+      1 : // Aliment
+        d := FBesGestE.BesEMTot[j] * FBesGestE.AppAliTot[j] / FBesGestE.AppEMTot[j] ;
+      else
+        d := 1 ;
+    end ;
+    result := FBesGestE.BesAA[j, a, i] / d ;
+  end ;
+
+// AffGraphAA
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (TabAA.Caption) ;
+  Graph.SubTitle.Text.Add(StrDigestStd);
+  Graph.Legend.Inverted := FALSE ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBAA3.Text, CBAA4.Text]) ;
+  Graph.BottomAxis.Title.Caption := _('Litter');
+  // Affichage des barres
+  BarAA35.Active := TRUE ;
+  BarAA105.Active := TRUE ;
+  BarAA35.Clear ;
+  BarAA105.Clear ;
+  BarAA35.MultiBar := mbSide ;
+  BarAA105.MultiBar := mbSide ;
+  h := CBAA3.ItemIndex + 1 ;
+  for j := 1 to NB_CYCLES do
+  begin
+    i := 35 ;
+    BarAA35.AddBar (AAY, Format ('%d', [j]), clTeeColor) ;
+    i := 105 ;
+    BarAA105.AddBar (AAY, Format ('%d', [j]), clTeeColor) ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResBesGestE.CBAA3Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFResBesGestE.CBAA4Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+//////////////////
+//   Min�raux   //
+//////////////////
+procedure TFResBesGestE.InitMin ;
+begin
+  // BarMin35 et BarMin105 : s�ries (barres) graphiques
+  BarMin35 := TBarSeries.Create (Graph) ;
+  BarMin35.ParentChart := Graph ;
+  BarMin35.Title := Str35j ;
+  BarMin35.SeriesColor := clGreen ;
+  BarMin35.BarPen.Color := BarMin35.SeriesColor ;
+  BarMin35.Marks.Visible := FALSE ;
+  Graph.AddSeries (BarMin35) ;
+  BarMin105 := TBarSeries.Create (Graph) ;
+  BarMin105.ParentChart := Graph ;
+  BarMin105.Title := Str105j ;
+  BarMin105.SeriesColor := clNavy ;
+  BarMin105.BarPen.Color := BarMin105.SeriesColor ;
+  BarMin105.Marks.Visible := FALSE ;
+  Graph.AddSeries (BarMin105) ;
+end ;
+
+procedure TFResBesGestE.AffGraphMin ;
+var
+  i, j : integer ;
+
+  // Ordonn�e
+  function MinY : double ;
+  var
+    d : double ;
+  begin
+    // Diviseur
+    case CBMin4.ItemIndex of
+      1 : // Aliment
+        d := FBesGestE.AppAli[j, i] ;
+      else
+        d := 1 ;
+    end ;
+    case CBMin3.ItemIndex of
+      0 : // Phosphore digestible
+        result := FBesGestE.BesP[j, i] / d ;
+      1 : // Calcium total
+        result := FBesGestE.BesCa[j, i] / d ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphMin
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (TSMin.Caption) ;
+  Graph.Legend.Inverted := FALSE ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBMin3.Text, CBMin4.Text]) ;
+  Graph.BottomAxis.Title.Caption := _('Litter');
+  // Affichage de la barre
+  BarMin35.Active := TRUE ;
+  BarMin105.Active := TRUE ;
+  BarMin35.Clear ;
+  BarMin105.Clear ;
+  BarMin35.MultiBar := mbSide ;
+  BarMin105.MultiBar := mbSide ;
+  for j := 1 to NB_CYCLES do
+  begin
+    i := 35 ;
+    BarMin35.AddBar (MinY, Format ('%d', [j]), clTeeColor) ;
+    i := 105 ;
+    BarMin105.AddBar (MinY, Format ('%d', [j]), clTeeColor) ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResBesGestE.CBMin3Change(Sender: TObject);
+begin
+  AffGraphMin ;
+end;
+
+procedure TFResBesGestE.CBMin4Change(Sender: TObject);
+begin
+  AffGraphMin ;
+end;
+
+procedure TFResBesGestE.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFResBesLactT.pas
===================================================================
--- UFResBesLactT.pas	(révision 0)
+++ UFResBesLactT.pas	(révision 3)
@@ -0,0 +1,751 @@
+unit UFResBesLactT;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, CheckLst, Menus, Printers, 
+  Math, Contnrs, PBNumEdit, PBSuperSpin, Grids, TeEngine, Series, TeeProcs, 
+  Chart, TeeEdit, UVariables, gnugettext;
+
+type
+  TFResBesLactT = class(TForm)
+    PC: TPageControl;
+    TabNRJ: TTabSheet;
+    TabAA: TTabSheet;
+    CBAA1: TComboBox;
+    CBAA3: TComboBox;
+    CBAA4: TComboBox;
+    CBAA2: TComboBox;
+    GBAAT: TGroupBox;
+    GBAAY: TGroupBox;
+    GBAAX: TGroupBox;
+    Graph: TChart;
+    GBNRJX: TGroupBox;
+    GBNRJY: TGroupBox;
+    CBNRJ3: TComboBox;
+    CBNRJ4: TComboBox;
+    GBNRJT: TGroupBox;
+    CBNRJ1: TComboBox;
+    CBNRJ2: TComboBox;
+    LBAA: TListBox;
+    LBNRJ: TListBox;
+    TSAli: TTabSheet;
+    GBAliX: TGroupBox;
+    CBAli2: TComboBox;
+    PM: TPopupMenu;
+    MI3D: TMenuItem;
+    MIPreview: TMenuItem;
+    MIPrint: TMenuItem;
+    PD: TPrintDialog;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormShow(Sender: TObject);
+    procedure PCChange(Sender: TObject);
+    procedure CBNRJ1Change(Sender: TObject);
+    procedure CBNRJ2Change(Sender: TObject);
+    procedure CBNRJ3Change(Sender: TObject);
+    procedure CBNRJ4Change(Sender: TObject);
+    procedure CBAA1Change(Sender: TObject);
+    procedure CBAA2Change(Sender: TObject);
+    procedure CBAA3Change(Sender: TObject);
+    procedure CBAA4Change(Sender: TObject);
+    procedure CBAli2Change(Sender: TObject);
+    procedure MI3DClick(Sender: TObject);
+    procedure MIPreviewClick(Sender: TObject);
+    procedure MIPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+    ListNRJ : TStrings ;
+    PieNRJ : TPieSeries ;
+    AreaNRJ : array of TAreaSeries ;
+    LineNRJ : TLineSeries ;
+    ListAA : TStrings ;
+    BarAA : THorizBarSeries ;
+    AreaAA : array of TAreaSeries ;
+    LineAA : TLineSeries ;
+    LineAli : array[1..2] of TLineSeries ;
+    procedure ResetGraph ;
+    procedure InitNRJ ;
+    procedure AffGraphNRJ ;
+    procedure InitAA ;
+    procedure AffGraphAA ;
+    procedure InitAli ;
+    procedure AffGraphAli ;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FResBesLactT: TFResBesLactT;
+
+implementation
+
+uses
+  UStrings, UFindRec, UUtil, UEchelle, UFBesLactT, UFPrevGraph, UFWarning;
+
+{$R *.dfm}
+
+{ TFResBesLactT }
+
+procedure TFResBesLactT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 544 + (Width - ClientWidth);
+  Width := 640;
+  Constraints.MinHeight := 400 + (Height - ClientHeight);
+  Height := 480;
+  CBAli2.ItemIndex := 0;
+  CBNRJ1.ItemIndex := 0;
+  CBNRJ2.ItemIndex := 0;
+  CBNRJ3.ItemIndex := 0;
+  CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
+  CBNRJ4.Items.Add('%');
+  CBNRJ4.ItemIndex := 0;
+  CBAA1.ItemIndex := 0;
+  CBAA2.ItemIndex := 0;
+  CBAA3.ItemIndex := 0;
+  CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+  CBAA4.Items.Add(Format('%% %s', [StrBesoin]));
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrED]));
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrEM]));
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrEN]));
+  CBAA4.ItemIndex := 0;
+end;
+
+procedure TFResBesLactT.FormShow (Sender : TObject) ;
+begin
+  MIPrint.Enabled := IsComplete or IsEducation ;
+  // Aliment
+  InitAli ;
+  // Energie
+  InitNRJ ;
+  // Acides Amin�s
+  InitAA ;
+  // Affichage principal
+  PC.ActivePageIndex := 0 ;
+  PCChange (nil) ;
+end ;
+
+procedure TFResBesLactT.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+var
+  i : integer ;
+begin
+  // Aliment
+  for i := 1 to 2 do
+    LineAli[i].Free ;
+  // Energie
+  LineNRJ.Free ;
+  for i := 0 to ListNRJ.Count - 1 do
+    AreaNRJ[i].Free ;
+  SetLength (AreaNRJ, 0) ;
+  PieNRJ.Free ;
+  ListNRJ.Free ;
+  // Acides Amin�s
+  LineAA.Free ;
+  for i := 0 to ListAA.Count - 1 do
+    AreaAA[i].Free ;
+  SetLength (AreaAA, 0) ;
+  BarAA.Free ;
+  ListAA.Free ;
+end ;
+
+procedure TFResBesLactT.PCChange (Sender : TObject) ;
+begin
+  case PC.ActivePageIndex of
+    0 : // Aliment
+      AffGraphAli ;
+    1 : // Energie
+      AffGraphNRJ ;
+    2 : // Acides Amin�s
+      AffGraphAA ;
+  end ;
+end ;
+
+procedure TFResBesLactT.ResetGraph ;
+var
+  i : integer ;
+begin
+  Graph.UndoZoom ;
+  Graph.View3D := FALSE ;
+  Graph.Legend.Visible := TRUE ;
+  Graph.Title.Text.Clear ;
+  Graph.SubTitle.Text.Clear ;
+  Graph.LeftAxis.Automatic := FALSE ;
+  Graph.BottomAxis.MinimumOffset := 0;
+  Graph.BottomAxis.MaximumOffset := 0;
+  // Aliment
+  for i := 1 to 2 do
+    LineAli[i].Active := FALSE ;
+  // Energie
+  PieNRJ.Active := FALSE ;
+  for i := 0 to ListNRJ.Count - 1 do
+    AreaNRJ[i].Active := FALSE ;
+  LineNRJ.Active := FALSE ;
+  // Acides Amin�s
+  BarAA.Active := FALSE ;
+  for i := 0 to ListAA.Count - 1 do
+    AreaAA[i].Active := FALSE ;
+  LineAA.Active := FALSE ;
+end ;
+
+procedure TFResBesLactT.MI3DClick (Sender : TObject) ;
+begin
+  Graph.View3D := not (Graph.View3D) ;
+end ;
+
+procedure TFResBesLactT.MIPreviewClick (Sender : TObject) ;
+begin
+  FPrevGraph := TFPrevGraph.Create (Self) ;
+  with FPrevGraph do
+  begin
+    TPPGraph.Panels.Add (Graph) ;
+    ShowModal ;
+    Release ;
+  end ;
+end ;
+
+procedure TFResBesLactT.MIPrintClick (Sender : TObject) ;
+begin
+  if PD.Execute
+  then
+  begin
+    Printer.Orientation := poLandscape ;
+    Graph.Print ;
+  end ;
+end ;
+
+/////////////////
+//   Aliment   //
+/////////////////
+procedure TFResBesLactT.InitAli ;
+const
+  TabColor : array[0..1] of TColor
+    = (clBlack, clRed) ;
+var
+  i : integer ;
+begin
+  // LineAli : s�ries (lignes) graphiques
+  for i := 1 to 2 do
+  begin
+    LineAli[i] := TLineSeries.Create (Graph) ;
+    LineAli[i].ParentChart := Graph ;
+    if i = 1
+    then // R�f�rence
+      LineAli[i].Title := StrReference
+    else // Besoin
+      LineAli[i].Title := StrBesoin ;
+    LineAli[i].SeriesColor := TabColor[i - 1] ;
+    LineAli[i].LinePen.Color := LineAli[i].SeriesColor ;
+    LineAli[i].LinePen.Width := 2 ;
+    Graph.AddSeries (LineAli[i]) ;
+  end ;
+end ;
+
+procedure TFResBesLactT.AffGraphAli ;
+var
+  i, j : integer ;
+
+  // Abscisse
+  function AliX : double ;
+  begin
+    case CBAli2.ItemIndex of
+      0 : // Dur�e
+        result := j - 1 ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function AliY : double ;
+  begin
+    case i of
+      1 : // R�f�rence
+        result := FBesLactT.AppAli[j] ;
+      2 : // Besoin
+        if (FBesLactT.AppEMTot = 0)
+        then
+          result := 0
+        else
+          result := (FBesLactT.BesEMEnt[j] + FBesLactT.BesEMLait[j])
+            * FBesLactT.AppAliTot / FBesLactT.AppEMTot ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphAli
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (TSAli.Caption) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s/%s)', [TSAli.Caption, StrKg, StrJ]) ;
+  Graph.BottomAxis.Title.Caption := CBAli2.Text ;
+  // Affichage des lignes
+  for i := 1 to 2 do
+    LineAli[i].Active := TRUE ;
+  for i := 1 to 2 do
+    LineAli[i].Clear ;
+  for i := 1 to 2 do
+    for j := 1 to FBesLactT.DureeLact do
+      LineAli[i].AddXY (AliX, AliY, '', clTeeColor) ;
+  Graph.LeftAxis.Minimum := 0 ;
+  Graph.LeftAxis.Increment := 1 ;
+  Graph.LeftAxis.MinorTickCount := 9 ;
+  Graph.LeftAxis.Maximum := 10 ;
+  Graph.LeftAxis.Minimum := 2 ;
+  Graph.LeftAxis.AxisValuesFormat := '# ##0' ;
+end ;
+
+procedure TFResBesLactT.CBAli2Change(Sender: TObject);
+begin
+  AffGraphAli ;
+end;
+
+/////////////////
+//   Energie   //
+/////////////////
+procedure TFResBesLactT.InitNRJ ;
+const
+  TabColor : array[0..1] of TColor
+    = (clOlive, clWhite) ;
+var
+  i : integer ;
+begin
+  // ListNRJ : liste pour l'�nergie
+  ListNRJ := TStringList.Create ;
+  ListNRJ.Assign (LBNRJ.Items) ;
+  // PieNRJ : s�rie (camembert) graphique
+  PieNRJ := TPieSeries.Create (Graph) ;
+  PieNRJ.ParentChart := Graph ;
+  PieNRJ.Marks.ArrowLength := 24 ;
+  PieNRJ.Marks.Arrow.Color := clBlack ;
+  PieNRJ.Marks.Brush.Style := bsClear ;
+  PieNRJ.Marks.Frame.Visible := FALSE ;
+  PieNRJ.ValueFormat := Format ('# ##0.0 %s', [StrMJ]) ;
+  PieNRJ.PercentFormat := '##0.0 %' ;
+  Graph.AddSeries (PieNRJ) ;
+  // AreaNRJ : s�ries (aires) graphiques
+  SetLength (AreaNRJ, ListNRJ.Count) ;
+  for i := 0 to ListNRJ.Count - 1 do
+  begin
+    AreaNRJ[i] := TAreaSeries.Create (Graph) ;
+    AreaNRJ[i].ParentChart := Graph ;
+    AreaNRJ[i].Title := ListNRJ[i] ;
+    AreaNRJ[i].SeriesColor := TabColor[i] ;
+    AreaNRJ[i].AreaLinesPen.Visible := FALSE ;
+    Graph.AddSeries (AreaNRJ[i]) ;
+  end ;
+  // LineNRJ : s�rie (ligne) graphique
+  LineNRJ := TLineSeries.Create (Graph) ;
+  LineNRJ.ParentChart := Graph ;
+  LineNRJ.Title := StrReference ;
+  LineNRJ.SeriesColor := clBlack ;
+  LineNRJ.LinePen.Color := LineNRJ.SeriesColor ;
+  LineNRJ.LinePen.Width := 2 ;
+  Graph.AddSeries (LineNRJ) ;
+end ;
+
+procedure TFResBesLactT.AffGraphNRJ ;
+var
+  i, j : integer ;
+  y, m, t : double ;
+
+  // Abscisse
+  function NRJX : double ;
+  begin
+    case CBNRJ1.ItemIndex of
+      1 : // R�partition dynamique
+        case CBNRJ2.ItemIndex of
+          0 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function NRJY : double ;
+  begin
+    case CBNRJ1.ItemIndex of
+      0 : // R�partition globale
+        case i of
+          0 : // Entretien
+            result := FBesLactT.BesEMEntTot ;
+          1 : // Lait
+            result := FBesLactT.BesEMLaitTot ;
+          else
+            result := 0 ;
+        end ;
+      1 : // R�partition dynamique
+        case i of
+          -1 : // Apport
+            result := FBesLactT.AppEM[j] ;
+          0 : // Entretien
+            result := FBesLactT.BesEMEnt[j] ;
+          1 : // Lait
+            result := FBesLactT.BesEMLait[j] ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphNRJ
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (Format ('%s : %s', [TabNRJ.Caption, CBNRJ1.Text])) ;
+  case CBNRJ3.ItemIndex of
+    0 : // Energie digestible
+      m := FBesLactT.AppEDTot / FBesLactT.AppEMTot ;
+    2 : // Energie nette
+      m := FBesLactT.AppENTot / FBesLactT.AppEMTot ;
+    else
+      m := 1 ;
+  end ;
+  case CBNRJ1.ItemIndex of
+    0 : // R�partition globale
+    begin
+      Graph.View3D := TRUE ;
+      Graph.Legend.Visible := FALSE ;
+      // Affichage du camembert
+      PieNRJ.Active := TRUE ;
+      PieNRJ.Clear ;
+      if (CBNRJ4.ItemIndex = 1)
+      then
+        PieNRJ.Marks.Style := smsLabelPercent
+      else
+        PieNRJ.Marks.Style := smsLabelValue ;
+      for i := 0 to ListNRJ.Count - 1 do
+      begin
+        y := NRJY * m ;
+        if (y > PICO)
+        then
+          PieNRJ.AddPie (y, ListNRJ[i], AreaNRJ[i].SeriesColor) ;
+      end ;
+      t := FBesLactT.BesEMTot * m ;
+      Graph.SubTitle.Text.Add (Format ('%s : %3.1f %s', [StrTotal, t, StrMJ])) ;
+    end ;
+    1 : // R�partition dynamique
+    begin
+      Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]) ;
+      Graph.BottomAxis.Title.Caption := CBNRJ2.Text ;
+      // Affichage des aires
+      for i := 0 to ListNRJ.Count - 1 do
+        AreaNRJ[i].Active := TRUE ;
+      for i := 0 to ListNRJ.Count - 1 do
+        AreaNRJ[i].Clear ;
+      if (CBNRJ4.ItemIndex = 1)
+      then
+        for i := 0 to ListNRJ.Count - 1 do
+          AreaNRJ[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListNRJ.Count - 1 do
+          AreaNRJ[i].MultiArea := maStacked ;
+      for i := 0 to ListNRJ.Count - 1 do
+        for j := 1 to FBesLactT.DureeLact do
+          AreaNRJ[i].AddXY (NRJX, NRJY * m, '', clTeeColor) ;
+      // Affichage de la ligne
+      i := -1 ;
+      LineNRJ.Active := TRUE ;
+      LineNRJ.Clear ;
+      for j := 1 to FBesLactT.DureeLact do
+        if (CBNRJ4.ItemIndex = 1)
+        then
+        begin
+          t := FBesLactT.BesEMEnt[j] + FBesLactT.BesEMLait[j] ;
+          LineNRJ.AddXY (NRJX, NRJY / t * 100, '', clTeeColor) ;
+        end
+        else
+          LineNRJ.AddXY (NRJX, NRJY * m, '', clTeeColor) ;
+    end ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResBesLactT.CBNRJ1Change (Sender : TObject) ;
+begin
+  case CBNRJ1.ItemIndex of
+    0 : // R�partition globale
+      CBNRJ2.Visible := FALSE ;
+    1 : // R�partition dynamique
+      CBNRJ2.Visible := TRUE ;
+  end ;
+  AffGraphNRJ ;
+end ;
+
+procedure TFResBesLactT.CBNRJ2Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+procedure TFResBesLactT.CBNRJ3Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+procedure TFResBesLactT.CBNRJ4Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+///////////////////////
+//   Acides amin�s   //
+///////////////////////
+procedure TFResBesLactT.InitAA ;
+const
+  TabColor : array[0..1] of TColor
+    = (clOlive, clWhite) ;
+var
+  i : integer ;
+begin
+  // ListAA : liste pour les acides amin�s
+  ListAA := TStringList.Create ;
+  ListAA.Assign (LBAA.Items) ;
+  // BarAA : s�rie (barre) graphique
+  BarAA := THorizBarSeries.Create (Graph) ;
+  BarAA.ParentChart := Graph ;
+  BarAA.Title := ' ' ;
+  BarAA.SeriesColor := clTeal ;
+  BarAA.BarPen.Color := BarAA.SeriesColor ;
+  BarAA.Marks.Visible := FALSE ;
+  BarAA.MultiBar := mbSide ;
+  Graph.AddSeries (BarAA) ;
+  // AreaAA : s�ries (aires) graphiques
+  SetLength (AreaAA, ListAA.Count) ;
+  for i := 0 to ListAA.Count - 1 do
+  begin
+    AreaAA[i] := TAreaSeries.Create (Graph) ;
+    AreaAA[i].ParentChart := Graph ;
+    AreaAA[i].Title := ListAA[i] ;
+    AreaAA[i].SeriesColor := TabColor[i] ;
+    AreaAA[i].AreaLinesPen.Visible := FALSE ;
+    Graph.AddSeries (AreaAA[i]) ;
+  end ;
+  // LineAA : s�rie (ligne) graphique
+  LineAA := TLineSeries.Create (Graph) ;
+  LineAA.ParentChart := Graph ;
+  LineAA.Title := StrReference ;
+  LineAA.SeriesColor := clBlack ;
+  LineAA.LinePen.Color := LineAA.SeriesColor ;
+  LineAA.LinePen.Width := 2 ;
+  Graph.AddSeries (LineAA) ;
+end ;
+
+procedure TFResBesLactT.AffGraphAA ;
+var
+  h, i, j : integer ;
+  t : double ;
+
+  // Abscisse
+  function AAX : double ;
+  begin
+    case CBAA1.ItemIndex of
+      0 : // R�partition dynamique
+        case CBAA2.ItemIndex of
+          0 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function AAY : double ;
+  var
+    a : integer ;
+    d : double ;
+  begin
+    case h of
+      3 : // met+cys
+        a := 13 ;
+      7 : // phe+tyr
+        a := 14 ;
+      else
+        a := h ;
+    end ;
+    case CBAA1.ItemIndex of
+      0 : // R�partition dynamique
+      begin
+        // Diviseur
+        case CBAA4.ItemIndex of
+          2 : // Aliment
+            d := FBesLactT.AppAli[j] ;
+          3 : // ED
+            d := FBesLactT.AppED[j] ;
+          4 : // EM
+            d := FBesLactT.AppEM[j] ;
+          5 : // EN
+            d := FBesLactT.AppEN[j] ;
+          else
+            d := 1 ;
+        end ;
+        case i of
+          -1 : // Apport
+            result := FBesLactT.AppAA[a, j] / d ;
+          0 : // Entretien
+            result := FBesLactT.BesAAEnt[a, j] / d ;
+          1 : // Lait
+            result := FBesLactT.BesAALait[a, j] / d ;
+          else
+            result := 0 ;
+        end ;
+      end ;
+      1 : // Besoin
+      begin
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1 : // Lysine
+            d := Mean (Slice (FBesLactT.BesAA[1], FBesLactT.DureeLact)) / 100 ;
+          else
+            d := 1 ;
+        end ;
+        result := Mean (Slice (FBesLactT.BesAA[a], FBesLactT.DureeLact)) / d ;
+      end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphAA
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (CBAA1.Text) ;
+  Graph.SubTitle.Text.Add(StrDigestStd);
+  case CBAA1.ItemIndex of
+    0 : // R�partition dynamique
+    begin
+      Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBAA3.Text, CBAA4.Text]) ;
+      Graph.BottomAxis.Title.Caption := CBAA2.Text ;
+      h := CBAA3.ItemIndex + 1 ;
+      // Affichage des aires
+      for i := 0 to ListAA.Count - 1 do
+        AreaAA[i].Active := TRUE ;
+      for i := 0 to ListAA.Count - 1 do
+        AreaAA[i].Clear ;
+      if (CBAA4.ItemIndex = 1)
+      then
+        for i := 0 to ListAA.Count - 1 do
+          AreaAA[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListAA.Count - 1 do
+          AreaAA[i].MultiArea := maStacked ;
+      for i := 0 to ListAA.Count - 1 do
+        for j := 1 to FBesLactT.DureeLact do
+          AreaAA[i].AddXY (AAX, AAY, '', clTeeColor) ;
+      // Affichage de la ligne
+      i := -1 ;
+      LineAA.Active := TRUE ;
+      LineAA.Clear ;
+      for j := 1 to FBesLactT.DureeLact do
+        if (CBAA4.ItemIndex = 1)
+        then
+        begin
+          case h of
+            3 : // met+cys
+              t := FBesLactT.BesAA[13, j] ;
+            7 : // phe+tyr
+              t := FBesLactT.BesAA[14, j] ;
+            else
+              t := FBesLactT.BesAA[h, j] ;
+          end ;
+          LineAA.AddXY (AAX, AAY / t * 100, '', clTeeColor) ;
+        end
+        else
+          LineAA.AddXY (AAX, AAY, '', clTeeColor) ;
+      AjustEchelle (Graph) ;
+    end ;
+    1 : // Besoin
+    begin
+      Graph.Legend.Visible := FALSE ;
+      Graph.LeftAxis.Automatic := TRUE ;
+      Graph.LeftAxis.Title.Caption := TabAA.Caption ;
+      Graph.BottomAxis.Title.Caption :=  Format ('%s (%s)', [StrBesoin, CBAA4.Text]) ;
+      // Affichage des barres
+      BarAA.Active := TRUE ;
+      BarAA.Clear ;
+      for h := CBAA3.Items.Count downto 1 do
+        BarAA.AddBar (AAY, CBAA3.Items[h - 1], clTeeColor) ;
+    end ;
+  end ;
+end ;
+
+procedure TFResBesLactT.CBAA1Change (Sender : TObject) ;
+begin
+  CBAA4.Items.Clear ;
+  case CBAA1.ItemIndex of
+    0 : // R�partition dynamique
+    begin
+      CBAA2.Visible := TRUE ;
+      CBAA3.Visible := TRUE ;
+      // Unit�s
+      CBAA4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBAA4.Items.Add (Format ('%% %s', [StrBesoin])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrED])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrEM])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrEN])) ;
+    end ;
+    1 : // Besoin
+    begin
+      if AffBesoin
+      then
+      begin
+        FWarning := TFWarning.Create (Self) ;
+        with FWarning do
+        begin
+          Msg := 'Besoin';
+          ShowModal ;
+          Release ;
+          AffBesoin := FALSE ;
+        end ;
+      end ;
+      CBAA2.Visible := FALSE ;
+      CBAA3.Visible := FALSE ;
+      // Unit�s
+      CBAA4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBAA4.Items.Add (Format ('%% %s', [StrLys])) ;
+    end ;
+  end ;
+  CBAA4.ItemIndex := 0 ;
+  AffGraphAA ;
+end ;
+
+procedure TFResBesLactT.CBAA2Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFResBesLactT.CBAA3Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFResBesLactT.CBAA4Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFResBesLactT.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFRapProfilP.pas
===================================================================
--- UFRapProfilP.pas	(révision 0)
+++ UFRapProfilP.pas	(révision 3)
@@ -0,0 +1,161 @@
+unit UFRapProfilP ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapProfilP = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLConso: TQRLabel;
+    QRLPerf: TQRLabel;
+    QRLProfil: TQRLabel;
+    QRDBTProfil: TQRDBText;
+    CDSRapport: TClientDataSet;
+    SFProfil: TStringField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    IFAgeInit: TIntegerField;
+    FFPVInit: TFloatField;
+    FFProtInit: TFloatField;
+    FFLipInit: TFloatField;
+    FFValFin: TFloatField;
+    FFRC: TFloatField;
+    SFAdLib: TStringField;
+    FFPDMoy: TFloatField;
+    FFPrecocite: TFloatField;
+    FFEntretien: TFloatField;
+    FFPVmr2: TFloatField;
+    QRLInit: TQRLabel;
+    QRLPVInit: TQRLabel;
+    QRLAgeInit: TQRLabel;
+    QRLProtInit: TQRLabel;
+    QRLLipInit: TQRLabel;
+    QRLFin: TQRLabel;
+    QRLValFin: TQRLabel;
+    QRLAdLib: TQRLabel;
+    QRLPrecocite: TQRLabel;
+    QRLPVmr2: TQRLabel;
+    QRLPDMoy: TQRLabel;
+    QRLEntretien: TQRLabel;
+    QRDBTAdLib: TQRDBText;
+    QRDBTAgeInit: TQRDBText;
+    QRDBTProtInit: TQRDBText;
+    QRDBTPVInit: TQRDBText;
+    QRDBTLipInit: TQRDBText;
+    QRDBTValFin: TQRDBText;
+    QRDBTPDMoy: TQRDBText;
+    QRDBTEntretien: TQRDBText;
+    QRDBTPrecocite: TQRDBText;
+    QRDBTPVmr2: TQRDBText;
+    QRLRC: TQRLabel;
+    QRDBTRC: TQRDBText;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    QRLSexe: TQRLabel;
+    QRDBTSexe: TQRDBText;
+    SFSexe: TStringField;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapProfilP: TFRapProfilP;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFProfilP, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapProfilP }
+
+procedure TFRapProfilP.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Profil_'] := FProfilP.CBProfil.Text;
+    FieldValues['_Sexe_'] := FProfilP.CBSexe.Text;
+    FieldValues['_AgeInit_'] := FProfilP.PBAgeInit.AsInteger;
+    FieldValues['_PVInit_'] := FProfilP.PBPVInit.AsFloat;
+    FieldValues['_ProtInit_'] := FProfilP.PBProtInit.AsFloat;
+    FieldValues['_LipInit_'] := FProfilP.PBLipInit.AsFloat;
+    if FProfilP.RBFinDuree.Checked
+    then // Dur�e
+      FieldValues['_ValFin_'] := FProfilP.PBDuree.AsInteger
+    else // Poids vif
+      FieldValues['_ValFin_'] := FProfilP.PBPVFin.AsFloat;
+    FieldValues['_RC_'] := FProfilP.PBCarcasse.AsFloat;
+    case FProfilP.CBEquation.ItemIndex of
+      0: // a+b*PV
+        FieldValues['_AdLib_'] := Format('%s=%s+%s*%s', [FProfilP.CBUnite.Text, DblToStr(FProfilP.PBCoefA.AsFloat, FProfilP.PBCoefA.Decimals), DblToStr(FProfilP.PBCoefB.AsFloat, FProfilP.PBCoefB.Decimals), _('BW')]);
+      1: // a*PV^b
+        FieldValues['_AdLib_'] := Format('%s=%s*%s^%s', [FProfilP.CBUnite.Text, DblToStr(FProfilP.PBCoefA.AsFloat, FProfilP.PBCoefA.Decimals), _('BW'), DblToStr(FProfilP.PBCoefB.AsFloat, FProfilP.PBCoefB.Decimals)]);
+      2: // a*(1-exp(-b*PV))
+        FieldValues['_AdLib_'] := Format('%s=%s*(1-exp(-%s*%s))', [FProfilP.CBUnite.Text, DblToStr(FProfilP.PBCoefA.AsFloat, FProfilP.PBCoefA.Decimals), DblToStr(FProfilP.PBCoefB.AsFloat, FProfilP.PBCoefB.Decimals), _('BW')]);
+      3:
+        FieldValues['_AdLib_'] := Format('Gamma: %s=(%s*(%s*%s*exp(-%s*%s))+1)*%s', [FProfilP.CBUnite.Text, DblToStr(FProfilP.PBCoefA.AsFloat, FProfilP.PBCoefA.Decimals), DblToStr(FProfilP.PBCoefB.AsFloat, FProfilP.PBCoefB.Decimals), _('BW'), DblToStr(FProfilP.PBCoefB.AsFloat, FProfilP.PBCoefB.Decimals), _('BW'), _('Maintenance')]);
+      else
+        FieldValues['_AdLib_'] := '';
+    end;
+    FieldValues['_PDMoy_'] := FProfilP.PBPDMoy.AsFloat;
+    FieldValues['_Precocite_'] := FProfilP.PBComport.AsFloat;
+    FieldValues['_Entretien_'] := FProfilP.PBEntretien.AsFloat;
+    FieldValues['_PVmr2_'] := FProfilP.PBPVmr2.AsFloat;
+    Post;
+  end ;
+  QRMMemo.Lines.Add(FProfilP.CBProfil.Hint);
+  if FProfilP.RBFinDuree.Checked
+  then // Dur�e
+    QRLValFin.Caption := FProfilP.RBFinDuree.Caption
+  else // Poids vif
+    QRLValFin.Caption := FProfilP.RBFinPoids.Caption;
+  if FProfilP.RBFinDuree.Checked
+  then // Dur�e
+    QRDBTValFin.Mask := '0'
+  else // Poids vif
+    QRDBTValFin.Mask := '0.0';
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFResBesLactE.dfm
===================================================================
--- UFResBesLactE.dfm	(révision 0)
+++ UFResBesLactE.dfm	(révision 3)
@@ -0,0 +1,258 @@
+object FResBesLactE: TFResBesLactE
+  Left = 200
+  Top = 200
+  HelpContext = 4960
+  Caption = 'Requirements during lactation (herd)'
+  ClientHeight = 400
+  ClientWidth = 544
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PC: TPageControl
+    Left = 0
+    Top = 0
+    Width = 544
+    Height = 94
+    ActivePage = TSAli
+    Align = alTop
+    HotTrack = True
+    MultiLine = True
+    TabOrder = 0
+    TabStop = False
+    OnChange = PCChange
+    object TSAli: TTabSheet
+      Caption = 'Feed'
+      ImageIndex = 2
+    end
+    object TabNRJ: TTabSheet
+      Caption = 'Energy'
+      ImageIndex = -1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object GBNRJY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 0
+        object CBNRJ3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 1
+          TabOrder = 0
+          Text = 'Metabolizable energy'
+          OnChange = CBNRJ3Change
+          Items.Strings = (
+            'Digestible energy'
+            'Metabolizable energy'
+            'Net energy')
+        end
+        object CBNRJ4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBNRJ4Change
+        end
+      end
+    end
+    object TabAA: TTabSheet
+      Caption = 'Amino acids'
+      ImageIndex = 8
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object GBAAY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 0
+        object CBAA3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Lysine'
+          OnChange = CBAA3Change
+          Items.Strings = (
+            'Lysine'
+            'Methionine'
+            'Methionine + Cystine'
+            'Tryptophan'
+            'Threonine'
+            'Phenylalanine'
+            'Phenylalanine + Tyrosine'
+            'Leucine'
+            'Isoleucine'
+            'Valine'
+            'Histidine'
+            'Arginine')
+        end
+        object CBAA4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBAA4Change
+        end
+      end
+    end
+    object TSMin: TTabSheet
+      Caption = 'Minerals'
+      ImageIndex = 3
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object GBMin: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 0
+        object CBMin3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Digestible phosphorus'
+          OnChange = CBMin3Change
+          Items.Strings = (
+            'Digestible phosphorus'
+            'Total calcium')
+        end
+        object CBMin4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBMin4Change
+        end
+      end
+    end
+  end
+  object Graph: TChart
+    Left = 0
+    Top = 94
+    Width = 544
+    Height = 306
+    Foot.Alignment = taLeftJustify
+    Foot.Font.Color = clBlack
+    Foot.Font.Style = []
+    Foot.Text.Strings = (
+      'Simulation')
+    Legend.Inverted = True
+    Legend.LegendStyle = lsSeries
+    MarginBottom = 1
+    MarginLeft = 1
+    MarginRight = 1
+    MarginTop = 1
+    SubTitle.Font.Color = clBlack
+    SubTitle.Text.Strings = (
+      'Total')
+    Title.Font.Height = -16
+    Title.Font.Style = [fsBold]
+    Title.Text.Strings = (
+      'Title')
+    BottomAxis.Grid.Visible = False
+    BottomAxis.Title.Caption = 'X'
+    BottomAxis.Title.Font.Style = [fsBold]
+    LeftAxis.Automatic = False
+    LeftAxis.AutomaticMaximum = False
+    LeftAxis.AutomaticMinimum = False
+    LeftAxis.Title.Caption = 'Y'
+    LeftAxis.Title.Font.Style = [fsBold]
+    View3D = False
+    Align = alClient
+    BevelOuter = bvNone
+    PopupMenu = PM
+    TabOrder = 1
+    PrintMargins = (
+      5
+      5
+      5
+      5)
+  end
+  object LBAA: TListBox
+    Left = 160
+    Top = 176
+    Width = 120
+    Height = 30
+    ItemHeight = 13
+    Items.Strings = (
+      'Maintenance'
+      'Milk')
+    TabOrder = 2
+    Visible = False
+  end
+  object LBNRJ: TListBox
+    Left = 32
+    Top = 176
+    Width = 120
+    Height = 30
+    ItemHeight = 13
+    Items.Strings = (
+      'Maintenance'
+      'Milk')
+    TabOrder = 3
+    Visible = False
+  end
+  object PM: TPopupMenu
+    Top = 96
+    object MI3D: TMenuItem
+      Caption = '2D / 3D'
+      OnClick = MI3DClick
+    end
+    object MIPreview: TMenuItem
+      Caption = 'Print preview'
+      OnClick = MIPreviewClick
+    end
+    object MIPrint: TMenuItem
+      Caption = 'Print...'
+      OnClick = MIPrintClick
+    end
+  end
+  object PD: TPrintDialog
+    Left = 32
+    Top = 96
+  end
+end
Index: UFRapProfilT.pas
===================================================================
--- UFRapProfilT.pas	(révision 0)
+++ UFRapProfilT.pas	(révision 3)
@@ -0,0 +1,571 @@
+unit UFRapProfilT ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapProfilT = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLProfil: TQRLabel;
+    QRDBTProfil: TQRDBText;
+    CDSRapport: TClientDataSet;
+    SFProfil: TStringField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    QRLTruie: TQRLabel;
+    QRLEffectif: TQRLabel;
+    QRLPct: TQRLabel;
+    QRLNbr: TQRLabel;
+    QRDBTNbrTot: TQRDBText;
+    QRDBTPctTot: TQRDBText;
+    QRLPt1: TQRLabel;
+    QRLPt2: TQRLabel;
+    QRLPt3: TQRLabel;
+    QRLPt4: TQRLabel;
+    QRLPt5: TQRLabel;
+    QRLPt6: TQRLabel;
+    QRLPt7: TQRLabel;
+    QRLPt8: TQRLabel;
+    QRLTot: TQRLabel;
+    QRLPt: TQRLabel;
+    QRLSaillie: TQRLabel;
+    QRLPdsSail: TQRLabel;
+    QRLAgeSail: TQRLabel;
+    QRDBTAgeSailTot: TQRDBText;
+    QRDBTPdsSailTot: TQRDBText;
+    QRLMiseBas: TQRLabel;
+    QRLPdsApMB: TQRLabel;
+    QRLPdsAvMB: TQRLabel;
+    QRDBTPdsAvMBTot: TQRDBText;
+    QRDBTPdsApMBTot: TQRDBText;
+    QRLP2Sail: TQRLabel;
+    QRDBTP2SailTot: TQRDBText;
+    QRLP2MB: TQRLabel;
+    QRDBTP2MBTot: TQRDBText;
+    QRLPortee: TQRLabel;
+    QRLNaissance: TQRLabel;
+    QRLNbVif: TQRLabel;
+    QRLNbTot: TQRLabel;
+    QRDBTNbTotTot: TQRDBText;
+    QRDBTNbVifTot: TQRDBText;
+    QRLSevrage: TQRLabel;
+    QRLAgeSev: TQRLabel;
+    QRLNbSev: TQRLabel;
+    QRDBTNbSevTot: TQRDBText;
+    QRDBTAgeSevTot: TQRDBText;
+    QRLGMQ: TQRLabel;
+    QRLPVNais: TQRLabel;
+    QRLNaisSev: TQRLabel;
+    QRDBTGMQTot: TQRDBText;
+    QRDBTPVNaisTot: TQRDBText;
+    QRLPVSev: TQRLabel;
+    QRDBTPVSevTot: TQRDBText;
+    QRLAlim: TQRLabel;
+    QRLRation: TQRLabel;
+    QRLAliGest: TQRLabel;
+    QRDBTAliGestTot: TQRDBText;
+    QRLAliLact: TQRLabel;
+    QRDBTAliLactTot: TQRDBText;
+    QRLSeqAli: TQRLabel;
+    QRDBTSeqAli: TQRDBText;
+    QRDBTUnite: TQRDBText;
+    QRDBTNbrPt8: TQRDBText;
+    QRDBTPctPt8: TQRDBText;
+    QRDBTAgeSailPt8: TQRDBText;
+    QRDBTPdsSailPt8: TQRDBText;
+    QRDBTPdsAvMBPt8: TQRDBText;
+    QRDBTPdsApMBPt8: TQRDBText;
+    QRDBTP2SailPt8: TQRDBText;
+    QRDBTP2MBPt8: TQRDBText;
+    QRDBTNbTotPt8: TQRDBText;
+    QRDBTNbVifPt8: TQRDBText;
+    QRDBTNbSevPt8: TQRDBText;
+    QRDBTAgeSevPt8: TQRDBText;
+    QRDBTGMQPt8: TQRDBText;
+    QRDBTPVNaisPt8: TQRDBText;
+    QRDBTPVSevPt8: TQRDBText;
+    QRDBTAliGestPt8: TQRDBText;
+    QRDBTAliLactPt8: TQRDBText;
+    QRDBTNbrPt7: TQRDBText;
+    QRDBTPctPt7: TQRDBText;
+    QRDBTAgeSailPt7: TQRDBText;
+    QRDBTPdsSailPt7: TQRDBText;
+    QRDBTPdsAvMBPt7: TQRDBText;
+    QRDBTPdsApMBPt7: TQRDBText;
+    QRDBTP2SailPt7: TQRDBText;
+    QRDBTP2MBPt7: TQRDBText;
+    QRDBTNbTotPt7: TQRDBText;
+    QRDBTNbVifPt7: TQRDBText;
+    QRDBTNbSevPt7: TQRDBText;
+    QRDBTAgeSevPt7: TQRDBText;
+    QRDBTGMQPt7: TQRDBText;
+    QRDBTPVNaisPt7: TQRDBText;
+    QRDBTPVSevPt7: TQRDBText;
+    QRDBTAliGestPt7: TQRDBText;
+    QRDBTAliLactPt7: TQRDBText;
+    QRDBTNbrPt6: TQRDBText;
+    QRDBTPctPt6: TQRDBText;
+    QRDBTAgeSailPt6: TQRDBText;
+    QRDBTPdsSailPt6: TQRDBText;
+    QRDBTPdsAvMBPt6: TQRDBText;
+    QRDBTPdsApMBPt6: TQRDBText;
+    QRDBTP2SailPt6: TQRDBText;
+    QRDBTP2MBPt6: TQRDBText;
+    QRDBTNbTotPt6: TQRDBText;
+    QRDBTNbVifPt6: TQRDBText;
+    QRDBTNbSevPt6: TQRDBText;
+    QRDBTAgeSevPt6: TQRDBText;
+    QRDBTGMQPt6: TQRDBText;
+    QRDBTPVNaisPt6: TQRDBText;
+    QRDBTPVSevPt6: TQRDBText;
+    QRDBTAliGestPt6: TQRDBText;
+    QRDBTAliLactPt6: TQRDBText;
+    QRDBTNbrPt5: TQRDBText;
+    QRDBTPctPt5: TQRDBText;
+    QRDBTAgeSailPt5: TQRDBText;
+    QRDBTPdsSailPt5: TQRDBText;
+    QRDBTPdsAvMBPt5: TQRDBText;
+    QRDBTPdsApMBPt5: TQRDBText;
+    QRDBTP2SailPt5: TQRDBText;
+    QRDBTP2MBPt5: TQRDBText;
+    QRDBTNbTotPt5: TQRDBText;
+    QRDBTNbVifPt5: TQRDBText;
+    QRDBTNbSevPt5: TQRDBText;
+    QRDBTAgeSevPt5: TQRDBText;
+    QRDBTGMQPt5: TQRDBText;
+    QRDBTPVNaisPt5: TQRDBText;
+    QRDBTPVSevPt5: TQRDBText;
+    QRDBTAliGestPt5: TQRDBText;
+    QRDBTAliLactPt5: TQRDBText;
+    QRDBTNbrPt4: TQRDBText;
+    QRDBTPctPt4: TQRDBText;
+    QRDBTAgeSailPt4: TQRDBText;
+    QRDBTPdsSailPt4: TQRDBText;
+    QRDBTPdsAvMBPt4: TQRDBText;
+    QRDBTPdsApMBPt4: TQRDBText;
+    QRDBTP2SailPt4: TQRDBText;
+    QRDBTP2MBPt4: TQRDBText;
+    QRDBTNbTotPt4: TQRDBText;
+    QRDBTNbVifPt4: TQRDBText;
+    QRDBTNbSevPt4: TQRDBText;
+    QRDBTAgeSevPt4: TQRDBText;
+    QRDBTGMQPt4: TQRDBText;
+    QRDBTPVNaisPt4: TQRDBText;
+    QRDBTPVSevPt4: TQRDBText;
+    QRDBTAliGestPt4: TQRDBText;
+    QRDBTAliLactPt4: TQRDBText;
+    QRDBTNbrPt3: TQRDBText;
+    QRDBTPctPt3: TQRDBText;
+    QRDBTAgeSailPt3: TQRDBText;
+    QRDBTPdsSailPt3: TQRDBText;
+    QRDBTPdsAvMBPt3: TQRDBText;
+    QRDBTPdsApMBPt3: TQRDBText;
+    QRDBTP2SailPt3: TQRDBText;
+    QRDBTP2MBPt3: TQRDBText;
+    QRDBTNbTotPt3: TQRDBText;
+    QRDBTNbVifPt3: TQRDBText;
+    QRDBTNbSevPt3: TQRDBText;
+    QRDBTAgeSevPt3: TQRDBText;
+    QRDBTGMQPt3: TQRDBText;
+    QRDBTPVNaisPt3: TQRDBText;
+    QRDBTPVSevPt3: TQRDBText;
+    QRDBTAliGestPt3: TQRDBText;
+    QRDBTAliLactPt3: TQRDBText;
+    QRDBTNbrPt2: TQRDBText;
+    QRDBTPctPt2: TQRDBText;
+    QRDBTAgeSailPt2: TQRDBText;
+    QRDBTPdsSailPt2: TQRDBText;
+    QRDBTPdsAvMBPt2: TQRDBText;
+    QRDBTPdsApMBPt2: TQRDBText;
+    QRDBTP2SailPt2: TQRDBText;
+    QRDBTP2MBPt2: TQRDBText;
+    QRDBTNbTotPt2: TQRDBText;
+    QRDBTNbVifPt2: TQRDBText;
+    QRDBTNbSevPt2: TQRDBText;
+    QRDBTAgeSevPt2: TQRDBText;
+    QRDBTGMQPt2: TQRDBText;
+    QRDBTPVNaisPt2: TQRDBText;
+    QRDBTPVSevPt2: TQRDBText;
+    QRDBTAliGestPt2: TQRDBText;
+    QRDBTAliLactPt2: TQRDBText;
+    QRDBTNbrPt1: TQRDBText;
+    QRDBTPctPt1: TQRDBText;
+    QRDBTAgeSailPt1: TQRDBText;
+    QRDBTPdsSailPt1: TQRDBText;
+    QRDBTPdsAvMBPt1: TQRDBText;
+    QRDBTPdsApMBPt1: TQRDBText;
+    QRDBTP2SailPt1: TQRDBText;
+    QRDBTP2MBPt1: TQRDBText;
+    QRDBTNbTotPt1: TQRDBText;
+    QRDBTNbVifPt1: TQRDBText;
+    QRDBTNbSevPt1: TQRDBText;
+    QRDBTAgeSevPt1: TQRDBText;
+    QRDBTGMQPt1: TQRDBText;
+    QRDBTPVNaisPt1: TQRDBText;
+    QRDBTPVSevPt1: TQRDBText;
+    QRDBTAliGestPt1: TQRDBText;
+    QRDBTAliLactPt1: TQRDBText;
+    SFUnite: TStringField;
+    SFSeqAli: TStringField;
+    FFAliLactTot: TFloatField;
+    FFAliGestPt2: TFloatField;
+    FFAliGestPt3: TFloatField;
+    FFAliGestPt4: TFloatField;
+    FFAliGestPt5: TFloatField;
+    FFAliGestPt6: TFloatField;
+    FFAliGestPt7: TFloatField;
+    FFAliGestPt8: TFloatField;
+    FFAliGestTot: TFloatField;
+    FFPctTot: TFloatField;
+    FFAliLactPt2: TFloatField;
+    FFAliLactPt3: TFloatField;
+    FFAliLactPt4: TFloatField;
+    FFAliLactPt5: TFloatField;
+    FFAliLactPt6: TFloatField;
+    FFAliLactPt7: TFloatField;
+    FFAliLactPt8: TFloatField;
+    FFAliLactPt1: TFloatField;
+    IFNbrPt2: TIntegerField;
+    IFNbrPt3: TIntegerField;
+    IFNbrPt4: TIntegerField;
+    IFNbrTot: TIntegerField;
+    IFNbrPt5: TIntegerField;
+    IFNbrPt6: TIntegerField;
+    IFNbrPt7: TIntegerField;
+    IFNbrPt8: TIntegerField;
+    IFNbrPt1: TIntegerField;
+    FFAliGestPt1: TFloatField;
+    FFPctPt2: TFloatField;
+    FFPctPt3: TFloatField;
+    FFPctPt4: TFloatField;
+    FFPctPt5: TFloatField;
+    FFPctPt6: TFloatField;
+    FFPctPt7: TFloatField;
+    FFPctPt8: TFloatField;
+    FFPctPt1: TFloatField;
+    FFPdsSailTot: TFloatField;
+    FFP2SailTot: TFloatField;
+    FFPdsAvMBTot: TFloatField;
+    FFPdsApMBTot: TFloatField;
+    FFP2MBTot: TFloatField;
+    FFNbTotTot: TFloatField;
+    FFNbVifTot: TFloatField;
+    FFPVNaisTot: TFloatField;
+    FFNbSevTot_: TFloatField;
+    FFPVSevTot: TFloatField;
+    FFGMQTot: TFloatField;
+    IFAgeSailTot: TIntegerField;
+    IFDureeLact: TIntegerField;
+    IFAgeSailPt2: TIntegerField;
+    FFPdsSailPt2: TFloatField;
+    FFP2SailPt2: TFloatField;
+    FFPdsAvMBPt2: TFloatField;
+    FFPdsApMBPt2: TFloatField;
+    FFP2MBPt2: TFloatField;
+    FFNbTotPt2: TFloatField;
+    FFNbVifPt2: TFloatField;
+    FFPVNaisPt2: TFloatField;
+    FFNbSevPt2: TFloatField;
+    FFPVSevPt2: TFloatField;
+    FFGMQPt2: TFloatField;
+    FFGMQPt3: TFloatField;
+    FFGMQPt4: TFloatField;
+    FFGMQPt5: TFloatField;
+    FFGMQPt6: TFloatField;
+    FFGMQPt7: TFloatField;
+    FFGMQPt8: TFloatField;
+    FFGMQPt1: TFloatField;
+    IFAgeSailPt3: TIntegerField;
+    IFAgeSailPt4: TIntegerField;
+    IFAgeSailPt5: TIntegerField;
+    IFAgeSailPt6: TIntegerField;
+    IFAgeSailPt7: TIntegerField;
+    IFAgeSailPt8: TIntegerField;
+    IFAgeSailPt1: TIntegerField;
+    FFPdsSailPt3: TFloatField;
+    FFPdsSailPt4: TFloatField;
+    FFPdsSailPt5: TFloatField;
+    FFPdsSailPt6: TFloatField;
+    FFPdsSailPt7: TFloatField;
+    FFPdsSailPt8: TFloatField;
+    FFPdsSailPt1: TFloatField;
+    FFP2SailPt3: TFloatField;
+    FFP2SailPt4: TFloatField;
+    FFP2SailPt5: TFloatField;
+    FFP2SailPt6: TFloatField;
+    FFP2SailPt7: TFloatField;
+    FFP2SailPt8: TFloatField;
+    FFP2SailPt1: TFloatField;
+    FFPdsAvMBPt3: TFloatField;
+    FFPdsAvMBPt4: TFloatField;
+    FFPdsAvMBPt5: TFloatField;
+    FFPdsAvMBPt6: TFloatField;
+    FFPdsAvMBPt7: TFloatField;
+    FFPdsAvMBPt8: TFloatField;
+    FFPdsAvMBPt1: TFloatField;
+    FFPdsApMBPt3: TFloatField;
+    FFPdsApMBPt4: TFloatField;
+    FFPdsApMBPt5: TFloatField;
+    FFPdsApMBPt6: TFloatField;
+    FFPdsApMBPt7: TFloatField;
+    FFPdsApMBPt8: TFloatField;
+    FFPdsApMBPt1: TFloatField;
+    FFP2MBPt3: TFloatField;
+    FFP2MBPt4: TFloatField;
+    FFP2MBPt5: TFloatField;
+    FFP2MBPt6: TFloatField;
+    FFP2MBPt7: TFloatField;
+    FFP2MBPt8: TFloatField;
+    FFP2MBPt1: TFloatField;
+    FFNbTotPt3: TFloatField;
+    FFNbTotPt4: TFloatField;
+    FFNbTotPt5: TFloatField;
+    FFNbTotPt6: TFloatField;
+    FFNbTotPt7: TFloatField;
+    FFNbTotPt8: TFloatField;
+    FFNbTotPt1: TFloatField;
+    FFNbVifPt3: TFloatField;
+    FFNbVifPt4: TFloatField;
+    FFNbVifPt5: TFloatField;
+    FFNbVifPt6: TFloatField;
+    FFNbVifPt7: TFloatField;
+    FFNbVifPt8: TFloatField;
+    FFNbVifPt1: TFloatField;
+    FFPVNaisPt3: TFloatField;
+    FFPVNaisPt4: TFloatField;
+    FFPVNaisPt5: TFloatField;
+    FFPVNaisPt6: TFloatField;
+    FFPVNaisPt7: TFloatField;
+    FFPVNaisPt8: TFloatField;
+    FFPVNaisPt1: TFloatField;
+    FFNbSevPt3: TFloatField;
+    FFNbSevPt4: TFloatField;
+    FFNbSevPt5: TFloatField;
+    FFNbSevPt6: TFloatField;
+    FFNbSevPt7: TFloatField;
+    FFNbSevPt8: TFloatField;
+    FFNbSevPt1: TFloatField;
+    FFPVSevPt3: TFloatField;
+    FFPVSevPt4: TFloatField;
+    FFPVSevPt5: TFloatField;
+    FFPVSevPt6: TFloatField;
+    FFPVSevPt7: TFloatField;
+    FFPVSevPt8: TFloatField;
+    FFPVSevPt1: TFloatField;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapProfilT: TFRapProfilT;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFProfilT, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapProfilT }
+
+procedure TFRapProfilT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Profil_'] := FProfilT.CBProfil.Text;
+    FieldValues['_NbrPt1_'] := FProfilT.PBNbrPt1.Text;
+    FieldValues['_NbrPt2_'] := FProfilT.PBNbrPt2.Text;
+    FieldValues['_NbrPt3_'] := FProfilT.PBNbrPt3.Text;
+    FieldValues['_NbrPt4_'] := FProfilT.PBNbrPt4.Text;
+    FieldValues['_NbrPt5_'] := FProfilT.PBNbrPt5.Text;
+    FieldValues['_NbrPt6_'] := FProfilT.PBNbrPt6.Text;
+    FieldValues['_NbrPt7_'] := FProfilT.PBNbrPt7.Text;
+    FieldValues['_NbrPt8_'] := FProfilT.PBNbrPt8.Text;
+    FieldValues['_NbrTot_'] := FProfilT.PBNbrTot.Text;
+    FieldValues['_PctPt1_'] := FProfilT.PBPctPt1.Text;
+    FieldValues['_PctPt2_'] := FProfilT.PBPctPt2.Text;
+    FieldValues['_PctPt3_'] := FProfilT.PBPctPt3.Text;
+    FieldValues['_PctPt4_'] := FProfilT.PBPctPt4.Text;
+    FieldValues['_PctPt5_'] := FProfilT.PBPctPt5.Text;
+    FieldValues['_PctPt6_'] := FProfilT.PBPctPt6.Text;
+    FieldValues['_PctPt7_'] := FProfilT.PBPctPt7.Text;
+    FieldValues['_PctPt8_'] := FProfilT.PBPctPt8.Text;
+    FieldValues['_PctTot_'] := FProfilT.PBPctTot.Text;
+    FieldValues['_AgeSailPt1_'] := FProfilT.PBAgeSailPt1.Text;
+    FieldValues['_AgeSailPt2_'] := FProfilT.PBAgeSailPt2.Text;
+    FieldValues['_AgeSailPt3_'] := FProfilT.PBAgeSailPt3.Text;
+    FieldValues['_AgeSailPt4_'] := FProfilT.PBAgeSailPt4.Text;
+    FieldValues['_AgeSailPt5_'] := FProfilT.PBAgeSailPt5.Text;
+    FieldValues['_AgeSailPt6_'] := FProfilT.PBAgeSailPt6.Text;
+    FieldValues['_AgeSailPt7_'] := FProfilT.PBAgeSailPt7.Text;
+    FieldValues['_AgeSailPt8_'] := FProfilT.PBAgeSailPt8.Text;
+    FieldValues['_AgeSailTot_'] := FProfilT.PBAgeSailTot.Text;
+    FieldValues['_PdsSailPt1_'] := FProfilT.PBPdsSailPt1.Text;
+    FieldValues['_PdsSailPt2_'] := FProfilT.PBPdsSailPt2.Text;
+    FieldValues['_PdsSailPt3_'] := FProfilT.PBPdsSailPt3.Text;
+    FieldValues['_PdsSailPt4_'] := FProfilT.PBPdsSailPt4.Text;
+    FieldValues['_PdsSailPt5_'] := FProfilT.PBPdsSailPt5.Text;
+    FieldValues['_PdsSailPt6_'] := FProfilT.PBPdsSailPt6.Text;
+    FieldValues['_PdsSailPt7_'] := FProfilT.PBPdsSailPt7.Text;
+    FieldValues['_PdsSailPt8_'] := FProfilT.PBPdsSailPt8.Text;
+    FieldValues['_PdsSailTot_'] := FProfilT.PBPdsSailTot.Text;
+    FieldValues['_P2SailPt1_'] := FProfilT.PBP2SailPt1.Text;
+    FieldValues['_P2SailPt2_'] := FProfilT.PBP2SailPt2.Text;
+    FieldValues['_P2SailPt3_'] := FProfilT.PBP2SailPt3.Text;
+    FieldValues['_P2SailPt4_'] := FProfilT.PBP2SailPt4.Text;
+    FieldValues['_P2SailPt5_'] := FProfilT.PBP2SailPt5.Text;
+    FieldValues['_P2SailPt6_'] := FProfilT.PBP2SailPt6.Text;
+    FieldValues['_P2SailPt7_'] := FProfilT.PBP2SailPt7.Text;
+    FieldValues['_P2SailPt8_'] := FProfilT.PBP2SailPt8.Text;
+    FieldValues['_P2SailTot_'] := FProfilT.PBP2SailTot.Text;
+    FieldValues['_PdsAvMBPt1_'] := FProfilT.PBPdsAvMBPt1.Text;
+    FieldValues['_PdsAvMBPt2_'] := FProfilT.PBPdsAvMBPt2.Text;
+    FieldValues['_PdsAvMBPt3_'] := FProfilT.PBPdsAvMBPt3.Text;
+    FieldValues['_PdsAvMBPt4_'] := FProfilT.PBPdsAvMBPt4.Text;
+    FieldValues['_PdsAvMBPt5_'] := FProfilT.PBPdsAvMBPt5.Text;
+    FieldValues['_PdsAvMBPt6_'] := FProfilT.PBPdsAvMBPt6.Text;
+    FieldValues['_PdsAvMBPt7_'] := FProfilT.PBPdsAvMBPt7.Text;
+    FieldValues['_PdsAvMBPt8_'] := FProfilT.PBPdsAvMBPt8.Text;
+    FieldValues['_PdsAvMBTot_'] := FProfilT.PBPdsAvMBTot.Text;
+    FieldValues['_PdsApMBPt1_'] := FProfilT.PBPdsApMBPt1.Text;
+    FieldValues['_PdsApMBPt2_'] := FProfilT.PBPdsApMBPt2.Text;
+    FieldValues['_PdsApMBPt3_'] := FProfilT.PBPdsApMBPt3.Text;
+    FieldValues['_PdsApMBPt4_'] := FProfilT.PBPdsApMBPt4.Text;
+    FieldValues['_PdsApMBPt5_'] := FProfilT.PBPdsApMBPt5.Text;
+    FieldValues['_PdsApMBPt6_'] := FProfilT.PBPdsApMBPt6.Text;
+    FieldValues['_PdsApMBPt7_'] := FProfilT.PBPdsApMBPt7.Text;
+    FieldValues['_PdsApMBPt8_'] := FProfilT.PBPdsApMBPt8.Text;
+    FieldValues['_PdsApMBTot_'] := FProfilT.PBPdsApMBTot.Text;
+    FieldValues['_P2MBPt1_'] := FProfilT.PBP2MBPt1.Text;
+    FieldValues['_P2MBPt2_'] := FProfilT.PBP2MBPt2.Text;
+    FieldValues['_P2MBPt3_'] := FProfilT.PBP2MBPt3.Text;
+    FieldValues['_P2MBPt4_'] := FProfilT.PBP2MBPt4.Text;
+    FieldValues['_P2MBPt5_'] := FProfilT.PBP2MBPt5.Text;
+    FieldValues['_P2MBPt6_'] := FProfilT.PBP2MBPt6.Text;
+    FieldValues['_P2MBPt7_'] := FProfilT.PBP2MBPt7.Text;
+    FieldValues['_P2MBPt8_'] := FProfilT.PBP2MBPt8.Text;
+    FieldValues['_P2MBTot_'] := FProfilT.PBP2MBTot.Text;
+    FieldValues['_NbTotPt1_'] := FProfilT.PBNbTotPt1.Text;
+    FieldValues['_NbTotPt2_'] := FProfilT.PBNbTotPt2.Text;
+    FieldValues['_NbTotPt3_'] := FProfilT.PBNbTotPt3.Text;
+    FieldValues['_NbTotPt4_'] := FProfilT.PBNbTotPt4.Text;
+    FieldValues['_NbTotPt5_'] := FProfilT.PBNbTotPt5.Text;
+    FieldValues['_NbTotPt6_'] := FProfilT.PBNbTotPt6.Text;
+    FieldValues['_NbTotPt7_'] := FProfilT.PBNbTotPt7.Text;
+    FieldValues['_NbTotPt8_'] := FProfilT.PBNbTotPt8.Text;
+    FieldValues['_NbTotTot_'] := FProfilT.PBNbTotTot.Text;
+    FieldValues['_NbVifPt1_'] := FProfilT.PBNbVifPt1.Text;
+    FieldValues['_NbVifPt2_'] := FProfilT.PBNbVifPt2.Text;
+    FieldValues['_NbVifPt3_'] := FProfilT.PBNbVifPt3.Text;
+    FieldValues['_NbVifPt4_'] := FProfilT.PBNbVifPt4.Text;
+    FieldValues['_NbVifPt5_'] := FProfilT.PBNbVifPt5.Text;
+    FieldValues['_NbVifPt6_'] := FProfilT.PBNbVifPt6.Text;
+    FieldValues['_NbVifPt7_'] := FProfilT.PBNbVifPt7.Text;
+    FieldValues['_NbVifPt8_'] := FProfilT.PBNbVifPt8.Text;
+    FieldValues['_NbVifTot_'] := FProfilT.PBNbVifTot.Text;
+    FieldValues['_PVNaisPt1_'] := FProfilT.PBPVNaisPt1.Text;
+    FieldValues['_PVNaisPt2_'] := FProfilT.PBPVNaisPt2.Text;
+    FieldValues['_PVNaisPt3_'] := FProfilT.PBPVNaisPt3.Text;
+    FieldValues['_PVNaisPt4_'] := FProfilT.PBPVNaisPt4.Text;
+    FieldValues['_PVNaisPt5_'] := FProfilT.PBPVNaisPt5.Text;
+    FieldValues['_PVNaisPt6_'] := FProfilT.PBPVNaisPt6.Text;
+    FieldValues['_PVNaisPt7_'] := FProfilT.PBPVNaisPt7.Text;
+    FieldValues['_PVNaisPt8_'] := FProfilT.PBPVNaisPt8.Text;
+    FieldValues['_PVNaisTot_'] := FProfilT.PBPVNaisTot.Text;
+    FieldValues['_NbSevPt1_'] := FProfilT.PBNbSevPt1.Text;
+    FieldValues['_NbSevPt2_'] := FProfilT.PBNbSevPt2.Text;
+    FieldValues['_NbSevPt3_'] := FProfilT.PBNbSevPt3.Text;
+    FieldValues['_NbSevPt4_'] := FProfilT.PBNbSevPt4.Text;
+    FieldValues['_NbSevPt5_'] := FProfilT.PBNbSevPt5.Text;
+    FieldValues['_NbSevPt6_'] := FProfilT.PBNbSevPt6.Text;
+    FieldValues['_NbSevPt7_'] := FProfilT.PBNbSevPt7.Text;
+    FieldValues['_NbSevPt8_'] := FProfilT.PBNbSevPt8.Text;
+    FieldValues['_NbSevTot_'] := FProfilT.PBNbSevTot.Text;
+    FieldValues['_DureeLact_'] := FProfilT.PBDureeLact.Text;
+    FieldValues['_PVSevPt1_'] := FProfilT.PBPVSevPt1.Text;
+    FieldValues['_PVSevPt2_'] := FProfilT.PBPVSevPt2.Text;
+    FieldValues['_PVSevPt3_'] := FProfilT.PBPVSevPt3.Text;
+    FieldValues['_PVSevPt4_'] := FProfilT.PBPVSevPt4.Text;
+    FieldValues['_PVSevPt5_'] := FProfilT.PBPVSevPt5.Text;
+    FieldValues['_PVSevPt6_'] := FProfilT.PBPVSevPt6.Text;
+    FieldValues['_PVSevPt7_'] := FProfilT.PBPVSevPt7.Text;
+    FieldValues['_PVSevPt8_'] := FProfilT.PBPVSevPt8.Text;
+    FieldValues['_PVSevTot_'] := FProfilT.PBPVSevTot.Text;
+    FieldValues['_GMQPt1_'] := FProfilT.PBGMQPt1.Text;
+    FieldValues['_GMQPt2_'] := FProfilT.PBGMQPt2.Text;
+    FieldValues['_GMQPt3_'] := FProfilT.PBGMQPt3.Text;
+    FieldValues['_GMQPt4_'] := FProfilT.PBGMQPt4.Text;
+    FieldValues['_GMQPt5_'] := FProfilT.PBGMQPt5.Text;
+    FieldValues['_GMQPt6_'] := FProfilT.PBGMQPt6.Text;
+    FieldValues['_GMQPt7_'] := FProfilT.PBGMQPt7.Text;
+    FieldValues['_GMQPt8_'] := FProfilT.PBGMQPt8.Text;
+    FieldValues['_GMQTot_'] := FProfilT.PBGMQTot.Text;
+    FieldValues['_SeqAli_'] := FProfilT.CBSeqAli.Text;
+    FieldValues['_Unite_'] := FProfilT.CBUnite.Text;
+    FieldValues['_AliGestPt1_'] := FProfilT.PBAliGestPt1.Text;
+    FieldValues['_AliGestPt2_'] := FProfilT.PBAliGestPt2.Text;
+    FieldValues['_AliGestPt3_'] := FProfilT.PBAliGestPt3.Text;
+    FieldValues['_AliGestPt4_'] := FProfilT.PBAliGestPt4.Text;
+    FieldValues['_AliGestPt5_'] := FProfilT.PBAliGestPt5.Text;
+    FieldValues['_AliGestPt6_'] := FProfilT.PBAliGestPt6.Text;
+    FieldValues['_AliGestPt7_'] := FProfilT.PBAliGestPt7.Text;
+    FieldValues['_AliGestPt8_'] := FProfilT.PBAliGestPt8.Text;
+    FieldValues['_AliGestTot_'] := FProfilT.PBAliGestTot.Text;
+    FieldValues['_AliLactPt1_'] := FProfilT.PBAliLactPt1.Text;
+    FieldValues['_AliLactPt2_'] := FProfilT.PBAliLactPt2.Text;
+    FieldValues['_AliLactPt3_'] := FProfilT.PBAliLactPt3.Text;
+    FieldValues['_AliLactPt4_'] := FProfilT.PBAliLactPt4.Text;
+    FieldValues['_AliLactPt5_'] := FProfilT.PBAliLactPt5.Text;
+    FieldValues['_AliLactPt6_'] := FProfilT.PBAliLactPt6.Text;
+    FieldValues['_AliLactPt7_'] := FProfilT.PBAliLactPt7.Text;
+    FieldValues['_AliLactPt8_'] := FProfilT.PBAliLactPt8.Text;
+    FieldValues['_AliLactTot_'] := FProfilT.PBAliLactTot.Text;
+    Post;
+  end ;
+  QRMMemo.Lines.Add(FProfilT.CBProfil.Hint);
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFCalibrProfilP.pas
===================================================================
--- UFCalibrProfilP.pas	(révision 0)
+++ UFCalibrProfilP.pas	(révision 3)
@@ -0,0 +1,1198 @@
+unit UFCalibrProfilP;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Dialogs, Buttons, ExtCtrls,
+  Chart, Series, TeEngine, TeeProcs, JvEnterTab, JvExControls, PBNumEdit,
+  PBSuperSpin;
+
+type
+  TFCalibrProfilP = class(TForm)
+    BBOk: TBitBtn;
+    BBCancel: TBitBtn;
+    SBCalibrage: TSpeedButton;
+    CBMethod: TComboBox;
+    Graph: TChart;
+    GBResults: TGroupBox;
+    PGraphTop: TPanel;
+    GBGraphRight: TGroupBox;
+    CBGraphRight: TComboBox;
+    GBGraphLeft: TGroupBox;
+    CBGraphLeft: TComboBox;
+    LineLeft: TLineSeries;
+    LineRight: TLineSeries;
+    PointLeft: TLineSeries;
+    PointRight: TLineSeries;
+    GBParam: TGroupBox;
+    LY50: TLabel;
+    LY100: TLabel;
+    LFinal: TLabel;
+    LInitial: TLabel;
+    LMeanPD: TLabel;
+    LSD: TLabel;
+    EY50Final: TEdit;
+    ESDY50: TEdit;
+    EY100Final: TEdit;
+    ESDY100: TEdit;
+    EMeanPDFinal: TEdit;
+    ESDMeanPD: TEdit;
+    GBVariables: TGroupBox;
+    LBackfat: TLabel;
+    LWeight: TLabel;
+    LR2: TLabel;
+    LRSD: TLabel;
+    LVar: TLabel;
+    Lw: TLabel;
+    ERSDBackfat: TEdit;
+    ERSDWeight: TEdit;
+    ER2Weight: TEdit;
+    ER2Backfat: TEdit;
+    EwRSSWeight: TEdit;
+    EwRSSBackfat: TEdit;
+    EwBackfat: TEdit;
+    EwWeight: TEdit;
+    LFeed: TLabel;
+    LLean: TLabel;
+    ERSDFeed: TEdit;
+    ERSDLean: TEdit;
+    ER2Lean: TEdit;
+    ER2Feed: TEdit;
+    EwRSSLean: TEdit;
+    EwRSSFeed: TEdit;
+    EwFeed: TEdit;
+    EwLean: TEdit;
+    PButtons: TPanel;
+    LMethod: TLabel;
+    LPrecocity: TLabel;
+    LMaintenance: TLabel;
+    EPrecocityFinal: TEdit;
+    ESDPrecocity: TEdit;
+    EMaintenanceFinal: TEdit;
+    ESDMaintenance: TEdit;
+    LTime: TLabel;
+    ETime: TEdit;
+    PBIng50: TPBSuperSpin;
+    PBIng100: TPBSuperSpin;
+    PBMeanPD: TPBSuperSpin;
+    PBPrecocity: TPBSuperSpin;
+    PBMaintenance: TPBSuperSpin;
+    PLeft: TPanel;
+    PSummary: TPanel;
+    EY50Initial: TEdit;
+    EY100Initial: TEdit;
+    EMeanPDInitial: TEdit;
+    EPrecocityInitial: TEdit;
+    EMaintenanceInitial: TEdit;
+    PRight: TPanel;
+    GBParameters: TGroupBox;
+    LEntretien: TLabel;
+    LComport: TLabel;
+    LPDMoy: TLabel;
+    LIng100: TLabel;
+    LIng50: TLabel;
+    LInfo: TLabel;
+    JvEnterAsTab1: TJvEnterAsTab;
+    PBwFeed: TPBNumEdit;
+    PBwWeight: TPBNumEdit;
+    PBwBackfat: TPBNumEdit;
+    PBwLean: TPBNumEdit;
+    RBStandard: TRadioButton;
+    RBExpert: TRadioButton;
+    CheckBox6: TCheckBox;
+    CheckBox7: TCheckBox;
+    CheckBox8: TCheckBox;
+    CheckBox9: TCheckBox;
+    CheckBox10: TCheckBox;
+    CheckBox1: TCheckBox;
+    CheckBox2: TCheckBox;
+    CheckBox3: TCheckBox;
+    CheckBox4: TCheckBox;
+    BBReset: TBitBtn;
+    LPVInit: TLabel;
+    PBPVInit: TPBSuperSpin;
+    LInitBW: TLabel;
+    EInitBWFinal: TEdit;
+    ESDInitBW: TEdit;
+    EInitBWInitial: TEdit;
+    CheckBox5: TCheckBox;
+    CBAALimit: TCheckBox;
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure CBGraphLeftChange(Sender: TObject);
+    procedure CBGraphRightChange(Sender: TObject);
+    procedure SBCalibrageClick(Sender: TObject);
+    procedure PBwFeedChange(Sender: TObject);
+    procedure PBwWeightChange(Sender: TObject);
+    procedure PBwBackfatChange(Sender: TObject);
+    procedure PBwLeanChange(Sender: TObject);
+    procedure PBIng50Change(Sender: TObject);
+    procedure PBIng100Change(Sender: TObject);
+    procedure PBMeanPDChange(Sender: TObject);
+    procedure PBPrecocityChange(Sender: TObject);
+    procedure PBMaintenanceChange(Sender: TObject);
+    procedure RBStandardClick(Sender: TObject);
+    procedure RBExpertClick(Sender: TObject);
+    procedure BBResetClick(Sender: TObject);
+    procedure PBPVInitChange(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    procedure Calibration;
+    procedure Uncheck;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FCalibrProfilP: TFCalibrProfilP;
+
+implementation
+
+uses
+  SysUtils, gnugettext, dmath, UVariables, UStrings, UInit, UCalcul, UFindRec,
+  UEchelle, UFProfilP, UCalcSimulP;
+
+{$R *.dfm}
+
+{ Calibration }
+
+const
+  MaxIter = 100;
+  Tol = MICRO;
+
+type
+  RecCalibr = record
+    Age: Integer;
+    Id: Integer; // 1=Feed, 2=Weight, 3=Backfat, 4=Lean
+    Observ: Extended;
+    Predict: Extended;
+  end;
+  PRecCalibr = ^RecCalibr;
+
+var
+  MiseAJour, PDLimit: boolean;
+  PProfilTempo: PRecProfilP;
+  IdxProfilTempo: Integer;
+  PResSimulTempo: PTabResSimulP;
+  ListRecCalibr: TList;
+  NVar, NVarDep, NData: Integer;
+  X, G: TVector;
+  H_inv: TMatrix;
+  F_min, Det: Float;
+  Inv: array[1..6] of Float;
+  Freq, Start, Stop: Int64;
+  Nb: array[1..4] of Integer;
+  Tot, M, w, SSt, SSr, wSSr: array[1..4] of Double;
+  wSSrTot: Double;
+
+function Func(X: TVector): Float;
+var
+  i, jour: Integer;
+  Y50, Y100, cumul: Double;
+  rec: PRecCalibr;
+begin
+  i := 0;
+  if FCalibrProfilP.CheckBox5.Checked
+  then
+  begin
+    Inc(i);
+    if X[i] <= 0
+    then // Protection rajout�e le 27/07/2011
+      PProfilTempo.PVInit := MILLI
+    else
+      PProfilTempo.PVInit := X[i];
+    // Recalculer les poids initiaux de prot�ines et lipides
+    PProfilTempo.ProtInit := CalcProt(PProfilTempo.PVInit);
+    PProfilTempo.LipInit := CalcLipProt(PProfilTempo.PVInit, PProfilTempo.ProtInit);
+  end;
+  if FCalibrProfilP.CheckBox6.Checked
+  then
+  begin
+    Inc(i);
+    Y50 := X[i];
+  end
+  else
+    Y50 := FCalibrProfilP.PBIng50.AsFloat;
+  if FCalibrProfilP.CheckBox7.Checked
+  then
+  begin
+    Inc(i);
+    Y100 := X[i];
+  end
+  else
+    Y100 := FCalibrProfilP.PBIng100.AsFloat;
+  if FCalibrProfilP.CheckBox8.Checked
+  then
+  begin
+    Inc(i);
+    if X[i] <= 0
+    then // Protection rajout�e le 27/07/2011
+      PProfilTempo.PDMoy := MILLI
+    else
+      PProfilTempo.PDMoy := X[i];
+  end;
+  if FCalibrProfilP.CheckBox9.Checked
+  then
+  begin
+    Inc(i);
+    if X[i] <= 0
+    then // Protection rajout�e le 27/07/2011
+      PProfilTempo.BGompertz := MILLI
+    else
+      PProfilTempo.BGompertz := X[i];
+  end;
+  if FCalibrProfilP.CheckBox10.Checked
+  then
+  begin
+    Inc(i);
+    if X[i] <= 0
+    then // Protection rajout�e le 27/07/2011
+      PProfilTempo.Entretien := MILLI
+    else
+      PProfilTempo.Entretien := X[i];
+  end;
+  with PProfilTempo^ do
+    try
+      CalcCoef(Equation, Unite, Y50, Y100, a, b);
+    except
+      a := 0;
+      b := 0;
+    end;
+  // Valeur des param�tres du cas �valu�
+  MiseAJour := True;
+  FCalibrProfilP.PBPVInit.AsFloat := PProfilTempo.PVInit;
+  FCalibrProfilP.PBIng50.AsFloat := Y50;
+  FCalibrProfilP.PBIng100.AsFloat := Y100;
+  FCalibrProfilP.PBMeanPD.AsFloat := PProfilTempo.PDMoy;
+  FCalibrProfilP.PBPrecocity.AsFloat := PProfilTempo.BGompertz;
+  FCalibrProfilP.PBMaintenance.AsFloat := PProfilTempo.Entretien;
+  MiseAJour := False;
+  try
+    // Affichage de la simulation
+    CalcSimulP(-1, PProfilTempo.Num, PProfilTempo.SeqAli, PProfilTempo.Ration, -1, 1, PResSimulTempo, FCalibrProfilP.CBAALimit.Checked);
+    {
+    // Affichage des graphiques
+    FCalibrProfilP.CBGraphLeftChange(nil);
+    FCalibrProfilP.CBGraphRightChange(nil);
+    Application.ProcessMessages;
+    }
+  except // La simulation a �chou�
+    for i := 0 to ListRecCalibr.Count - 1 do
+    begin
+      rec := ListRecCalibr[i];
+      rec.Predict := 0;
+    end;
+  end;
+  // Evaluation du cas
+  PDLimit := False;
+  i := 0;
+  rec := ListRecCalibr[i];
+  cumul := 0;
+  for jour := 1 to PResSimulTempo.NbJSim do
+  begin
+    while (i < ListRecCalibr.Count) and (PResSimulTempo.TabResult[1, jour] = rec.Age) do
+    begin
+      case rec.Id of
+        1: // Feed
+          rec.Predict := cumul;
+        2: // Weight
+          rec.Predict := PResSimulTempo.TabResult[2, jour];
+        3: // Backfat
+          if FatInfo = 0
+          then // P2
+            rec.Predict := CalcP2(PResSimulTempo.TabResult[50, jour])
+          else // User defined
+            rec.Predict := CalcUserFat(PResSimulTempo.TabResult[48, jour], PResSimulTempo.TabResult[49, jour], PResSimulTempo.TabResult[50, jour]);
+        4: // Lean
+          if LeanInfo = 0
+          then // TMP
+            rec.Predict := CalcTMP(PResSimulTempo.TabResult[48, jour], PResSimulTempo.TabResult[49, jour], PResSimulTempo.TabResult[50, jour])
+          else // User defined
+            rec.Predict := CalcUserLean(PResSimulTempo.TabResult[48, jour], PResSimulTempo.TabResult[49, jour], PResSimulTempo.TabResult[50, jour]);
+      end;
+      Inc(i);
+      if i < ListRecCalibr.Count then rec := ListRecCalibr[i];
+    end;
+    cumul := cumul + PResSimulTempo.TabResult[113, jour];
+    if PResSimulTempo.TabResult[47, jour] < PResSimulTempo.TabResult[77, jour] / GEProtJaap
+    then // PDFirstLimit < PD potentiel
+      PDLimit := True;
+  end;
+  // Ecart par rapport aux valeurs du profil
+  Result := 0;
+  for i := 0 to ListRecCalibr.Count - 1 do
+  begin
+    rec := ListRecCalibr[i];
+    case rec.Id of
+      1: // Feed
+        if FCalibrProfilP.CheckBox1.Checked
+        then
+          Result := Result + w[1] * Power(rec.Observ - rec.Predict, 2);
+      2: // Weight
+        if FCalibrProfilP.CheckBox2.Checked
+        then
+          Result := Result + w[2] * Power(rec.Observ - rec.Predict, 2);
+      3: // Backfat
+        if FCalibrProfilP.CheckBox3.Checked
+        then
+          Result := Result + w[3] * Power(rec.Observ - rec.Predict, 2);
+      4: // Lean
+        if FCalibrProfilP.CheckBox4.Checked
+        then
+          Result := Result + w[4] * Power(rec.Observ - rec.Predict, 2);
+    end;
+  end;
+end;
+
+// Newton-Raphson method
+// procedure HessGrad to compute the gradient G and the hessian H of the function at point X
+{$I numhess.inc}
+
+// Broyden-Fletcher-Goldfarb-Shanno method
+// procedure Gradient to compute the gradient G of the function at point X
+{$I numgrad.inc}
+
+{ TFCalibrProfilP }
+
+procedure TFCalibrProfilP.BBResetClick(Sender: TObject);
+begin
+  FormShow(Sender);
+  BBOk.Enabled := False;
+end;
+
+procedure TFCalibrProfilP.Calibration;
+var
+  i: Integer;
+begin
+  // Initialisation des structures
+  NVarDep := 0;
+  if CheckBox1.Checked then Inc(NVarDep);
+  if CheckBox2.Checked then Inc(NVarDep);
+  if CheckBox3.Checked then Inc(NVarDep);
+  if CheckBox4.Checked then Inc(NVarDep);
+  NData := 0;
+  if CheckBox1.Checked then NData := NData + Nb[1];
+  if CheckBox2.Checked then NData := NData + Nb[2];
+  if CheckBox3.Checked then NData := NData + Nb[3];
+  if CheckBox4.Checked then NData := NData + Nb[4];
+  NVar := 0;
+  if CheckBox5.Checked then Inc(NVar);
+  if CheckBox6.Checked then Inc(NVar);
+  if CheckBox7.Checked then Inc(NVar);
+  if CheckBox8.Checked then Inc(NVar);
+  if CheckBox9.Checked then Inc(NVar);
+  if CheckBox10.Checked then Inc(NVar);
+  DimVector(X, NVar);
+  DimVector(G, NVar);
+  DimMatrix(H_inv, NVar, NVar);
+  i := 0;
+  if CheckBox5.Checked
+  then
+  begin
+    Inc(i);
+    X[i] := PBPVInit.AsFloat;
+  end;
+  if CheckBox6.Checked
+  then
+  begin
+    Inc(i);
+    X[i] := PBIng50.AsFloat;
+  end;
+  if CheckBox7.Checked
+  then
+  begin
+    Inc(i);
+    X[i] := PBIng100.AsFloat;
+  end;
+  if CheckBox8.Checked
+  then
+  begin
+    Inc(i);
+    X[i] := PBMeanPD.AsFloat;
+  end;
+  if CheckBox9.Checked
+  then
+  begin
+    Inc(i);
+    X[i] := PBPrecocity.AsFloat;
+  end;
+  if CheckBox10.Checked
+  then
+  begin
+    Inc(i);
+    X[i] := PBMaintenance.AsFloat;
+  end;
+  case CBMethod.ItemIndex of
+    0: Newton(Func, HessGrad, X, 1, NVar, MaxIter, Tol, F_min, G, H_inv, Det);
+    1: Marquardt(Func, HessGrad, X, 1, NVar, MaxIter, Tol, F_min, G, H_inv, Det);
+    2: BFGS(Func, Gradient, X, 1, NVar, MaxIter, Tol, F_min, G, H_inv);
+  end;
+  for i := 1 to NVar do
+    Inv[i] := H_inv[i, i];
+end;
+
+procedure TFCalibrProfilP.CBGraphLeftChange(Sender: TObject);
+var
+  jour, i: Integer;
+  cumul, x, y: Double;
+  rec: PRecCalibr;
+begin
+  Graph.LeftAxis.Title.Caption := CBGraphLeft.Text;
+  // Ligne
+  LineLeft.Clear;
+  cumul := 0;
+  for jour := 1 to PResSimulTempo.NbJSim do
+  begin
+    x := PResSimulTempo.TabResult[1, jour];
+    case CBGraphLeft.ItemIndex of
+      0: // Cumulative feed usage
+      begin
+        y := cumul;
+        cumul := cumul + PResSimulTempo.TabResult[113, jour];
+      end;
+      1: // Body weight
+        y := PResSimulTempo.TabResult[2, jour];
+      2: // Backfat thickness
+        if FatInfo = 0
+        then // P2
+          y := CalcP2(PResSimulTempo.TabResult[50, jour])
+        else // User defined
+          y := CalcUserFat(PResSimulTempo.TabResult[48, jour], PResSimulTempo.TabResult[49, jour], PResSimulTempo.TabResult[50, jour]);
+      3: // Lean meat percentage
+        if LeanInfo = 0
+        then // TMP
+          y := CalcTMP(PResSimulTempo.TabResult[48, jour], PResSimulTempo.TabResult[49, jour], PResSimulTempo.TabResult[50, jour])
+        else // User defined
+          y := CalcUserLean(PResSimulTempo.TabResult[48, jour], PResSimulTempo.TabResult[49, jour], PResSimulTempo.TabResult[50, jour]);
+      else
+        y := 0;
+    end;
+    LineLeft.AddXY(x, y, '', clTeeColor);
+  end;
+  // Points
+  PointLeft.Clear;
+  for i := 0 to ListRecCalibr.Count - 1 do
+  begin
+    rec := ListRecCalibr[i];
+    if rec.Id = CBGraphLeft.ItemIndex + 1
+    then
+    begin
+      x := rec.Age;
+      y := rec.Observ;
+      PointLeft.AddXY(x, y, '', clTeeColor);
+    end;
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFCalibrProfilP.CBGraphRightChange(Sender: TObject);
+var
+  jour, i: Integer;
+  cumul, x, y: Double;
+  rec: PRecCalibr;
+begin
+  Graph.RightAxis.Title.Caption := CBGraphRight.Text;
+  // Ligne
+  LineRight.Clear;
+  cumul := 0;
+  for jour := 1 to PResSimulTempo.NbJSim do
+  begin
+    x := PResSimulTempo.TabResult[1, jour];
+    case CBGraphRight.ItemIndex of
+      0: // Cumulative feed usage
+      begin
+        y := cumul;
+        cumul := cumul + PResSimulTempo.TabResult[113, jour];
+      end;
+      1: // Body weight
+        y := PResSimulTempo.TabResult[2, jour];
+      2: // Backfat thickness
+        if FatInfo = 0
+        then // P2
+          y := CalcP2(PResSimulTempo.TabResult[50, jour])
+        else // User defined
+          y := CalcUserFat(PResSimulTempo.TabResult[48, jour], PResSimulTempo.TabResult[49, jour], PResSimulTempo.TabResult[50, jour]);
+      3: // Lean meat percentage
+        if LeanInfo = 0
+        then // TMP
+          y := CalcTMP(PResSimulTempo.TabResult[48, jour], PResSimulTempo.TabResult[49, jour], PResSimulTempo.TabResult[50, jour])
+        else // User defined
+          y := CalcUserLean(PResSimulTempo.TabResult[48, jour], PResSimulTempo.TabResult[49, jour], PResSimulTempo.TabResult[50, jour]);
+      else
+        y := 0;
+    end;
+    LineRight.AddXY(x, y, '', clTeeColor);
+  end;
+  // Points
+  PointRight.Clear;
+  for i := 0 to ListRecCalibr.Count - 1 do
+  begin
+    rec := ListRecCalibr[i];
+    if rec.Id = CBGraphRight.ItemIndex + 1
+    then
+    begin
+      x := rec.Age;
+      y := rec.Observ;
+      PointRight.AddXY(x, y, '', clTeeColor);
+    end;
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFCalibrProfilP.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  PProfilP := ListProfilP[FindIdxProfilP(FProfilP.CBProfil.Text)];
+  if ModalResult = mrOk
+  then // Conserver les modification
+  begin
+    PProfilP.AgeInit := PProfilTempo.AgeInit;
+    PProfilP.PVInit := PProfilTempo.PVInit;
+    PProfilP.ProtInit := PProfilTempo.ProtInit;
+    PProfilP.LipInit := PProfilTempo.LipInit;
+    PProfilP.ModeFin := 0; // Dur�e
+    PProfilP.Duree := PProfilTempo.Duree;
+    PProfilP.a := PProfilTempo.a;
+    PProfilP.b := PProfilTempo.b;
+    PProfilP.PDMoy := PProfilTempo.PDMoy;
+    PProfilP.BGompertz := PProfilTempo.BGompertz;
+    PProfilP.Entretien := PProfilTempo.Entretien;
+  end;
+end;
+
+procedure TFCalibrProfilP.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  CBGraphLeft.ItemIndex := 0; // Cumulative feed usage
+  CBGraphRight.ItemIndex := 1; // Body weight
+  CBMethod.ItemIndex := 1; // Marquardt
+  Graph.BottomAxis.Title.Caption := _('Age (d)');
+  MiseAJour := True;
+  PBIng50.Decimals := FProfilP.PBIng50.Decimals;
+  PBIng50.Increment := FProfilP.PBIng50.Increment;
+  PBIng100.Decimals := FProfilP.PBIng100.Decimals;
+  PBIng100.Increment := FProfilP.PBIng100.Increment;
+  MiseAJour := False;
+  New(PProfilTempo);
+  IdxProfilTempo := ListProfilP.Add(PProfilTempo);
+  New(PResSimulTempo);
+  ListRecCalibr := TList.Create;
+end;
+
+procedure TFCalibrProfilP.FormDestroy(Sender: TObject);
+var
+  i: Integer;
+  rec: PRecCalibr;
+begin
+  for i := 0 to ListRecCalibr.Count - 1 do
+  begin
+    rec := ListRecCalibr[i];
+    Dispose(rec);
+  end;
+  ListRecCalibr.Free;
+  ListProfilP.Delete(IdxProfilTempo);
+  Dispose(PProfilTempo);
+  Dispose(PResSimulTempo);
+end;
+
+procedure TFCalibrProfilP.FormShow(Sender: TObject);
+var
+  i: Integer;
+  rec: PRecCalibr;
+  wTot: Double;
+  AgeInit: Integer;
+  PVInit: Double;
+begin
+  // Lecture des observations
+  for i := 1 to 4 do
+  begin
+    Nb[i] := 0;
+    Tot[i] := 0;
+    M[i] := 0;
+    w[i] := 0;
+  end;
+  while ListRecCalibr.Count > 0 do
+  begin
+    rec := ListRecCalibr[0];
+    Dispose(rec);
+    ListRecCalibr.Delete(0);
+  end;
+  with FProfilP.ASQLite3TableObservProfilP do
+  begin
+    First;
+    AgeInit := FieldByName('Age').AsInteger;
+    PVInit := FieldByName('Weight').AsFloat;
+    while not Eof do
+    begin
+      if (FieldByName('Line').AsInteger > 1) and not FieldByName('Feed').IsNull
+      then
+      begin
+        Inc(Nb[1]);
+        Tot[1] := Tot[1] + FieldByName('Feed').AsFloat;
+        New(rec);
+        rec.Age := FieldByName('Age').AsInteger;
+        rec.Id := 1;
+        rec.Observ := FieldByName('Feed').AsFloat;
+        ListRecCalibr.Add(rec);
+      end;
+      if not FieldByName('Weight').IsNull
+      then
+      begin
+        Inc(Nb[2]);
+        Tot[2] := Tot[2] + FieldByName('Weight').AsFloat;
+        New(rec);
+        rec.Age := FieldByName('Age').AsInteger;
+        rec.Id := 2;
+        rec.Observ := FieldByName('Weight').AsFloat;
+        ListRecCalibr.Add(rec);
+      end;
+      if not FieldByName('Backfat').IsNull
+      then
+      begin
+        Inc(Nb[3]);
+        Tot[3] := Tot[3] + FieldByName('Backfat').AsFloat;
+        New(rec);
+        rec.Age := FieldByName('Age').AsInteger;
+        rec.Id := 3;
+        rec.Observ := FieldByName('Backfat').AsFloat;
+        ListRecCalibr.Add(rec);
+      end;
+      if not FieldByName('Lean').IsNull
+      then
+      begin
+        Inc(Nb[4]);
+        Tot[4] := Tot[4] + FieldByName('Lean').AsFloat;
+        New(rec);
+        rec.Age := FieldByName('Age').AsInteger;
+        rec.Id := 4;
+        rec.Observ := FieldByName('Lean').AsFloat;
+        ListRecCalibr.Add(rec);
+      end;
+      Next;
+    end;
+  end;
+  // Moyennes observations
+  for i := 1 to 4 do
+    if Nb[i] <> 0 then M[i] := Tot[i] / Nb[i];
+  // Pond�rations observations
+  for i := 1 to 4 do
+    if M[i] <> 0 then w[i] := 1 / (Nb[i] * Power(M[i], 2));
+  // R�ajustement des pond�rations en fonction de la pond�ration totale
+  wTot := 0;
+  for i := 1 to 4 do
+    wTot := wTot + w[i];
+  for i := 1 to 4 do
+    w[i] := w[i] / wTot;
+  // Affichage des variables d�pendantes
+  PBwFeed.AsFloat := w[1];
+  EwFeed.Text := PBwFeed.Text;
+  PBwWeight.AsFloat := w[2];
+  EwWeight.Text := PBwWeight.Text;
+  if Nb[3] = 0
+  then
+  begin
+    EwBackfat.Enabled := False;
+    ERSDBackfat.Enabled := False;
+    ER2Backfat.Enabled := False;
+    EwRSSBackfat.Enabled := False;
+    PBwBackfat.Enabled := False;
+    CheckBox3.Enabled := False;
+  end
+  else
+  begin
+    PBwBackfat.AsFloat := w[3];
+    EwBackfat.Text := PBwBackfat.Text;
+  end;
+  if Nb[4] = 0
+  then
+  begin
+    EwLean.Enabled := False;
+    ERSDLean.Enabled := False;
+    ER2Lean.Enabled := False;
+    EwRSSLean.Enabled := False;
+    PBwLean.Enabled := False;
+    CheckBox4.Enabled := False;
+  end
+  else
+  begin
+    PBwLean.AsFloat := w[4];
+    EwLean.Text := PBwLean.Text;
+  end;
+  // Initialisation des param�tres avec les valeurs du profil
+  MiseAJour := True;
+  PBPVInit.AsFloat := PVInit;
+  PBIng50.AsFloat := FProfilP.PBIng50.AsFloat;
+  PBIng100.AsFloat := FProfilP.PBIng100.AsFloat;
+  PBMeanPD.AsFloat := FProfilP.PBPDMoy.AsFloat;
+  PBPrecocity.AsFloat := FProfilP.PBComport.AsFloat;
+  PBMaintenance.AsFloat := FProfilP.PBEntretien.AsFloat;
+  MiseAJour := False;
+  PProfilP := ListProfilP[FindIdxProfilP(FProfilP.CBProfil.Text)];
+  // Initialisation du profil temporaire
+  PProfilTempo.Num := 0;
+  PProfilTempo.Nom := '';
+  PProfilTempo.Memo := '';
+  PProfilTempo.Sexe := PProfilP.Sexe;
+  PProfilTempo.SeqAli := PProfilP.SeqAli;
+  PProfilTempo.Ration := PProfilP.Ration;
+  PProfilTempo.AgeInit := AgeInit;
+  PProfilTempo.PVInit := PVInit;
+  if PVInit <> PProfilP.PVInit
+  then // Recalculer les poids initiaux de prot�ines et lipides
+  begin
+    PProfilTempo.ProtInit := CalcProt(PVInit);
+    PProfilTempo.LipInit := CalcLipProt(PVInit, PProfilTempo.ProtInit);
+  end
+  else // Utiliser les poids initiaux de prot�ines et lipides du profil
+  begin
+    PProfilTempo.ProtInit := PProfilP.ProtInit;
+    PProfilTempo.LipInit := PProfilP.LipInit;
+  end;
+  PProfilTempo.ModeFin := 0; // Dur�e
+  rec := ListRecCalibr[ListRecCalibr.Count - 1];
+  PProfilTempo.Duree := rec.Age - AgeInit + 1;
+  PProfilTempo.PVFin := 0;
+  PProfilTempo.Carcasse := PProfilP.Carcasse;
+  PProfilTempo.Unite := PProfilP.Unite;
+  PProfilTempo.Equation := PProfilP.Equation;
+  PProfilTempo.a := PProfilP.a;
+  PProfilTempo.b := PProfilP.b;
+  PProfilTempo.PDMoy := PProfilP.PDMoy;
+  PProfilTempo.BGompertz := PProfilP.BGompertz;
+  PProfilTempo.Entretien := PProfilP.Entretien;
+  PProfilTempo.PVmr2 := PProfilP.PVmr2;
+  if ProfilPValid(PProfilTempo)
+  then // Affichage de la simulation
+  begin
+    CalcSimulP(-1, PProfilTempo.Num, PProfilTempo.SeqAli, PProfilTempo.Ration, -1, 1, PResSimulTempo, CBAALimit.Checked);
+    CBGraphLeftChange(nil);
+    CBGraphRightChange(nil);
+  end;
+end;
+
+procedure TFCalibrProfilP.SBCalibrageClick(Sender: TObject);
+var
+  i: Integer;
+  rec: PRecCalibr;
+begin
+  // Effacement des statistiques
+  ERSDFeed.Clear;
+  ERSDWeight.Clear;
+  ERSDBackfat.Clear;
+  ERSDLean.Clear;
+  ER2Feed.Clear;
+  ER2Weight.Clear;
+  ER2Backfat.Clear;
+  ER2Lean.Clear;
+  EwRSSFeed.Clear;
+  EwRSSWeight.Clear;
+  EwRSSBackfat.Clear;
+  EwRSSLean.Clear;
+  EInitBWInitial.Clear;
+  EY50Initial.Clear;
+  EY100Initial.Clear;
+  EMeanPDInitial.Clear;
+  EPrecocityInitial.Clear;
+  EMaintenanceInitial.Clear;
+  EInitBWFinal.Clear;
+  EY50Final.Clear;
+  EY100Final.Clear;
+  EMeanPDFinal.Clear;
+  EPrecocityFinal.Clear;
+  EMaintenanceFinal.Clear;
+  ESDInitBW.Clear;
+  ESDY50.Clear;
+  ESDY100.Clear;
+  ESDMeanPD.Clear;
+  ESDPrecocity.Clear;
+  ESDMaintenance.Clear;
+  // Valeurs initiales des param�tres
+  EInitBWInitial.Text := PBPVInit.Text;
+  EY50Initial.Text := PBIng50.Text;
+  EY100Initial.Text := PBIng100.Text;
+  EMeanPDInitial.Text := PBMeanPD.Text;
+  EPrecocityInitial.Text := PBPrecocity.Text;
+  EMaintenanceInitial.Text := PBMaintenance.Text;
+  // Calibration
+  Screen.Cursor := crHourGlass;
+  if not QueryPerformanceFrequency(Freq) then Freq := 1;
+  QueryPerformanceCounter(Start);
+  if RBStandard.Checked
+  then // Mode standard (automatique)
+  begin
+    // Cycle 1 : Feed -> Y50 + Y100
+    Uncheck;
+    CheckBox1.Checked := True; // Feed
+    CheckBox6.Checked := True; // Y50
+    CheckBox7.Checked := True; // Y100
+    Calibration;
+    // Cycle 2 : Weight -> PVInit + PDMean
+    Uncheck;
+    CheckBox2.Checked := True; // Weight
+    CheckBox5.Checked := True; // PVInit
+    CheckBox8.Checked := True; // PDMean
+    // Cycle 3 : Feed + Weight -> PVInit + Y50 + Y100 + PDMean
+    CheckBox1.Checked := True; // Feed
+    CheckBox6.Checked := True; // Y50
+    CheckBox7.Checked := True; // Y100
+    Calibration;
+    // Cycle 4 : Weight -> PVInit + PDMean + Precocity
+    Uncheck;
+    CheckBox2.Checked := True; // Weight
+    CheckBox5.Checked := True; // PVInit
+    CheckBox8.Checked := True; // PDMean
+    CheckBox9.Checked := True; // Precocity
+    Calibration;
+    // Cycle 5 : Feed + Weight -> PVInit + Y50 + Y100 + PDMean + Precocity
+    CheckBox1.Checked := True; // Feed
+    CheckBox6.Checked := True; // Y50
+    CheckBox7.Checked := True; // Y100
+    Calibration;
+  end
+  else // Mode expert (mannuel)
+    Calibration;
+  Screen.Cursor:= crDefault;
+  QueryPerformanceCounter(Stop);
+  ETime.Text := FloatToStrF((Stop - Start) / Freq, ffFixed, 15, 3);
+  // Valeurs finales des param�tres
+  EInitBWFinal.Text := PBPVInit.Text;
+  EY50Final.Text := PBIng50.Text;
+  EY100Final.Text := PBIng100.Text;
+  EMeanPDFinal.Text := PBMeanPD.Text;
+  EPrecocityFinal.Text := PBPrecocity.Text;
+  EMaintenanceFinal.Text := PBMaintenance.Text;
+  // Affichage des graphiques
+  FCalibrProfilP.CBGraphLeftChange(nil);
+  FCalibrProfilP.CBGraphRightChange(nil);
+  // Calcul des statistiques
+  for i := 1 to 4 do
+  begin
+    SSt[i] := 0;
+    SSr[i] := 0;
+    wSSr[i] := 0;
+  end;
+  for i := 0 to ListRecCalibr.Count - 1 do
+  begin
+    rec := ListRecCalibr[i];
+    case rec.Id of
+      1: // Feed
+        if FCalibrProfilP.CheckBox1.Checked
+        then
+        begin
+          SSt[1] := SSt[1] + Power(rec.Observ - M[1], 2);
+          SSr[1] := SSr[1] + Power(rec.Observ - rec.Predict, 2);
+          wSSr[1] := wSSr[1] + Power(rec.Observ - rec.Predict, 2) * w[1];
+        end;
+      2: // Weight
+        if FCalibrProfilP.CheckBox2.Checked
+        then
+        begin
+          SSt[2] := SSt[2] + Power(rec.Observ - M[2], 2);
+          SSr[2] := SSr[2] + Power(rec.Observ - rec.Predict, 2);
+          wSSr[2] := wSSr[2] + Power(rec.Observ - rec.Predict, 2) * w[2];
+        end;
+      3: // Backfat
+        if FCalibrProfilP.CheckBox3.Checked
+        then
+        begin
+          SSt[3] := SSt[3] + Power(rec.Observ - M[3], 2);
+          SSr[3] := SSr[3] + Power(rec.Observ - rec.Predict, 2);
+          wSSr[3] := wSSr[3] + Power(rec.Observ - rec.Predict, 2) * w[3];
+        end;
+      4: // Lean
+        if FCalibrProfilP.CheckBox4.Checked
+        then
+        begin
+          SSt[4] := SSt[4] + Power(rec.Observ - M[4], 2);
+          SSr[4] := SSr[4] + Power(rec.Observ - rec.Predict, 2);
+          wSSr[4] := wSSr[4] + Power(rec.Observ - rec.Predict, 2) * w[4];
+        end;
+    end;
+  end;
+  wSSrTot := 0;
+  for i := 1 to 4 do
+    wSSrTot := wSSrTot + wSSr[i];
+  // Affichage des statistiques
+  if CheckBox1.Checked
+  then
+  begin
+    if Nb[1] > NVar / NVarDep then ERSDFeed.Text := Format('%1.1f %s', [Sqrt(SSr[1] / (Nb[1] - NVar / NVarDep)), StrKg]);
+    if SSt[1] <> 0 then ER2Feed.Text := Format('%1.2f %%', [100 - SSr[1] / SSt[1] * 100]);
+    if wSSrTot <> 0 then EwRSSFeed.Text := Format('%1.2f %%', [wSSr[1] / wSSrTot * 100]);
+  end;
+  if CheckBox2.Checked
+  then
+  begin
+    if Nb[2] > NVar / NVarDep then ERSDWeight.Text := Format('%1.1f %s', [Sqrt(SSr[2] / (Nb[2] - NVar / NVarDep)), StrKg]);
+    if SSt[2] <> 0 then ER2Weight.Text := Format('%1.2f %%', [100 - SSr[2] / SSt[2] * 100]);
+    if wSSrTot <> 0 then EwRSSWeight.Text := Format('%1.2f %%', [wSSr[2] / wSSrTot * 100]);
+  end;
+  if CheckBox3.Checked
+  then
+  begin
+    if Nb[3] > NVar / NVarDep then ERSDBackfat.Text := Format('%1.1f %s', [Sqrt(SSr[3] / (Nb[3] - NVar / NVarDep)), StrMM]);
+    if SSt[3] <> 0 then ER2Backfat.Text := Format('%1.2f %%', [100 - SSr[3] / SSt[3] * 100]);
+    if wSSrTot <> 0 then EwRSSBackfat.Text := Format('%1.2f %%', [wSSr[3] / wSSrTot * 100]);
+  end;
+  if CheckBox4.Checked
+  then
+  begin
+    if Nb[4] > NVar / NVarDep then ERSDLean.Text := Format('%1.1f %%', [Sqrt(SSr[4] / (Nb[4] - NVar / NVarDep))]);
+    if SSt[4] <> 0 then ER2Lean.Text := Format('%1.2f %%', [100 - SSr[4] / SSt[4] * 100]);
+    if wSSrTot <> 0 then EwRSSLean.Text := Format('%1.2f %%', [wSSr[4] / wSSrTot * 100]);
+  end;
+  i := 0;
+  if CheckBox5.Checked
+  then
+  begin
+    Inc(i);
+    if NData > NVar then ESDInitBW.Text := FloatToStrF(Sqrt(wSSrTot / (NData - NVar) * Inv[i]), ffFixed, 15, PBPVInit.Decimals);
+  end;
+  if CheckBox6.Checked
+  then
+  begin
+    Inc(i);
+    if NData > NVar then ESDY50.Text := FloatToStrF(Sqrt(wSSrTot / (NData - NVar) * Inv[i]), ffFixed, 15, PBIng50.Decimals);
+  end;
+  if CheckBox7.Checked
+  then
+  begin
+    Inc(i);
+    if NData > NVar then ESDY100.Text := FloatToStrF(Sqrt(wSSrTot / (NData - NVar) * Inv[i]), ffFixed, 15, PBIng100.Decimals);
+  end;
+  if CheckBox8.Checked
+  then
+  begin
+    Inc(i);
+    if NData > NVar then ESDMeanPD.Text := FloatToStrF(Sqrt(wSSrTot / (NData - NVar) * Inv[i]), ffFixed, 15, PBMeanPD.Decimals);
+  end;
+  if CheckBox9.Checked
+  then
+  begin
+    Inc(i);
+    if NData > NVar then ESDPrecocity.Text := FloatToStrF(Sqrt(wSSrTot / (NData - NVar) * Inv[i]), ffFixed, 15, PBPrecocity.Decimals);
+  end;
+  if CheckBox10.Checked
+  then
+  begin
+    Inc(i);
+    if NData > NVar then ESDMaintenance.Text := FloatToStrF(Sqrt(wSSrTot / (NData - NVar) * Inv[i]), ffFixed, 15, PBMaintenance.Decimals);
+  end;
+  // Erreurs
+  LInfo.Visible := True;
+  case MathErr of
+    OptNonConv: LInfo.Caption := _('Non-convergence');
+    OptSing: LInfo.Caption := _('Singular Hessian matrix');
+    OptBigLambda: LInfo.Caption := _('Marquardt parameter too high');
+    else LInfo.Visible := False;
+  end;
+  if CBAALimit.Checked and PDLimit
+  then
+    MessageDlg(MsgPDLimit, mtWarning, [mbOK], 0);
+  BBOk.Enabled := ProfilPValid(PProfilTempo);
+end;
+
+procedure TFCalibrProfilP.PBPVInitChange(Sender: TObject);
+begin
+  if not MiseAJour
+  then
+  begin
+    PProfilTempo.PVInit := PBPVInit.AsFloat;
+    // Recalculer les poids initiaux de prot�ines et lipides
+    PProfilTempo.ProtInit := CalcProt(PProfilTempo.PVInit);
+    PProfilTempo.LipInit := CalcLipProt(PProfilTempo.PVInit, PProfilTempo.ProtInit);
+    if ProfilPValid(PProfilTempo)
+    then // Affichage de la simulation
+    begin
+      CalcSimulP(-1, PProfilTempo.Num, PProfilTempo.SeqAli, PProfilTempo.Ration, -1, 1, PResSimulTempo, CBAALimit.Checked);
+      CBGraphLeftChange(nil);
+      CBGraphRightChange(nil);
+    end;
+  end;
+end;
+
+procedure TFCalibrProfilP.PBIng50Change(Sender: TObject);
+begin
+  if not MiseAJour
+  then
+  begin
+    with PProfilTempo^ do
+      CalcCoef(Equation, Unite, PBIng50.AsFloat, PBIng100.AsFloat, a, b);
+    if ProfilPValid(PProfilTempo)
+    then // Affichage de la simulation
+    begin
+      CalcSimulP(-1, PProfilTempo.Num, PProfilTempo.SeqAli, PProfilTempo.Ration, -1, 1, PResSimulTempo, CBAALimit.Checked);
+      CBGraphLeftChange(nil);
+      CBGraphRightChange(nil);
+    end;
+  end;
+end;
+
+procedure TFCalibrProfilP.PBIng100Change(Sender: TObject);
+begin
+  if not MiseAJour
+  then
+  begin
+    with PProfilTempo^ do
+      CalcCoef(Equation, Unite, PBIng50.AsFloat, PBIng100.AsFloat, a, b);
+    if ProfilPValid(PProfilTempo)
+    then // Affichage de la simulation
+    begin
+      CalcSimulP(-1, PProfilTempo.Num, PProfilTempo.SeqAli, PProfilTempo.Ration, -1, 1, PResSimulTempo, CBAALimit.Checked);
+      CBGraphLeftChange(nil);
+      CBGraphRightChange(nil);
+    end;
+  end;
+end;
+
+procedure TFCalibrProfilP.PBMeanPDChange(Sender: TObject);
+begin
+  if not MiseAJour
+  then
+  begin
+    PProfilTempo.PDMoy := PBMeanPD.AsFloat;
+    if ProfilPValid(PProfilTempo)
+    then // Affichage de la simulation
+    begin
+      CalcSimulP(-1, PProfilTempo.Num, PProfilTempo.SeqAli, PProfilTempo.Ration, -1, 1, PResSimulTempo, CBAALimit.Checked);
+      CBGraphLeftChange(nil);
+      CBGraphRightChange(nil);
+    end;
+  end;
+end;
+
+procedure TFCalibrProfilP.PBPrecocityChange(Sender: TObject);
+begin
+  if not MiseAJour
+  then
+  begin
+    PProfilTempo.BGompertz := PBPrecocity.AsFloat;
+    if ProfilPValid(PProfilTempo)
+    then // Affichage de la simulation
+    begin
+      CalcSimulP(-1, PProfilTempo.Num, PProfilTempo.SeqAli, PProfilTempo.Ration, -1, 1, PResSimulTempo, CBAALimit.Checked);
+      CBGraphLeftChange(nil);
+      CBGraphRightChange(nil);
+    end;
+  end;
+end;
+
+procedure TFCalibrProfilP.PBMaintenanceChange(Sender: TObject);
+begin
+  if not MiseAJour
+  then
+  begin
+    PProfilTempo.Entretien := PBMaintenance.AsFloat;
+    if ProfilPValid(PProfilTempo)
+    then // Affichage de la simulation
+    begin
+      CalcSimulP(-1, PProfilTempo.Num, PProfilTempo.SeqAli, PProfilTempo.Ration, -1, 1, PResSimulTempo, CBAALimit.Checked);
+      CBGraphLeftChange(nil);
+      CBGraphRightChange(nil);
+    end;
+  end;
+end;
+
+procedure TFCalibrProfilP.PBwFeedChange(Sender: TObject);
+begin
+  w[1] := PBwFeed.AsFloat;
+  EwFeed.Text := PBwFeed.Text;
+end;
+
+procedure TFCalibrProfilP.PBwWeightChange(Sender: TObject);
+begin
+  w[2] := PBwWeight.AsFloat;
+  EwWeight.Text := PBwWeight.Text;
+end;
+
+procedure TFCalibrProfilP.PBwBackfatChange(Sender: TObject);
+begin
+  w[3] := PBwBackfat.AsFloat;
+  EwBackfat.Text := PBwBackfat.Text;
+end;
+
+procedure TFCalibrProfilP.PBwLeanChange(Sender: TObject);
+begin
+  w[4] := PBwLean.AsFloat;
+  EwLean.Text := PBwLean.Text;
+end;
+
+procedure TFCalibrProfilP.RBExpertClick(Sender: TObject);
+begin
+  CBMethod.Enabled := True;
+  CBAALimit.Enabled := True;
+  PBwFeed.Visible := True;
+  PBwWeight.Visible := True;
+  PBwBackfat.Visible := True;
+  PBwLean.Visible := True;
+  EwBackfat.Enabled := True;
+  EwLean.Enabled := True;
+  ERSDBackfat.Enabled := True;
+  ERSDLean.Enabled := True;
+  ER2Backfat.Enabled := True;
+  ER2Lean.Enabled := True;
+  EwRSSBackfat.Enabled := True;
+  EwRSSLean.Enabled := True;
+  EMaintenanceInitial.Enabled := True;
+  EMaintenanceFinal.Enabled := True;
+  ESDMaintenance.Enabled := True;
+  CheckBox1.Visible := True;
+  CheckBox2.Visible := True;
+  CheckBox3.Visible := True;
+  CheckBox4.Visible := True;
+  CheckBox5.Visible := True;
+  CheckBox6.Visible := True;
+  CheckBox7.Visible := True;
+  CheckBox8.Visible := True;
+  CheckBox9.Visible := True;
+  CheckBox10.Visible := True;
+end;
+
+procedure TFCalibrProfilP.RBStandardClick(Sender: TObject);
+begin
+  CBMethod.Enabled := False;
+  CBAALimit.Enabled := False;
+  PBwFeed.Visible := False;
+  PBwWeight.Visible := False;
+  PBwBackfat.Visible := False;
+  PBwLean.Visible := False;
+  ERSDBackfat.Enabled := False;
+  ERSDLean.Enabled := False;
+  ER2Backfat.Enabled := False;
+  ER2Lean.Enabled := False;
+  EwRSSBackfat.Enabled := False;
+  EwRSSLean.Enabled := False;
+  EMaintenanceInitial.Enabled := False;
+  EMaintenanceFinal.Enabled := False;
+  ESDMaintenance.Enabled := False;
+  CheckBox1.Visible := False;
+  CheckBox2.Visible := False;
+  CheckBox3.Visible := False;
+  CheckBox4.Visible := False;
+  CheckBox5.Visible := False;
+  CheckBox6.Visible := False;
+  CheckBox7.Visible := False;
+  CheckBox8.Visible := False;
+  CheckBox9.Visible := False;
+  CheckBox10.Visible := False;
+end;
+
+procedure TFCalibrProfilP.Uncheck;
+begin
+  CheckBox1.Checked := False; // Feed
+  CheckBox2.Checked := False; // Weight
+  CheckBox3.Checked := False; // Backfat
+  CheckBox4.Checked := False; // Lean
+  CheckBox5.Checked := False; // InitBW
+  CheckBox6.Checked := False; // Y50
+  CheckBox7.Checked := False; // Y100
+  CheckBox8.Checked := False; // PDMean
+  CheckBox9.Checked := False; // Precocity
+  CheckBox10.Checked := False; // Maintenance
+end;
+
+end.
Index: UEchelle.pas
===================================================================
--- UEchelle.pas	(révision 0)
+++ UEchelle.pas	(révision 3)
@@ -0,0 +1,93 @@
+unit UEchelle;
+
+interface
+
+uses
+  Chart;
+
+function AjustPas(Max: double): double;
+function AjustMax(Max: double; Pas: double): double;
+function AjustMin(Min: double; Pas: double): double;
+function AjustFormat(Pas: double): string;
+procedure AjustEchelle(Graph: TChart);
+
+implementation
+
+uses
+  UVariables;
+
+function AjustPas(Max: double): double;
+begin
+  if (Max < 5) and (Max > PICO) // si Max = 0 alors Pas = 1
+  then
+    result := AjustPas (Max * 10) / 10
+  else
+    if Max > 50
+    then
+      result := AjustPas (Max / 10) * 10
+    else
+      if Max > 25
+      then
+        result := 5
+      else
+        if Max > 10
+        then
+          result := 2.5
+        else
+          result := 1 ;
+end;
+
+function AjustMax(Max: double; Pas: double): double;
+begin
+  if Max = 100
+  then
+    result := 100
+  else
+    result := Round (Max / Pas) * Pas + Pas ;
+end;
+
+function AjustMin(Min: double; Pas: double): double;
+begin
+  if (Min >= 0) and (Round (Min / Pas) * Pas < Pas)
+  then
+    result := 0
+  else
+    result := Round (Min / Pas) * Pas - Pas ;
+end;
+
+function AjustFormat(Pas: double): string;
+var
+  s: string;
+begin
+//  s := '#' + ThousandSeparator + '##0' + DecimalSeparator ;
+  s := '# ##0.' ;
+  while (Int (Pas) < Pas) do
+  begin
+    s := s + '0' ;
+    Pas := Pas * 10 ;
+  end ;
+  result := s ;
+end;
+
+procedure AjustEchelle(Graph: TChart);
+begin
+  with Graph do
+  begin
+    // Axe de gauche
+    LeftAxis.Minimum := 0 ;
+    LeftAxis.Increment := AjustPas (MaxYValue (LeftAxis) - MinYValue (LeftAxis)) ;
+    LeftAxis.MinorTickCount := 4 ;
+    LeftAxis.Maximum := AjustMax (MaxYValue (LeftAxis), LeftAxis.Increment) ;
+    LeftAxis.Minimum := AjustMin (MinYValue (LeftAxis), LeftAxis.Increment) ;
+    LeftAxis.AxisValuesFormat := AjustFormat (LeftAxis.Increment) ;
+    // Axe de droite
+    RightAxis.Minimum := 0 ;
+    RightAxis.Increment := AjustPas (MaxYValue (RightAxis) - MinYValue (RightAxis)) ;
+    RightAxis.MinorTickCount := 4 ;
+    RightAxis.Maximum := AjustMax (MaxYValue (RightAxis), RightAxis.Increment) ;
+    RightAxis.Minimum := AjustMin (MinYValue (RightAxis), RightAxis.Increment) ;
+    RightAxis.AxisValuesFormat := AjustFormat (RightAxis.Increment) ;
+  end;
+end;
+
+end.
Index: UFIntro.pas
===================================================================
--- UFIntro.pas	(révision 0)
+++ UFIntro.pas	(révision 3)
@@ -0,0 +1,76 @@
+unit UFIntro;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Messages, Dialogs, StdCtrls, Buttons,
+  ExtCtrls, ComCtrls;
+
+type
+  TFIntro = class(TForm)
+    PBoutons: TPanel;
+    BBOk: TBitBtn;
+    BBCancel: TBitBtn;
+    BBClose: TBitBtn;
+    REText: TRichEdit;
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FIntro: TFIntro;
+
+implementation
+
+uses
+  SysUtils, gnugettext, UVariables;
+
+{$R *.dfm}
+
+procedure TFIntro.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+end;
+
+procedure TFIntro.FormShow(Sender: TObject);
+var
+  LicType, ResName: String;
+  Stream: TResourceStream;
+begin
+  case LicenseType of
+    1: LicType := 'Education';
+    2: LicType := 'Complete';
+  else LicType := 'Evaluation';
+  end;
+  if Copy(LanguageCode, 1, 2) = 'fr'
+  then // Fran�ais
+    ResName := UpperCase(LicType + '_fr')
+  else // Anglais
+    ResName := UpperCase(LicType + '_en');
+  Stream := TResourceStream.Create(ResInstance, ResName, 'TEXT');
+  try
+    REText.Lines.LoadFromStream(Stream);
+  finally
+    Stream.Free;
+  end;
+  ActiveControl := REText;
+end;
+
+procedure TFIntro.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFSimulP.dfm
===================================================================
--- UFSimulP.dfm	(révision 0)
+++ UFSimulP.dfm	(révision 3)
@@ -0,0 +1,1682 @@
+object FSimulP: TFSimulP
+  Left = 201
+  Top = 156
+  HelpContext = 5400
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Simulation for growing pigs'
+  ClientHeight = 404
+  ClientWidth = 624
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PC: TPageControl
+    Left = 0
+    Top = 0
+    Width = 624
+    Height = 404
+    ActivePage = ResSimul
+    Align = alClient
+    HotTrack = True
+    TabOrder = 0
+    OnChange = PCChange
+    object ResSimul: TTabSheet
+      HelpContext = 5410
+      Caption = 'Single simulation'
+      object GBSimul: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 616
+        Height = 48
+        Align = alTop
+        Caption = 'Single simulation'
+        TabOrder = 0
+        object SBAddSimul: TSpeedButton
+          Left = 264
+          Top = 16
+          Width = 24
+          Height = 24
+          Hint = 'Add a single simulation'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+            FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000000000000000000000000000000000
+            8000008000008000000000000000000000000000000000000000FF00FF000000
+            00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+            8080808080808080808080808080808080808080808080808080FF00FF000000
+            0080000080000080000080000080000080000080000080000080000080000080
+            00008000008000000000FF00FF00000000FF0000FF0000FF0000FF0000FF0000
+            FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000800000800000800000800000800000
+            8000008000008000008000008000008000008000008000000000FF00FF000000
+            00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+            8080808080808080808080808080808080808080808080808080FF00FF000000
+            0080000080000080000080000080000080000080000080000080000080000080
+            00008000008000000000FF00FF00000000000000000000000000000000000000
+            FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000000000000000000000000000000000
+            8000008000008000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBAddSimulClick
+        end
+        object SBDelSimul: TSpeedButton
+          Left = 296
+          Top = 16
+          Width = 24
+          Height = 24
+          Hint = 'Delete the current single simulation'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000FF00FF000000
+            0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+            FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+            8080808080808080808080808080808080808080808080808080FF00FF000000
+            0000800000800000800000800000800000800000800000800000800000800000
+            80000080000080000000FF00FF0000000000FF0000FF0000FF0000FF0000FF00
+            00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000008000008000008000008000008000
+            0080000080000080000080000080000080000080000080000000FF00FF000000
+            0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+            FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+            8080808080808080808080808080808080808080808080808080FF00FF000000
+            0000800000800000800000800000800000800000800000800000800000800000
+            80000080000080000000FF00FF00000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBDelSimulClick
+        end
+        object SBRename: TSpeedButton
+          Left = 328
+          Top = 16
+          Width = 24
+          Height = 24
+          Hint = 'Rename the current single simulation'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080
+            8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+            8080808080808080808080808080808080808080808080FF00FFFF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+            FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FF80808080808080
+            8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFF800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+            80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+            00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+            80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+            00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FFFFFFFF0000FFFFFFFFFFFFFF0000FF
+            FFFFFFFFFFFF0000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FF00FF808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FF8080
+            80FF00FFFF00FF808080FF00FF808080FFFFFF800000FFFFFFFFFFFF800000FF
+            FFFFFFFFFF800000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FF00FF80808080808080808080808080
+            8080808080808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+            FFFFFF800000800000800000800000800000800000800000FFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+            FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFF808080FF00FFFF00FF80808080808080808080808080808080
+            8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+            8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBRenameClick
+        end
+        object SBComment: TSpeedButton
+          Left = 360
+          Top = 16
+          Width = 24
+          Height = 24
+          Hint = 
+            'Add additional information to the current single simulation (com' +
+            'ment)'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            00000000000000000000000000000000000000FF0000FFFF00FFFF00FFFF00FF
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000000000000000000000000080000080FF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF
+            FF0000FF0000FF0000FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00080
+            80000080000080000080FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFF0000FF000080FFFF0000FF0000FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080
+            80808080808080808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0800000800000008080000080000080FF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00
+            00FF000080FFFFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000
+            00800000008080FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080
+            80808080FF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0800000800000800000800000800000FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF00
+            00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+            00FF808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000008000008000
+            00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            0000FF0000FF0000FF0000FF0000000000808080FF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+            0000800000800000800000800000000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FFFFFF0000
+            00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0800000800000800000800000800000C0C0C00000
+            00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFF4080FFFF0000FF
+            0000FF0000FF0000FFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FF808080808080808080808080808080FF00FFFF00FF8080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C000408080000080
+            0000800000800000C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFF4080FF4080FFFF0000FF0000FFFFFFFFFFFFFFFFFF0000
+            00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80808080808080
+            8080808080FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0004080004080800000800000C0C0C0C0C0C0C0C0C00000
+            00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF0000004080FF4080FF40
+            80FFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+            808080FF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FF8080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C000000000408000408000
+            4080C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000
+            00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080FF00FFFF
+            00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0000000000000C0C0C0C0C0C0C0C0C00000000000000000000000
+            00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBCommentClick
+        end
+        object SBSave: TSpeedButton
+          Left = 392
+          Top = 16
+          Width = 24
+          Height = 24
+          Hint = 'Save the current single simulation'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000000000000000000000000000000000FF00FFFF00FF000000
+            FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+            00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+            8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+            8000008000000000000000000000000000000000000000008080808080800000
+            00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+            0000000000000000C0C0C0C0C0C0000000FF0000000000FF00FFFF00FF808080
+            FF00FFFF00FF808080808080808080808080808080808080FF00FFFF00FF8080
+            80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+            0000000000000000808080808080000000800000000000FF00FFFF00FF000000
+            FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+            00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+            8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+            8000008000000000000000000000000000000000000000008080808080800000
+            00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+            0000000000000000000000000000000000FF0000000000FF00FFFF00FF808080
+            FF00FFFF00FF8080808080808080808080808080808080808080808080808080
+            80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+            0000000000000000000000000000000000800000000000FF00FFFF00FF000000
+            FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+            00FF0000000000FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF000000
+            8000008000008000008000008000008000008000008000008000008000008000
+            00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+            0000000000000000000000000000FF0000FF0000000000FF00FFFF00FF808080
+            FF00FFFF00FF808080808080808080808080808080808080808080808080FF00
+            FFFF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+            0000000000000000000000000000800000800000000000FF00FFFF00FF000000
+            FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+            800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+            00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+            FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+            80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+            FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+            800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+            00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+            FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+            80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+            FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00000000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FFFF00FF000000
+            800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+            00000000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0000000FF00FFFF00FF808080
+            FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+            80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080000000FF00FFFF00FF000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            00000000000000FF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080808080808080808080808080808080FF00FFFF00FF000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBSaveClick
+        end
+        object JvEnterAsTab: TJvEnterAsTab
+          Left = 424
+          Top = 16
+          Width = 28
+          Height = 28
+        end
+        object CBSimul: TComboBox
+          Left = 16
+          Top = 16
+          Width = 240
+          Height = 21
+          AutoCompleteDelay = 1500
+          Style = csDropDownList
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 0
+          OnChange = CBSimulChange
+        end
+      end
+      object PSimul: TPanel
+        Left = 0
+        Top = 48
+        Width = 616
+        Height = 288
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 1
+        Visible = False
+        object GBInit: TGroupBox
+          Left = 0
+          Top = 88
+          Width = 616
+          Height = 128
+          Align = alTop
+          Caption = 'Initial state'
+          TabOrder = 0
+          object LPVInit: TLabel
+            Left = 8
+            Top = 44
+            Width = 79
+            Height = 13
+            Hint = 'Initial body weight (kg)'
+            Caption = 'Body weight (kg)'
+            ParentShowHint = False
+            ShowHint = True
+          end
+          object LAgeInit: TLabel
+            Left = 8
+            Top = 20
+            Width = 34
+            Height = 13
+            Hint = 'Initial age (d)'
+            Caption = 'Age (d)'
+            ParentShowHint = False
+            ShowHint = True
+          end
+          object LPV4Age: TLabel
+            Left = 216
+            Top = 20
+            Width = 9
+            Height = 13
+            Caption = '...'
+          end
+          object LAge4PV: TLabel
+            Left = 216
+            Top = 44
+            Width = 9
+            Height = 13
+            Caption = '...'
+          end
+          object RBProtInit: TRadioButton
+            Left = 8
+            Top = 74
+            Width = 120
+            Height = 17
+            Hint = 'Initial body protein weight (kg)'
+            Caption = 'Protein (kg)'
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 2
+            OnClick = RBProtLipInitClick
+          end
+          object RBLipInit: TRadioButton
+            Left = 8
+            Top = 98
+            Width = 120
+            Height = 17
+            Hint = 'Initial body lipid weight (kg)'
+            Caption = 'Lipid (kg)'
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 3
+            OnClick = RBProtLipInitClick
+          end
+          object ChkAgeInit: TCheckBox
+            Left = 192
+            Top = 18
+            Width = 17
+            Height = 17
+            TabStop = False
+            TabOrder = 6
+            OnClick = ChkAgeInitClick
+          end
+          object ChkPVInit: TCheckBox
+            Left = 192
+            Top = 42
+            Width = 17
+            Height = 17
+            TabStop = False
+            TabOrder = 7
+            OnClick = ChkPVInitClick
+          end
+          object ChkProtLipInit: TCheckBox
+            Left = 192
+            Top = 86
+            Width = 17
+            Height = 17
+            TabStop = False
+            TabOrder = 8
+            OnClick = ChkProtLipInitClick
+          end
+          object PBAgeInit: TPBSuperSpin
+            Left = 128
+            Top = 16
+            Width = 56
+            Height = 22
+            Cursor = crDefault
+            Hint = 'Initial age (d)'
+            Alignment = taRightJustify
+            Decimals = 0
+            MaxValue = 200.000000000000000000
+            NumberFormat = Standard
+            OnChange = PBAgeInitChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            Increment = 1.000000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+          object PBPVInit: TPBSuperSpin
+            Left = 128
+            Top = 40
+            Width = 56
+            Height = 22
+            Cursor = crDefault
+            Hint = 'Initial body weight (kg)'
+            Alignment = taRightJustify
+            Decimals = 1
+            MaxValue = 100.000000000000000000
+            NumberFormat = Standard
+            OnChange = PBPVInitChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 1
+            Increment = 1.000000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+          object PBProtInit: TPBSuperSpin
+            Left = 128
+            Top = 72
+            Width = 56
+            Height = 22
+            Cursor = crDefault
+            Hint = 'Initial body protein weight (kg)'
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBProtInitChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 4
+            EditorEnabled = False
+            Increment = 0.010000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+          object PBLipInit: TPBSuperSpin
+            Left = 128
+            Top = 96
+            Width = 56
+            Height = 22
+            Cursor = crDefault
+            Hint = 'Initial body lipid weight (kg)'
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBLipInitChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 5
+            EditorEnabled = False
+            Increment = 0.010000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+        end
+        object GBFin: TGroupBox
+          Left = 0
+          Top = 216
+          Width = 616
+          Height = 72
+          Align = alTop
+          Caption = 'Final state'
+          TabOrder = 1
+          object RBDuree: TRadioButton
+            Left = 8
+            Top = 18
+            Width = 120
+            Height = 17
+            Hint = 'Growth duration (d)'
+            BiDiMode = bdLeftToRight
+            Caption = 'Duration (d)'
+            ParentBiDiMode = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            OnClick = RBModeFinClick
+          end
+          object RBPVFin: TRadioButton
+            Left = 8
+            Top = 42
+            Width = 120
+            Height = 17
+            Hint = 'Final body weight (kg)'
+            BiDiMode = bdLeftToRight
+            Caption = 'Body weight (kg)'
+            ParentBiDiMode = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 1
+            OnClick = RBModeFinClick
+          end
+          object ChkFin: TCheckBox
+            Left = 192
+            Top = 30
+            Width = 17
+            Height = 17
+            TabStop = False
+            TabOrder = 4
+            OnClick = ChkFinClick
+          end
+          object PBDuree: TPBSuperSpin
+            Left = 128
+            Top = 16
+            Width = 56
+            Height = 22
+            Cursor = crDefault
+            Hint = 'Growth duration (d)'
+            Alignment = taRightJustify
+            Decimals = 0
+            NumberFormat = Standard
+            OnChange = PBDureeChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 2
+            Increment = 1.000000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+          object PBPVFin: TPBSuperSpin
+            Left = 128
+            Top = 40
+            Width = 56
+            Height = 22
+            Cursor = crDefault
+            Hint = 'Final body weight (kg)'
+            Alignment = taRightJustify
+            Decimals = 1
+            MaxValue = 160.000000000000000000
+            NumberFormat = Standard
+            OnChange = PBPVFinChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 3
+            Increment = 1.000000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+        end
+        object PConfig: TPanel
+          Left = 0
+          Top = 0
+          Width = 616
+          Height = 88
+          Align = alTop
+          BevelOuter = bvNone
+          TabOrder = 2
+          object LSeqAli: TLabel
+            Left = 8
+            Top = 36
+            Width = 97
+            Height = 13
+            Caption = 'Feed sequence plan'
+          end
+          object LRation: TLabel
+            Left = 8
+            Top = 60
+            Width = 90
+            Height = 13
+            Caption = 'Feed rationing plan'
+          end
+          object LProfil: TLabel
+            Left = 8
+            Top = 12
+            Width = 62
+            Height = 13
+            Caption = 'Animal profile'
+          end
+          object CBSeqAli: TComboBox
+            Left = 128
+            Top = 32
+            Width = 240
+            Height = 21
+            AutoCompleteDelay = 1500
+            Style = csDropDownList
+            ItemHeight = 13
+            ParentShowHint = False
+            ShowHint = True
+            Sorted = True
+            TabOrder = 0
+            OnChange = CBSeqAliChange
+          end
+          object CBRation: TComboBox
+            Left = 128
+            Top = 56
+            Width = 240
+            Height = 21
+            AutoCompleteDelay = 1500
+            Style = csDropDownList
+            ItemHeight = 13
+            ParentShowHint = False
+            ShowHint = True
+            Sorted = True
+            TabOrder = 1
+            OnChange = CBRationChange
+          end
+          object CBProfil: TComboBox
+            Left = 128
+            Top = 8
+            Width = 240
+            Height = 21
+            AutoCompleteDelay = 1500
+            Style = csDropDownList
+            ItemHeight = 13
+            ParentShowHint = False
+            ShowHint = True
+            Sorted = True
+            TabOrder = 2
+            OnChange = CBProfilChange
+          end
+        end
+      end
+      object PResSimul: TPanel
+        Left = 0
+        Top = 336
+        Width = 616
+        Height = 40
+        Align = alBottom
+        BevelOuter = bvNone
+        TabOrder = 2
+        object BBTabSimul: TBitBtn
+          Left = 208
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Export the results to an Excel sheet'
+          Caption = 'Excel'
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            33333FFFFFFFFFFFFFFF000000000000000077777777777777770FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07FFFFFFFFFFFFFF70CCCCCCCCCCCCCC07777777777777777088CCCCCCCCC
+            C8807FF7777777777FF700000000000000007777777777777777333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          OnClick = BBTabSimulClick
+        end
+        object BBResSimul: TBitBtn
+          Left = 16
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Show the simulation results as graphs'
+          Caption = 'Graphs'
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
+            000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
+            033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
+            B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
+            C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
+            033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
+            3000773373FFFF73377733333700073333333333377777333333333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = BBResSimulClick
+        end
+        object BBRapSimul: TBitBtn
+          Left = 112
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Show the simulation results as a report'
+          Caption = 'Report'
+          Enabled = False
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+            808080808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            808080808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+            808080808080808080808080808080808080808080808080808080FF00FFFF00
+            FF808080808080FF00FF00000000000000000000000000000000000000000000
+            0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+            00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+            00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+            0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+            00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+            C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+            80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+            8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+            FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+            80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+            8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+            C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+            8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+            FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+            0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+            808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = BBRapSimulClick
+        end
+        object BBTabSimulPlus: TBitBtn
+          Left = 304
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Export the results to an Excel sheet'
+          Caption = 'Excel'
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            33333FFFFFFFFFFFFFFF000000000000000077777777777777770FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07FFFFFFFFFFFFFF70CCCCCCCCCCCCCC07777777777777777088CCCCCCCCC
+            C8807FF7777777777FF700000000000000007777777777777777333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 3
+          Visible = False
+          OnClick = BBTabSimulPlusClick
+        end
+      end
+    end
+    object CompSimul: TTabSheet
+      HelpContext = 5420
+      Caption = 'Comparison'
+      ImageIndex = 1
+      object PCompSimul: TPanel
+        Left = 0
+        Top = 336
+        Width = 616
+        Height = 40
+        Align = alBottom
+        BevelOuter = bvNone
+        TabOrder = 0
+        object BBCompSimul: TBitBtn
+          Left = 16
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Show the simulation results as graphs'
+          Caption = 'Graphs'
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
+            000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
+            033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
+            B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
+            C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
+            033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
+            3000773373FFFF73377733333700073333333333377777333333333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = BBCompSimulClick
+        end
+        object BBRapCompSimul: TBitBtn
+          Left = 112
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Show the simulation results as a report'
+          Caption = 'Report'
+          Enabled = False
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+            808080808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            808080808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+            808080808080808080808080808080808080808080808080808080FF00FFFF00
+            FF808080808080FF00FF00000000000000000000000000000000000000000000
+            0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+            00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+            00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+            0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+            00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+            C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+            80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+            8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+            FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+            80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+            8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+            C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+            8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+            FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+            0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+            808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = BBRapCompSimulClick
+        end
+        object BBTabCompSimul: TBitBtn
+          Left = 208
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Export the results to an Excel sheet'
+          Caption = 'Excel'
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            33333FFFFFFFFFFFFFFF000000000000000077777777777777770FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07FFFFFFFFFFFFFF70CCCCCCCCCCCCCC07777777777777777088CCCCCCCCC
+            C8807FF7777777777FF700000000000000007777777777777777333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          OnClick = BBTabCompSimulClick
+        end
+      end
+      object GBCompBase: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 616
+        Height = 184
+        Align = alTop
+        Caption = 'Comparison basis'
+        TabOrder = 1
+        object RBCompSimul: TRadioButton
+          Left = 16
+          Top = 18
+          Width = 240
+          Height = 17
+          Caption = 'Single simulations'
+          Checked = True
+          TabOrder = 0
+          TabStop = True
+          OnClick = RBCompSimulClick
+        end
+        object RBCompElem: TRadioButton
+          Left = 16
+          Top = 42
+          Width = 240
+          Height = 17
+          Caption = 'One element of a simulation'
+          TabOrder = 1
+          OnClick = RBCompElemClick
+        end
+        object PCompElem: TPanel
+          Left = 16
+          Top = 64
+          Width = 584
+          Height = 112
+          BevelOuter = bvNone
+          TabOrder = 2
+          object GBCompSimulRef: TGroupBox
+            Left = 296
+            Top = 0
+            Width = 272
+            Height = 112
+            Caption = 'Reference simulation'
+            TabOrder = 0
+            object LCompProfilRef: TLabel
+              Left = 16
+              Top = 44
+              Width = 3
+              Height = 13
+            end
+            object LCompSeqAliRef: TLabel
+              Left = 16
+              Top = 68
+              Width = 3
+              Height = 13
+            end
+            object LCompRationRef: TLabel
+              Left = 16
+              Top = 92
+              Width = 3
+              Height = 13
+            end
+            object CBCompSimulRef: TComboBox
+              Left = 16
+              Top = 16
+              Width = 240
+              Height = 21
+              AutoCompleteDelay = 1500
+              Style = csDropDownList
+              ItemHeight = 13
+              ParentShowHint = False
+              ShowHint = True
+              Sorted = True
+              TabOrder = 0
+              OnChange = CBCompSimulRefChange
+            end
+          end
+          object GBCompElem: TGroupBox
+            Left = 16
+            Top = 0
+            Width = 272
+            Height = 112
+            Caption = 'Element to vary'
+            TabOrder = 1
+            object RBCompProfil: TRadioButton
+              Left = 16
+              Top = 42
+              Width = 240
+              Height = 17
+              Caption = 'Animal profile'
+              Checked = True
+              TabOrder = 0
+              TabStop = True
+              OnClick = RBCompProfilClick
+            end
+            object RBCompSeqAli: TRadioButton
+              Left = 16
+              Top = 66
+              Width = 240
+              Height = 17
+              Caption = 'Feed sequence plan'
+              TabOrder = 1
+              OnClick = RBCompSeqAliClick
+            end
+            object RBCompRation: TRadioButton
+              Left = 16
+              Top = 90
+              Width = 240
+              Height = 17
+              Caption = 'Feed rationing plan'
+              TabOrder = 2
+              OnClick = RBCompRationClick
+            end
+          end
+        end
+      end
+      object GBComp1a5: TGroupBox
+        Left = 0
+        Top = 184
+        Width = 616
+        Height = 144
+        Align = alTop
+        Caption = 'Single simulations'
+        TabOrder = 2
+        object ChkCompSimul1: TCheckBox
+          Left = 16
+          Top = 18
+          Width = 120
+          Height = 17
+          TabStop = False
+          Caption = 'Simulation 1'
+          Checked = True
+          State = cbChecked
+          TabOrder = 5
+          OnClick = ChkCompSimulClick
+        end
+        object ChkCompSimul2: TCheckBox
+          Left = 16
+          Top = 42
+          Width = 120
+          Height = 17
+          TabStop = False
+          Caption = 'Simulation 2'
+          Checked = True
+          State = cbChecked
+          TabOrder = 6
+          OnClick = ChkCompSimulClick
+        end
+        object ChkCompSimul3: TCheckBox
+          Left = 16
+          Top = 66
+          Width = 120
+          Height = 17
+          TabStop = False
+          Caption = 'Simulation 3'
+          Checked = True
+          State = cbChecked
+          TabOrder = 7
+          OnClick = ChkCompSimulClick
+        end
+        object ChkCompSimul4: TCheckBox
+          Left = 16
+          Top = 90
+          Width = 120
+          Height = 17
+          TabStop = False
+          Caption = 'Simulation 4'
+          Checked = True
+          State = cbChecked
+          TabOrder = 8
+          OnClick = ChkCompSimulClick
+        end
+        object ChkCompSimul5: TCheckBox
+          Left = 16
+          Top = 114
+          Width = 120
+          Height = 17
+          TabStop = False
+          Caption = 'Simulation 5'
+          Checked = True
+          State = cbChecked
+          TabOrder = 9
+          OnClick = ChkCompSimulClick
+        end
+        object CBCompSimul1: TComboBox
+          Left = 160
+          Top = 16
+          Width = 240
+          Height = 21
+          AutoCompleteDelay = 1500
+          Style = csDropDownList
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 0
+          OnChange = CBCompSimul1Change
+        end
+        object CBCompSimul2: TComboBox
+          Left = 160
+          Top = 40
+          Width = 240
+          Height = 21
+          AutoCompleteDelay = 1500
+          Style = csDropDownList
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 1
+          OnChange = CBCompSimul2Change
+        end
+        object CBCompSimul3: TComboBox
+          Left = 160
+          Top = 64
+          Width = 240
+          Height = 21
+          AutoCompleteDelay = 1500
+          Style = csDropDownList
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 2
+          OnChange = CBCompSimul3Change
+        end
+        object CBCompSimul4: TComboBox
+          Left = 160
+          Top = 88
+          Width = 240
+          Height = 21
+          AutoCompleteDelay = 1500
+          Style = csDropDownList
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 3
+          OnChange = CBCompSimul4Change
+        end
+        object CBCompSimul5: TComboBox
+          Left = 160
+          Top = 112
+          Width = 240
+          Height = 21
+          AutoCompleteDelay = 1500
+          Style = csDropDownList
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 4
+          OnChange = CBCompSimul5Change
+        end
+      end
+    end
+    object SensSimul: TTabSheet
+      HelpContext = 5430
+      Caption = 'Sensitivity analysis'
+      ImageIndex = 2
+      object LSensSimul: TLabel
+        Left = 8
+        Top = 20
+        Width = 78
+        Height = 13
+        Caption = 'Single simulation'
+      end
+      object CBSensSimul: TComboBox
+        Left = 120
+        Top = 16
+        Width = 240
+        Height = 21
+        AutoCompleteDelay = 1500
+        Style = csDropDownList
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        Sorted = True
+        TabOrder = 0
+        OnChange = CBSensSimulChange
+      end
+      object PSensSimul: TPanel
+        Left = 0
+        Top = 336
+        Width = 616
+        Height = 40
+        Align = alBottom
+        BevelOuter = bvNone
+        TabOrder = 1
+        object BBSensSimul: TBitBtn
+          Left = 16
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Show the simulation results as graphs'
+          Caption = 'Graphs'
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
+            000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
+            033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
+            B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
+            C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
+            033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
+            3000773373FFFF73377733333700073333333333377777333333333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = BBSensSimulClick
+        end
+        object BBRapSensSimul: TBitBtn
+          Left = 112
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Show the simulation results as a report'
+          Caption = 'Report'
+          Enabled = False
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+            808080808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            808080808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+            808080808080808080808080808080808080808080808080808080FF00FFFF00
+            FF808080808080FF00FF00000000000000000000000000000000000000000000
+            0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+            00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+            00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+            0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+            00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+            C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+            80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+            8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+            FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+            80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+            8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+            C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+            8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+            FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+            0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+            808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = BBRapSensSimulClick
+        end
+        object BBTabSensSimul: TBitBtn
+          Left = 208
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Export the results to an Excel sheet'
+          Caption = 'Excel'
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            33333FFFFFFFFFFFFFFF000000000000000077777777777777770FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07FFFFFFFFFFFFFF70CCCCCCCCCCCCCC07777777777777777088CCCCCCCCC
+            C8807FF7777777777FF700000000000000007777777777777777333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          OnClick = BBTabSensSimulClick
+        end
+      end
+      object GBModulation: TGroupBox
+        Left = 0
+        Top = 48
+        Width = 400
+        Height = 72
+        Caption = 'Criterion'
+        TabOrder = 2
+        object LVariable: TLabel
+          Left = 8
+          Top = 20
+          Width = 38
+          Height = 13
+          Caption = 'Variable'
+        end
+        object LVariation: TLabel
+          Left = 8
+          Top = 44
+          Width = 58
+          Height = 13
+          Caption = 'Variation (%)'
+        end
+        object CBVariable: TComboBox
+          Left = 80
+          Top = 16
+          Width = 240
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 0
+          OnChange = CBVariableChange
+          Items.Strings = (
+            'Mean PD'
+            'Precocity'
+            'Maintenance'
+            'BW PDmax'
+            'Final state'
+            'Quantity of feed'
+            'Feed wastage'
+            'Lysine'
+            'Methionine'
+            'Methionine + Cystine'
+            'Tryptophan'
+            'Threonine'
+            'Phenylalanine'
+            'Phenylalanine + Tyrosine'
+            'Leucine'
+            'Isoleucine'
+            'Valine'
+            'Histidine'
+            'Arginine')
+        end
+        object PBVariation: TPBSuperSpin
+          Left = 80
+          Top = 40
+          Width = 52
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 30.000000000000000000
+          MinValue = 1.000000000000000000
+          NumberFormat = Standard
+          TabOrder = 1
+          Value = 5.000000000000000000
+          EditorEnabled = False
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+      end
+    end
+  end
+  object OpenDialogFile: TOpenDialog
+    DefaultExt = 'xlsx'
+    FileName = 'InraPorc.xlsx'
+    Options = [ofHideReadOnly, ofNoChangeDir, ofEnableSizing]
+    Left = 584
+    Top = 40
+  end
+end
Index: UFRapAliAA.dfm
===================================================================
--- UFRapAliAA.dfm	(révision 0)
+++ UFRapAliAA.dfm	(révision 3)
@@ -0,0 +1,3465 @@
+object FRapAliAA: TFRapAliAA
+  Left = 0
+  Top = 80
+  Caption = 'Feed composition report - Amino acids'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed composition: amino acids'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRDBTdMetCysApp: TQRDBText
+        Left = 463
+        Top = 476
+        Width = 97
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1225.020833333333000000
+          1259.416666666667000000
+          256.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMetCys_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdHisApp: TQRDBText
+        Left = 489
+        Top = 436
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1293.812500000000000000
+          1153.583333333333000000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dHis_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdIleApp: TQRDBText
+        Left = 495
+        Top = 396
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1309.687500000000000000
+          1047.750000000000000000
+          171.979166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dIle_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdTyrApp: TQRDBText
+        Left = 490
+        Top = 356
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1296.458333333333000000
+          941.916666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dTyr_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdThrApp: TQRDBText
+        Left = 490
+        Top = 316
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1296.458333333333000000
+          836.083333333333300000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dThr_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdCysApp: TQRDBText
+        Left = 485
+        Top = 276
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1283.229166666667000000
+          730.250000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dCys_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLysApp: TQRDBText
+        Left = 487
+        Top = 236
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1288.520833333333000000
+          624.416666666666700000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLys_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdPheTyrApp: TQRDBText
+        Left = 467
+        Top = 496
+        Width = 93
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1235.604166666667000000
+          1312.333333333333000000
+          246.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dPheTyr_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdArgApp: TQRDBText
+        Left = 488
+        Top = 456
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1291.166666666667000000
+          1206.500000000000000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dArg_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdValApp: TQRDBText
+        Left = 489
+        Top = 416
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1293.812500000000000000
+          1100.666666666667000000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dVal_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLeuApp: TQRDBText
+        Left = 487
+        Top = 376
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1288.520833333333000000
+          994.833333333333300000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLeu_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdPheApp: TQRDBText
+        Left = 485
+        Top = 336
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1283.229166666667000000
+          889.000000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dPhe_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdTrpApp: TQRDBText
+        Left = 490
+        Top = 296
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1296.458333333333000000
+          783.166666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dTrp_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMetApp: TQRDBText
+        Left = 486
+        Top = 256
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1285.875000000000000000
+          677.333333333333300000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMet_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMAT_App: TQRDBText
+        Left = 481
+        Top = 216
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1272.645833333333000000
+          571.500000000000000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMAT_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLdAA_App: TQRLabel
+        Left = 501
+        Top = 192
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1325.562500000000000000
+          508.000000000000000000
+          156.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Apparent'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliment: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRDBAliment: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Aliment_'
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTAA: TQRLabel
+        Left = 270
+        Top = 168
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          444.500000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMAT: TQRLabel
+        Left = 40
+        Top = 216
+        Width = 88
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          571.500000000000000000
+          232.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Crude protein'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMAT: TQRDBText
+        Left = 271
+        Top = 216
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          717.020833333333300000
+          571.500000000000000000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMAT_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAA: TQRLabel
+        Left = 40
+        Top = 136
+        Width = 220
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          359.833333333333300000
+          582.083333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content and ileal digestibility'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLdAA: TQRLabel
+        Left = 360
+        Top = 168
+        Width = 240
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          952.500000000000000000
+          444.500000000000000000
+          635.000000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Digestibility'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRSdFecale: TQRShape
+        Left = 400
+        Top = 184
+        Width = 160
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          1058.333333333330000000
+          486.833333333333000000
+          423.333333333333000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLdAA_Std: TQRLabel
+        Left = 394
+        Top = 192
+        Width = 86
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1042.458333333333000000
+          508.000000000000000000
+          227.541666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Standardized'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCompo: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          254.000000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'StrCompo'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsItalic]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMAT_Std: TQRDBText
+        Left = 404
+        Top = 216
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1068.916666666667000000
+          571.500000000000000000
+          201.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMAT_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMet: TQRLabel
+        Left = 40
+        Top = 256
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          677.333333333333300000
+          190.500000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMet: TQRDBText
+        Left = 276
+        Top = 256
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          730.250000000000000000
+          677.333333333333300000
+          116.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMet_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMetStd: TQRDBText
+        Left = 409
+        Top = 256
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1082.145833333333000000
+          677.333333333333300000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMet_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTrp: TQRLabel
+        Left = 40
+        Top = 296
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          783.166666666666700000
+          193.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Tryptophan'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTTrp: TQRDBText
+        Left = 280
+        Top = 296
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          740.833333333333300000
+          783.166666666666700000
+          105.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TTrp_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdTrpStd: TQRDBText
+        Left = 413
+        Top = 296
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1092.729166666667000000
+          783.166666666666700000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dTrp_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPhe: TQRLabel
+        Left = 40
+        Top = 336
+        Width = 93
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          889.000000000000000000
+          246.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTPhe: TQRDBText
+        Left = 275
+        Top = 336
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          727.604166666666700000
+          889.000000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TPhe_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdPheStd: TQRDBText
+        Left = 408
+        Top = 336
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          889.000000000000000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dPhe_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLeu: TQRLabel
+        Left = 40
+        Top = 376
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          994.833333333333300000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Leucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTLeu: TQRDBText
+        Left = 277
+        Top = 376
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          732.895833333333300000
+          994.833333333333300000
+          113.770833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TLeu_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLeuStd: TQRDBText
+        Left = 410
+        Top = 376
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1084.791666666667000000
+          994.833333333333300000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLeu_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLVal: TQRLabel
+        Left = 40
+        Top = 416
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1100.666666666667000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Valine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTVal: TQRDBText
+        Left = 279
+        Top = 416
+        Width = 41
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          738.187500000000000000
+          1100.666666666667000000
+          108.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TVal_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdValStd: TQRDBText
+        Left = 412
+        Top = 416
+        Width = 68
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1090.083333333333000000
+          1100.666666666667000000
+          179.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dVal_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLArg: TQRLabel
+        Left = 40
+        Top = 456
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1206.500000000000000000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Arginine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTArg: TQRDBText
+        Left = 278
+        Top = 456
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          735.541666666666700000
+          1206.500000000000000000
+          111.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TArg_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdArgStd: TQRDBText
+        Left = 411
+        Top = 456
+        Width = 69
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1087.437500000000000000
+          1206.500000000000000000
+          182.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dArg_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPheTyr: TQRLabel
+        Left = 40
+        Top = 496
+        Width = 163
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1312.333333333333000000
+          431.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine + Tyrosine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTPheTyr: TQRDBText
+        Left = 257
+        Top = 496
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          679.979166666666700000
+          1312.333333333333000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TPheTyr_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdPheTyrStd: TQRDBText
+        Left = 390
+        Top = 496
+        Width = 90
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1031.875000000000000000
+          1312.333333333333000000
+          238.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dPheTyr_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLys: TQRLabel
+        Left = 40
+        Top = 236
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          624.416666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lysine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTLys: TQRDBText
+        Left = 277
+        Top = 236
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          732.895833333333300000
+          624.416666666666700000
+          113.770833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TLys_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLysStd: TQRDBText
+        Left = 410
+        Top = 236
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1084.791666666667000000
+          624.416666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLys_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCys: TQRLabel
+        Left = 40
+        Top = 276
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          730.250000000000000000
+          124.354166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Cystine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCys: TQRDBText
+        Left = 275
+        Top = 276
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          727.604166666666700000
+          730.250000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TCys_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdCysStd: TQRDBText
+        Left = 408
+        Top = 276
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          730.250000000000000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dCys_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLThr: TQRLabel
+        Left = 40
+        Top = 316
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          836.083333333333300000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Threonine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTThr: TQRDBText
+        Left = 280
+        Top = 316
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          740.833333333333300000
+          836.083333333333300000
+          105.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TThr_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdThrStd: TQRDBText
+        Left = 413
+        Top = 316
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1092.729166666667000000
+          836.083333333333300000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dThr_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTyr: TQRLabel
+        Left = 40
+        Top = 356
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          941.916666666666700000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Tyrosine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTTyr: TQRDBText
+        Left = 280
+        Top = 356
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          740.833333333333300000
+          941.916666666666700000
+          105.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TTyr_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdTyrStd: TQRDBText
+        Left = 413
+        Top = 356
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1092.729166666667000000
+          941.916666666666700000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dTyr_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLIle: TQRLabel
+        Left = 40
+        Top = 396
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1047.750000000000000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Isoleucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTIle: TQRDBText
+        Left = 285
+        Top = 396
+        Width = 35
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          754.062500000000000000
+          1047.750000000000000000
+          92.604166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TIle_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdIleStd: TQRDBText
+        Left = 418
+        Top = 396
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1105.958333333333000000
+          1047.750000000000000000
+          164.041666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dIle_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLHis: TQRLabel
+        Left = 40
+        Top = 436
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1153.583333333333000000
+          148.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Histidine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTHis: TQRDBText
+        Left = 279
+        Top = 436
+        Width = 41
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          738.187500000000000000
+          1153.583333333333000000
+          108.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_THis_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdHisStd: TQRDBText
+        Left = 412
+        Top = 436
+        Width = 68
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1090.083333333333000000
+          1153.583333333333000000
+          179.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dHis_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMetCys: TQRLabel
+        Left = 40
+        Top = 476
+        Width = 134
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1259.416666666667000000
+          354.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine + Cystine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMetCys: TQRDBText
+        Left = 253
+        Top = 476
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          669.395833333333300000
+          1259.416666666667000000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMetCys_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMetCysStd: TQRDBText
+        Left = 386
+        Top = 476
+        Width = 94
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1021.291666666667000000
+          1259.416666666667000000
+          248.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMetCys_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFAliment: TStringField
+      DisplayWidth = 35
+      FieldName = '_Aliment_'
+      Size = 35
+    end
+    object SFTMAT: TStringField
+      FieldName = '_TMAT_'
+      Size = 8
+    end
+    object SFdMATStd: TStringField
+      FieldName = '_dMAT_Std_'
+      Size = 8
+    end
+    object SFdMATApp: TStringField
+      FieldName = '_dMAT_App_'
+      Size = 8
+    end
+    object SFLys: TStringField
+      FieldName = '_TLys_'
+      Size = 8
+    end
+    object SFdLysStd: TStringField
+      FieldName = '_dLys_Std_'
+      Size = 8
+    end
+    object SFdLysApp: TStringField
+      FieldName = '_dLys_App_'
+      Size = 8
+    end
+    object SFTMet: TStringField
+      FieldName = '_TMet_'
+      Size = 8
+    end
+    object SFdMetStd: TStringField
+      FieldName = '_dMet_Std_'
+      Size = 8
+    end
+    object SFdMetApp: TStringField
+      FieldName = '_dMet_App_'
+      Size = 8
+    end
+    object SFTCys: TStringField
+      FieldName = '_TCys_'
+      Size = 8
+    end
+    object SFdCysApp: TStringField
+      FieldName = '_dCys_App_'
+      Size = 8
+    end
+    object SFdCysStd: TStringField
+      FieldName = '_dCys_Std_'
+      Size = 8
+    end
+    object SFTTrp: TStringField
+      FieldName = '_TTrp_'
+      Size = 8
+    end
+    object SFdTrpStd: TStringField
+      FieldName = '_dTrp_Std_'
+      Size = 8
+    end
+    object SFdTrpApp: TStringField
+      FieldName = '_dTrp_App_'
+      Size = 8
+    end
+    object SFTThr: TStringField
+      FieldName = '_TThr_'
+      Size = 8
+    end
+    object SFdThrStd: TStringField
+      FieldName = '_dThr_Std_'
+      Size = 8
+    end
+    object SFdThrApp: TStringField
+      FieldName = '_dThr_App_'
+      Size = 8
+    end
+    object SFTPhe: TStringField
+      FieldName = '_TPhe_'
+      Size = 8
+    end
+    object SFdPheStd: TStringField
+      FieldName = '_dPhe_Std_'
+      Size = 8
+    end
+    object SFdPheApp: TStringField
+      FieldName = '_dPhe_App_'
+      Size = 8
+    end
+    object SFTTyr: TStringField
+      FieldName = '_TTyr_'
+      Size = 8
+    end
+    object SFdTyrStd_: TStringField
+      FieldName = '_dTyr_Std_'
+      Size = 8
+    end
+    object SFdTyrApp: TStringField
+      FieldName = '_dTyr_App_'
+      Size = 8
+    end
+    object SFTLeu: TStringField
+      FieldName = '_TLeu_'
+      Size = 8
+    end
+    object SFdLeuStd: TStringField
+      FieldName = '_dLeu_Std_'
+      Size = 8
+    end
+    object SFdLeuApp: TStringField
+      FieldName = '_dLeu_App_'
+      Size = 8
+    end
+    object SFTIle: TStringField
+      FieldName = '_TIle_'
+      Size = 8
+    end
+    object SFdIleStd: TStringField
+      FieldName = '_dIle_Std_'
+      Size = 8
+    end
+    object SFdIleApp: TStringField
+      FieldName = '_dIle_App_'
+      Size = 8
+    end
+    object SFTVal: TStringField
+      FieldName = '_TVal_'
+      Size = 8
+    end
+    object SFdValStd: TStringField
+      FieldName = '_dVal_Std_'
+      Size = 8
+    end
+    object SFdValApp: TStringField
+      FieldName = '_dVal_App_'
+      Size = 8
+    end
+    object SFTHis: TStringField
+      FieldName = '_THis_'
+      Size = 8
+    end
+    object SFdHisStd: TStringField
+      FieldName = '_dHis_Std_'
+      Size = 8
+    end
+    object SFdHisApp: TStringField
+      FieldName = '_dHis_App_'
+      Size = 8
+    end
+    object SFTArg: TStringField
+      FieldName = '_TArg_'
+      Size = 8
+    end
+    object SFdArgStd: TStringField
+      FieldName = '_dArg_Std_'
+      Size = 8
+    end
+    object SFdArgApp: TStringField
+      FieldName = '_dArg_App_'
+      Size = 8
+    end
+    object SFTMetCys: TStringField
+      FieldName = '_TMetCys_'
+      Size = 8
+    end
+    object SFdMetCysStd: TStringField
+      FieldName = '_dMetCys_Std_'
+      Size = 8
+    end
+    object SFdMetCysApp: TStringField
+      FieldName = '_dMetCys_App_'
+      Size = 8
+    end
+    object SFTPheTyr: TStringField
+      FieldName = '_TPheTyr_'
+      Size = 8
+    end
+    object SFdPheTyrStd: TStringField
+      FieldName = '_dPheTyr_Std_'
+      Size = 8
+    end
+    object SFdPheTyrApp: TStringField
+      FieldName = '_dPheTyr_App_'
+      Size = 8
+    end
+  end
+end
Index: UFRationP.dfm
===================================================================
--- UFRationP.dfm	(révision 0)
+++ UFRationP.dfm	(révision 3)
@@ -0,0 +1,1417 @@
+object FRationP: TFRationP
+  Left = 166
+  Top = 155
+  HelpContext = 5200
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Feed rationing plan for growing pigs'
+  ClientHeight = 440
+  ClientWidth = 748
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBRation: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 748
+    Height = 48
+    Align = alTop
+    Caption = 'Feed rationing plan'
+    TabOrder = 0
+    object SBAddRation: TSpeedButton
+      Left = 264
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Add a feed rationing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000800000800000800000800000800000
+        8000008000008000008000008000008000008000008000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBAddRationClick
+    end
+    object SBDelRation: TSpeedButton
+      Left = 296
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Delete the current feed rationing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF0000000000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBDelRationClick
+    end
+    object SBRename: TSpeedButton
+      Left = 328
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Rename the current feed rationing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FF80808080808080
+        8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFF800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFF0000FFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFF0000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FF808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFF800000FFFFFFFFFFFF800000FF
+        FFFFFFFFFF800000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FF80808080808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFF800000800000800000800000800000800000800000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBRenameClick
+    end
+    object SBComment: TSpeedButton
+      Left = 360
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 
+        'Add additional information to the current feed rationing plan (c' +
+        'omment)'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        00000000000000000000000000000000000000FF0000FFFF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000080000080FF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF
+        FF0000FF0000FF0000FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00080
+        80000080000080000080FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF0000FF000080FFFF0000FF0000FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080
+        80808080808080808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0800000800000008080000080000080FF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00
+        00FF000080FFFFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000
+        00800000008080FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0800000800000800000800000800000FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF00
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FF808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000008000008000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+        0000800000800000800000800000000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0800000800000800000800000800000C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFF4080FFFF0000FF
+        0000FF0000FF0000FFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FF808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C000408080000080
+        0000800000800000C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFF4080FF4080FFFF0000FF0000FFFFFFFFFFFFFFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80808080808080
+        8080808080FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0004080004080800000800000C0C0C0C0C0C0C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF0000004080FF4080FF40
+        80FFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C000000000408000408000
+        4080C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080FF00FFFF
+        00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0000000000000C0C0C0C0C0C0C0C0C00000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBCommentClick
+    end
+    object SBSave: TSpeedButton
+      Left = 392
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Save the current feed rationing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000C0C0C0C0C0C0000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000808080808080000000800000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF8080808080808080808080808080808080808080808080808080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000000000800000000000FF00FFFF00FF000000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF000000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000FF0000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080808080808080FF00
+        FFFF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000800000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00000000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00000000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080000000FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBSaveClick
+    end
+    object SBPrint: TSpeedButton
+      Left = 424
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'View the report for the current feed rationing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+        808080808080808080808080808080808080808080808080808080FF00FFFF00
+        FF808080808080FF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+        00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+        00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+        C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+        FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+        C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+        8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+        808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBPrintClick
+    end
+    object JvEnterAsTab: TJvEnterAsTab
+      Left = 456
+      Top = 16
+      Width = 28
+      Height = 28
+    end
+    object CBRation: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBRationChange
+    end
+  end
+  object PRation: TPanel
+    Left = 0
+    Top = 48
+    Width = 748
+    Height = 392
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 1
+    Visible = False
+    object PRules: TPanel
+      Left = 0
+      Top = 0
+      Width = 448
+      Height = 392
+      Align = alLeft
+      BevelOuter = bvNone
+      TabOrder = 0
+      object GBParam: TGroupBox
+        Left = 0
+        Top = 200
+        Width = 440
+        Height = 192
+        Caption = 'Parameters of the selected rule'
+        TabOrder = 0
+        object GBEnd: TGroupBox
+          Left = 8
+          Top = 16
+          Width = 424
+          Height = 48
+          Hint = 'Termination conditition of the selected rule'
+          Caption = 'Termination condition'
+          TabOrder = 0
+          object PBValFin: TPBNumEdit
+            Left = 208
+            Top = 16
+            Width = 48
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 0
+            NumberFormat = Standard
+            OnChange = PBValFinChange
+            TabOrder = 1
+          end
+          object CBModeFin: TComboBox
+            Left = 8
+            Top = 16
+            Width = 160
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 13
+            TabOrder = 0
+            OnChange = CBModeFinChange
+            Items.Strings = (
+              'Duration (d)'
+              'Age (d)'
+              'Body weight (kg)'
+              'Total feed usage (kg)'
+              'Feed usage (kg/d)'
+              'Feed usage (kg DM/d)'
+              'Feed usage (MJ DE/d)'
+              'Feed usage (MJ ME/d)'
+              'Feed usage (MJ NE/d)')
+          end
+        end
+        object GBAjust: TGroupBox
+          Left = 8
+          Top = 64
+          Width = 424
+          Height = 120
+          Hint = 'Definition of the type of rationing for the selected rule'
+          Caption = 'Feed usage'
+          TabOrder = 1
+          object LType: TLabel
+            Left = 8
+            Top = 44
+            Width = 24
+            Height = 13
+            Caption = 'Type'
+          end
+          object LGaspillage: TLabel
+            Left = 8
+            Top = 20
+            Width = 84
+            Height = 13
+            Caption = 'Feed wastage (%)'
+          end
+          object PEqDuree: TPanel
+            Left = 8
+            Top = 88
+            Width = 200
+            Height = 24
+            BevelOuter = bvNone
+            TabOrder = 8
+            object LEqDuree: TLabel
+              Left = 0
+              Top = 4
+              Width = 42
+              Height = 13
+              Caption = 'Equation'
+            end
+            object CBEqDuree: TComboBox
+              Left = 80
+              Top = 0
+              Width = 120
+              Height = 21
+              Style = csDropDownList
+              ItemHeight = 13
+              TabOrder = 0
+              OnChange = CBEqDureeChange
+              Items.Strings = (
+                'a+b*day'
+                'a+b*week')
+            end
+          end
+          object PCoefPV: TPanel
+            Left = 216
+            Top = 40
+            Width = 200
+            Height = 72
+            BevelOuter = bvNone
+            TabOrder = 6
+            object LaPV: TLabel
+              Left = 8
+              Top = 28
+              Width = 8
+              Height = 13
+              Hint = 'Parameter a of the equation'
+              Alignment = taRightJustify
+              AutoSize = False
+              Caption = 'a'
+              ParentShowHint = False
+              ShowHint = True
+            end
+            object LbPV: TLabel
+              Left = 8
+              Top = 52
+              Width = 8
+              Height = 13
+              Hint = 'Parameter b of the equation'
+              Alignment = taRightJustify
+              AutoSize = False
+              Caption = 'b'
+              ParentShowHint = False
+              ShowHint = True
+            end
+            object LIng100: TLabel
+              Left = 96
+              Top = 52
+              Width = 40
+              Height = 13
+              Hint = 'Feed usage at 100 kg of body weight'
+              Alignment = taRightJustify
+              AutoSize = False
+              Caption = '100 kg'
+              ParentShowHint = False
+              ShowHint = True
+            end
+            object LIng50: TLabel
+              Left = 96
+              Top = 28
+              Width = 40
+              Height = 13
+              Hint = 'Feed usage at 50 kg of body weight'
+              Alignment = taRightJustify
+              AutoSize = False
+              Caption = '50 kg'
+              ParentShowHint = False
+              ShowHint = True
+            end
+            object RBCoef: TRadioButton
+              Left = 8
+              Top = 2
+              Width = 80
+              Height = 17
+              Hint = 'Adjust the equation through the parameters a and b'
+              Caption = 'Parameters'
+              Checked = True
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 0
+              TabStop = True
+              OnClick = RBCoefClick
+            end
+            object RBIngere: TRadioButton
+              Left = 104
+              Top = 1
+              Width = 96
+              Height = 17
+              Hint = 
+                'Adjust the equation from the feed usage at 50 and 100 kg body we' +
+                'ight'
+              Caption = 'Feed usage'
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 1
+              OnClick = RBCoefClick
+            end
+            object PBaPV: TPBNumEdit
+              Left = 24
+              Top = 24
+              Width = 56
+              Height = 21
+              Hint = 'Parameter a of the equation'
+              Alignment = taRightJustify
+              Decimals = 3
+              NumberFormat = Standard
+              OnChange = PBaPVChange
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 2
+            end
+            object PBbPV: TPBNumEdit
+              Left = 24
+              Top = 48
+              Width = 56
+              Height = 21
+              Hint = 'Parameter b of the equation'
+              Alignment = taRightJustify
+              Decimals = 4
+              NumberFormat = Standard
+              OnChange = PBbPVChange
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 3
+            end
+            object PBIng100: TPBNumEdit
+              Left = 144
+              Top = 48
+              Width = 56
+              Height = 21
+              Hint = 'Feed usage at 100 kg of body weight'
+              Alignment = taRightJustify
+              Enabled = False
+              Decimals = 3
+              NumberFormat = Standard
+              OnChange = PBIng100Change
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 4
+            end
+            object PBIng50: TPBNumEdit
+              Left = 144
+              Top = 24
+              Width = 56
+              Height = 21
+              Hint = 'Feed usage at 50 kg of body weight'
+              Alignment = taRightJustify
+              Enabled = False
+              Decimals = 3
+              NumberFormat = Standard
+              OnChange = PBIng50Change
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 5
+            end
+          end
+          object PCoefDuree: TPanel
+            Left = 216
+            Top = 64
+            Width = 80
+            Height = 48
+            BevelOuter = bvNone
+            TabOrder = 7
+            object LaDuree: TLabel
+              Left = 8
+              Top = 4
+              Width = 8
+              Height = 13
+              Hint = 'Parameter a of the equation'
+              Alignment = taRightJustify
+              AutoSize = False
+              Caption = 'a'
+              ParentShowHint = False
+              ShowHint = True
+            end
+            object LbDuree: TLabel
+              Left = 8
+              Top = 28
+              Width = 8
+              Height = 13
+              Hint = 'Parameter b of the equation'
+              Alignment = taRightJustify
+              AutoSize = False
+              Caption = 'b'
+              ParentShowHint = False
+              ShowHint = True
+            end
+            object PBaDuree: TPBNumEdit
+              Left = 24
+              Top = 0
+              Width = 56
+              Height = 21
+              Hint = 'Parameter a of the equation'
+              Alignment = taRightJustify
+              Decimals = 3
+              NumberFormat = Standard
+              OnChange = PBaDureeChange
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 0
+            end
+            object PBbDuree: TPBNumEdit
+              Left = 24
+              Top = 24
+              Width = 56
+              Height = 21
+              Hint = 'Parameter b of the equation'
+              Alignment = taRightJustify
+              Decimals = 4
+              NumberFormat = Standard
+              OnChange = PBbDureeChange
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 1
+            end
+          end
+          object PEqPV: TPanel
+            Left = 8
+            Top = 88
+            Width = 200
+            Height = 24
+            BevelOuter = bvNone
+            TabOrder = 5
+            object LEqPV: TLabel
+              Left = 0
+              Top = 4
+              Width = 42
+              Height = 13
+              Caption = 'Equation'
+            end
+            object CBEqPV: TComboBox
+              Left = 80
+              Top = 0
+              Width = 120
+              Height = 21
+              Style = csDropDownList
+              ItemHeight = 13
+              TabOrder = 0
+              OnChange = CBEqPVChange
+              Items.Strings = (
+                'a+b*BW'
+                'a*BW^b'
+                'a*(1-exp(-b*BW))')
+            end
+          end
+          object PUnite: TPanel
+            Left = 8
+            Top = 64
+            Width = 200
+            Height = 24
+            BevelOuter = bvNone
+            TabOrder = 2
+            object LUnite: TLabel
+              Left = 0
+              Top = 4
+              Width = 19
+              Height = 13
+              Caption = 'Unit'
+            end
+            object CBUnite: TComboBox
+              Left = 80
+              Top = 0
+              Width = 120
+              Height = 21
+              Style = csDropDownList
+              ItemHeight = 13
+              TabOrder = 0
+              OnChange = CBUniteChange
+              Items.Strings = (
+                'Quantity (kg/d)'
+                'DE (MJ/d)'
+                'ME (MJ/d)'
+                'NE (MJ/d)'
+                'DM (kg/d)')
+            end
+          end
+          object CBType: TComboBox
+            Left = 88
+            Top = 40
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 13
+            TabOrder = 1
+            OnChange = CBTypeChange
+            Items.Strings = (
+              '% Ad libitum'
+              'Constant'
+              'f (duration)'
+              'f (body weight)')
+          end
+          object PQuantite: TPanel
+            Left = 8
+            Top = 88
+            Width = 144
+            Height = 24
+            BevelOuter = bvNone
+            TabOrder = 4
+            object LQuantite: TLabel
+              Left = 0
+              Top = 4
+              Width = 39
+              Height = 13
+              Caption = 'Quantity'
+            end
+            object PBQuantite: TPBNumEdit
+              Left = 80
+              Top = 0
+              Width = 56
+              Height = 21
+              Alignment = taRightJustify
+              Decimals = 3
+              NumberFormat = Standard
+              OnChange = PBQuantiteChange
+              TabOrder = 0
+            end
+          end
+          object PPercent: TPanel
+            Left = 88
+            Top = 64
+            Width = 56
+            Height = 24
+            BevelOuter = bvNone
+            TabOrder = 3
+            object LPercent: TLabel
+              Left = 40
+              Top = 4
+              Width = 8
+              Height = 13
+              Caption = '%'
+            end
+            object PBPercent: TPBNumEdit
+              Left = 0
+              Top = 0
+              Width = 32
+              Height = 21
+              Alignment = taRightJustify
+              Decimals = 0
+              MaxValue = 100.000000000000000000
+              NumberFormat = Standard
+              OnChange = PBPercentChange
+              TabOrder = 0
+            end
+          end
+          object PBGaspillage: TPBNumEdit
+            Left = 128
+            Top = 16
+            Width = 32
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 0
+            MaxValue = 25.000000000000000000
+            NumberFormat = Standard
+            OnChange = PBGaspillageChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+          end
+        end
+      end
+      object GBRule: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 440
+        Height = 200
+        Hint = 
+          'The first rule starts at the beginning of a simulation and the l' +
+          'ast rule terminates at the end of a simulation'
+        Caption = 'Rules'
+        TabOrder = 1
+        object LModeFin: TLabel
+          Left = 32
+          Top = 16
+          Width = 101
+          Height = 13
+          Caption = 'Termination condition'
+        end
+        object LNo: TLabel
+          Left = 8
+          Top = 16
+          Width = 16
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = '#'
+        end
+        object SBAddRule: TSpeedButton
+          Left = 16
+          Top = 168
+          Width = 80
+          Height = 24
+          Hint = 'Insert a rule before the selected rule'
+          Caption = 'Insert'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+            8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+            00008000008000000000FF00FFFF00FFFF00FF00000000000000000000000000
+            000000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FF00000000000000000000000000
+            0000008000008000008000008000008000008000008000000000FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+            8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+            00008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBAddRuleClick
+        end
+        object SBDelRule: TSpeedButton
+          Left = 104
+          Top = 168
+          Width = 80
+          Height = 24
+          Hint = 'Delete the selected rule'
+          Caption = 'Delete'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+            8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+            FF00FF000000000080000080000080000080000080000080000080000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF0000000000FF0000FF0000FF00
+            00FF0000FF0000FF0000FF000000000000000000000000000000FF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FF00000000008000008000008000
+            0080000080000080000080000000000000000000000000000000FF00FFFF00FF
+            FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+            8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+            FF00FF000000000080000080000080000080000080000080000080000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBDelRuleClick
+        end
+        object LAli: TLabel
+          Left = 192
+          Top = 16
+          Width = 56
+          Height = 13
+          Caption = 'Feed usage'
+        end
+        object LWastage: TLabel
+          Left = 348
+          Top = 16
+          Width = 80
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'Feed wastage'
+        end
+        object LBRule: TListBox
+          Left = 8
+          Top = 32
+          Width = 424
+          Height = 134
+          Style = lbOwnerDrawFixed
+          ItemHeight = 13
+          TabOrder = 0
+          OnClick = LBRuleClick
+          OnDrawItem = LBRuleDrawItem
+        end
+      end
+    end
+    object PRight: TPanel
+      Left = 448
+      Top = 0
+      Width = 300
+      Height = 392
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 1
+      object GBGraph: TGroupBox
+        Left = 0
+        Top = 80
+        Width = 300
+        Height = 312
+        Align = alClient
+        Caption = 'Simulation results'
+        TabOrder = 0
+        object Graph: TChart
+          Left = 2
+          Top = 63
+          Width = 296
+          Height = 247
+          Legend.Visible = False
+          MarginBottom = 0
+          MarginLeft = 0
+          MarginRight = 2
+          MarginTop = 2
+          Title.Text.Strings = (
+            'TChart')
+          Title.Visible = False
+          BottomAxis.Title.Caption = 'Body weight (kg)'
+          BottomAxis.Title.Font.Style = [fsBold]
+          LeftAxis.Automatic = False
+          LeftAxis.AutomaticMaximum = False
+          LeftAxis.AutomaticMinimum = False
+          LeftAxis.Title.Caption = 'Feed usage (kg/d)'
+          LeftAxis.Title.Font.Style = [fsBold]
+          View3D = False
+          Align = alClient
+          BevelOuter = bvNone
+          TabOrder = 0
+          object SeriesLigne: TLineSeries
+            Marks.Arrow.Visible = True
+            Marks.Callout.Brush.Color = clBlack
+            Marks.Callout.Arrow.Visible = True
+            Marks.Visible = False
+            Title = 'Feed rationing plan'
+            LinePen.Color = clRed
+            LinePen.Width = 2
+            Pointer.InflateMargins = True
+            Pointer.Style = psRectangle
+            Pointer.Visible = False
+            XValues.Name = 'X'
+            XValues.Order = loAscending
+            YValues.Name = 'Y'
+            YValues.Order = loNone
+          end
+        end
+        object PGraphTop: TPanel
+          Left = 2
+          Top = 15
+          Width = 296
+          Height = 48
+          Align = alTop
+          BevelOuter = bvNone
+          TabOrder = 1
+          object GBX: TGroupBox
+            Left = 8
+            Top = 0
+            Width = 136
+            Height = 48
+            Caption = 'X-axis'
+            TabOrder = 0
+            object CBX: TComboBox
+              Left = 8
+              Top = 16
+              Width = 120
+              Height = 21
+              Style = csDropDownList
+              ItemHeight = 13
+              ItemIndex = 0
+              TabOrder = 0
+              Text = 'Body weight (kg)'
+              OnChange = CBXChange
+              Items.Strings = (
+                'Body weight (kg)'
+                'Age (d)'
+                'Duration (d)'
+                'Duration (week)')
+            end
+          end
+          object GBY: TGroupBox
+            Left = 152
+            Top = 0
+            Width = 136
+            Height = 48
+            Caption = 'Y-axis'
+            TabOrder = 1
+            object CBY: TComboBox
+              Left = 8
+              Top = 16
+              Width = 120
+              Height = 21
+              Style = csDropDownList
+              ItemHeight = 13
+              ItemIndex = 0
+              TabOrder = 0
+              Text = 'Feed usage (kg/d)'
+              OnChange = CBYChange
+              Items.Strings = (
+                'Feed usage (kg/d)'
+                'Feed usage (kg DM/d)'
+                'Feed usage (MJ DE/d)'
+                'Feed usage (MJ ME/d)'
+                'Feed usage (MJ NE/d)')
+            end
+          end
+        end
+      end
+      object GBSim: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 300
+        Height = 80
+        Align = alTop
+        Caption = 'Reference simulation'
+        TabOrder = 1
+        object LProfilRef: TLabel
+          Left = 8
+          Top = 44
+          Width = 3
+          Height = 13
+        end
+        object LSeqAliRef: TLabel
+          Left = 8
+          Top = 60
+          Width = 3
+          Height = 13
+        end
+        object CBSim: TComboBox
+          Left = 8
+          Top = 16
+          Width = 240
+          Height = 21
+          AutoCompleteDelay = 1500
+          Style = csDropDownList
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 0
+          OnChange = CBSimChange
+        end
+      end
+    end
+  end
+end
Index: UFSimulT.dfm
===================================================================
--- UFSimulT.dfm	(révision 0)
+++ UFSimulT.dfm	(révision 3)
@@ -0,0 +1,1396 @@
+object FSimulT: TFSimulT
+  Left = 200
+  Top = 155
+  HelpContext = 4400
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Simulation for sows'
+  ClientHeight = 396
+  ClientWidth = 624
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PC: TPageControl
+    Left = 0
+    Top = 0
+    Width = 624
+    Height = 396
+    ActivePage = ResSimul
+    Align = alClient
+    HotTrack = True
+    TabOrder = 0
+    OnChange = PCChange
+    object ResSimul: TTabSheet
+      HelpContext = 4410
+      Caption = 'Single simulation'
+      object GBSimul: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 616
+        Height = 48
+        Align = alTop
+        Caption = 'Single simulation'
+        TabOrder = 0
+        object SBAddSimul: TSpeedButton
+          Left = 264
+          Top = 16
+          Width = 24
+          Height = 24
+          Hint = 'Add a single simulation'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+            FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000000000000000000000000000000000
+            8000008000008000000000000000000000000000000000000000FF00FF000000
+            00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+            8080808080808080808080808080808080808080808080808080FF00FF000000
+            0080000080000080000080000080000080000080000080000080000080000080
+            00008000008000000000FF00FF00000000FF0000FF0000FF0000FF0000FF0000
+            FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000800000800000800000800000800000
+            8000008000008000008000008000008000008000008000000000FF00FF000000
+            00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+            8080808080808080808080808080808080808080808080808080FF00FF000000
+            0080000080000080000080000080000080000080000080000080000080000080
+            00008000008000000000FF00FF00000000000000000000000000000000000000
+            FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000000000000000000000000000000000
+            8000008000008000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+            8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBAddSimulClick
+        end
+        object SBDelSimul: TSpeedButton
+          Left = 296
+          Top = 16
+          Width = 24
+          Height = 24
+          Hint = 'Delete the current single simulation'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000FF00FF000000
+            0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+            FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+            8080808080808080808080808080808080808080808080808080FF00FF000000
+            0000800000800000800000800000800000800000800000800000800000800000
+            80000080000080000000FF00FF0000000000FF0000FF0000FF0000FF0000FF00
+            00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000008000008000008000008000008000
+            0080000080000080000080000080000080000080000080000000FF00FF000000
+            0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+            FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+            8080808080808080808080808080808080808080808080808080FF00FF000000
+            0000800000800000800000800000800000800000800000800000800000800000
+            80000080000080000000FF00FF00000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000FF00FF808080
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FF00000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBDelSimulClick
+        end
+        object SBRename: TSpeedButton
+          Left = 328
+          Top = 16
+          Width = 24
+          Height = 24
+          Hint = 'Rename the current single simulation'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080
+            8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+            8080808080808080808080808080808080808080808080FF00FFFF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+            FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FF80808080808080
+            8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFF800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+            80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+            00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+            80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+            00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FFFFFFFF0000FFFFFFFFFFFFFF0000FF
+            FFFFFFFFFFFF0000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FF00FF808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FF8080
+            80FF00FFFF00FF808080FF00FF808080FFFFFF800000FFFFFFFFFFFF800000FF
+            FFFFFFFFFF800000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+            FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FF00FF80808080808080808080808080
+            8080808080808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+            FFFFFF800000800000800000800000800000800000800000FFFFFFFFFFFF0000
+            00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+            FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFF808080FF00FFFF00FF80808080808080808080808080808080
+            8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+            8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBRenameClick
+        end
+        object SBComment: TSpeedButton
+          Left = 360
+          Top = 16
+          Width = 24
+          Height = 24
+          Hint = 
+            'Add additional information to the current single simulation (com' +
+            'ment)'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            00000000000000000000000000000000000000FF0000FFFF00FFFF00FFFF00FF
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000000000000000000000000080000080FF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF
+            FF0000FF0000FF0000FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00080
+            80000080000080000080FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFF0000FF000080FFFF0000FF0000FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080
+            80808080808080808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0800000800000008080000080000080FF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00
+            00FF000080FFFFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000
+            00800000008080FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080
+            80808080FF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0800000800000800000800000800000FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF00
+            00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+            00FF808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000008000008000
+            00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            0000FF0000FF0000FF0000FF0000000000808080FF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+            0000800000800000800000800000000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FFFFFF0000
+            00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+            8080808080808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0800000800000800000800000800000C0C0C00000
+            00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFF4080FFFF0000FF
+            0000FF0000FF0000FFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FF808080808080808080808080808080FF00FFFF00FF8080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C000408080000080
+            0000800000800000C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFF4080FF4080FFFF0000FF0000FFFFFFFFFFFFFFFFFF0000
+            00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80808080808080
+            8080808080FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0004080004080800000800000C0C0C0C0C0C0C0C0C00000
+            00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF0000004080FF4080FF40
+            80FFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+            808080FF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FF8080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C000000000408000408000
+            4080C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000
+            00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080FF00FFFF
+            00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0000000000000C0C0C0C0C0C0C0C0C00000000000000000000000
+            00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBCommentClick
+        end
+        object SBSave: TSpeedButton
+          Left = 392
+          Top = 16
+          Width = 24
+          Height = 24
+          Hint = 'Save the current single simulation'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
+            8080808080808080808080808080808080808080808080808080808080808080
+            80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000000000000000000000000000000000FF00FFFF00FF000000
+            FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+            00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+            8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+            8000008000000000000000000000000000000000000000008080808080800000
+            00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+            0000000000000000C0C0C0C0C0C0000000FF0000000000FF00FFFF00FF808080
+            FF00FFFF00FF808080808080808080808080808080808080FF00FFFF00FF8080
+            80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+            0000000000000000808080808080000000800000000000FF00FFFF00FF000000
+            FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+            00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+            8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+            8000008000000000000000000000000000000000000000008080808080800000
+            00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+            0000000000000000000000000000000000FF0000000000FF00FFFF00FF808080
+            FF00FFFF00FF8080808080808080808080808080808080808080808080808080
+            80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+            0000000000000000000000000000000000800000000000FF00FFFF00FF000000
+            FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+            00FF0000000000FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF000000
+            8000008000008000008000008000008000008000008000008000008000008000
+            00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+            0000000000000000000000000000FF0000FF0000000000FF00FFFF00FF808080
+            FF00FFFF00FF808080808080808080808080808080808080808080808080FF00
+            FFFF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+            0000000000000000000000000000800000800000000000FF00FFFF00FF000000
+            FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+            800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+            00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+            FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+            80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+            FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+            800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+            00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+            FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+            80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+            FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00000000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FFFF00FF000000
+            800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+            00000000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0000000FF00FFFF00FF808080
+            FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+            80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080000000FF00FFFF00FF000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            00000000000000FF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080808080808080808080808080808080FF00FFFF00FF000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBSaveClick
+        end
+        object JvEnterAsTab: TJvEnterAsTab
+          Left = 424
+          Top = 16
+          Width = 28
+          Height = 28
+        end
+        object CBSimul: TComboBox
+          Left = 16
+          Top = 16
+          Width = 240
+          Height = 21
+          AutoCompleteDelay = 1500
+          Style = csDropDownList
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 0
+          OnChange = CBSimulChange
+        end
+      end
+      object PSimul: TPanel
+        Left = 0
+        Top = 48
+        Width = 616
+        Height = 280
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 1
+        Visible = False
+        object PCenter: TPanel
+          Left = 0
+          Top = 96
+          Width = 616
+          Height = 184
+          Align = alClient
+          BevelOuter = bvNone
+          TabOrder = 1
+          object PLeft: TPanel
+            Left = 0
+            Top = 0
+            Width = 124
+            Height = 184
+            Align = alLeft
+            BevelOuter = bvNone
+            TabOrder = 0
+            object GBFin: TGroupBox
+              Left = 0
+              Top = 80
+              Width = 120
+              Height = 80
+              Caption = 'Final state'
+              TabOrder = 1
+              object LPorteeFin: TLabel
+                Left = 8
+                Top = 20
+                Width = 23
+                Height = 13
+                Caption = 'Litter'
+              end
+              object CBStadeFin: TComboBox
+                Left = 16
+                Top = 48
+                Width = 88
+                Height = 21
+                Style = csDropDownList
+                ItemHeight = 13
+                ParentShowHint = False
+                ShowHint = True
+                TabOrder = 1
+                OnChange = CBStadeFinChange
+                Items.Strings = (
+                  'Service'
+                  'Farrowing'
+                  'Weaning')
+              end
+              object PBPorteeFin: TPBSuperSpin
+                Left = 52
+                Top = 16
+                Width = 52
+                Height = 22
+                Cursor = crDefault
+                Alignment = taRightJustify
+                Decimals = 0
+                MaxValue = 8.000000000000000000
+                MinValue = 1.000000000000000000
+                NumberFormat = Standard
+                OnChange = PBPorteeFinChange
+                ParentShowHint = False
+                ShowHint = True
+                TabOrder = 0
+                EditorEnabled = False
+                Increment = 1.000000000000000000
+                RoundValues = False
+                Wrap = False
+              end
+            end
+            object GBInit: TGroupBox
+              Left = 0
+              Top = 0
+              Width = 120
+              Height = 80
+              Caption = 'Initial state'
+              TabOrder = 0
+              object LPorteeInit: TLabel
+                Left = 8
+                Top = 20
+                Width = 23
+                Height = 13
+                Caption = 'Litter'
+              end
+              object CBStadeInit: TComboBox
+                Left = 16
+                Top = 48
+                Width = 88
+                Height = 21
+                Style = csDropDownList
+                ItemHeight = 13
+                ParentShowHint = False
+                ShowHint = True
+                TabOrder = 1
+                OnChange = CBStadeInitChange
+                Items.Strings = (
+                  'Service'
+                  'Farrowing')
+              end
+              object PBPorteeInit: TPBSuperSpin
+                Left = 52
+                Top = 16
+                Width = 52
+                Height = 22
+                Cursor = crDefault
+                Alignment = taRightJustify
+                Decimals = 0
+                MaxValue = 8.000000000000000000
+                MinValue = 1.000000000000000000
+                NumberFormat = Standard
+                OnChange = PBPorteeInitChange
+                ParentShowHint = False
+                ShowHint = True
+                TabOrder = 0
+                EditorEnabled = False
+                Increment = 1.000000000000000000
+                RoundValues = False
+                Wrap = False
+              end
+            end
+          end
+          object GBAlim: TGroupBox
+            Left = 124
+            Top = 0
+            Width = 492
+            Height = 184
+            Align = alClient
+            Caption = 'Feeding'
+            TabOrder = 1
+            object PAlim: TPanel
+              Left = 8
+              Top = 128
+              Width = 400
+              Height = 48
+              BevelOuter = bvNone
+              TabOrder = 1
+              object LRation: TLabel
+                Left = 0
+                Top = 28
+                Width = 90
+                Height = 13
+                Caption = 'Feed rationing plan'
+              end
+              object LSeqAli: TLabel
+                Left = 0
+                Top = 4
+                Width = 97
+                Height = 13
+                Caption = 'Feed sequence plan'
+              end
+              object CBRation: TComboBox
+                Left = 112
+                Top = 24
+                Width = 240
+                Height = 21
+                AutoCompleteDelay = 1500
+                Style = csDropDownList
+                ItemHeight = 13
+                ParentShowHint = False
+                ShowHint = True
+                Sorted = True
+                TabOrder = 1
+                OnChange = CBRationChange
+              end
+              object CBSeqAli: TComboBox
+                Left = 112
+                Top = 0
+                Width = 240
+                Height = 21
+                AutoCompleteDelay = 1500
+                Style = csDropDownList
+                ItemHeight = 13
+                ParentShowHint = False
+                ShowHint = True
+                Sorted = True
+                TabOrder = 0
+                OnChange = CBSeqAliChange
+              end
+              object ChkRation: TCheckBox
+                Left = 360
+                Top = 26
+                Width = 17
+                Height = 17
+                TabStop = False
+                TabOrder = 2
+                OnClick = ChkRationClick
+              end
+              object ChkSeqAli: TCheckBox
+                Left = 360
+                Top = 2
+                Width = 17
+                Height = 17
+                TabStop = False
+                TabOrder = 3
+                OnClick = ChkSeqAliClick
+              end
+              object CBRationProfil: TComboBox
+                Left = 112
+                Top = 24
+                Width = 240
+                Height = 21
+                AutoCompleteDelay = 1500
+                Style = csDropDownList
+                Enabled = False
+                ItemHeight = 13
+                ItemIndex = 0
+                ParentShowHint = False
+                ShowHint = True
+                Sorted = True
+                TabOrder = 4
+                Text = '(Reference feed of the animal profile)'
+                Visible = False
+                OnChange = CBRationChange
+                Items.Strings = (
+                  '(Reference feed of the animal profile)')
+              end
+            end
+            object LBPortee: TListBox
+              Left = 8
+              Top = 16
+              Width = 400
+              Height = 108
+              Style = lbOwnerDrawFixed
+              ItemHeight = 13
+              Items.Strings = (
+                'Litter 1'
+                'Litter 2'
+                'Litter 3'
+                'Litter 4'
+                'Litter 5'
+                'Litter 6'
+                'Litter 7'
+                'Litter 8')
+              TabOrder = 0
+              OnClick = LBPorteeClick
+              OnDrawItem = LBPorteeDrawItem
+            end
+          end
+        end
+        object GBParam: TGroupBox
+          Left = 0
+          Top = 0
+          Width = 616
+          Height = 96
+          Align = alTop
+          Caption = 'Parameters'
+          TabOrder = 0
+          object LProfil: TLabel
+            Left = 8
+            Top = 20
+            Width = 62
+            Height = 13
+            Caption = 'Animal profile'
+          end
+          object LLoge: TLabel
+            Left = 8
+            Top = 44
+            Width = 39
+            Height = 13
+            Caption = 'Housing'
+          end
+          object LDureeLact: TLabel
+            Left = 408
+            Top = 20
+            Width = 95
+            Height = 13
+            Caption = 'Duration of lactation'
+          end
+          object LOptInit: TLabel
+            Left = 8
+            Top = 68
+            Width = 54
+            Height = 13
+            Hint = 'Initialization of body weight and backfat thickness'
+            Caption = 'Initialization'
+            ParentShowHint = False
+            ShowHint = True
+          end
+          object CBProfil: TComboBox
+            Left = 120
+            Top = 16
+            Width = 240
+            Height = 21
+            AutoCompleteDelay = 1500
+            Style = csDropDownList
+            ItemHeight = 13
+            ParentShowHint = False
+            ShowHint = True
+            Sorted = True
+            TabOrder = 0
+            OnChange = CBProfilChange
+          end
+          object CBLoge: TComboBox
+            Left = 120
+            Top = 40
+            Width = 240
+            Height = 21
+            AutoCompleteDelay = 1500
+            Style = csDropDownList
+            ItemHeight = 13
+            ParentShowHint = False
+            ShowHint = True
+            Sorted = True
+            TabOrder = 1
+            OnChange = CBLogeChange
+          end
+          object PBDureeLact: TPBSuperSpin
+            Left = 520
+            Top = 16
+            Width = 52
+            Height = 22
+            Cursor = crDefault
+            Alignment = taRightJustify
+            Decimals = 0
+            MaxValue = 28.000000000000000000
+            MinValue = 14.000000000000000000
+            NumberFormat = Standard
+            OnChange = PBDureeLactChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 2
+            EditorEnabled = False
+            Increment = 1.000000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+          object CBOptInit: TComboBox
+            Left = 120
+            Top = 64
+            Width = 240
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 13
+            ItemIndex = 0
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 3
+            Text = 'At each stage'
+            OnChange = CBOptInitChange
+            Items.Strings = (
+              'At each stage'
+              'At each litter'
+              'Only at the beginning of the simulation')
+          end
+        end
+      end
+      object PResSimul: TPanel
+        Left = 0
+        Top = 328
+        Width = 616
+        Height = 40
+        Align = alBottom
+        BevelOuter = bvNone
+        TabOrder = 2
+        object BBRapSimul: TBitBtn
+          Left = 112
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Show the simulation results as a report'
+          Caption = 'Report'
+          Enabled = False
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+            808080808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            808080808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+            808080808080808080808080808080808080808080808080808080FF00FFFF00
+            FF808080808080FF00FF00000000000000000000000000000000000000000000
+            0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+            00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+            00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+            0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+            00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+            C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+            80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+            8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+            FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+            80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+            8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+            00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+            00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+            00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+            C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+            8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+            FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+            0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+            8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+            808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+            0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = BBRapSimulClick
+        end
+        object BBResSimul: TBitBtn
+          Left = 16
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Show the simulation results as graphs'
+          Caption = 'Graphs'
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
+            000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
+            033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
+            B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
+            C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
+            033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
+            3000773373FFFF73377733333700073333333333377777333333333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = BBResSimulClick
+        end
+        object BBTabSimul: TBitBtn
+          Left = 208
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Show the simulation results as a table'
+          Caption = 'Table'
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            33333FFFFFFFFFFFFFFF000000000000000077777777777777770FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07F3FF3FF3FF3FFF70F00F00F00F000F07F773773773777370FFFFFFFFFFF
+            FFF07FFFFFFFFFFFFFF70CCCCCCCCCCCCCC07777777777777777088CCCCCCCCC
+            C8807FF7777777777FF700000000000000007777777777777777333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          Visible = False
+          OnClick = BBTabSimulClick
+        end
+      end
+    end
+    object CompSimul: TTabSheet
+      HelpContext = 4420
+      Caption = 'Comparison'
+      ImageIndex = 1
+      object CBCompSimul1: TCheckBox
+        Left = 8
+        Top = 10
+        Width = 80
+        Height = 17
+        TabStop = False
+        Caption = 'Simulation 1'
+        Checked = True
+        State = cbChecked
+        TabOrder = 0
+        OnClick = CBCompSimul1Click
+      end
+      object CBCompSimul2: TCheckBox
+        Left = 8
+        Top = 42
+        Width = 80
+        Height = 17
+        TabStop = False
+        Caption = 'Simulation 2'
+        Checked = True
+        State = cbChecked
+        TabOrder = 2
+        OnClick = CBCompSimul2Click
+      end
+      object CBCompSimul3: TCheckBox
+        Left = 8
+        Top = 74
+        Width = 80
+        Height = 17
+        TabStop = False
+        Caption = 'Simulation 3'
+        Checked = True
+        State = cbChecked
+        TabOrder = 4
+        OnClick = CBCompSimul3Click
+      end
+      object CBCompSimul4: TCheckBox
+        Left = 8
+        Top = 106
+        Width = 80
+        Height = 17
+        TabStop = False
+        Caption = 'Simulation 4'
+        Checked = True
+        State = cbChecked
+        TabOrder = 6
+        OnClick = CBCompSimul4Click
+      end
+      object CBCompSimul5: TCheckBox
+        Left = 8
+        Top = 138
+        Width = 80
+        Height = 17
+        TabStop = False
+        Caption = 'Simulation 5'
+        Checked = True
+        State = cbChecked
+        TabOrder = 8
+        OnClick = CBCompSimul5Click
+      end
+      object CBSimulComp1: TComboBox
+        Left = 120
+        Top = 8
+        Width = 240
+        Height = 21
+        AutoCompleteDelay = 1500
+        Style = csDropDownList
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        Sorted = True
+        TabOrder = 1
+        OnChange = CBSimulComp1Change
+      end
+      object CBSimulComp2: TComboBox
+        Left = 120
+        Top = 40
+        Width = 240
+        Height = 21
+        AutoCompleteDelay = 1500
+        Style = csDropDownList
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        Sorted = True
+        TabOrder = 3
+        OnChange = CBSimulComp2Change
+      end
+      object CBSimulComp3: TComboBox
+        Left = 120
+        Top = 72
+        Width = 240
+        Height = 21
+        AutoCompleteDelay = 1500
+        Style = csDropDownList
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        Sorted = True
+        TabOrder = 5
+        OnChange = CBSimulComp3Change
+      end
+      object CBSimulComp4: TComboBox
+        Left = 120
+        Top = 104
+        Width = 240
+        Height = 21
+        AutoCompleteDelay = 1500
+        Style = csDropDownList
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        Sorted = True
+        TabOrder = 7
+        OnChange = CBSimulComp4Change
+      end
+      object CBSimulComp5: TComboBox
+        Left = 120
+        Top = 136
+        Width = 240
+        Height = 21
+        AutoCompleteDelay = 1500
+        Style = csDropDownList
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        Sorted = True
+        TabOrder = 9
+        OnChange = CBSimulComp5Change
+      end
+      object PCompSimul: TPanel
+        Left = 0
+        Top = 328
+        Width = 616
+        Height = 40
+        Align = alBottom
+        BevelOuter = bvNone
+        TabOrder = 10
+        object BBCompSimul: TBitBtn
+          Left = 16
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Show the simulation results as graphs'
+          Caption = 'Graphs'
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
+            000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
+            033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
+            B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
+            C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
+            033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
+            3000773373FFFF73377733333700073333333333377777333333333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = BBCompSimulClick
+        end
+      end
+    end
+    object SensSimul: TTabSheet
+      HelpContext = 4430
+      Caption = 'Sensitivity analysis'
+      ImageIndex = 2
+      object LSimulSens: TLabel
+        Left = 8
+        Top = 20
+        Width = 78
+        Height = 13
+        Caption = 'Single simulation'
+      end
+      object CBSimulSens: TComboBox
+        Left = 120
+        Top = 16
+        Width = 240
+        Height = 21
+        AutoCompleteDelay = 1500
+        Style = csDropDownList
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        Sorted = True
+        TabOrder = 0
+        OnChange = CBSimulSensChange
+      end
+      object PSensSimul: TPanel
+        Left = 0
+        Top = 328
+        Width = 616
+        Height = 40
+        Align = alBottom
+        BevelOuter = bvNone
+        TabOrder = 3
+        object BBSensSimul: TBitBtn
+          Left = 16
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Show the simulation results as graphs'
+          Caption = 'Graphs'
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
+            000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
+            033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
+            B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
+            C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
+            033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
+            3000773373FFFF73377733333700073333333333377777333333333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = BBSensSimulClick
+        end
+      end
+      object GBEtatVar: TGroupBox
+        Left = 0
+        Top = 120
+        Width = 400
+        Height = 72
+        Caption = 'State(s) to be modified'
+        TabOrder = 2
+        Visible = False
+        object LPorteeVar: TLabel
+          Left = 8
+          Top = 20
+          Width = 34
+          Height = 13
+          Caption = 'Litter(s)'
+        end
+        object LAVar: TLabel
+          Left = 144
+          Top = 20
+          Width = 9
+          Height = 13
+          Caption = 'to'
+        end
+        object LStadeVar: TLabel
+          Left = 8
+          Top = 44
+          Width = 39
+          Height = 13
+          Caption = 'Stage(s)'
+        end
+        object CBStadeVar: TComboBox
+          Left = 80
+          Top = 40
+          Width = 120
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          Text = 'All'
+          Items.Strings = (
+            'Gestation'
+            'Lactation'
+            'All')
+        end
+        object PBPorteeVarInit: TPBSuperSpin
+          Left = 80
+          Top = 16
+          Width = 52
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 8.000000000000000000
+          MinValue = 1.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBPorteeVarInitChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          EditorEnabled = False
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBPorteeVarFin: TPBSuperSpin
+          Left = 168
+          Top = 16
+          Width = 52
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 8.000000000000000000
+          MinValue = 1.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBPorteeVarFinChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          EditorEnabled = False
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+      end
+      object GBModulation: TGroupBox
+        Left = 0
+        Top = 48
+        Width = 400
+        Height = 72
+        Caption = 'Criterion'
+        TabOrder = 1
+        object LVariable: TLabel
+          Left = 8
+          Top = 20
+          Width = 38
+          Height = 13
+          Caption = 'Variable'
+        end
+        object LVariation: TLabel
+          Left = 8
+          Top = 44
+          Width = 58
+          Height = 13
+          Caption = 'Variation (%)'
+        end
+        object PBVariation: TPBSuperSpin
+          Left = 80
+          Top = 40
+          Width = 52
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 30.000000000000000000
+          MinValue = 1.000000000000000000
+          NumberFormat = Standard
+          TabOrder = 1
+          Value = 5.000000000000000000
+          EditorEnabled = False
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object CBVariable: TComboBox
+          Left = 80
+          Top = 16
+          Width = 240
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 0
+          OnChange = CBVariableChange
+          Items.Strings = (
+            'Initial age'
+            'Initial body weight'
+            'Initial backfat thickness'
+            'Ambient temperature'
+            'Standing time'
+            'Quantity of feed'
+            'Lysine'
+            'Methionine'
+            'Methionine + Cystine'
+            'Tryptophan'
+            'Threonine'
+            'Phenylalanine'
+            'Phenylalanine + Tyrosine'
+            'Leucine'
+            'Isoleucine'
+            'Valine'
+            'Histidine'
+            'Arginine')
+        end
+      end
+    end
+  end
+end
Index: UFRapportAli.dfm
===================================================================
--- UFRapportAli.dfm	(révision 0)
+++ UFRapportAli.dfm	(révision 3)
@@ -0,0 +1,546 @@
+object FRapportAli: TFRapportAli
+  Left = 200
+  Top = 200
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Report of feed composition'
+  ClientHeight = 200
+  ClientWidth = 240
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object SBRapAliElem: TSpeedButton
+    Left = 208
+    Top = 8
+    Width = 24
+    Height = 24
+    Hint = 'View the report for the elementary composition'
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000030000000100000000100
+      18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+      808080808080808080808080808080808080808080808080808080FF00FFFF00
+      FF808080808080FF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+      00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+      00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+      80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+      00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+      C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+      FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+      C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+      8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+      C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+      808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBRapAliElemClick
+  end
+  object SBRapAliAA: TSpeedButton
+    Left = 208
+    Top = 40
+    Width = 24
+    Height = 24
+    Hint = 'View the report for the amino acids'
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000030000000100000000100
+      18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+      808080808080808080808080808080808080808080808080808080FF00FFFF00
+      FF808080808080FF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+      00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+      00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+      80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+      00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+      C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+      FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+      C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+      8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+      C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+      808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBRapAliAAClick
+  end
+  object SBRapAliAG: TSpeedButton
+    Left = 208
+    Top = 72
+    Width = 24
+    Height = 24
+    Hint = 'View the report for the fatty acids'
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000030000000100000000100
+      18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+      808080808080808080808080808080808080808080808080808080FF00FFFF00
+      FF808080808080FF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+      00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+      00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+      80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+      00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+      C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+      FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+      C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+      8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+      C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+      808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBRapAliAGClick
+  end
+  object SBRapAliMin: TSpeedButton
+    Left = 208
+    Top = 104
+    Width = 24
+    Height = 24
+    Hint = 'View the report for the minerals'
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000030000000100000000100
+      18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+      808080808080808080808080808080808080808080808080808080FF00FFFF00
+      FF808080808080FF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+      00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+      00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+      80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+      00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+      C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+      FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+      C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+      8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+      C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+      808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBRapAliMinClick
+  end
+  object ChkRapAliElem: TCheckBox
+    Left = 8
+    Top = 10
+    Width = 200
+    Height = 17
+    Caption = 'Elementary composition'
+    TabOrder = 0
+    OnClick = ChkRapAliClick
+  end
+  object ChkRapAliAA: TCheckBox
+    Left = 8
+    Top = 42
+    Width = 200
+    Height = 17
+    Caption = 'Amino acids'
+    TabOrder = 1
+    OnClick = ChkRapAliClick
+  end
+  object ChkRapAliAG: TCheckBox
+    Left = 8
+    Top = 74
+    Width = 200
+    Height = 17
+    Caption = 'Fatty acids'
+    TabOrder = 2
+    OnClick = ChkRapAliClick
+  end
+  object CHKRapAliMin: TCheckBox
+    Left = 8
+    Top = 106
+    Width = 200
+    Height = 17
+    Caption = 'Minerals'
+    TabOrder = 3
+    OnClick = ChkRapAliClick
+  end
+  object PMat: TPanel
+    Left = 0
+    Top = 136
+    Width = 240
+    Height = 24
+    BevelOuter = bvNone
+    TabOrder = 4
+    object SBRapAliMat: TSpeedButton
+      Left = 208
+      Top = 0
+      Width = 24
+      Height = 24
+      Hint = 'View the report for the feed ingredients'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+        808080808080808080808080808080808080808080808080808080FF00FFFF00
+        FF808080808080FF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+        00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+        00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+        C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+        FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+        C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+        8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+        808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBRapAliMatClick
+    end
+    object ChkRapAliMat: TCheckBox
+      Left = 8
+      Top = 2
+      Width = 200
+      Height = 17
+      Caption = 'Feed ingredients'
+      TabOrder = 0
+      OnClick = ChkRapAliClick
+    end
+  end
+  object BBPrint: TBitBtn
+    Left = 64
+    Top = 168
+    Width = 80
+    Height = 24
+    Hint = 'Print the selected reports'
+    Caption = 'Print'
+    Enabled = False
+    Glyph.Data = {
+      76010000424D7601000000000000760000002800000020000000100000000100
+      0400000000000001000000000000000000001000000000000000000000000000
+      80000080000000808000800000008000800080800000C0C0C000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDD00000000000DDDDD88888888888DDDD07777777770
+      70DDD8DDDDDDDDD8D8DD000000000000070D8888888888888D8D0777777BBB77
+      000D8DDDDDDDDDDD888D077777788877070D8DDDDDDDDDDD8D8D000000000000
+      07708888888888888DD807777777777070708DDDDDDDDDD8D8D8D00000000007
+      0700D8888888888D8D88DD0FFFFFFFF07070DD8DDDDDDDD8D8D8DDD0F00000F0
+      000DDDD8D88888D8888DDDD0FFFFFFFF0DDDDDD8DDDDDDDD8DDDDDDD0F00000F
+      0DDDDDDD8D88888D8DDDDDDD0FFFFFFFF0DDDDDD8DDDDDDDD8DDDDDDD0000000
+      00DDDDDDD888888888DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+    NumGlyphs = 2
+    TabOrder = 5
+    OnClick = BBPrintClick
+  end
+  object BBClose: TBitBtn
+    Left = 152
+    Top = 168
+    Width = 80
+    Height = 25
+    Cancel = True
+    Caption = 'Close'
+    ModalResult = 2
+    NumGlyphs = 2
+    TabOrder = 6
+  end
+  object PD: TPrintDialog
+    Options = [poPageNums]
+    Left = 88
+    Top = 136
+  end
+end
Index: UVariables.pas
===================================================================
--- UVariables.pas	(révision 0)
+++ UVariables.pas	(révision 3)
@@ -0,0 +1,630 @@
+unit UVariables;
+
+interface
+
+uses
+  Classes, SysUtils, Graphics, Registry, IniFiles;
+
+const
+  //URL           = 'http://w3.rennes.inra.fr/inraporc/';
+  URL_HTTPS     = 'https://inraporc.inra.fr/inraporc/';
+  clPink        = TColor($FF80FF);
+  MILLI         = 1E-03;
+  MICRO         = 1E-06;
+  NANO          = 1E-09;
+  PICO          = 1E-12;
+  INFINI        = 1E99;
+  MAX_MP        = 50;
+  NB_CYCLES     = 8;
+  NB_COL_TRUIE  = 78;
+  MAX_LIG_TRUIE = 1500;
+  NB_COL_PORC   = 113;
+  MAX_LIG_PORC  = 1000;
+  MAX_RULE      = 10;
+  DefaultCoefNR: array[1..NB_CYCLES] of double = (1.11, 1.11, 1.03, 0.77, 0.60,
+    0.41, 0.38, 0.31);
+  // Valeurs et coeficients �nergetiques
+  // MAT, Lip, Amidon, Sucres, CB, Residu
+  // EB, ED, EM, EM/ED, EN/EM, EN
+  ValEnergie: array[1..6, 1..6] of double = (
+    (22.64, 23.31, 20.34, 0, 0, 12.08),
+    (38.76, 39.00, 39.00, 1, 35.01 / 39.00, 35.01),
+    (17.54, 17.45, 17.45, 1, 14.32 / 17.45, 14.32),
+    (16.71, 16.62, 16.62, 1, 11.94 / 16.62, 11.94),
+    (18.58, 16.61, 15.51, 15.51 / 16.61, 8.64 / 15.51, 8.64),
+    (18.58, 16.61, 15.51, 15.51 / 16.61, 8.64 / 15.51, 8.64));
+  // Coefficients li�s au poids de carcasse
+  aPVV         = 0.8901791;
+  bPVV         = 1.0142019;
+  aTPQ         = 0.20693514;
+  bTPQ         = 0.77847131;
+  TeteTPQ      = 0.76138234;
+  PiedsTPQ     = 0.22435546;
+  QueueTPQ     = 1 - TeteTPQ - PiedsTPQ;
+  aLangue      = 0.005;
+  aHampe       = 0.0026859;
+  bHampe       = 1.06955354;
+  aPanne       = 0.00056132;
+  bPanne       = 1.68632852;
+  bCarcasse    = 1.058788;
+  // Coefficient pour passer du poids vif au poids vif vide
+  PV2PVV       = 0.95;
+  // Coefficient pour passer du poids vif vide au poids de prot�ines
+  //  PVV2Prot = 0.16 ;
+  // Coefficient pour passer du poids vif au poids de prot�ines
+  //  PV2Prot = PV2PVV * PVV2Prot ;
+  // PORC CROISSANCE
+  Pallom       = 8.7845;
+  Lallom       = 1.2566;
+  Ballom       = 0.94406;
+  kProtJaap    = 0.52;
+  GEProtJaap   = 23.8;
+  varUrinEloss = 31.1;
+  NEact60h     = 150 / 2.9;
+  NEPD         = 0.484;
+  FHPint       = 436.47;
+  FHPpente     = 0.1298 / 0.74;
+  kBR          = 0.616 * 1.15;
+  // Caract�ristique endog�ne AA pour calcul CUD apparent
+  AAendogene: array[0..12] of double = (8.5167, 0.3133, 0.0867, 0.1400, 0.1167,
+    0.3300, 0.2733, 0.2233, 0.4267, 0.2567, 0.3567, 0.1300, 0.2800);
+  // Besoin en AA pour l'entretien (turnover + peau)
+  AAm75: array[0..12] of double = (0.3611 + 0.1044, 0.0239 + 0.0045,
+    0.0070 + 0.0010, 0.0047 + 0.0047, 0.0035 + 0.0009, 0.0138 + 0.0033,
+    0.0137 + 0.0030, 0.0090 + 0.0019, 0.0271 + 0.0053, 0.0124 + 0.0025,
+    0.0164 + 0.0038, 0.0102 + 0.0013, 0.000 + 0.000);
+  // Rendement d'utilisation des AA
+  kAA: array[0..12] of double = (0.85, 0.72, 0.64, 0.37, 0.57, 0.61, 0.82,
+    0.67, 0.76, 0.67, 0.71, 0.93, 1.54);
+  // Composition des prot�ines corporelles
+  AAbody: array[0..12] of double = (1, 0.0696, 0.0188, 0.0103, 0.0095, 0.0370,
+    0.0378, 0.0286, 0.0717, 0.0346, 0.0467, 0.0279, 0.0626);
+  // TRUIE REPRODUCTRICE
+  DureeGest = 114;
+  EEGest    = 0.440; // Entretien gestation (MJ/kg^0.75)
+  EELact    = 0.440; // Entretien lactation (MJ/kg^0.75)
+  TCIInd    = 20;    // Temp�rature critique individuel (�C)
+  TCICol    = 15;    // Temp�rature critique collectif (�C)
+  EThInd    = 16.5;  // Thermor�gulation individuel (kJ/kg^0.75/�C)
+  EThCol    = 9.0;   // Thermor�gulation collectif (kJ/kg^0.75/�C)
+  KU        = 0.5;   // Efficacit� �nergie ut�rus
+  KProt     = 0.6;   // Efficacit� �nergie prot�ines
+  KLip      = 0.8;   // Efficacit� �nergie lipides
+  KGest     = 0.77;  // Efficacit� moyenne gestation
+  KL        = 0.72;  // Efficacit� �nergie lait
+  KResL     = 0.87;  // Efficacit� �nergie r�serves lait
+  KResGest  = 0.9;   // Efficacit� �nergie r�serves gestation
+  KLysGest  = 0.68;  // Efficacit� lysine gestation
+  KLysLact  = 0.77;  // Efficacit� lysine lactation
+  LysEnt    = 0.036; // Lysine entretien (g/kg^0.75)
+  ECU       = 5.43;  // Energie contenus ut�rins (MJ/(kg porcelets))
+  APN       = -0.333 * 13.66 - 45.94 * 0.178;
+  BPN       = -0.333 * 0.221 - 1.331 * 0.178;
+  // lys, met, cys, trp, thr, phe, tyr, leu, ile, val, hst, arg
+  ProtIdGest: array[1..12] of double =
+    (100, 28, 37, 20, 72, 60, 40, 100, 65, 75, 30, 0);
+  ProtIdLact: array[1..12] of double =
+    (100, 30, 30, 19, 66, 60, 55, 105, 60, 85, 40, 67);
+  ProtIdEnt: array[1..12] of double =
+    (100, 25, 114, 31, 147, 50, 53, 64, 44, 55, 0, 0);
+  ProtIdRet: array[1..12] of double =
+    (100, 24.9, 22.5, 15, 58, 60.7, 36.1, 102.1, 50.3, 71.6, 35.4, 103.7);
+  ProtIdLait: array[1..12] of double =
+    (100, 26, 21, 17, 59, 54, 58, 116, 53, 73, 43, 66);
+  // Param�tres c et d de la fonction Gamma
+  cGammaFrais = 0.075;
+  cGammaMS    = 0.066;
+  cGammaED    = 1.04;
+  cGammaEM    = 1.00;
+  cGammaEN    = 0.75;
+  dGamma      = 0.60;
+
+type
+  // Composition chimique
+  CompositionChimique = record
+    // Composition �l�mentaire
+    MS, MM, MO, Lip, MAT, Amidon, Sucres,
+    // CUD Truie / Croissance
+    dMO_T, dMO_C, dLip_T, dLip_C, dMAT_T, dMAT_C,
+    // Energie
+    EB, ED_T, ED_C, EM_T, EM_C, EN_T, EN_C,
+    // Min�raux
+    Ca, P, Na, K, Cl, Mg, Cu, Zn, Fe, Mn, S, Se, Co, Mb, I,
+    Phytase, ActPhytE, ActPhytM, PdigG, PdigF,
+    // Acides gras
+    C6C8C10, C12_0, C14_0, C16_0, C16_1, C18_0, C18_1, C18_2, C18_3, C18_4,
+    C20_0, C20_1, C20_4, C20_5, C22_0, C22_1, C22_5, C22_6, C24_0,
+    AGsLip,
+    // Fibres
+    CB, dCB_T, dCB_C, Residu, dResidu_T, dResidu_C,
+    NDF, ADF, ADL, Parois: double;
+  end;
+  // Composition en mati�res premi�res
+  CompositionMatiere = record
+    NbMat:   integer;
+    NumMat:  array[0..MAX_MP] of integer;
+    Qte, MS: array[0..MAX_MP] of double;
+  end;
+  // Mati�re premi�re
+  RecMatiere = record
+    Num:  integer;
+    Nom:  string[35];
+    Memo: string[255]; // Commentaires
+    Typ:  integer;     // 0=NonRenseign�, ..., 9=NonR�f�renc�
+    CC:   CompositionChimique;
+    AAtotal, CUDAA: array[0..12] of double;
+  end;
+  PRecMatiere = ^RecMatiere;
+  // Aliment
+  RecAliment  = record
+    Num:          integer;
+    Nom:          string[35];
+    Memo:         string[255]; // Commentaires
+    Typ:          integer;     // 0=NonRenseign�, 1=PorcCroissance, 2=Truie
+    Presentation: integer;     // 0=Granul�s, 1=Farine
+    Prix:         double;
+    MP:           CompositionMatiere;
+    CC:           CompositionChimique;
+    AAtotal, CUDAA: array[0..12] of double;
+  end;
+  PRecAliment = ^RecAliment;
+  // Import / export
+  RecCSV      = record
+    Nom:  string;
+    Memo: string[255]; // Commentaires
+    Typ:  integer;     // <10=Mati�re premi�re (Type), >9=Aliment (Type, Pr�sentation)
+    CC:   CompositionChimique;
+    AAtotal, CUDAA: array[0..12] of double;
+  end;
+  PRecCSV        = ^RecCSV;
+  // S�quence alimentaire truie reproductrice
+  RecRuleSeqAliT = record
+    ModeFin:          integer; // -1=Fin, 0=Dur�e
+    ValFin:           integer;
+    NumAli1, NumAli2: integer;
+    PctAli1Init, PctAli1Fin: integer;
+  end;
+
+  RecSeqAliT = record
+    Num:        integer;
+    Nom:        string[25];
+    Memo:       string[255]; // Commentaires
+    NbRuleGest: integer;
+    RuleGest:   array[1..MAX_RULE] of RecRuleSeqAliT;
+    NbRuleLact: integer;
+    RuleLact:   array[1..MAX_RULE] of RecRuleSeqAliT;
+    NbRuleISSF: integer;
+    RuleISSF:   array[1..MAX_RULE] of RecRuleSeqAliT;
+  end;
+  PRecSeqAliT    = ^RecSeqAliT;
+  // Plan de rationnement truie reproductrice
+  RecRuleRationT = record
+    ModeFin:  integer; // -1=Fin, 0=Dur�e
+    ValFin:   integer;
+    Equation: integer; // 0=Constant, 1=Lin�aire, 2=Curvilin�aire 3=Lin�aire-plateau
+    a, b, c:  double;
+    d:        integer;
+  end;
+
+  RecRationT = record
+    Num:        integer;
+    Nom:        string[25];
+    Memo:       string[255]; // Commentaires
+    NbRuleGest: integer;
+    RuleGest:   array[1..MAX_RULE] of RecRuleRationT;
+    UniteGest:  integer; // 0=Quantit�, 1=ED, 2=EM, 3=EN, 4=MS
+    NbRuleLact: integer;
+    RuleLact:   array[1..MAX_RULE] of RecRuleRationT;
+    UniteLact:  integer; // 0=Quantit�, 1=ED, 2=EM, 3=EN, 4=MS
+    NbRuleISSF: integer;
+    RuleISSF:   array[1..MAX_RULE] of RecRuleRationT;
+    UniteISSF:  integer; // 0=Quantit�, 1=ED, 2=EM, 3=EN, 4=MS
+  end;
+  PRecRationT  = ^RecRationT;
+  TabCycle     = array[1..NB_CYCLES] of integer;
+  // Logement truie reproductrice
+  RecRuleLogeT = record
+    ModeFin: integer; // -1=Fin, 0=Dur�e
+    ValFin:  integer;
+    Typ, Sol, Temp, Act: integer;
+  end;
+
+  RecLogeT = record
+    Num:        integer;
+    Nom:        string[25];
+    Memo:       string[255]; // Commentaires
+    NbRuleGest: integer;
+    RuleGest:   array[1..MAX_RULE] of RecRuleLogeT;
+    NbRuleLact: integer;
+    RuleLact:   array[1..MAX_RULE] of RecRuleLogeT;
+    NbRuleISSF: integer;
+    RuleISSF:   array[1..MAX_RULE] of RecRuleLogeT;
+  end;
+  PRecLogeT = ^RecLogeT;
+  // Performances truies (Truie)
+  RecTruies = record
+    Nombre:          integer;
+    AgeSail:         integer;
+    PdsSail, P2Sail: double;
+    PdsAvMB, PdsApMB, P2MB: double;
+  end;
+  // Performances truies (Porcelets)
+  RecPorcelets = record
+    NesTotaux, NesVivants, Sevres: double;
+    PdsNais, PdsSev: double;
+  end;
+  // Profil truie reproductrice
+  RecProfilT = record
+    Num:        integer;
+    Nom:        string[25];
+    Memo:       string[255]; // Commentaires
+    Truies:     array[1..NB_CYCLES] of RecTruies;
+    Porcelets:  array[1..NB_CYCLES] of RecPorcelets;
+    SeqAli:     integer;
+    Unite:      integer; // 0=Quantit�, 1=ED, 2=EM, 3=EN, 4=MS
+    Gest, Lact: array[1..NB_CYCLES] of double;
+    Loge:       integer;
+    DureeLact:  integer;
+    CoefEntretienGest, CoefEntretienLact, RatioLipProt: double;
+    CoefNR:     array[1..NB_CYCLES] of double;
+    // GTTT (aide � la saisie)
+    NbTruies, AgeMB1: integer;
+    ISO:        double;
+    PVSail1, PVAdulte, PertePVPrim, PertePVMult: double;
+    P2Sail1, P2Objectif, PerteP2Prim, PerteP2Mult: double;
+    NbVifs, NbMorts, NbSevres: double;
+    AgeSevr:    integer;
+    PVNais, PVSevr: double;
+    ConsoLact, ConsoGest: double;
+    // Ajustement du poids apr�s mise-bas
+    pmax, a, b: double;
+  end;
+  PRecProfilT = ^RecProfilT;
+  // Simulation truie reproductrice
+  RecSimulT   = record
+    Num:     integer;
+    Nom:     string[25];
+    Memo:    string[255]; // Commentaires
+    Profil, Logement: integer;
+    DureeLact, DureeISSF: integer; // Conduite (DureeISSF n'est plus utilis�)
+    OptInit: integer; // Option de r�initialisation (PV et P2)
+    StadeInit, StadeFin: integer;
+    SeqAli, Ration: array[1..NB_CYCLES] of integer;
+  end;
+  PRecSimulT   = ^RecSimulT;
+  // R�sultats de simulation truie reproductrice
+  TabResSimulT = record
+    TabResult: array[1..NB_COL_TRUIE, 1..MAX_LIG_TRUIE] of double;
+    NbJSim:    integer;
+  end;
+  PTabResSimulT = ^TabResSimulT;
+
+  RecTabSimulT = record
+    Ok:        boolean;
+    Simul:     integer;
+    Variation: double;
+    Result:    PTabResSimulT;
+  end;
+  // S�quence alimentaire porc croissance
+  RecRuleSeqAliP = record
+    ModeFin:          integer; // -1=Fin, 0=Dur�e, 1=Age, 2=PoidsVif, 3=CumulAliment
+    ValFin:           double;
+    NumAli1, NumAli2: integer;
+    PctAli1Init, PctAli1Fin: integer;
+  end;
+
+  RecSeqAliP = record
+    Num:    integer;
+    Nom:    string[25];
+    Memo:   string[255]; // Commentaires
+    NbRule: integer;
+    Rule:   array[1..MAX_RULE] of RecRuleSeqAliP;
+  end;
+  PRecSeqAliP       = ^RecSeqAliP;
+  // Plan de rationnement porc croissance
+  RecRuleRationPold = record
+    ModeFin:  integer;
+    // -1=Fin, 0=Dur�e, 1=Age, 2=PoidsVif, 3=CumulAliment, 4-8=Consommation (Aliment, MS, ED, EM, EN)
+    ValFin:   double;
+    Unite:    integer; // 0=Quantit�, 1=ED, 2=EM, 3=EN, 4=MS
+    Equation: integer;
+    // 0=AdLib, 1=Constant, 2=f(PV), 3=a+b*PV, 4=a*PV^b, 5=a*(1-exp(-b*PV)), 6=f(dur�e), 7=a+b*dur�e, 8=a+b*dur�e(step), 9=%AdLib
+    a, b:     double;
+  end;
+
+  RecRationPold = record
+    Num:    integer;
+    Nom:    string[25];
+    Memo:   string[255]; // Commentaires
+    NbRule: integer;
+    Rule:   array[1..MAX_RULE] of RecRuleRationPold;
+  end;
+  PRecRationPold = ^RecRationPold;
+
+  RecRuleRationP = record
+    ModeFin:    integer;
+    // -1=Fin, 0=Dur�e, 1=Age, 2=PoidsVif, 3=CumulAliment, 4-8=Consommation (Aliment, MS, ED, EM, EN)
+    ValFin:     double;
+    Gaspillage: double;
+    RuleType:   integer; // 0=%AdLib, 1=Constant, 2=f(PV), 3=f(dur�e)
+    Unite:      integer; // 0=Quantit�, 1=ED, 2=EM, 3=EN, 4=MS
+    EqDuree:    integer; // f(dur�e): 0=a+b*jour, 1=a+b*semaine
+    EqPV:       integer; // f(PV): 0=a+b*PV, 1=a*PV^b, 2=a*(1-exp(-b*PV))
+    Percent, Quantity, aDuree, bDuree, aPV, bPV: double;
+  end;
+
+  RecRationP = record
+    Num:    integer;
+    Nom:    string[25];
+    Memo:   string[255]; // Commentaires
+    NbRule: integer;
+    Rule:   array[1..MAX_RULE] of RecRuleRationP;
+  end;
+  PRecRationP   = ^RecRationP;
+  // Profil porc croissance
+  RecProfilPold = record
+    Num:       integer;
+    Nom:       string[25];
+    Memo:      string[255]; // Commentaires
+    SeqAli:    integer;
+    Unite:     integer; // 0=Quantit�, 1=ED, 2=EM, 3=EN, 4=MS
+    Equation:  integer; // 0=a+b*PV, 1=a*PV^b, 2=a*(1-exp(-b*PV))
+    a, b:      double;
+    AgeInit:   integer;
+    PVInit:    double;
+    ProtInit:  double;
+    LipInit:   double;
+    ModeFin:   integer; // 0=Duree, 1=Poids vif
+    Duree:     integer;
+    PVFin:     double;
+    Carcasse:  double; // Rendement carcasse
+    PDMoy:     double;
+    BGompertz: double; // Comportement
+    Entretien: double;
+    PVmr2:     double;
+  end;
+  PRecProfilPold = ^RecProfilPold;
+
+  RecProfilP = record
+    Num:       integer;
+    Nom:       string[25];
+    Memo:      string[255]; // Commentaires
+    Sexe:      integer;     // 0=Castr�, 1=Femelle, 2=M�le, 3=Mixte
+    SeqAli, Ration: integer;
+    AgeInit:   integer;
+    PVInit:    double;
+    ProtInit:  double;
+    LipInit:   double;
+    ModeFin:   integer; // 0=Duree, 1=Poids vif
+    Duree:     integer;
+    PVFin:     double;
+    Carcasse:  double;  // Rendement carcasse
+    Unite:     integer; // 0=Quantit�, 1=ED, 2=EM, 3=EN, 4=MS
+    Equation:  integer; // 0=a+b*PV, 1=a*PV^b, 2=a*(1-exp(-b*PV))
+    a, b:      double;
+    PDMoy:     double;
+    BGompertz: double; // Comportement
+    Entretien: double;
+    PVmr2:     double;
+  end;
+  PRecProfilP = ^RecProfilP;
+  // Simulation porc croissance
+  RecSimulP   = record
+    Num:     integer;
+    Nom:     string[25];
+    Memo:    string[255]; // Commentaires
+    Profil, SeqAli, Ration: integer;
+    AgeInitProfil, PVInitProfil, ProtLipInitProfil, FinProfil: boolean;
+    AgeInit: integer;
+    PVInit, ProtInit, LipInit: double;
+    ModeFin: integer; // 0=Duree, 1=Poids vif
+    Duree:   integer;
+    PVFin:   double;
+  end;
+  PRecSimulP   = ^RecSimulP;
+  // R�sultats de simulation porc croissance
+  TabResSimulP = record
+    TabResult: array[1..NB_COL_PORC, 1..MAX_LIG_PORC] of double;
+    NbJSim:    integer;
+  end;
+  PTabResSimulP = ^TabResSimulP;
+
+  RecTabSimulP = record
+    Ok:        boolean;
+    Simul, Profil, SeqAli, Ration: integer;
+    Variation: double;
+    Result:    PTabResSimulP;
+  end;
+
+function CCVide: CompositionChimique; // initialisation
+
+var
+  ResInstance:   longword;
+  Reg:           TRegistry;
+  Lic:           TIniFile;
+  // Licence
+  MajorVersion, MinorVersion, ReleaseVersion, BuildVersion: integer;
+  VersionString: string;
+  MainLeft, MainTop, MainWidth, MainHeight: integer;
+  FirstName, LastName, Company: string;
+  Address1, Address2, PostalCode, City, Country: string;
+  Phone, Fax, Mail: string;
+  Course:        string;
+  LicenseType, LicenseNumber: integer;
+  Drive, Volume, FinalDate, SoftwareEnableKey: string;
+  // Configuration
+  CheckForUpdates: boolean;
+  Folder, NewFolder, Logo, NewLogo, ExcelFile, CurrencySign: string;
+  LanguageCode, NewLanguageCode: string;
+  AffCorrCUD, AffCalcAli, AffGraphAli, AffUnitProfilP, AffPDMoy,
+  AffPrecocite, AffEntretien, AffOptInit, AffSimulT, AffBesoin: boolean;
+  ConfRap, ConfDig, ConfTCompo, ConfTAA, ConfTAG, ConfTMacro, ConfTOligo,
+  ConfTFibres, ConfDCompo, ConfDAA: integer;
+  ConfAffMP:     boolean;
+  TypeAliGest:   integer;
+  Duree1, Duree3: integer;
+  Quantite1, Quantite2, Quantite3, Augment: double;
+  XTruie, XCrois: integer;
+  CarTete, CarLangue, CarPieds, CarQueue, CarHampe, CarPanne: boolean;
+  ConfigChanged, DataFolderExists, ConvertData: boolean;
+  FeedInfo, FatInfo, LeanInfo: integer;
+  UserFatShortName, UserFatLongName, UserLeanShortName, UserLeanLongName: string;
+  UserFatPVV, UserLeanPVV: boolean;
+  UserFatA, UserFatB, UserFatC, UserLeanA, UserLeanB, UserLeanC: double;
+  // Mati�re premi�re
+  NFicMatiere, NFicMatInraAfz: string; // nom du fichier
+  PMatiere:      PRecMatiere; // pointeur sur enregistrement
+  ListMatiere:   TList; // liste des enregistrements
+  NumWinMatiere: integer; // num�ro de fen�tre MDI
+  NumMatInraAfz: integer; // Nombre de mati�res premi�res INRA/AFZ
+  // Aliment
+  NFicAliment:   string; // nom du fichier
+  PAliment:      PRecAliment; // pointeur sur enregistrement
+  ListAliment:   TList; // liste des enregistrements
+  NumWinAliment: integer; // num�ro de fen�tre MDI
+  // Tarif
+  NumWinTarif:   integer; // num�ro de fen�tre MDI
+  // Import / export
+  NumWinImpExp:  integer; // num�ro de fen�tre MDI
+  // S�quence alimentaire truie reproductrice
+  NFicSeqAliT:   string; // nom du fichier
+  PSeqAliT:      PRecSeqAliT; // pointeur sur enregistrement
+  ListSeqAliT:   TList; // liste des enregistrements
+  NumWinSeqAliT: integer; // num�ro de fen�tre MDI
+  // Plan de rationnement truie reproductrice
+  NFicRationT:   string; // nom du fichier
+  PRationT:      PRecRationT; // pointeur sur enregistrement
+  ListRationT:   TList; // liste des enregistrements
+  NumWinRationT: integer; // num�ro de fen�tre MDI
+  // Logement truie reproductrice
+  NFicLogeT:     string; // nom du fichier
+  PLogeT:        PRecLogeT; // pointeur sur enregistrement
+  ListLogeT:     TList; // liste des enregistrements
+  NumWinLogeT:   integer; // num�ro de fen�tre MDI
+  // Profil truie reproductrice
+  NFicProfilT:   string; // nom du fichier
+  PProfilT:      PRecProfilT; // pointeur sur enregistrement
+  ListProfilT:   TList; // liste des enregistrements
+  NumWinProfilT: integer; // num�ro de fen�tre MDI
+  // Simulation truie reproductrice
+  NFicSimulT:    string; // nom du fichier
+  PSimulT:       PRecSimulT; // pointeur sur enregistrement
+  ListSimulT:    TList; // liste des enregistrements
+  NumWinSimulT:  integer; // num�ro de fen�tre MDI
+  // R�sultats de simulation truie reproductrice
+  PResSimulT:    PTabResSimulT;
+  TabSimulT:     array[1..5] of RecTabSimulT;
+  // Besoins en gestation (truie/�levage)
+  NumWinBesGestT: integer; // num�ro de fen�tre MDI
+  NumWinBesGestE: integer; // num�ro de fen�tre MDI
+  // Besoins en lactation (truie/�levage)
+  NumWinBesLactT: integer; // num�ro de fen�tre MDI
+  NumWinBesLactE: integer; // num�ro de fen�tre MDI
+  // S�quence alimentaire porc croissance
+  NFicSeqAliP:   string; // nom du fichier
+  PSeqAliP:      PRecSeqAliP; // pointeur sur enregistrement
+  ListSeqAliP:   TList; // liste des enregistrements
+  NumWinSeqAliP: integer; // num�ro de fen�tre MDI
+  // Plan de rationnement porc croissance
+  NFicRationPold: string; // nom du fichier
+  PRationPold:   PRecRationP; // pointeur sur enregistrement
+  NFicRationP:   string; // nom du fichier
+  PRationP:      PRecRationP; // pointeur sur enregistrement
+  ListRationP:   TList; // liste des enregistrements
+  NumWinRationP: integer; // num�ro de fen�tre MDI
+  // Profil porc croissance
+  NFicProfilPold: string; // nom du fichier
+  PProfilPold:   PRecProfilPold; // pointeur sur enregistrement
+  NFicProfilP:   string; // nom du fichier
+  PProfilP:      PRecProfilP; // pointeur sur enregistrement
+  ListProfilP:   TList; // liste des enregistrements
+  NumWinProfilP: integer; // num�ro de fen�tre MDI
+  // Simulation porc croissance
+  NFicSimulP:    string; // nom du fichier
+  PSimulP:       PRecSimulP; // pointeur sur enregistrement
+  ListSimulP:    TList; // liste des enregistrements
+  NumWinSimulP:  integer; // num�ro de fen�tre MDI
+  // R�sultats de simulation porc croissance
+  PResSimulP:    PTabResSimulP;
+  TabSimulP:     array[1..5] of RecTabSimulP;
+
+implementation
+
+function CCVide: CompositionChimique; // initialisation
+begin
+  with Result do
+  begin
+    MS := 1000;
+    MM := 0;
+    MO := 0;
+    Lip := 0;
+    MAT := 0;
+    Amidon := 0;
+    Sucres := 0;
+    dMO_T := 0;
+    dMO_C := 0;
+    dLip_T := 0;
+    dLip_C := 0;
+    dMAT_T := 0;
+    dMAT_C := 0;
+    EB := 0;
+    ED_T := 0;
+    ED_C := 0;
+    EM_T := 0;
+    EM_C := 0;
+    EN_T := 0;
+    EN_C := 0;
+    Ca := 0;
+    P  := 0;
+    Na := 0;
+    K  := 0;
+    Cl := 0;
+    Mg := 0;
+    Cu := 0;
+    Zn := 0;
+    Fe := 0;
+    Mn := 0;
+    S  := 0;
+    Se := 0;
+    Co := 0;
+    Mb := 0;
+    I  := 0;
+    Phytase := 0;
+    ActPhytE := 0;
+    ActPhytM := 0;
+    PdigG := 0;
+    PdigF := 0;
+    C6C8C10 := 0;
+    C12_0 := 0;
+    C14_0 := 0;
+    C16_0 := 0;
+    C16_1 := 0;
+    C18_0 := 0;
+    C18_1 := 0;
+    C18_2 := 0;
+    C18_3 := 0;
+    C18_4 := 0;
+    C20_0 := 0;
+    C20_1 := 0;
+    C20_4 := 0;
+    C20_5 := 0;
+    C22_0 := 0;
+    C22_1 := 0;
+    C22_5 := 0;
+    C22_6 := 0;
+    C24_0 := 0;
+    AGsLip := 0;
+    CB := 0;
+    dCB_T := 0;
+    dCB_C := 0;
+    Residu := 0;
+    dResidu_T := 0;
+    dResidu_C := 0;
+    NDF := 0;
+    ADF := 0;
+    ADL := 0;
+    Parois := 0;
+  end;
+end;
+
+end.
Index: UFRapAliAG.dfm
===================================================================
--- UFRapAliAG.dfm	(révision 0)
+++ UFRapAliAG.dfm	(révision 3)
@@ -0,0 +1,3134 @@
+object FRapAliAG: TFRapAliAG
+  Left = 0
+  Top = 80
+  Caption = 'Feed composition report - Fatty acids'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed composition: fatty acids'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRDBTTC24_Tot: TQRDBText
+        Left = 641
+        Top = 300
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          793.750000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C24_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC20_Tot: TQRDBText
+        Left = 641
+        Top = 260
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          687.916666666666700000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C20_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC16_Tot: TQRDBText
+        Left = 641
+        Top = 220
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          582.083333333333300000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C16_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC12_Tot: TQRDBText
+        Left = 641
+        Top = 180
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          476.250000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C12_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_Tot: TQRDBText
+        Left = 637
+        Top = 320
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1685.395833333333000000
+          846.666666666666700000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC22_Tot: TQRDBText
+        Left = 641
+        Top = 280
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          740.833333333333300000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C22_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_Tot: TQRDBText
+        Left = 641
+        Top = 240
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          635.000000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC14_Tot: TQRDBText
+        Left = 641
+        Top = 200
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          529.166666666666700000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C14_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTot: TQRLabel
+        Left = 662
+        Top = 136
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1751.541666666667000000
+          359.833333333333300000
+          111.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:m)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC6C8C10_Tot: TQRDBText
+        Left = 609
+        Top = 160
+        Width = 95
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1611.312500000000000000
+          423.333333333333300000
+          251.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C6C8C10_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_6: TQRDBText
+        Left = 584
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1545.166666666667000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_6_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC22_6: TQRDBText
+        Left = 588
+        Top = 280
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1555.750000000000000000
+          740.833333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C22_6_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL6: TQRLabel
+        Left = 603
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1595.437500000000000000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:6)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC20_5: TQRDBText
+        Left = 524
+        Top = 260
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1386.416666666667000000
+          687.916666666666700000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C20_5_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_5: TQRDBText
+        Left = 520
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1375.833333333333000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_5_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC22_5: TQRDBText
+        Left = 524
+        Top = 280
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1386.416666666667000000
+          740.833333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C22_5_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL5: TQRLabel
+        Left = 539
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1426.104166666667000000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:5)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC20_4: TQRDBText
+        Left = 460
+        Top = 260
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1217.083333333333000000
+          687.916666666666700000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C20_4_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_4: TQRDBText
+        Left = 456
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1206.500000000000000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_4_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_4: TQRDBText
+        Left = 460
+        Top = 240
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1217.083333333333000000
+          635.000000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_4_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL4: TQRLabel
+        Left = 475
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1256.770833333333000000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:4)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_3: TQRDBText
+        Left = 392
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1037.166666666667000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_3_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_3: TQRDBText
+        Left = 396
+        Top = 240
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1047.750000000000000000
+          635.000000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_3_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL3: TQRLabel
+        Left = 411
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1087.437500000000000000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:3)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_2: TQRDBText
+        Left = 328
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          867.833333333333300000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_2_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_2: TQRDBText
+        Left = 332
+        Top = 240
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          878.416666666666700000
+          635.000000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_2_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL2: TQRLabel
+        Left = 347
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          918.104166666666700000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:2)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC20_1: TQRDBText
+        Left = 268
+        Top = 260
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          709.083333333333300000
+          687.916666666666700000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C20_1_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC16_1: TQRDBText
+        Left = 268
+        Top = 220
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          709.083333333333300000
+          582.083333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C16_1_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_1: TQRDBText
+        Left = 264
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_1_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC22_1: TQRDBText
+        Left = 268
+        Top = 280
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          709.083333333333300000
+          740.833333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C22_1_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_1: TQRDBText
+        Left = 275
+        Top = 240
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          727.604166666666700000
+          635.000000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_1'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL1: TQRLabel
+        Left = 283
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          748.770833333333300000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:1)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC24_0: TQRDBText
+        Left = 204
+        Top = 300
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          793.750000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C24_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC20_0: TQRDBText
+        Left = 204
+        Top = 260
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          687.916666666666700000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C20_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC16_0: TQRDBText
+        Left = 204
+        Top = 220
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          582.083333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C16_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC12_0: TQRDBText
+        Left = 204
+        Top = 180
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          476.250000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C12_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_0: TQRDBText
+        Left = 200
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          529.166666666666700000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC22_0: TQRDBText
+        Left = 204
+        Top = 280
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          740.833333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C22_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_0: TQRDBText
+        Left = 204
+        Top = 240
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          635.000000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC14_0: TQRDBText
+        Left = 204
+        Top = 200
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          529.166666666666700000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C14_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL0: TQRLabel
+        Left = 219
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          579.437500000000000000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:0)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC6C8C10_0: TQRDBText
+        Left = 172
+        Top = 160
+        Width = 84
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          455.083333333333300000
+          423.333333333333300000
+          222.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C6C8C10_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliment: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRDBAliment: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Aliment_'
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTAG: TQRLabel
+        Left = 110
+        Top = 136
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          291.041666666666700000
+          359.833333333333300000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC6C8C10: TQRLabel
+        Left = 72
+        Top = 160
+        Width = 88
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          190.500000000000000000
+          423.333333333333300000
+          232.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C6 + C8 + C10'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCompo: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          254.000000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'StrCompo'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsItalic]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC14: TQRLabel
+        Left = 136
+        Top = 200
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          529.166666666666700000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C14'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC18: TQRLabel
+        Left = 136
+        Top = 240
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          635.000000000000000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C18'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC22: TQRLabel
+        Left = 136
+        Top = 280
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          740.833333333333300000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C22'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCTot: TQRLabel
+        Left = 127
+        Top = 320
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          336.020833333333300000
+          846.666666666666700000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC12: TQRLabel
+        Left = 136
+        Top = 180
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          476.250000000000000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C12'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC16: TQRLabel
+        Left = 136
+        Top = 220
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          582.083333333333300000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C16'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC20: TQRLabel
+        Left = 136
+        Top = 260
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          687.916666666666700000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C20'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC24: TQRLabel
+        Left = 136
+        Top = 300
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          793.750000000000000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C24'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLip: TQRLabel
+        Left = 40
+        Top = 352
+        Width = 98
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          931.333333333333300000
+          259.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Crude fat (g/kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLip: TQRDBText
+        Left = 288
+        Top = 352
+        Width = 32
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          931.333333333333300000
+          84.666666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Lip_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAGsLip: TQRLabel
+        Left = 40
+        Top = 376
+        Width = 139
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          994.833333333333300000
+          367.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Fatty acids (% of lipid)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAGsLip: TQRDBText
+        Left = 262
+        Top = 376
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          693.208333333333300000
+          994.833333333333300000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AGsLip_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFAliment: TStringField
+      DisplayWidth = 35
+      FieldName = '_Aliment_'
+      Size = 35
+    end
+    object SFC6C8C10_0: TStringField
+      FieldName = '_C6C8C10_0_'
+      Size = 8
+    end
+    object SFC6C8C10_Tot: TStringField
+      FieldName = '_C6C8C10_Tot_'
+      Size = 8
+    end
+    object SFC12_0: TStringField
+      FieldName = '_C12_0_'
+      Size = 8
+    end
+    object SFC12_Tot: TStringField
+      FieldName = '_C12_Tot_'
+      Size = 8
+    end
+    object SFC14_0: TStringField
+      FieldName = '_C14_0_'
+      Size = 8
+    end
+    object SFC14_Tot: TStringField
+      FieldName = '_C14_Tot_'
+      Size = 8
+    end
+    object SFC16_0: TStringField
+      FieldName = '_C16_0_'
+      Size = 8
+    end
+    object SFC16_1: TStringField
+      FieldName = '_C16_1_'
+      Size = 8
+    end
+    object SFC16_Tot: TStringField
+      FieldName = '_C16_Tot_'
+      Size = 8
+    end
+    object SFC18_0: TStringField
+      FieldName = '_C18_0_'
+      Size = 8
+    end
+    object SFC18_1: TStringField
+      FieldName = '_C18_1_'
+      Size = 8
+    end
+    object SFC18_2: TStringField
+      FieldName = '_C18_2_'
+      Size = 8
+    end
+    object SFC18_3: TStringField
+      FieldName = '_C18_3_'
+      Size = 8
+    end
+    object SFC18_4: TStringField
+      FieldName = '_C18_4_'
+      Size = 8
+    end
+    object SFC18_Tot: TStringField
+      FieldName = '_C18_Tot_'
+      Size = 8
+    end
+    object SFC20_0: TStringField
+      FieldName = '_C20_0_'
+      Size = 8
+    end
+    object SFC20_1: TStringField
+      FieldName = '_C20_1_'
+      Size = 8
+    end
+    object SFC20_4: TStringField
+      FieldName = '_C20_4_'
+      Size = 8
+    end
+    object SFC20_5: TStringField
+      FieldName = '_C20_5_'
+      Size = 8
+    end
+    object SFC20_Tot: TStringField
+      FieldName = '_C20_Tot_'
+      Size = 8
+    end
+    object SFC22_0: TStringField
+      FieldName = '_C22_0_'
+      Size = 8
+    end
+    object SFC22_1: TStringField
+      FieldName = '_C22_1_'
+      Size = 8
+    end
+    object SFC22_5: TStringField
+      FieldName = '_C22_5_'
+      Size = 8
+    end
+    object SFC22_6: TStringField
+      FieldName = '_C22_6_'
+      Size = 8
+    end
+    object SFC22_Tot: TStringField
+      FieldName = '_C22_Tot_'
+      Size = 8
+    end
+    object SFC24_0: TStringField
+      FieldName = '_C24_0_'
+      Size = 8
+    end
+    object SFC24_Tot: TStringField
+      FieldName = '_C24_Tot_'
+      Size = 8
+    end
+    object SFCTot_0: TStringField
+      FieldName = '_CTot_0_'
+      Size = 8
+    end
+    object SFCTot_1: TStringField
+      FieldName = '_CTot_1_'
+      Size = 8
+    end
+    object SFCTot_2: TStringField
+      FieldName = '_CTot_2_'
+      Size = 8
+    end
+    object SFCTot_3: TStringField
+      FieldName = '_CTot_3_'
+      Size = 8
+    end
+    object SFCTot_4: TStringField
+      FieldName = '_CTot_4_'
+      Size = 8
+    end
+    object SFCTot_5_: TStringField
+      FieldName = '_CTot_5_'
+      Size = 8
+    end
+    object SFCTot_6: TStringField
+      FieldName = '_CTot_6_'
+      Size = 8
+    end
+    object SFCTot_Tot: TStringField
+      FieldName = '_CTot_Tot_'
+      Size = 8
+    end
+    object SFLip: TStringField
+      FieldName = '_Lip_'
+      Size = 8
+    end
+    object SFAGsLip: TStringField
+      FieldName = '_AGsLip_'
+      Size = 8
+    end
+  end
+end
Index: UFRationT.dfm
===================================================================
--- UFRationT.dfm	(révision 0)
+++ UFRationT.dfm	(révision 3)
@@ -0,0 +1,1125 @@
+object FRationT: TFRationT
+  Left = 166
+  Top = 155
+  HelpContext = 4200
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Feed rationing plan for sows'
+  ClientHeight = 476
+  ClientWidth = 616
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBRation: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 616
+    Height = 48
+    Align = alTop
+    Caption = 'Feed rationing plan'
+    TabOrder = 0
+    object SBAddRation: TSpeedButton
+      Left = 264
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Add a feed rationing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000800000800000800000800000800000
+        8000008000008000008000008000008000008000008000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBAddRationClick
+    end
+    object SBDelRation: TSpeedButton
+      Left = 296
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Delete the current feed rationing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF0000000000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBDelRationClick
+    end
+    object SBRename: TSpeedButton
+      Left = 328
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Rename the current feed rationing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FF80808080808080
+        8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFF800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFF0000FFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFF0000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FF808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFF800000FFFFFFFFFFFF800000FF
+        FFFFFFFFFF800000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FF80808080808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFF800000800000800000800000800000800000800000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBRenameClick
+    end
+    object SBComment: TSpeedButton
+      Left = 360
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 
+        'Add additional information to the current feed rationing plan (c' +
+        'omment)'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        00000000000000000000000000000000000000FF0000FFFF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000080000080FF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF
+        FF0000FF0000FF0000FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00080
+        80000080000080000080FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF0000FF000080FFFF0000FF0000FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080
+        80808080808080808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0800000800000008080000080000080FF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00
+        00FF000080FFFFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000
+        00800000008080FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0800000800000800000800000800000FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF00
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FF808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000008000008000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+        0000800000800000800000800000000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0800000800000800000800000800000C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFF4080FFFF0000FF
+        0000FF0000FF0000FFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FF808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C000408080000080
+        0000800000800000C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFF4080FF4080FFFF0000FF0000FFFFFFFFFFFFFFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80808080808080
+        8080808080FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0004080004080800000800000C0C0C0C0C0C0C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF0000004080FF4080FF40
+        80FFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C000000000408000408000
+        4080C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080FF00FFFF
+        00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0000000000000C0C0C0C0C0C0C0C0C00000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBCommentClick
+    end
+    object SBSave: TSpeedButton
+      Left = 392
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Save the current feed rationing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000C0C0C0C0C0C0000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000808080808080000000800000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF8080808080808080808080808080808080808080808080808080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000000000800000000000FF00FFFF00FF000000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF000000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000FF0000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080808080808080FF00
+        FFFF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000800000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00000000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00000000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080000000FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBSaveClick
+    end
+    object SBPrint: TSpeedButton
+      Left = 424
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'View the report for the current feed rationing plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+        808080808080808080808080808080808080808080808080808080FF00FFFF00
+        FF808080808080FF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+        00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+        00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+        C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+        FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+        C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+        8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+        808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBPrintClick
+    end
+    object JvEnterAsTab: TJvEnterAsTab
+      Left = 456
+      Top = 16
+      Width = 28
+      Height = 28
+    end
+    object CBRation: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBRationChange
+    end
+  end
+  object TC: TTabControl
+    Left = 0
+    Top = 48
+    Width = 616
+    Height = 428
+    Align = alClient
+    HotTrack = True
+    TabOrder = 1
+    Tabs.Strings = (
+      'Gestation'
+      'Lactation'
+      'IWC')
+    TabIndex = 0
+    Visible = False
+    OnChange = TCChange
+    object PRation: TPanel
+      Left = 4
+      Top = 24
+      Width = 608
+      Height = 400
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      DesignSize = (
+        608
+        400)
+      object GBRule: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 376
+        Height = 232
+        Hint = 
+          'The first rule starts at the beginning of a simulation and the l' +
+          'ast rule terminates at the end of a simulation'
+        Caption = 'Rules'
+        TabOrder = 0
+        object LModeFin: TLabel
+          Left = 32
+          Top = 16
+          Width = 101
+          Height = 13
+          Caption = 'Termination condition'
+        end
+        object LNo: TLabel
+          Left = 12
+          Top = 16
+          Width = 7
+          Height = 13
+          Caption = '#'
+        end
+        object SBAddRule: TSpeedButton
+          Left = 16
+          Top = 168
+          Width = 80
+          Height = 24
+          Hint = 'Insert a rule before the selected rule'
+          Caption = 'Insert'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+            8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+            00008000008000000000FF00FFFF00FFFF00FF00000000000000000000000000
+            000000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FF00000000000000000000000000
+            0000008000008000008000008000008000008000008000000000FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+            8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+            00008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBAddRuleClick
+        end
+        object SBDelRule: TSpeedButton
+          Left = 102
+          Top = 168
+          Width = 80
+          Height = 24
+          Hint = 'Delete the selected rule'
+          Caption = 'Delete'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+            8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+            FF00FF000000000080000080000080000080000080000080000080000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF0000000000FF0000FF0000FF00
+            00FF0000FF0000FF0000FF000000000000000000000000000000FF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FF00000000008000008000008000
+            0080000080000080000080000000000000000000000000000000FF00FFFF00FF
+            FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+            8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+            FF00FF000000000080000080000080000080000080000080000080000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBDelRuleClick
+        end
+        object LAli: TLabel
+          Left = 164
+          Top = 13
+          Width = 52
+          Height = 13
+          Caption = 'Adjustment'
+        end
+        object LUnite: TLabel
+          Left = 168
+          Top = 204
+          Width = 19
+          Height = 13
+          Caption = 'Unit'
+        end
+        object LMoyenne: TLabel
+          Left = 8
+          Top = 204
+          Width = 27
+          Height = 13
+          Caption = 'Mean'
+        end
+        object LBRule: TListBox
+          Left = 8
+          Top = 32
+          Width = 360
+          Height = 134
+          Style = lbOwnerDrawFixed
+          ItemHeight = 13
+          TabOrder = 0
+          OnClick = LBRuleClick
+          OnDrawItem = LBRuleDrawItem
+        end
+        object CBUnite: TComboBox
+          Left = 240
+          Top = 200
+          Width = 120
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 2
+          Text = 'Quantity (kg/d)'
+          OnChange = CBUniteChange
+          Items.Strings = (
+            'Quantity (kg/d)'
+            'DE (MJ/d)'
+            'ME (MJ/d)'
+            'NE (MJ/d)'
+            'DM (kg/d)')
+        end
+        object PBMoyenne: TPBNumEdit
+          Left = 88
+          Top = 200
+          Width = 50
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 1
+        end
+      end
+      object GBParam: TGroupBox
+        Left = 0
+        Top = 232
+        Width = 376
+        Height = 168
+        Caption = 'Parameters of the selected rule'
+        TabOrder = 1
+        object GBEnd: TGroupBox
+          Left = 8
+          Top = 16
+          Width = 360
+          Height = 48
+          Hint = 'Termination conditition of the selected rule'
+          Caption = 'Termination condition'
+          TabOrder = 0
+          object LUnitFin: TLabel
+            Left = 176
+            Top = 20
+            Width = 6
+            Height = 13
+            Caption = 'd'
+          end
+          object PBValFin: TPBNumEdit
+            Left = 136
+            Top = 16
+            Width = 33
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 0
+            NumberFormat = Standard
+            OnChange = PBValFinChange
+            TabOrder = 1
+          end
+          object CBModeFin: TComboBox
+            Left = 8
+            Top = 16
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            Enabled = False
+            ItemHeight = 13
+            ItemIndex = 0
+            TabOrder = 0
+            Text = 'Duration'
+            Items.Strings = (
+              'Duration')
+          end
+        end
+        object GBAjust: TGroupBox
+          Left = 8
+          Top = 64
+          Width = 360
+          Height = 96
+          Hint = 'Definition of the type of rationing for the selected rule'
+          Caption = 'Feed intake'
+          TabOrder = 1
+          object LType: TLabel
+            Left = 8
+            Top = 20
+            Width = 24
+            Height = 13
+            Caption = 'Type'
+          end
+          object CBType: TComboBox
+            Left = 88
+            Top = 16
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 13
+            ItemIndex = 0
+            TabOrder = 0
+            Text = 'Constant'
+            OnChange = CBTypeChange
+            Items.Strings = (
+              'Constant'
+              'Linear'
+              'Linear-plateau'
+              'Curvilinear')
+          end
+          object PQuantite: TPanel
+            Left = 8
+            Top = 40
+            Width = 136
+            Height = 24
+            BevelOuter = bvNone
+            TabOrder = 1
+            object LQuantite: TLabel
+              Left = 0
+              Top = 4
+              Width = 39
+              Height = 13
+              Caption = 'Quantity'
+            end
+            object PBQuantite: TPBNumEdit
+              Left = 80
+              Top = 0
+              Width = 50
+              Height = 21
+              Alignment = taRightJustify
+              Decimals = 3
+              NumberFormat = Standard
+              OnChange = PBQuantiteChange
+              TabOrder = 0
+            end
+          end
+          object Pa: TPanel
+            Left = 8
+            Top = 40
+            Width = 136
+            Height = 24
+            BevelOuter = bvNone
+            TabOrder = 2
+            object La: TLabel
+              Left = 0
+              Top = 4
+              Width = 24
+              Height = 13
+              Caption = 'Initial'
+            end
+            object PBa: TPBNumEdit
+              Left = 80
+              Top = 0
+              Width = 50
+              Height = 21
+              Alignment = taRightJustify
+              Decimals = 3
+              NumberFormat = Standard
+              OnChange = PBaChange
+              TabOrder = 0
+            end
+          end
+          object Pc: TPanel
+            Left = 8
+            Top = 64
+            Width = 136
+            Height = 24
+            BevelOuter = bvNone
+            TabOrder = 3
+            object Lc: TLabel
+              Left = 0
+              Top = 6
+              Width = 27
+              Height = 13
+              Caption = 'Mean'
+            end
+            object PBc: TPBNumEdit
+              Left = 80
+              Top = 0
+              Width = 50
+              Height = 21
+              Alignment = taRightJustify
+              Decimals = 3
+              NumberFormat = Standard
+              OnChange = PBcChange
+              TabOrder = 0
+            end
+          end
+          object Pb: TPanel
+            Left = 208
+            Top = 40
+            Width = 144
+            Height = 24
+            BevelOuter = bvNone
+            TabOrder = 4
+            object Lb: TLabel
+              Left = 0
+              Top = 4
+              Width = 66
+              Height = 13
+              Caption = 'Daily increase'
+            end
+            object PBb: TPBNumEdit
+              Left = 94
+              Top = 0
+              Width = 50
+              Height = 21
+              Alignment = taRightJustify
+              Decimals = 3
+              NumberFormat = Standard
+              OnChange = PBbChange
+              TabOrder = 0
+            end
+          end
+          object Pd: TPanel
+            Left = 208
+            Top = 64
+            Width = 144
+            Height = 24
+            BevelOuter = bvNone
+            TabOrder = 5
+            object Ld: TLabel
+              Left = 0
+              Top = 6
+              Width = 40
+              Height = 13
+              Caption = 'Duration'
+            end
+            object PBd: TPBSuperSpin
+              Left = 94
+              Top = 0
+              Width = 50
+              Height = 22
+              Cursor = crDefault
+              Alignment = taRightJustify
+              Decimals = 0
+              MaxValue = 28.000000000000000000
+              MinValue = 14.000000000000000000
+              NumberFormat = Standard
+              OnChange = PBdChange
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 0
+              EditorEnabled = False
+              Increment = 1.000000000000000000
+              RoundValues = False
+              Wrap = False
+            end
+          end
+        end
+      end
+      object Graph: TChart
+        Left = 384
+        Top = 0
+        Width = 224
+        Height = 400
+        Legend.Visible = False
+        MarginBottom = 0
+        MarginLeft = 0
+        MarginRight = 2
+        MarginTop = 2
+        Title.Text.Strings = (
+          'TChart')
+        Title.Visible = False
+        BottomAxis.ExactDateTime = False
+        BottomAxis.Increment = 7.000000000000000000
+        BottomAxis.Title.Caption = 'Duration (d)'
+        BottomAxis.Title.Font.Style = [fsBold]
+        LeftAxis.Automatic = False
+        LeftAxis.AutomaticMaximum = False
+        LeftAxis.AutomaticMinimum = False
+        LeftAxis.Title.Caption = 'FI (kg/d)'
+        LeftAxis.Title.Font.Style = [fsBold]
+        View3D = False
+        BevelOuter = bvNone
+        TabOrder = 2
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        object SeriesLigne: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          Title = 'Feed rationing plan'
+          LinePen.Color = clRed
+          LinePen.Width = 2
+          Pointer.InflateMargins = True
+          Pointer.Style = psRectangle
+          Pointer.Visible = False
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+      end
+    end
+  end
+end
Index: UFRapBesGestT.dfm
===================================================================
--- UFRapBesGestT.dfm	(révision 0)
+++ UFRapBesGestT.dfm	(révision 3)
@@ -0,0 +1,6282 @@
+object FRapBesGestT: TFRapBesGestT
+  Left = 0
+  Top = 80
+  Caption = 'Report of requirements during gestation (sow)'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Requirements of the sow during gestation'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRLAAAli: TQRLabel
+        Left = 440
+        Top = 420
+        Width = 120
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1164.166666666670000000
+          1111.250000000000000000
+          317.500000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'g/kg'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAATot: TQRLabel
+        Left = 280
+        Top = 420
+        Width = 120
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          740.833333333333000000
+          1111.250000000000000000
+          317.500000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'g/d'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRShape1: TQRShape
+        Left = 32
+        Top = 352
+        Width = 654
+        Height = 24
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          63.500000000000000000
+          84.666666666666700000
+          931.333333333333000000
+          1730.375000000000000000)
+        Pen.Width = 4
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRShape2: TQRShape
+        Left = 280
+        Top = 436
+        Width = 120
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          740.833333333333000000
+          1153.583333333330000000
+          317.500000000000000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRShape3: TQRShape
+        Left = 440
+        Top = 436
+        Width = 120
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          1164.166666666670000000
+          1153.583333333330000000
+          317.500000000000000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QREArgPctLys: TQRExpr
+        Left = 344
+        Top = 688
+        Width = 296
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          910.166666666667000000
+          1820.333333333330000000
+          783.166666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Arg35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREHisPctLys: TQRExpr
+        Left = 345
+        Top = 668
+        Width = 295
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          1767.416666666667000000
+          780.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._His35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREValPctLys: TQRExpr
+        Left = 345
+        Top = 648
+        Width = 295
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          1714.500000000000000000
+          780.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Val35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREIlePctLys: TQRExpr
+        Left = 351
+        Top = 628
+        Width = 289
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          928.687500000000000000
+          1661.583333333333000000
+          764.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ile35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELeuPctLys: TQRExpr
+        Left = 343
+        Top = 608
+        Width = 297
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          907.520833333333300000
+          1608.666666666667000000
+          785.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Leu35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheTyrPctLys: TQRExpr
+        Left = 323
+        Top = 588
+        Width = 317
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          854.604166666666700000
+          1555.750000000000000000
+          838.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PheTyr35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPhePctLys: TQRExpr
+        Left = 341
+        Top = 568
+        Width = 299
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          902.229166666666700000
+          1502.833333333333000000
+          791.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Phe35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREThrPctLys: TQRExpr
+        Left = 346
+        Top = 548
+        Width = 294
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          915.458333333333300000
+          1449.916666666667000000
+          777.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Thr35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRETrpPctLys: TQRExpr
+        Left = 346
+        Top = 528
+        Width = 294
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          915.458333333333300000
+          1397.000000000000000000
+          777.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Trp35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetCysPctLys: TQRExpr
+        Left = 319
+        Top = 508
+        Width = 321
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          844.020833333333300000
+          1344.083333333333000000
+          849.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._MetCys35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetPctLys: TQRExpr
+        Left = 342
+        Top = 488
+        Width = 298
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          1291.166666666667000000
+          788.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Met35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELysPctLys: TQRExpr
+        Left = 343
+        Top = 468
+        Width = 297
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          907.520833333333300000
+          1238.250000000000000000
+          785.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Lys35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREArgAli105: TQRExpr
+        Left = 288
+        Top = 688
+        Width = 272
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          762.000000000000000000
+          1820.333333333330000000
+          719.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Arg105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREHisAli105: TQRExpr
+        Left = 289
+        Top = 668
+        Width = 271
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1767.416666666667000000
+          717.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._His105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREValAli105: TQRExpr
+        Left = 289
+        Top = 648
+        Width = 271
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1714.500000000000000000
+          717.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Val105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREIleAli105: TQRExpr
+        Left = 299
+        Top = 628
+        Width = 261
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          791.104166666666700000
+          1661.583333333333000000
+          690.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ile105_/ CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELeuAli105: TQRExpr
+        Left = 287
+        Top = 608
+        Width = 273
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1608.666666666667000000
+          722.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Leu105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheTyrAli105: TQRExpr
+        Left = 267
+        Top = 588
+        Width = 293
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          706.437500000000000000
+          1555.750000000000000000
+          775.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PheTyr105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheAli105: TQRExpr
+        Left = 285
+        Top = 568
+        Width = 275
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          754.062500000000000000
+          1502.833333333333000000
+          727.604166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Phe105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREThrAli105: TQRExpr
+        Left = 290
+        Top = 548
+        Width = 270
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          767.291666666666700000
+          1449.916666666667000000
+          714.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Thr105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRETrpAli105: TQRExpr
+        Left = 290
+        Top = 528
+        Width = 270
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          767.291666666666700000
+          1397.000000000000000000
+          714.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Trp105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetCysAli105: TQRExpr
+        Left = 263
+        Top = 508
+        Width = 297
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          695.854166666666700000
+          1344.083333333333000000
+          785.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._MetCys105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetAli105: TQRExpr
+        Left = 286
+        Top = 488
+        Width = 274
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          756.708333333333300000
+          1291.166666666667000000
+          724.958333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Met105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELysAli105: TQRExpr
+        Left = 287
+        Top = 468
+        Width = 273
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1238.250000000000000000
+          722.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Lys105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREArgAli35: TQRExpr
+        Left = 215
+        Top = 688
+        Width = 265
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          568.854166666667000000
+          1820.333333333330000000
+          701.145833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Arg35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREHisAli35: TQRExpr
+        Left = 216
+        Top = 668
+        Width = 264
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          571.500000000000000000
+          1767.416666666667000000
+          698.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._His35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREValAli35: TQRExpr
+        Left = 216
+        Top = 648
+        Width = 264
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          571.500000000000000000
+          1714.500000000000000000
+          698.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Val35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREIleAli35: TQRExpr
+        Left = 222
+        Top = 628
+        Width = 258
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          587.375000000000000000
+          1661.583333333333000000
+          682.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ile35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELeuAli35: TQRExpr
+        Left = 214
+        Top = 608
+        Width = 266
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          566.208333333333300000
+          1608.666666666667000000
+          703.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Leu35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheTyrAli35: TQRExpr
+        Left = 194
+        Top = 588
+        Width = 286
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          513.291666666666700000
+          1555.750000000000000000
+          756.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PheTyr35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheAli35: TQRExpr
+        Left = 212
+        Top = 568
+        Width = 268
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          560.916666666666700000
+          1502.833333333333000000
+          709.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Phe35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREThrAli35: TQRExpr
+        Left = 217
+        Top = 548
+        Width = 263
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          574.145833333333300000
+          1449.916666666667000000
+          695.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Thr35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRETrpAli35: TQRExpr
+        Left = 217
+        Top = 528
+        Width = 263
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          574.145833333333300000
+          1397.000000000000000000
+          695.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Trp35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetCysAli35: TQRExpr
+        Left = 190
+        Top = 508
+        Width = 290
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          502.708333333333300000
+          1344.083333333333000000
+          767.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._MetCys35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetAli35: TQRExpr
+        Left = 213
+        Top = 488
+        Width = 267
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          563.562500000000000000
+          1291.166666666667000000
+          706.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Met35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELysAli35: TQRExpr
+        Left = 214
+        Top = 468
+        Width = 266
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          566.208333333333300000
+          1238.250000000000000000
+          703.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Lys35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREENTot: TQRExpr
+        Left = -41
+        Top = 356
+        Width = 441
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -108.479166666666700000
+          941.916666666666700000
+          1166.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMTot_ / CDSRapport._AppEM_ * CDSRapport._AppEN_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLENTot: TQRLabel
+        Left = 408
+        Top = 356
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          941.916666666666700000
+          105.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ NE'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctRes: TQRExpr
+        Left = 46
+        Top = 332
+        Width = 354
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          121.708333333333300000
+          878.416666666666700000
+          936.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMRes_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctPort: TQRExpr
+        Left = 45
+        Top = 312
+        Width = 355
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          119.062500000000000000
+          825.500000000000000000
+          939.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMPort_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctThe: TQRExpr
+        Left = 48
+        Top = 292
+        Width = 352
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          127.000000000000000000
+          772.583333333333300000
+          931.333333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMThe_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctAct: TQRExpr
+        Left = 49
+        Top = 272
+        Width = 351
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          129.645833333333300000
+          719.666666666666700000
+          928.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMAct_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctEnt: TQRExpr
+        Left = 49
+        Top = 252
+        Width = 351
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          129.645833333333300000
+          666.750000000000000000
+          928.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMEnt_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText3: TQRDBText
+        Left = 218
+        Top = 80
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          576.791666666666700000
+          211.666666666666700000
+          164.041666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsPort_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText2: TQRDBText
+        Left = 203
+        Top = 60
+        Width = 77
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          537.104166666666700000
+          158.750000000000000000
+          203.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NesTotaux_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText1: TQRDBText
+        Left = 227
+        Top = 40
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          600.604166666666700000
+          105.833333333333300000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Portee_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAge: TQRExpr
+        Left = 239
+        Top = 164
+        Width = 281
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          632.354166666666700000
+          433.916666666666700000
+          743.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeMB_ - CDSRapport._AgeSail_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREP2: TQRExpr
+        Left = 253
+        Top = 144
+        Width = 267
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          669.395833333333300000
+          381.000000000000000000
+          706.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._P2MB_ - CDSRapport._P2Sail_'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPds: TQRExpr
+        Left = 239
+        Top = 124
+        Width = 281
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          632.354166666666700000
+          328.083333333333300000
+          743.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PdsMB_ - CDSRapport._PdsSail_'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSaillie: TQRLabel
+        Left = 231
+        Top = 104
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          611.187500000000000000
+          275.166666666666700000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Service'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPoids: TQRLabel
+        Left = 40
+        Top = 124
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          328.083333333333300000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Body weight (kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCaract: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 116
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          21.166666666666670000
+          306.916666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Characteristics'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLMiseBas: TQRLabel
+        Left = 334
+        Top = 104
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          883.708333333333300000
+          275.166666666666700000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Farrowing'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP2: TQRLabel
+        Left = 40
+        Top = 144
+        Width = 146
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          381.000000000000000000
+          386.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Backfat thickness (mm)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAge: TQRLabel
+        Left = 40
+        Top = 164
+        Width = 46
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          433.916666666666700000
+          121.708333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Age (d)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPortee: TQRLabel
+        Left = 40
+        Top = 40
+        Width = 87
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          105.833333333333300000
+          230.187500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Litter number'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNesVifs: TQRLabel
+        Left = 40
+        Top = 60
+        Width = 146
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          158.750000000000000000
+          386.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Number of piglets born'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPdsPt: TQRLabel
+        Left = 40
+        Top = 80
+        Width = 108
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          211.666666666666700000
+          285.750000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Litter weight (kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTyp: TQRLabel
+        Left = 40
+        Top = 188
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          497.416666666666700000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Housing'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLVariation: TQRLabel
+        Left = 461
+        Top = 104
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1219.729166666667000000
+          275.166666666666700000
+          156.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Variation'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsSail: TQRDBText
+        Left = 220
+        Top = 124
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          582.083333333333300000
+          328.083333333333300000
+          158.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSail_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsMB: TQRDBText
+        Left = 342
+        Top = 124
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          328.083333333333300000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsMB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2Sail: TQRDBText
+        Left = 227
+        Top = 144
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          600.604166666666700000
+          381.000000000000000000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2Sail_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MB: TQRDBText
+        Left = 349
+        Top = 144
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          923.395833333333300000
+          381.000000000000000000
+          134.937500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSail: TQRDBText
+        Left = 220
+        Top = 164
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          582.083333333333300000
+          433.916666666666700000
+          158.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeSail_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeMB: TQRDBText
+        Left = 342
+        Top = 164
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          433.916666666666700000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeMB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText6: TQRDBText
+        Left = 120
+        Top = 188
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          317.500000000000000000
+          497.416666666666700000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Loge_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJ: TQRLabel
+        Left = 40
+        Top = 220
+        Width = 235
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          582.083333333333300000
+          621.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Mean daily energy requirement'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLAA: TQRLabel
+        Left = 40
+        Top = 388
+        Width = 374
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          1026.583333333333000000
+          989.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible amino acid requirement (standardized)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLNRJEnt: TQRLabel
+        Left = 40
+        Top = 252
+        Width = 83
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          666.750000000000000000
+          219.604166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Maintenance'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJAct: TQRLabel
+        Left = 40
+        Top = 272
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          719.666666666666700000
+          124.354166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Activity'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJThe: TQRLabel
+        Left = 40
+        Top = 292
+        Width = 115
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          772.583333333333300000
+          304.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Thermoregulation'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJPort: TQRLabel
+        Left = 40
+        Top = 312
+        Width = 34
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          825.500000000000000000
+          89.958333333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Litter'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJRes: TQRLabel
+        Left = 40
+        Top = 332
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          878.416666666666700000
+          153.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Reserves'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJTot: TQRLabel
+        Left = 40
+        Top = 356
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          941.916666666666700000
+          87.312500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMEnt: TQRDBText
+        Left = 202
+        Top = 252
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          534.458333333333300000
+          666.750000000000000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMEnt_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMEnt: TQRLabel
+        Left = 288
+        Top = 252
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          666.750000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctEnt: TQRLabel
+        Left = 408
+        Top = 252
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          666.750000000000000000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMThe: TQRDBText
+        Left = 201
+        Top = 292
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          531.812500000000000000
+          772.583333333333300000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMThe_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMThe: TQRLabel
+        Left = 288
+        Top = 292
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          772.583333333333300000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctThe: TQRLabel
+        Left = 408
+        Top = 292
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          772.583333333333300000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMRes: TQRDBText
+        Left = 199
+        Top = 332
+        Width = 81
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          526.520833333333300000
+          878.416666666666700000
+          214.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMRes_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMRes: TQRLabel
+        Left = 288
+        Top = 332
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          878.416666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctRes: TQRLabel
+        Left = 408
+        Top = 332
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          878.416666666666700000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMAct: TQRDBText
+        Left = 202
+        Top = 272
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          534.458333333333300000
+          719.666666666666700000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMAct_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMAct: TQRLabel
+        Left = 288
+        Top = 272
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          719.666666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctAct: TQRLabel
+        Left = 408
+        Top = 272
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          719.666666666666700000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMPort: TQRDBText
+        Left = 198
+        Top = 312
+        Width = 82
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          523.875000000000000000
+          825.500000000000000000
+          216.958333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMPort_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMPort: TQRLabel
+        Left = 288
+        Top = 312
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          825.500000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctPort: TQRLabel
+        Left = 408
+        Top = 312
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          825.500000000000000000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMTot: TQRDBText
+        Left = 204
+        Top = 356
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          941.916666666666700000
+          201.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMTot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMTot: TQRLabel
+        Left = 288
+        Top = 356
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          941.916666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAli: TQRLabel
+        Left = 528
+        Top = 356
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1397.000000000000000000
+          941.916666666666700000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'kg feed'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAli: TQRDBText
+        Left = 467
+        Top = 356
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1235.604166666667000000
+          941.916666666666700000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesAli_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctLys: TQRLabel
+        Left = 604
+        Top = 420
+        Width = 36
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1598.083333333333000000
+          1111.250000000000000000
+          95.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '% Lys'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAATot35: TQRLabel
+        Left = 283
+        Top = 444
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          748.770833333333300000
+          1174.750000000000000000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAATot105: TQRLabel
+        Left = 375
+        Top = 444
+        Width = 25
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          992.187500000000000000
+          1174.750000000000000000
+          66.145833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'End'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAAAli35: TQRLabel
+        Left = 443
+        Top = 444
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1172.104166666667000000
+          1174.750000000000000000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAAAli105: TQRLabel
+        Left = 535
+        Top = 444
+        Width = 25
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1415.520833333333000000
+          1174.750000000000000000
+          66.145833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'End'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLys: TQRLabel
+        Left = 40
+        Top = 468
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1238.250000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lysine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMet: TQRLabel
+        Left = 40
+        Top = 488
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1291.166666666667000000
+          190.500000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMetCys: TQRLabel
+        Left = 40
+        Top = 508
+        Width = 134
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1344.083333333333000000
+          354.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine + Cystine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTrp: TQRLabel
+        Left = 40
+        Top = 528
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1397.000000000000000000
+          193.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Tryptophan'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLThr: TQRLabel
+        Left = 40
+        Top = 548
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1449.916666666667000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Threonine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPhe: TQRLabel
+        Left = 40
+        Top = 568
+        Width = 93
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1502.833333333333000000
+          246.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPheTyr: TQRLabel
+        Left = 40
+        Top = 588
+        Width = 163
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1555.750000000000000000
+          431.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine + Tyrosine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLeu: TQRLabel
+        Left = 40
+        Top = 608
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1608.666666666667000000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Leucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLIle: TQRLabel
+        Left = 40
+        Top = 628
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1661.583333333333000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Isoleucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLVal: TQRLabel
+        Left = 40
+        Top = 648
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1714.500000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Valine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLHis: TQRLabel
+        Left = 40
+        Top = 668
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1767.416666666667000000
+          148.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Histidine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLArg: TQRLabel
+        Left = 40
+        Top = 688
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1820.333333333330000000
+          145.520833333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Arginine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLysTot35: TQRDBText
+        Left = 270
+        Top = 468
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          1238.250000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Lys35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetTot35: TQRDBText
+        Left = 269
+        Top = 488
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          711.729166666666700000
+          1291.166666666667000000
+          134.937500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Met35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetCysTot35: TQRDBText
+        Left = 246
+        Top = 508
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          650.875000000000000000
+          1344.083333333333000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_MetCys35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTrpTot35: TQRDBText
+        Left = 273
+        Top = 528
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          722.312500000000000000
+          1397.000000000000000000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Trp35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTThrTot35: TQRDBText
+        Left = 273
+        Top = 548
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          722.312500000000000000
+          1449.916666666667000000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Thr35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTot35: TQRDBText
+        Left = 268
+        Top = 568
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          709.083333333333300000
+          1502.833333333333000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Phe35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTyrTot35: TQRDBText
+        Left = 250
+        Top = 588
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          661.458333333333300000
+          1555.750000000000000000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PheTyr35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLeuTot35: TQRDBText
+        Left = 270
+        Top = 608
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          1608.666666666667000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Leu35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTIleTot35: TQRDBText
+        Left = 278
+        Top = 628
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          735.541666666666700000
+          1661.583333333333000000
+          111.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ile35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTValTot305: TQRDBText
+        Left = 272
+        Top = 648
+        Width = 48
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          719.666666666666700000
+          1714.500000000000000000
+          127.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Val35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTHisTot35: TQRDBText
+        Left = 272
+        Top = 668
+        Width = 48
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          719.666666666666700000
+          1767.416666666667000000
+          127.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_His35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTArgTot35: TQRDBText
+        Left = 271
+        Top = 688
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          717.020833333333000000
+          1820.333333333330000000
+          129.645833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Arg35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLysTot105: TQRDBText
+        Left = 343
+        Top = 468
+        Width = 57
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          907.520833333333300000
+          1238.250000000000000000
+          150.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Lys105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetTot105: TQRDBText
+        Left = 342
+        Top = 488
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          1291.166666666667000000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Met105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetCysTot105: TQRDBText
+        Left = 319
+        Top = 508
+        Width = 81
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          844.020833333333300000
+          1344.083333333333000000
+          214.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_MetCys105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTrpTot105: TQRDBText
+        Left = 346
+        Top = 528
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          915.458333333333300000
+          1397.000000000000000000
+          142.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Trp105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTThrTot105: TQRDBText
+        Left = 346
+        Top = 548
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          915.458333333333300000
+          1449.916666666667000000
+          142.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Thr105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTot105: TQRDBText
+        Left = 341
+        Top = 568
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          902.229166666666700000
+          1502.833333333333000000
+          156.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Phe105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTyrTot105: TQRDBText
+        Left = 323
+        Top = 588
+        Width = 77
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          854.604166666666700000
+          1555.750000000000000000
+          203.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PheTyr105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLeuTot105: TQRDBText
+        Left = 343
+        Top = 608
+        Width = 57
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          907.520833333333300000
+          1608.666666666667000000
+          150.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Leu105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTIleTot105: TQRDBText
+        Left = 351
+        Top = 628
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          928.687500000000000000
+          1661.583333333333000000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ile105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTValTot105: TQRDBText
+        Left = 345
+        Top = 648
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          1714.500000000000000000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Val105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTHisTot105: TQRDBText
+        Left = 345
+        Top = 668
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          1767.416666666667000000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_His105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTArgTot105: TQRDBText
+        Left = 344
+        Top = 688
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          910.166666666667000000
+          1820.333333333330000000
+          148.166666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Arg105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMinAli: TQRLabel
+        Left = 440
+        Top = 744
+        Width = 120
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1164.166666666670000000
+          1968.500000000000000000
+          317.500000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'g/kg'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMinTot: TQRLabel
+        Left = 280
+        Top = 744
+        Width = 120
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          740.833333333333000000
+          1968.500000000000000000
+          317.500000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'g/d'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRShape4: TQRShape
+        Left = 280
+        Top = 760
+        Width = 120
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          740.833333333333000000
+          2010.833333333330000000
+          317.500000000000000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRShape5: TQRShape
+        Left = 440
+        Top = 760
+        Width = 120
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          1164.166666666670000000
+          2010.833333333330000000
+          317.500000000000000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLMin: TQRLabel
+        Left = 40
+        Top = 720
+        Width = 153
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666700000
+          105.833333333333000000
+          1905.000000000000000000
+          404.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Mineral requirement'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLMinTot35: TQRLabel
+        Left = 282
+        Top = 768
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          746.125000000000000000
+          2032.000000000000000000
+          100.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMinTot105: TQRLabel
+        Left = 379
+        Top = 768
+        Width = 21
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1002.770833333330000000
+          2032.000000000000000000
+          55.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'End'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMinAli35: TQRLabel
+        Left = 442
+        Top = 768
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1169.458333333330000000
+          2032.000000000000000000
+          100.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMinAli105: TQRLabel
+        Left = 539
+        Top = 768
+        Width = 21
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1426.104166666670000000
+          2032.000000000000000000
+          55.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'End'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPAli105: TQRExpr
+        Left = 299
+        Top = 792
+        Width = 261
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          791.104166666667000000
+          2095.500000000000000000
+          690.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._P105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPAli35: TQRExpr
+        Left = 226
+        Top = 792
+        Width = 254
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          597.958333333333000000
+          2095.500000000000000000
+          672.041666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._P35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel9: TQRLabel
+        Left = 40
+        Top = 792
+        Width = 135
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          2095.500000000000000000
+          357.187500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible phosphorus'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP35Tot: TQRDBText
+        Left = 282
+        Top = 792
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          746.125000000000000000
+          2095.500000000000000000
+          100.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP105Tot: TQRDBText
+        Left = 355
+        Top = 792
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          939.270833333333000000
+          2095.500000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRECaAli105: TQRExpr
+        Left = 292
+        Top = 812
+        Width = 268
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          772.583333333333000000
+          2148.416666666670000000
+          709.083333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ca105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRECaAli35: TQRExpr
+        Left = 219
+        Top = 812
+        Width = 261
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          579.437500000000000000
+          2148.416666666670000000
+          690.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ca35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel10: TQRLabel
+        Left = 40
+        Top = 812
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          2148.416666666670000000
+          224.895833333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total calcium'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCa35Tot: TQRDBText
+        Left = 275
+        Top = 812
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          727.604166666667000000
+          2148.416666666670000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ca35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCa105Tot: TQRDBText
+        Left = 348
+        Top = 812
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          920.750000000000000000
+          2148.416666666670000000
+          137.583333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ca105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object IFPortee: TIntegerField
+      FieldName = '_Portee_'
+    end
+    object FFNesTotaux: TFloatField
+      FieldName = '_NesTotaux_'
+    end
+    object FFPdsPort: TFloatField
+      FieldName = '_PdsPort_'
+    end
+    object FFPdsSail: TFloatField
+      FieldName = '_PdsSail_'
+    end
+    object FFPdsMB: TFloatField
+      FieldName = '_PdsMB_'
+    end
+    object FFP2Sail: TFloatField
+      FieldName = '_P2Sail_'
+    end
+    object FFP2MB: TFloatField
+      FieldName = '_P2MB_'
+    end
+    object IFAgeSail: TIntegerField
+      FieldName = '_AgeSail_'
+    end
+    object IFAgeMB: TIntegerField
+      FieldName = '_AgeMB_'
+    end
+    object SFLoge: TStringField
+      FieldName = '_Loge_'
+      Size = 80
+    end
+    object FFBesEMEnt: TFloatField
+      FieldName = '_BesEMEnt_'
+    end
+    object FFBesEMAct: TFloatField
+      FieldName = '_BesEMAct_'
+    end
+    object FFBesEMThe: TFloatField
+      FieldName = '_BesEMThe_'
+    end
+    object FFBesEMPort: TFloatField
+      FieldName = '_BesEMPort_'
+    end
+    object FFBesEMRes: TFloatField
+      FieldName = '_BesEMRes_'
+    end
+    object FFBesEMTot: TFloatField
+      FieldName = '_BesEMTot_'
+    end
+    object FFAppED: TFloatField
+      FieldName = '_AppED_'
+    end
+    object FFAppEM: TFloatField
+      FieldName = '_AppEM_'
+    end
+    object FFAppEN: TFloatField
+      FieldName = '_AppEN_'
+    end
+    object FFBesAli: TFloatField
+      FieldName = '_BesAli_'
+    end
+    object FFLys35: TFloatField
+      FieldName = '_Lys35_'
+    end
+    object FFMet35: TFloatField
+      FieldName = '_Met35_'
+    end
+    object FFMetCys35: TFloatField
+      FieldName = '_MetCys35_'
+    end
+    object FFTrp35: TFloatField
+      FieldName = '_Trp35_'
+    end
+    object FFThr35: TFloatField
+      FieldName = '_Thr35_'
+    end
+    object FFPhe35: TFloatField
+      FieldName = '_Phe35_'
+    end
+    object FFPheTyr35: TFloatField
+      FieldName = '_PheTyr35_'
+    end
+    object FFLeu35: TFloatField
+      FieldName = '_Leu35_'
+    end
+    object FFIle35: TFloatField
+      FieldName = '_Ile35_'
+    end
+    object FFVal35: TFloatField
+      FieldName = '_Val35_'
+    end
+    object FFHis35: TFloatField
+      FieldName = '_His35_'
+    end
+    object FFArg35: TFloatField
+      FieldName = '_Arg35_'
+    end
+    object FFLys105: TFloatField
+      FieldName = '_Lys105_'
+    end
+    object FFMet105: TFloatField
+      FieldName = '_Met105_'
+    end
+    object FFMetCys105: TFloatField
+      FieldName = '_MetCys105_'
+    end
+    object FFTrp105: TFloatField
+      FieldName = '_Trp105_'
+    end
+    object FFThr105: TFloatField
+      FieldName = '_Thr105_'
+    end
+    object FFPhe105: TFloatField
+      FieldName = '_Phe105_'
+    end
+    object FFPheTyr105: TFloatField
+      FieldName = '_PheTyr105_'
+    end
+    object FFLeu105: TFloatField
+      FieldName = '_Leu105_'
+    end
+    object FFIle105: TFloatField
+      FieldName = '_Ile105_'
+    end
+    object FFVal105: TFloatField
+      FieldName = '_Val105_'
+    end
+    object FFHis105: TFloatField
+      FieldName = '_His105_'
+    end
+    object FFArg105: TFloatField
+      FieldName = '_Arg105_'
+    end
+    object FFP35: TFloatField
+      FieldName = '_P35_'
+    end
+    object FFCa35: TFloatField
+      FieldName = '_Ca35_'
+    end
+    object FFP105: TFloatField
+      FieldName = '_P105_'
+    end
+    object FFCa105: TFloatField
+      FieldName = '_Ca105_'
+    end
+  end
+end
Index: UFRapMatElem.dfm
===================================================================
--- UFRapMatElem.dfm	(révision 0)
+++ UFRapMatElem.dfm	(révision 3)
@@ -0,0 +1,3118 @@
+object FRapMatElem: TFRapMatElem
+  Left = 0
+  Top = 80
+  Caption = 'Feed ingredients composition report - Elementary composition'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed ingredient composition: elementary composition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRDBTEN_T: TQRDBText
+        Left = 513
+        Top = 516
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1357.312500000000000000
+          1365.250000000000000000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EN_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTED_T: TQRDBText
+        Left = 513
+        Top = 476
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1357.312500000000000000
+          1259.416666666667000000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ED_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEM_T: TQRDBText
+        Left = 511
+        Top = 496
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1352.020833333333000000
+          1312.333333333333000000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EM_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEB_T: TQRDBText
+        Left = 527
+        Top = 456
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1394.354166666667000000
+          1206.500000000000000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEVal_T: TQRLabel
+        Left = 531
+        Top = 432
+        Width = 29
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1404.937500000000000000
+          1143.000000000000000000
+          76.729166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sow'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdAmidon_T: TQRDBText
+        Left = 494
+        Top = 316
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1307.041666666667000000
+          836.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dAmidon_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdSucres_T: TQRDBText
+        Left = 497
+        Top = 336
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1314.979166666667000000
+          889.000000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dSucres_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLip_T: TQRDBText
+        Left = 507
+        Top = 276
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1341.437500000000000000
+          730.250000000000000000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLip_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMAT_T: TQRDBText
+        Left = 497
+        Top = 296
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1314.979166666667000000
+          783.166666666666700000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMAT_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMO_T: TQRDBText
+        Left = 503
+        Top = 256
+        Width = 57
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1330.854166666667000000
+          677.333333333333300000
+          150.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMO_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLdFecale_T: TQRLabel
+        Left = 531
+        Top = 192
+        Width = 29
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1404.937500000000000000
+          508.000000000000000000
+          76.729166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sow'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMatiere: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRDBMatiere: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          153.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Matiere_'
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTFecale: TQRLabel
+        Left = 270
+        Top = 168
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          444.500000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMS: TQRLabel
+        Left = 40
+        Top = 216
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          571.500000000000000000
+          177.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Dry matter'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMS: TQRDBText
+        Left = 278
+        Top = 216
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          735.541666666666700000
+          571.500000000000000000
+          111.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMS_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLFecale: TQRLabel
+        Left = 40
+        Top = 136
+        Width = 226
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          359.833333333333300000
+          597.958333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content and fecal digestibility'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLdFecale: TQRLabel
+        Left = 360
+        Top = 168
+        Width = 240
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          952.500000000000000000
+          444.500000000000000000
+          635.000000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Digestibility'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRSdFecale: TQRShape
+        Left = 400
+        Top = 184
+        Width = 160
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          1058.333333333330000000
+          486.833333333333000000
+          423.333333333333000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLdFecale_C: TQRLabel
+        Left = 401
+        Top = 192
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1060.979166666667000000
+          508.000000000000000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Growing pig'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMO: TQRLabel
+        Left = 40
+        Top = 256
+        Width = 96
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          677.333333333333300000
+          254.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Organic matter'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMO: TQRDBText
+        Left = 277
+        Top = 256
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          732.895833333333300000
+          677.333333333333300000
+          113.770833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMO_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMAT: TQRLabel
+        Left = 40
+        Top = 296
+        Width = 88
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          783.166666666666700000
+          232.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Crude protein'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMAT: TQRDBText
+        Left = 271
+        Top = 296
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          717.020833333333300000
+          783.166666666666700000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMAT_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSucres: TQRLabel
+        Left = 40
+        Top = 336
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          889.000000000000000000
+          119.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sugars'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTSucres: TQRDBText
+        Left = 257
+        Top = 336
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          679.979166666666700000
+          889.000000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TSucres_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMM: TQRLabel
+        Left = 40
+        Top = 236
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          624.416666666666700000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Minerals'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMM: TQRDBText
+        Left = 276
+        Top = 236
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          730.250000000000000000
+          624.416666666666700000
+          116.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMM_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLip: TQRLabel
+        Left = 40
+        Top = 276
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          730.250000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Crude fat'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTLip: TQRDBText
+        Left = 281
+        Top = 276
+        Width = 39
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          743.479166666666700000
+          730.250000000000000000
+          103.187500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TLip_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAmidon: TQRLabel
+        Left = 40
+        Top = 316
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          836.083333333333300000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Starch'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTAmidon: TQRDBText
+        Left = 254
+        Top = 316
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          672.041666666666700000
+          836.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TAmidon_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMO_C: TQRDBText
+        Left = 421
+        Top = 256
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1113.895833333333000000
+          677.333333333333300000
+          156.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMO_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMAT_C: TQRDBText
+        Left = 415
+        Top = 296
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1098.020833333333000000
+          783.166666666666700000
+          171.979166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMAT_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLip_C: TQRDBText
+        Left = 425
+        Top = 276
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1124.479166666667000000
+          730.250000000000000000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLip_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdSucres_C: TQRDBText
+        Left = 417
+        Top = 336
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1103.312500000000000000
+          889.000000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dSucres_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdAmidon_C: TQRDBText
+        Left = 414
+        Top = 316
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1095.375000000000000000
+          836.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dAmidon_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEB: TQRLabel
+        Left = 40
+        Top = 456
+        Width = 84
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1206.500000000000000000
+          222.250000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Gross energy'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEB_C: TQRDBText
+        Left = 447
+        Top = 456
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1182.687500000000000000
+          1206.500000000000000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEnergie: TQRLabel
+        Left = 40
+        Top = 376
+        Width = 56
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          994.833333333333300000
+          148.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Energy'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLEVal: TQRLabel
+        Left = 360
+        Top = 408
+        Width = 240
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          952.500000000000000000
+          1079.500000000000000000
+          635.000000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Energy values (MJ/kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRSEVal: TQRShape
+        Left = 400
+        Top = 424
+        Width = 160
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          1058.333333333330000000
+          1121.833333333330000000
+          423.333333333333000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLEVal_C: TQRLabel
+        Left = 401
+        Top = 432
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1060.979166666667000000
+          1143.000000000000000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Growing pig'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel1: TQRLabel
+        Left = 40
+        Top = 496
+        Width = 139
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1312.333333333333000000
+          367.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Metabolizable energy'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEM_C: TQRDBText
+        Left = 429
+        Top = 496
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1135.062500000000000000
+          1312.333333333333000000
+          134.937500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EM_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel2: TQRLabel
+        Left = 40
+        Top = 476
+        Width = 112
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1259.416666666667000000
+          296.333333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible energy'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTED_C: TQRDBText
+        Left = 431
+        Top = 476
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1140.354166666667000000
+          1259.416666666667000000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ED_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel3: TQRLabel
+        Left = 40
+        Top = 516
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1365.250000000000000000
+          185.208333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Net energy'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEN_C: TQRDBText
+        Left = 431
+        Top = 516
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1140.354166666667000000
+          1365.250000000000000000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EN_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTFibres: TQRLabel
+        Left = 270
+        Top = 588
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          1555.750000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCB: TQRLabel
+        Left = 40
+        Top = 612
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1619.250000000000000000
+          190.500000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Crude fiber'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCB: TQRDBText
+        Left = 287
+        Top = 612
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1619.250000000000000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLFibres: TQRLabel
+        Left = 40
+        Top = 556
+        Width = 40
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          1471.083333333333000000
+          105.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Fiber'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLADF: TQRLabel
+        Left = 40
+        Top = 652
+        Width = 27
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1725.083333333333000000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'ADF'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTADF: TQRDBText
+        Left = 279
+        Top = 652
+        Width = 41
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          738.187500000000000000
+          1725.083333333333000000
+          108.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ADF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLParois: TQRLabel
+        Left = 40
+        Top = 692
+        Width = 106
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1830.916666666670000000
+          280.458333333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total dietary fiber'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTParois: TQRDBText
+        Left = 268
+        Top = 692
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          709.083333333333000000
+          1830.916666666670000000
+          137.583333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Parois_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNDF: TQRLabel
+        Left = 40
+        Top = 632
+        Width = 27
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1672.166666666667000000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'NDF'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNDF: TQRDBText
+        Left = 279
+        Top = 632
+        Width = 41
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          738.187500000000000000
+          1672.166666666667000000
+          108.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NDF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLADL: TQRLabel
+        Left = 40
+        Top = 672
+        Width = 27
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1778.000000000000000000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'ADL'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTADL: TQRDBText
+        Left = 280
+        Top = 672
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          740.833333333333300000
+          1778.000000000000000000
+          105.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ADL_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCompo: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          254.000000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'StrCompo'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsItalic]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFMatiere: TStringField
+      DisplayWidth = 35
+      FieldName = '_Matiere_'
+      Size = 35
+    end
+    object SFTMS: TStringField
+      FieldName = '_TMS_'
+      Size = 8
+    end
+    object SFTMM: TStringField
+      FieldName = '_TMM_'
+      Size = 8
+    end
+    object SFTMO: TStringField
+      FieldName = '_TMO_'
+      Size = 8
+    end
+    object SFTLip: TStringField
+      FieldName = '_TLip_'
+      Size = 8
+    end
+    object SFTMAT: TStringField
+      FieldName = '_TMAT_'
+      Size = 8
+    end
+    object SFTAmidon: TStringField
+      FieldName = '_TAmidon_'
+      Size = 8
+    end
+    object SFTSucres: TStringField
+      FieldName = '_TSucres_'
+      Size = 8
+    end
+    object SFdMO_C: TStringField
+      FieldName = '_dMO_C_'
+      Size = 8
+    end
+    object SFdMO_T: TStringField
+      FieldName = '_dMO_T_'
+      Size = 8
+    end
+    object SFdLip_C: TStringField
+      FieldName = '_dLip_C_'
+      Size = 8
+    end
+    object SFdLip_T: TStringField
+      FieldName = '_dLip_T_'
+      Size = 8
+    end
+    object SFdMAT_C: TStringField
+      FieldName = '_dMAT_C_'
+      Size = 8
+    end
+    object SFdMAT_T: TStringField
+      FieldName = '_dMAT_T_'
+      Size = 8
+    end
+    object SFdAmidon: TStringField
+      FieldName = '_dAmidon_'
+      Size = 8
+    end
+    object SFdSucres: TStringField
+      FieldName = '_dSucres_'
+      Size = 8
+    end
+    object SFEB: TStringField
+      FieldName = '_EB_'
+      Size = 8
+    end
+    object SFED_C: TStringField
+      FieldName = '_ED_C_'
+      Size = 8
+    end
+    object SFED_T: TStringField
+      FieldName = '_ED_T_'
+      Size = 8
+    end
+    object SFEM_C: TStringField
+      FieldName = '_EM_C_'
+      Size = 8
+    end
+    object SFEM_T: TStringField
+      FieldName = '_EM_T_'
+      Size = 8
+    end
+    object SFEN_C: TStringField
+      FieldName = '_EN_C_'
+      Size = 8
+    end
+    object SFEN_T: TStringField
+      FieldName = '_EN_T_'
+      Size = 8
+    end
+    object SFCB: TStringField
+      FieldName = '_CB_'
+      Size = 8
+    end
+    object SFNDF: TStringField
+      FieldName = '_NDF_'
+      Size = 8
+    end
+    object SFADF: TStringField
+      FieldName = '_ADF_'
+      Size = 8
+    end
+    object SFADL: TStringField
+      FieldName = '_ADL_'
+      Size = 8
+    end
+    object SFParois: TStringField
+      FieldName = '_Parois_'
+      Size = 8
+    end
+  end
+end
Index: UFAbout.pas
===================================================================
--- UFAbout.pas	(révision 0)
+++ UFAbout.pas	(révision 3)
@@ -0,0 +1,120 @@
+unit UFAbout;
+
+interface
+
+uses
+  Windows, Messages, Forms, Classes, Controls, StdCtrls, ExtCtrls, Buttons,
+  GIFImg;
+
+type
+  TFAbout = class(TForm)
+    LProduct: TLabel;
+    LVersion: TLabel;
+    PBoutons: TPanel;
+    BBOk: TBitBtn;
+    MConfig: TMemo;
+    ILogo: TImage;
+    PTitle: TPanel;
+    PContent: TPanel;
+    LIDDN: TLabel;
+    LURL: TLabel;
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure LURLClick(Sender: TObject);
+    procedure LURLMouseEnter(Sender: TObject);
+    procedure LURLMouseLeave(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  FAbout: TFAbout;
+
+implementation
+
+uses
+  ShellAPI, SysUtils, gnugettext, UVariables, UStrings, UUtil;
+
+{$R *.dfm}
+
+procedure TFAbout.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 360 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 320 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+end;
+
+procedure TFAbout.FormShow(Sender: TObject);
+begin
+  LVersion.Caption := VersionString;
+  case LicenseType of
+    2: // Compl�te
+    begin
+      MConfig.Lines.Add(Format(StrLicenseType, [StrComplete]));
+      MConfig.Lines.Add(Format(StrLicenseNum, [LicenseNumber]));
+      MConfig.Lines.Add(Format(StrFirstName, [FirstName]));
+      MConfig.Lines.Add(Format(StrLastName, [LastName]));
+      MConfig.Lines.Add(Format(StrCompany, [Company]));
+      MConfig.Lines.Add(Format(StrEndValidity, [FinalDate]));
+      if Length(SoftwareEnableKey) = 0
+      then // Cl� absente
+        MConfig.Lines.Add(StrNoKey)
+      else
+        if not IsComplete
+        then // Cl� incorrecte
+          MConfig.Lines.Add(StrInvalidKey);
+    end ;
+    1: // Education
+    begin
+      MConfig.Lines.Add(Format(StrLicenseType, [StrEducation]));
+      MConfig.Lines.Add(Format(StrFirstName, [FirstName]));
+      MConfig.Lines.Add(Format(StrLastName, [LastName]));
+      MConfig.Lines.Add(Format(StrOrganization, [Company]));
+      MConfig.Lines.Add(Format(StrEndValidity, [FinalDate]));
+      if Length(SoftwareEnableKey) = 0
+      then // Cl� absente
+        MConfig.Lines.Add(StrNoKey)
+      else
+        if not IsEducation
+        then // Cl� incorrecte
+          MConfig.Lines.Add(StrInvalidKey);
+    end ;
+    else // Evaluation
+      MConfig.Lines.Add(Format(StrLicenseType, [StrEvaluation]));
+  end;
+  LURL.Caption := URL_HTTPS;
+end;
+
+procedure TFAbout.LURLMouseEnter(Sender: TObject);
+begin
+  Screen.Cursor := crHandPoint;
+end;
+
+procedure TFAbout.LURLMouseLeave(Sender: TObject);
+begin
+  Screen.Cursor := crDefault;
+end;
+
+procedure TFAbout.LURLClick(Sender: TObject);
+begin
+  ShellExecute(Handle, 'open', PChar(URL_HTTPS), nil, nil, SW_SHOWNORMAL);
+end;
+
+procedure TFAbout.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFGraph3D.dfm
===================================================================
--- UFGraph3D.dfm	(révision 0)
+++ UFGraph3D.dfm	(révision 3)
@@ -0,0 +1,869 @@
+object FGraph3D: TFGraph3D
+  Left = 0
+  Top = 120
+  HelpContext = 5390
+  Caption = 'Energy response curve'
+  ClientHeight = 560
+  ClientWidth = 792
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel2D: TPanel
+    Left = 200
+    Top = 0
+    Width = 592
+    Height = 560
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 1
+    Visible = False
+    object TrackBarJour: TTrackBar
+      Left = 0
+      Top = 528
+      Width = 592
+      Height = 32
+      Hint = 'Day-by-day progression of the simulation'
+      Align = alBottom
+      Max = 100
+      Min = 1
+      ParentShowHint = False
+      PageSize = 7
+      Frequency = 7
+      Position = 1
+      SelEnd = 1
+      SelStart = 1
+      ShowHint = True
+      TabOrder = 0
+      OnChange = TrackBarJourChange
+    end
+    object Chart2D: TChart
+      Left = 0
+      Top = 0
+      Width = 592
+      Height = 528
+      Legend.Visible = False
+      Title.Text.Strings = (
+        'TChart')
+      Title.Visible = False
+      BottomAxis.Automatic = False
+      BottomAxis.AutomaticMaximum = False
+      BottomAxis.AutomaticMinimum = False
+      BottomAxis.ExactDateTime = False
+      BottomAxis.Increment = 1.000000000000000000
+      BottomAxis.Maximum = 6.000000000000000000
+      BottomAxis.Minimum = 1.000000000000000000
+      BottomAxis.Title.Caption = 'NE intake (multiples of maintenance)'
+      BottomAxis.Title.Font.Style = [fsBold]
+      LeftAxis.Automatic = False
+      LeftAxis.AutomaticMaximum = False
+      LeftAxis.AutomaticMinimum = False
+      LeftAxis.ExactDateTime = False
+      LeftAxis.Increment = 25.000000000000000000
+      LeftAxis.Maximum = 200.000000000000000000
+      LeftAxis.MinorTickCount = 4
+      LeftAxis.Title.Caption = 'Protein deposition (g/d)'
+      LeftAxis.Title.Font.Color = clRed
+      LeftAxis.Title.Font.Style = [fsBold]
+      RightAxis.Automatic = False
+      RightAxis.AutomaticMaximum = False
+      RightAxis.AutomaticMinimum = False
+      RightAxis.ExactDateTime = False
+      RightAxis.Grid.Visible = False
+      RightAxis.Increment = 100.000000000000000000
+      RightAxis.Maximum = 600.000000000000000000
+      RightAxis.Title.Angle = 90
+      RightAxis.Title.Caption = 'Lipid deposition (g/d)'
+      RightAxis.Title.Font.Color = clBlue
+      RightAxis.Title.Font.Style = [fsBold]
+      TopAxis.Automatic = False
+      TopAxis.AutomaticMaximum = False
+      TopAxis.AutomaticMinimum = False
+      TopAxis.ExactDateTime = False
+      TopAxis.Grid.Visible = False
+      TopAxis.Increment = 0.500000000000000000
+      TopAxis.MinorTickCount = 4
+      TopAxis.Title.Caption = 'Feed intake (kg/d)'
+      TopAxis.Title.Font.Style = [fsBold]
+      View3D = False
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 1
+      PrintMargins = (
+        15
+        6
+        15
+        6)
+      object LabelLimitPD2D: TLabel
+        Left = 0
+        Top = 515
+        Width = 592
+        Height = 13
+        Align = alBottom
+        Alignment = taCenter
+        AutoSize = False
+        Caption = 'An amino acid limits protein deposition'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clRed
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        Visible = False
+        ExplicitLeft = 64
+        ExplicitTop = 64
+        ExplicitWidth = 178
+      end
+      object SeriesCourbePD: TLineSeries
+        HorizAxis = aBothHorizAxis
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Visible = False
+        LinePen.Color = clRed
+        LinePen.Width = 2
+        Pointer.InflateMargins = True
+        Pointer.Style = psRectangle
+        Pointer.Visible = False
+        XValues.Name = 'X'
+        XValues.Order = loAscending
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+      end
+      object SeriesLimitePD: TLineSeries
+        HorizAxis = aBothHorizAxis
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Visible = False
+        SeriesColor = clRed
+        LinePen.Color = clRed
+        LinePen.Visible = False
+        Pointer.HorizSize = 3
+        Pointer.InflateMargins = True
+        Pointer.Pen.Visible = False
+        Pointer.Style = psRectangle
+        Pointer.VertSize = 1
+        Pointer.Visible = True
+        XValues.Name = 'X'
+        XValues.Order = loAscending
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+      end
+      object SeriesPointPD: TLineSeries
+        HorizAxis = aBothHorizAxis
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Visible = False
+        SeriesColor = clRed
+        LinePen.Color = clRed
+        LinePen.Visible = False
+        Pointer.HorizSize = 5
+        Pointer.InflateMargins = True
+        Pointer.Style = psCircle
+        Pointer.VertSize = 5
+        Pointer.Visible = True
+        XValues.Name = 'X'
+        XValues.Order = loAscending
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+      end
+      object SeriesDroitePD: TLineSeries
+        HorizAxis = aBothHorizAxis
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Visible = False
+        SeriesColor = clBlack
+        Pointer.HorizSize = 3
+        Pointer.InflateMargins = True
+        Pointer.Style = psCircle
+        Pointer.VertSize = 3
+        Pointer.Visible = False
+        XValues.Name = 'X'
+        XValues.Order = loAscending
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+      end
+      object SeriesPointPDAdLib: TLineSeries
+        HorizAxis = aBothHorizAxis
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Style = smsSeriesTitle
+        Marks.Visible = True
+        SeriesColor = clBlack
+        Title = 'Ad libitum'
+        LinePen.Color = clRed
+        LinePen.Visible = False
+        Pointer.HorizSize = 5
+        Pointer.InflateMargins = True
+        Pointer.Style = psCircle
+        Pointer.VertSize = 5
+        Pointer.Visible = True
+        XValues.Name = 'X'
+        XValues.Order = loAscending
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+      end
+      object SeriesPointLD: TLineSeries
+        HorizAxis = aBothHorizAxis
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Visible = False
+        SeriesColor = clBlue
+        VertAxis = aRightAxis
+        LinePen.Color = clBlue
+        LinePen.Visible = False
+        Pointer.HorizSize = 5
+        Pointer.InflateMargins = True
+        Pointer.Style = psCircle
+        Pointer.VertSize = 5
+        Pointer.Visible = True
+        XValues.Name = 'X'
+        XValues.Order = loAscending
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+      end
+      object SeriesDroiteLD: TLineSeries
+        HorizAxis = aBothHorizAxis
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Visible = False
+        SeriesColor = clBlack
+        VertAxis = aRightAxis
+        Pointer.HorizSize = 3
+        Pointer.InflateMargins = True
+        Pointer.Style = psCircle
+        Pointer.VertSize = 3
+        Pointer.Visible = False
+        XValues.Name = 'X'
+        XValues.Order = loAscending
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+      end
+      object SeriesCourbeLD: TLineSeries
+        HorizAxis = aBothHorizAxis
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Visible = False
+        SeriesColor = clBlue
+        VertAxis = aRightAxis
+        LinePen.Color = clBlue
+        LinePen.Width = 2
+        Pointer.InflateMargins = True
+        Pointer.Style = psRectangle
+        Pointer.Visible = False
+        XValues.Name = 'X'
+        XValues.Order = loAscending
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+      end
+      object SeriesPointLDAdLib: TLineSeries
+        HorizAxis = aBothHorizAxis
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Style = smsSeriesTitle
+        Marks.Visible = True
+        SeriesColor = clBlack
+        Title = 'Ad libitum'
+        VertAxis = aRightAxis
+        LinePen.Color = clBlue
+        LinePen.Visible = False
+        Pointer.HorizSize = 5
+        Pointer.InflateMargins = True
+        Pointer.Style = psCircle
+        Pointer.VertSize = 5
+        Pointer.Visible = True
+        XValues.Name = 'X'
+        XValues.Order = loAscending
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+      end
+    end
+  end
+  object PanelData: TPanel
+    Left = 0
+    Top = 0
+    Width = 200
+    Height = 560
+    Align = alLeft
+    BevelOuter = bvNone
+    TabOrder = 0
+    object GroupBoxResult: TGroupBox
+      Left = 0
+      Top = 288
+      Width = 192
+      Height = 224
+      Caption = 'Results'
+      TabOrder = 6
+      Visible = False
+      object StringGridResult: TStringGrid
+        Left = 8
+        Top = 16
+        Width = 176
+        Height = 199
+        TabStop = False
+        ColCount = 2
+        Ctl3D = False
+        DefaultRowHeight = 17
+        FixedCols = 0
+        RowCount = 11
+        FixedRows = 0
+        Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine]
+        ParentCtl3D = False
+        ParentShowHint = False
+        ScrollBars = ssNone
+        ShowHint = True
+        TabOrder = 0
+        OnDrawCell = StringGridResultDrawCell
+        OnMouseMove = StringGridResultMouseMove
+        ColWidths = (
+          109
+          64)
+      end
+    end
+    object GroupBoxAdLib: TGroupBox
+      Left = 0
+      Top = 0
+      Width = 192
+      Height = 120
+      Caption = 'Ad libitum intake'
+      TabOrder = 0
+      object LabelA: TLabel
+        Left = 64
+        Top = 68
+        Width = 8
+        Height = 13
+        Hint = 'Parameter a of the equation'
+        Alignment = taRightJustify
+        AutoSize = False
+        Caption = 'a'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object LabelUnite: TLabel
+        Left = 8
+        Top = 20
+        Width = 19
+        Height = 13
+        Caption = 'Unit'
+      end
+      object LabelEquation: TLabel
+        Left = 8
+        Top = 44
+        Width = 42
+        Height = 13
+        Caption = 'Equation'
+      end
+      object LabelB: TLabel
+        Left = 64
+        Top = 92
+        Width = 8
+        Height = 13
+        Hint = 'Parameter b of the equation'
+        Alignment = taRightJustify
+        AutoSize = False
+        Caption = 'b'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object SuperSpinA: TPBSuperSpin
+        Left = 120
+        Top = 64
+        Width = 64
+        Height = 22
+        Cursor = crDefault
+        Alignment = taRightJustify
+        Decimals = 0
+        NumberFormat = Standard
+        OnChange = SuperSpinAChange
+        TabOrder = 2
+        Increment = 1.000000000000000000
+        RoundValues = False
+        Wrap = False
+      end
+      object SuperSpinB: TPBSuperSpin
+        Left = 120
+        Top = 88
+        Width = 64
+        Height = 22
+        Cursor = crDefault
+        Alignment = taRightJustify
+        Decimals = 0
+        NumberFormat = Standard
+        OnChange = SuperSpinBChange
+        TabOrder = 3
+        Increment = 1.000000000000000000
+        RoundValues = False
+        Wrap = False
+      end
+      object EditUnit: TEdit
+        Left = 64
+        Top = 16
+        Width = 120
+        Height = 21
+        Enabled = False
+        TabOrder = 0
+      end
+      object EditEquation: TEdit
+        Left = 64
+        Top = 40
+        Width = 120
+        Height = 21
+        Enabled = False
+        TabOrder = 1
+      end
+    end
+    object GroupBoxPotential: TGroupBox
+      Left = 0
+      Top = 120
+      Width = 192
+      Height = 120
+      Caption = 'Growth potential'
+      TabOrder = 1
+      object LabelEntretien: TLabel
+        Left = 8
+        Top = 68
+        Width = 62
+        Height = 13
+        Hint = 'Maintenance correction factor'
+        Caption = 'Maintenance'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object LabelPrecocite: TLabel
+        Left = 8
+        Top = 44
+        Width = 64
+        Height = 13
+        Hint = 
+          'Maturation coefficient (shape parameter of the Gompertz function' +
+          ')'
+        Caption = 'Precocity (/d)'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object LabelPDMoy: TLabel
+        Left = 8
+        Top = 20
+        Width = 71
+        Height = 13
+        Hint = 'Average protein deposition (g/d)'
+        Caption = 'Mean PD (g/d)'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object LabelPVPDmax: TLabel
+        Left = 8
+        Top = 92
+        Width = 76
+        Height = 13
+        Hint = 'Body weight (kg) to reach PDmax'
+        Caption = 'BW PDmax (kg)'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object SuperSpinPDMoy: TPBSuperSpin
+        Left = 120
+        Top = 16
+        Width = 64
+        Height = 22
+        Cursor = crDefault
+        Hint = 'Average protein deposition (g/d)'
+        Alignment = taRightJustify
+        Decimals = 2
+        MaxValue = 260.000000000000000000
+        MinValue = 50.000000000000000000
+        NumberFormat = Standard
+        OnChange = SuperSpinPDMoyChange
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        Increment = 0.100000000000000000
+        RoundValues = False
+        Wrap = False
+      end
+      object SuperSpinPrecocite: TPBSuperSpin
+        Left = 120
+        Top = 40
+        Width = 64
+        Height = 22
+        Cursor = crDefault
+        Hint = 
+          'Maturation coefficient (shape parameter of the Gompertz function' +
+          ')'
+        Alignment = taRightJustify
+        Decimals = 5
+        MaxValue = 0.040000000000000000
+        MinValue = 0.001000000000000000
+        NumberFormat = Standard
+        OnChange = SuperSpinPrecociteChange
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        Increment = 0.000100000000000000
+        RoundValues = False
+        Wrap = False
+      end
+      object SuperSpinEntretien: TPBSuperSpin
+        Left = 120
+        Top = 64
+        Width = 64
+        Height = 22
+        Cursor = crDefault
+        Hint = 'Maintenance correction factor'
+        Alignment = taRightJustify
+        Decimals = 3
+        MaxValue = 1.300000000000000000
+        MinValue = 0.700000000000000000
+        NumberFormat = Standard
+        OnChange = SuperSpinEntretienChange
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        Increment = 0.010000000000000000
+        RoundValues = False
+        Wrap = False
+      end
+      object SuperSpinPVPDmax: TPBSuperSpin
+        Left = 120
+        Top = 88
+        Width = 64
+        Height = 22
+        Cursor = crDefault
+        Hint = 'Body weight (kg) to reach PDmax'
+        Alignment = taRightJustify
+        Decimals = 0
+        MaxValue = 5000.000000000000000000
+        MinValue = 20.000000000000000000
+        NumberFormat = Standard
+        OnChange = SuperSpinPVPDmaxChange
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+        Increment = 1.000000000000000000
+        RoundValues = False
+        Wrap = False
+      end
+    end
+    object GroupBoxType: TGroupBox
+      Left = 0
+      Top = 240
+      Width = 192
+      Height = 48
+      Caption = 'Graph type'
+      TabOrder = 2
+      object RadioButton2D: TRadioButton
+        Left = 48
+        Top = 18
+        Width = 32
+        Height = 17
+        Alignment = taLeftJustify
+        Caption = '2D'
+        TabOrder = 0
+        OnClick = RadioButton2DClick
+      end
+      object RadioButton3D: TRadioButton
+        Left = 96
+        Top = 18
+        Width = 32
+        Height = 17
+        Caption = '3D'
+        Checked = True
+        TabOrder = 1
+        TabStop = True
+        OnClick = RadioButton3DClick
+      end
+    end
+    object GroupBoxX: TGroupBox
+      Left = 0
+      Top = 288
+      Width = 192
+      Height = 48
+      Caption = 'X-axis'
+      TabOrder = 3
+      object ComboBoxX: TComboBox
+        Left = 16
+        Top = 16
+        Width = 160
+        Height = 21
+        Style = csDropDownList
+        ItemHeight = 13
+        ItemIndex = 0
+        TabOrder = 0
+        Text = 'Duration (d)'
+        OnChange = ComboBoxXChange
+        Items.Strings = (
+          'Duration (d)'
+          'Age (d)'
+          'Body weight (kg)')
+      end
+    end
+    object GroupBoxY: TGroupBox
+      Left = 0
+      Top = 336
+      Width = 192
+      Height = 48
+      Caption = 'Y-axis'
+      TabOrder = 4
+      object ComboBoxY: TComboBox
+        Left = 16
+        Top = 16
+        Width = 160
+        Height = 21
+        Style = csDropDownList
+        ItemHeight = 13
+        ItemIndex = 0
+        TabOrder = 0
+        Text = 'Protein deposition (g/d)'
+        OnChange = ComboBoxYChange
+        Items.Strings = (
+          'Protein deposition (g/d)'
+          'Lipid deposition (g/d)')
+      end
+    end
+    object GroupBoxZ: TGroupBox
+      Left = 0
+      Top = 384
+      Width = 192
+      Height = 48
+      Caption = 'Feed intake'
+      TabOrder = 5
+      object ComboBoxZ: TComboBox
+        Left = 16
+        Top = 16
+        Width = 160
+        Height = 21
+        Style = csDropDownList
+        ItemHeight = 13
+        ItemIndex = 0
+        TabOrder = 0
+        Text = 'Feed intake (kg/d)'
+        OnChange = ComboBoxZChange
+        Items.Strings = (
+          'Feed intake (kg/d)'
+          'NE intake (x maintenance)')
+      end
+    end
+  end
+  object Panel3D: TPanel
+    Left = 200
+    Top = 0
+    Width = 592
+    Height = 560
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 2
+    DesignSize = (
+      592
+      560)
+    object Chart3D: TChart
+      Left = -2
+      Top = 18
+      Width = 568
+      Height = 512
+      BottomWall.Transparent = True
+      LeftWall.Transparent = True
+      Legend.Alignment = laBottom
+      MarginBottom = 5
+      MarginLeft = 5
+      MarginRight = 5
+      MarginTop = 5
+      Title.Text.Strings = (
+        'TChart')
+      Title.Visible = False
+      BottomAxis.ExactDateTime = False
+      BottomAxis.Increment = 10.000000000000000000
+      BottomAxis.Title.Font.Style = [fsBold]
+      Chart3DPercent = 100
+      DepthAxis.Automatic = False
+      DepthAxis.AutomaticMaximum = False
+      DepthAxis.AutomaticMinimum = False
+      DepthAxis.ExactDateTime = False
+      DepthAxis.Increment = 1.000000000000000000
+      DepthAxis.Maximum = 99.000000000000000000
+      DepthAxis.Minimum = 1.000000000000000000
+      DepthAxis.Title.Font.Style = [fsBold]
+      DepthAxis.Visible = True
+      LeftAxis.Automatic = False
+      LeftAxis.AutomaticMinimum = False
+      LeftAxis.ExactDateTime = False
+      LeftAxis.Increment = 50.000000000000000000
+      LeftAxis.Title.Font.Style = [fsBold]
+      RightAxis.Title.Font.Style = [fsBold]
+      TopAxis.Title.Font.Style = [fsBold]
+      View3DOptions.OrthoAngle = 30
+      View3DOptions.Orthogonal = False
+      View3DOptions.Perspective = 0
+      View3DOptions.Rotation = 320
+      View3DOptions.Zoom = 70
+      View3DOptions.ZoomText = False
+      BevelOuter = bvNone
+      TabOrder = 0
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      PrintMargins = (
+        10
+        10
+        10
+        10)
+      object LabelLimitPD3D: TLabel
+        Left = 0
+        Top = 499
+        Width = 568
+        Height = 13
+        Align = alBottom
+        Alignment = taCenter
+        AutoSize = False
+        Caption = 'An amino acid limits protein deposition'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clRed
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        Visible = False
+        ExplicitLeft = 64
+        ExplicitTop = 64
+        ExplicitWidth = 178
+      end
+      object SeriesSurface: TSurfaceSeries
+        FastBrush = True
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Visible = False
+        SeriesColor = 12615680
+        ShowInLegend = False
+        Title = 'Surface'
+        Brush.Color = 12615680
+        EndColor = 10109259
+        IrregularGrid = True
+        MidColor = 7548915
+        SideBrush.Color = clWhite
+        SideBrush.Style = bsClear
+        SmoothPalette = True
+        StartColor = 2152289
+        XValues.Name = 'X'
+        XValues.Order = loNone
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+        ZValues.Name = 'Z'
+        ZValues.Order = loNone
+      end
+      object SeriesAdLib: TPoint3DSeries
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Visible = False
+        SeriesColor = clBlack
+        Title = 'Ad libitum'
+        LinePen.Width = 3
+        Pointer.HorizSize = 5
+        Pointer.InflateMargins = True
+        Pointer.Pen.Visible = False
+        Pointer.Style = psCircle
+        Pointer.VertSize = 5
+        Pointer.Visible = False
+        XValues.Name = 'X'
+        XValues.Order = loNone
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+        ZValues.Name = 'Z'
+        ZValues.Order = loNone
+      end
+      object SeriesRation: TPoint3DSeries
+        Marks.Arrow.Visible = True
+        Marks.Callout.Brush.Color = clBlack
+        Marks.Callout.Arrow.Visible = True
+        Marks.Visible = False
+        Title = 'Feed rationing plan'
+        LinePen.Color = clRed
+        LinePen.Width = 3
+        Pointer.HorizSize = 5
+        Pointer.InflateMargins = True
+        Pointer.Pen.Visible = False
+        Pointer.Style = psCircle
+        Pointer.VertSize = 5
+        Pointer.Visible = False
+        XValues.Name = 'X'
+        XValues.Order = loNone
+        YValues.Name = 'Y'
+        YValues.Order = loNone
+        ZValues.Name = 'Z'
+        ZValues.Order = loNone
+      end
+    end
+    object SliderRotation: TJvxSlider
+      Left = 24
+      Top = 536
+      Width = 544
+      Height = 24
+      Hint = 'Rotation'
+      MinValue = 270
+      MaxValue = 360
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      TabStop = False
+      Value = 270
+      Anchors = [akLeft, akRight, akBottom]
+      OnChange = SliderRotationChange
+    end
+    object SliderElevation: TJvxSlider
+      Left = 568
+      Top = 24
+      Width = 24
+      Height = 512
+      Hint = 'Elevation'
+      MinValue = 270
+      MaxValue = 360
+      Orientation = soVertical
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 2
+      TabStop = False
+      Value = 270
+      Anchors = [akTop, akRight, akBottom]
+      OnChange = SliderElevationChange
+    end
+    object SliderPerspective: TJvxSlider
+      Left = 32
+      Top = 0
+      Width = 200
+      Height = 24
+      Hint = 'Perspective'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 3
+      TabStop = False
+      OnChange = SliderPerspectiveChange
+    end
+    object SliderZoom: TJvxSlider
+      Left = 240
+      Top = 0
+      Width = 200
+      Height = 24
+      Hint = 'Zoom'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 4
+      TabStop = False
+      OnChange = SliderZoomChange
+    end
+  end
+end
Index: UFResBesGestT.dfm
===================================================================
--- UFResBesGestT.dfm	(révision 0)
+++ UFResBesGestT.dfm	(révision 3)
@@ -0,0 +1,496 @@
+object FResBesGestT: TFResBesGestT
+  Left = 200
+  Top = 200
+  HelpContext = 4810
+  Caption = 'Requirements during gestation (sow)'
+  ClientHeight = 400
+  ClientWidth = 544
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PC: TPageControl
+    Left = 0
+    Top = 0
+    Width = 544
+    Height = 94
+    ActivePage = TSAli
+    Align = alTop
+    HotTrack = True
+    MultiLine = True
+    TabOrder = 0
+    TabStop = False
+    OnChange = PCChange
+    object TSAli: TTabSheet
+      Caption = 'Feed'
+      ImageIndex = 2
+      object LAliDuree: TLabel
+        Left = 8
+        Top = 16
+        Width = 40
+        Height = 13
+        Caption = 'Duration'
+      end
+      object LAliQuantite: TLabel
+        Left = 8
+        Top = 40
+        Width = 39
+        Height = 13
+        Caption = 'Quantity'
+      end
+      object GBAli1: TGroupBox
+        Left = 64
+        Top = 0
+        Width = 64
+        Height = 66
+        Caption = 'Period 1'
+        TabOrder = 1
+        object PBDuree1: TPBSuperSpin
+          Left = 8
+          Top = 16
+          Width = 48
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 35.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBDuree1Change
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBQuantite1: TPBSuperSpin
+          Left = 8
+          Top = 40
+          Width = 48
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBQuantite1Change
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          Visible = False
+          Increment = 0.010000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+      end
+      object GBAli2: TGroupBox
+        Left = 132
+        Top = 0
+        Width = 64
+        Height = 66
+        Caption = 'Period 2'
+        TabOrder = 2
+        object PBDuree2: TPBNumEdit
+          Left = 8
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          ReadOnly = True
+          TabOrder = 0
+        end
+        object PBQuantite2: TPBNumEdit
+          Left = 8
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          ReadOnly = True
+          TabOrder = 1
+        end
+      end
+      object GBAli3: TGroupBox
+        Left = 200
+        Top = 0
+        Width = 64
+        Height = 66
+        Caption = 'Period 3'
+        TabOrder = 3
+        object PBDuree3: TPBSuperSpin
+          Left = 8
+          Top = 16
+          Width = 48
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 35.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBDuree3Change
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBQuantite3: TPBSuperSpin
+          Left = 8
+          Top = 40
+          Width = 48
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBQuantite3Change
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          Visible = False
+          Increment = 0.010000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+      end
+      object GBAliMoy: TGroupBox
+        Left = 268
+        Top = 0
+        Width = 64
+        Height = 66
+        Caption = 'Mean'
+        TabOrder = 4
+        object PBDureeMoy: TPBNumEdit
+          Left = 8
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 0
+        end
+        object PBQuantiteMoy: TPBNumEdit
+          Left = 8
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 1
+        end
+      end
+      object GBAliX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 0
+        object CBAli2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          OnChange = CBAli2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+      end
+    end
+    object TabNRJ: TTabSheet
+      Caption = 'Energy'
+      ImageIndex = -1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object GBNRJX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBNRJ2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          OnChange = CBNRJ2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+      end
+      object GBNRJY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBNRJ3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 1
+          TabOrder = 0
+          Text = 'Metabolizable energy'
+          OnChange = CBNRJ3Change
+          Items.Strings = (
+            'Digestible energy'
+            'Metabolizable energy'
+            'Net energy')
+        end
+        object CBNRJ4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBNRJ4Change
+        end
+      end
+      object GBNRJT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBNRJ1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBNRJ1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning')
+        end
+      end
+    end
+    object TabAA: TTabSheet
+      Caption = 'Amino acids'
+      ImageIndex = 8
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object GBAAX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBAA2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          OnChange = CBAA2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+      end
+      object GBAAT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBAA1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Dynamic partitioning'
+          OnChange = CBAA1Change
+          Items.Strings = (
+            'Dynamic partitioning'
+            'Requirement')
+        end
+      end
+      object GBAAY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBAA3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Lysine'
+          OnChange = CBAA3Change
+          Items.Strings = (
+            'Lysine'
+            'Methionine'
+            'Methionine + Cystine'
+            'Tryptophan'
+            'Threonine'
+            'Phenylalanine'
+            'Phenylalanine + Tyrosine'
+            'Leucine'
+            'Isoleucine'
+            'Valine'
+            'Histidine'
+            'Arginine')
+        end
+        object CBAA4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBAA4Change
+        end
+      end
+    end
+  end
+  object Graph: TChart
+    Left = 0
+    Top = 94
+    Width = 544
+    Height = 306
+    Foot.Alignment = taLeftJustify
+    Foot.Font.Color = clBlack
+    Foot.Font.Style = []
+    Legend.Inverted = True
+    Legend.LegendStyle = lsSeries
+    MarginBottom = 1
+    MarginLeft = 1
+    MarginRight = 1
+    MarginTop = 1
+    SubTitle.Font.Color = clBlack
+    Title.Font.Height = -16
+    Title.Font.Style = [fsBold]
+    Title.Text.Strings = (
+      'Title')
+    BottomAxis.Title.Caption = 'X'
+    BottomAxis.Title.Font.Style = [fsBold]
+    LeftAxis.Automatic = False
+    LeftAxis.AutomaticMaximum = False
+    LeftAxis.AutomaticMinimum = False
+    LeftAxis.Title.Caption = 'Y'
+    LeftAxis.Title.Font.Style = [fsBold]
+    View3D = False
+    Align = alClient
+    BevelOuter = bvNone
+    PopupMenu = PM
+    TabOrder = 1
+    PrintMargins = (
+      5
+      5
+      5
+      5)
+  end
+  object LBAA: TListBox
+    Left = 168
+    Top = 176
+    Width = 120
+    Height = 56
+    ItemHeight = 13
+    Items.Strings = (
+      'Maintenance'
+      'Litter'
+      'Reserves'
+      'Excess')
+    TabOrder = 2
+    Visible = False
+  end
+  object LBNRJ: TListBox
+    Left = 40
+    Top = 176
+    Width = 120
+    Height = 69
+    ItemHeight = 13
+    Items.Strings = (
+      'Maintenance'
+      'Activity'
+      'Thermoregulation'
+      'Litter'
+      'Reserves')
+    TabOrder = 3
+    Visible = False
+  end
+  object PM: TPopupMenu
+    Top = 96
+    object MI3D: TMenuItem
+      Caption = '2D / 3D'
+      OnClick = MI3DClick
+    end
+    object MIPreview: TMenuItem
+      Caption = 'Print preview'
+      OnClick = MIPreviewClick
+    end
+    object MIPrint: TMenuItem
+      Caption = 'Print...'
+      OnClick = MIPrintClick
+    end
+  end
+  object PD: TPrintDialog
+    Left = 32
+    Top = 96
+  end
+end
Index: UFComment.dfm
===================================================================
--- UFComment.dfm	(révision 0)
+++ UFComment.dfm	(révision 3)
@@ -0,0 +1,53 @@
+object FComment: TFComment
+  Left = 200
+  Top = 200
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Comment'
+  ClientHeight = 112
+  ClientWidth = 468
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Memo: TMemo
+    Left = 8
+    Top = 8
+    Width = 452
+    Height = 60
+    MaxLength = 255
+    TabOrder = 0
+    WantReturns = False
+  end
+  object BBOk: TBitBtn
+    Left = 296
+    Top = 80
+    Width = 80
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    NumGlyphs = 2
+    TabOrder = 1
+  end
+  object BBCancel: TBitBtn
+    Left = 384
+    Top = 80
+    Width = 80
+    Height = 25
+    Cancel = True
+    Caption = 'Cancel'
+    ModalResult = 2
+    NumGlyphs = 2
+    TabOrder = 2
+  end
+end
Index: UFRapMatAA.pas
===================================================================
--- UFRapMatAA.pas	(révision 0)
+++ UFRapMatAA.pas	(révision 3)
@@ -0,0 +1,244 @@
+unit UFRapMatAA;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapMatAA = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLMatiere: TQRLabel;
+    CDSRapport: TClientDataSet;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    SFMatiere: TStringField;
+    QRDBMatiere: TQRDBText;
+    QRLTAA: TQRLabel;
+    QRLMAT: TQRLabel;
+    QRDBTTMAT: TQRDBText;
+    QRLAA: TQRLabel;
+    QRLdAA: TQRLabel;
+    QRSdFecale: TQRShape;
+    QRLdAA_Std: TQRLabel;
+    QRLdAA_App: TQRLabel;
+    QRLCompo: TQRLabel;
+    QRDBTdMAT_Std: TQRDBText;
+    QRDBTdMAT_App: TQRDBText;
+    SFLys: TStringField;
+    SFdLysStd: TStringField;
+    SFdLysApp: TStringField;
+    SFTMet: TStringField;
+    SFdMetStd: TStringField;
+    SFdMetApp: TStringField;
+    SFTCys: TStringField;
+    SFdCysStd: TStringField;
+    SFdCysApp: TStringField;
+    SFTTrp: TStringField;
+    SFdTrpStd: TStringField;
+    SFdTrpApp: TStringField;
+    SFTThr: TStringField;
+    SFdThrStd: TStringField;
+    SFdThrApp: TStringField;
+    SFTPhe: TStringField;
+    SFdPheStd: TStringField;
+    SFdPheApp: TStringField;
+    SFTTyr: TStringField;
+    SFdTyrStd_: TStringField;
+    SFdTyrApp: TStringField;
+    SFTLeu: TStringField;
+    SFdLeuStd: TStringField;
+    SFdLeuApp: TStringField;
+    SFTIle: TStringField;
+    SFdIleStd: TStringField;
+    SFdIleApp: TStringField;
+    SFTVal: TStringField;
+    SFdValStd: TStringField;
+    SFdValApp: TStringField;
+    SFTHis: TStringField;
+    SFdHisStd: TStringField;
+    SFdHisApp: TStringField;
+    SFTArg: TStringField;
+    SFdArgStd: TStringField;
+    SFdArgApp: TStringField;
+    SFTMetCys: TStringField;
+    SFdMetCysStd: TStringField;
+    SFdMetCysApp: TStringField;
+    SFTPheTyr: TStringField;
+    SFdPheTyrStd: TStringField;
+    SFdPheTyrApp: TStringField;
+    SFTMAT: TStringField;
+    SFdMATStd: TStringField;
+    SFdMATApp: TStringField;
+    QRLMet: TQRLabel;
+    QRDBTTMet: TQRDBText;
+    QRDBTdMetStd: TQRDBText;
+    QRDBTdMetApp: TQRDBText;
+    QRLTrp: TQRLabel;
+    QRDBTTTrp: TQRDBText;
+    QRDBTdTrpStd: TQRDBText;
+    QRDBTdTrpApp: TQRDBText;
+    QRLPhe: TQRLabel;
+    QRDBTTPhe: TQRDBText;
+    QRDBTdPheStd: TQRDBText;
+    QRDBTdPheApp: TQRDBText;
+    QRLLeu: TQRLabel;
+    QRDBTTLeu: TQRDBText;
+    QRDBTdLeuStd: TQRDBText;
+    QRDBTdLeuApp: TQRDBText;
+    QRLVal: TQRLabel;
+    QRDBTTVal: TQRDBText;
+    QRDBTdValStd: TQRDBText;
+    QRDBTdValApp: TQRDBText;
+    QRLArg: TQRLabel;
+    QRDBTTArg: TQRDBText;
+    QRDBTdArgStd: TQRDBText;
+    QRDBTdArgApp: TQRDBText;
+    QRLPheTyr: TQRLabel;
+    QRDBTTPheTyr: TQRDBText;
+    QRDBTdPheTyrStd: TQRDBText;
+    QRDBTdPheTyrApp: TQRDBText;
+    QRLLys: TQRLabel;
+    QRDBTTLys: TQRDBText;
+    QRDBTdLysStd: TQRDBText;
+    QRDBTdLysApp: TQRDBText;
+    QRLCys: TQRLabel;
+    QRDBTTCys: TQRDBText;
+    QRDBTdCysStd: TQRDBText;
+    QRDBTdCysApp: TQRDBText;
+    QRLThr: TQRLabel;
+    QRDBTTThr: TQRDBText;
+    QRDBTdThrStd: TQRDBText;
+    QRDBTdThrApp: TQRDBText;
+    QRLTyr: TQRLabel;
+    QRDBTTTyr: TQRDBText;
+    QRDBTdTyrStd: TQRDBText;
+    QRDBTdTyrApp: TQRDBText;
+    QRLIle: TQRLabel;
+    QRDBTTIle: TQRDBText;
+    QRDBTdIleStd: TQRDBText;
+    QRDBTdIleApp: TQRDBText;
+    QRLHis: TQRLabel;
+    QRDBTTHis: TQRDBText;
+    QRDBTdHisStd: TQRDBText;
+    QRDBTdHisApp: TQRDBText;
+    QRLMetCys: TQRLabel;
+    QRDBTTMetCys: TQRDBText;
+    QRDBTdMetCysStd: TQRDBText;
+    QRDBTdMetCysApp: TQRDBText;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapMatAA: TFRapMatAA;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFMatiere, UFPrevRap;
+
+{$R *.dfm}
+
+{ TFRapMatAA }
+
+procedure TFRapMatAA.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Matiere_'] := FMatiere.CBMatiere.Text;
+    FieldValues['_TMAT_'] := FMatiere.PBTMAT2.Text;
+    FieldValues['_dMAT_Std_'] := FMatiere.PBdMATStd.Text;
+    FieldValues['_dMAT_App_'] := FMatiere.PBdMATApp.Text;
+    FieldValues['_TLys_'] := FMatiere.PBTLys.Text;
+    FieldValues['_dLys_Std_'] := FMatiere.PBdLysStd.Text;
+    FieldValues['_dLys_App_'] := FMatiere.PBdLysApp.Text;
+    FieldValues['_TMet_'] := FMatiere.PBTMet.Text;
+    FieldValues['_dMet_Std_'] := FMatiere.PBdMetStd.Text;
+    FieldValues['_dMet_App_'] := FMatiere.PBdMetApp.Text;
+    FieldValues['_TCys_'] := FMatiere.PBTCys.Text;
+    FieldValues['_dCys_Std_'] := FMatiere.PBdCysStd.Text;
+    FieldValues['_dCys_App_'] := FMatiere.PBdCysApp.Text;
+    FieldValues['_TTrp_'] := FMatiere.PBTTrp.Text;
+    FieldValues['_dTrp_Std_'] := FMatiere.PBdTrpStd.Text;
+    FieldValues['_dTrp_App_'] := FMatiere.PBdTrpApp.Text;
+    FieldValues['_TThr_'] := FMatiere.PBTThr.Text;
+    FieldValues['_dThr_Std_'] := FMatiere.PBdThrStd.Text;
+    FieldValues['_dThr_App_'] := FMatiere.PBdThrApp.Text;
+    FieldValues['_TPhe_'] := FMatiere.PBTPhe.Text;
+    FieldValues['_dPhe_Std_'] := FMatiere.PBdPheStd.Text;
+    FieldValues['_dPhe_App_'] := FMatiere.PBdPheApp.Text;
+    FieldValues['_TTyr_'] := FMatiere.PBTTyr.Text;
+    FieldValues['_dTyr_Std_'] := FMatiere.PBdTyrStd.Text;
+    FieldValues['_dTyr_App_'] := FMatiere.PBdTyrApp.Text;
+    FieldValues['_TLeu_'] := FMatiere.PBTLeu.Text;
+    FieldValues['_dLeu_Std_'] := FMatiere.PBdLeuStd.Text;
+    FieldValues['_dLeu_App_'] := FMatiere.PBdLeuApp.Text;
+    FieldValues['_TIle_'] := FMatiere.PBTIle.Text;
+    FieldValues['_dIle_Std_'] := FMatiere.PBdIleStd.Text;
+    FieldValues['_dIle_App_'] := FMatiere.PBdIleApp.Text;
+    FieldValues['_TVal_'] := FMatiere.PBTVal.Text;
+    FieldValues['_dVal_Std_'] := FMatiere.PBdValStd.Text;
+    FieldValues['_dVal_App_'] := FMatiere.PBdValApp.Text;
+    FieldValues['_THis_'] := FMatiere.PBTHis.Text;
+    FieldValues['_dHis_Std_'] := FMatiere.PBdHisStd.Text;
+    FieldValues['_dHis_App_'] := FMatiere.PBdHisApp.Text;
+    FieldValues['_TArg_'] := FMatiere.PBTArg.Text;
+    FieldValues['_dArg_Std_'] := FMatiere.PBdArgStd.Text;
+    FieldValues['_dArg_App_'] := FMatiere.PBdArgApp.Text;
+    FieldValues['_TMetCys_'] := FMatiere.PBTMetCys.Text;
+    FieldValues['_dMetCys_Std_'] := FMatiere.PBdMetCysStd.Text;
+    FieldValues['_dMetCys_App_'] := FMatiere.PBdMetCysApp.Text;
+    FieldValues['_TPheTyr_'] := FMatiere.PBTPheTyr.Text;
+    FieldValues['_dPheTyr_Std_'] := FMatiere.PBdPheTyrStd.Text;
+    FieldValues['_dPheTyr_App_'] := FMatiere.PBdPheTyrApp.Text;
+    Post;
+  end ;
+  QRMMemo.Lines.Add(FMatiere.CBMatiere.Hint);
+  QRLCompo.Caption := FMatiere.Hint;
+  QRLTAA.Caption := FMatiere.GBTAA.Caption;
+  QRLdAA.Caption := FMatiere.GBdAA.Caption;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: Ludo/numhess.inc
===================================================================
--- Ludo/numhess.inc	(révision 0)
+++ Ludo/numhess.inc	(révision 3)
@@ -0,0 +1,67 @@
+{ ******************************************************************
+  Numerical hessian and gradient
+  ****************************************************************** }
+
+procedure HessGrad(X, G : TVector; H : TMatrix);
+
+const
+  Eta = 1.0E-6;     { Relative increment }
+
+var
+  Delta, Xminus, Xplus, Fminus, Fplus : TVector;
+  Temp1, Temp2, F, F2plus             : Float;
+  I, J                                : Integer;
+
+begin
+  DimVector(Delta, Nvar);   { Increments   }
+  DimVector(Xminus, Nvar);  { X - Delta    }
+  DimVector(Xplus, Nvar);   { X + Delta    }
+  DimVector(Fminus, Nvar);  { F(X - Delta) }
+  DimVector(Fplus, Nvar);   { F(X + Delta) }
+
+  F := Func(X);
+
+  for I := 1 to Nvar do
+    begin
+      if X[I] <> 0.0 then
+        Delta[I] := Eta * Abs(X[I])
+      else
+        Delta[I] := Eta;
+      Xplus[I] := X[I] + Delta[I];
+      Xminus[I] := X[I] - Delta[I];
+    end;
+
+  for I := 1 to Nvar do
+    begin
+      Temp1 := X[I];
+      X[I] := Xminus[I];
+      Fminus[I] := Func(X);
+      X[I] := Xplus[I];
+      Fplus[I] := Func(X);
+      X[I] := Temp1;
+    end;
+
+  for I := 1 to Nvar do
+    begin
+      G[I] := (Fplus[I] - Fminus[I]) / (2.0 * Delta[I]);
+      H[I,I] := (Fplus[I] + Fminus[I] - 2.0 * F) / Sqr(Delta[I]);
+    end;
+
+  for I := 1 to Pred(Nvar) do
+    begin
+      Temp1 := X[I];
+      X[I] := Xplus[I];
+      for J := Succ(I) to Nvar do
+        begin
+          Temp2 := X[J];
+          X[J] := Xplus[J];
+          F2plus := Func(X);
+          H[I,J] := (F2plus - Fplus[I] - Fplus[J] + F) / (Delta[I] * Delta[J]);
+          H[J,I] := H[I,J];
+          X[J] := Temp2;
+        end;
+      X[I] := Temp1;
+    end;
+
+end;
+
Index: Ludo/Ludo.dproj
===================================================================
--- Ludo/Ludo.dproj	(révision 0)
+++ Ludo/Ludo.dproj	(révision 3)
@@ -0,0 +1,115 @@
+﻿	<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+		<PropertyGroup>
+			<ProjectGuid>{34268E2A-356E-453F-9EBA-BFE16E4DF6E9}</ProjectGuid>
+			<MainSource>Ludo.dpr</MainSource>
+			<Config Condition="'$(Config)'==''">Debug</Config>
+			<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
+			<ProjectVersion>12.0</ProjectVersion>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+			<Base>true</Base>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
+			<Cfg_1>true</Cfg_1>
+			<CfgParent>Base</CfgParent>
+			<Base>true</Base>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
+			<Cfg_2>true</Cfg_2>
+			<CfgParent>Base</CfgParent>
+			<Base>true</Base>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Base)'!=''">
+			<DCC_ImageBase>00400000</DCC_ImageBase>
+			<DCC_SymbolReferenceInfo>1</DCC_SymbolReferenceInfo>
+			<DCC_DependencyCheckOutputName>Ludo.exe</DCC_DependencyCheckOutputName>
+			<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
+			<DCC_Platform>x86</DCC_Platform>
+			<DCC_N>true</DCC_N>
+			<DCC_S>false</DCC_S>
+			<DCC_K>false</DCC_K>
+			<DCC_E>false</DCC_E>
+			<DCC_F>false</DCC_F>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Cfg_1)'!=''">
+			<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+			<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+			<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+			<DCC_DebugInformation>false</DCC_DebugInformation>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Cfg_2)'!=''">
+			<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+		</PropertyGroup>
+		<ItemGroup>
+			<DelphiCompile Include="Ludo.dpr">
+				<MainSource>MainSource</MainSource>
+			</DelphiCompile>
+			<DCCReference Include="..\..\gnugettext.pas"/>
+			<DCCReference Include="..\..\gginit.pas"/>
+			<DCCReference Include="UFLudo.pas">
+				<Form>FLudo</Form>
+			</DCCReference>
+			<DCCReference Include="..\UVariables.pas"/>
+			<DCCReference Include="..\UCalcSimulP.pas"/>
+			<DCCReference Include="..\UStrings.pas"/>
+			<DCCReference Include="..\UFindRec.pas"/>
+			<DCCReference Include="..\UCalcul.pas"/>
+			<DCCReference Include="..\UUtil.pas"/>
+			<BuildConfiguration Include="Base">
+				<Key>Base</Key>
+			</BuildConfiguration>
+			<BuildConfiguration Include="Debug">
+				<Key>Cfg_2</Key>
+				<CfgParent>Base</CfgParent>
+			</BuildConfiguration>
+			<BuildConfiguration Include="Release">
+				<Key>Cfg_1</Key>
+				<CfgParent>Base</CfgParent>
+			</BuildConfiguration>
+		</ItemGroup>
+		<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
+		<ProjectExtensions>
+			<Borland.Personality>Delphi.Personality.12</Borland.Personality>
+			<Borland.ProjectType>VCLApplication</Borland.ProjectType>
+			<BorlandProject>
+				<Delphi.Personality>
+					<Source>
+						<Source Name="MainSource">Ludo.dpr</Source>
+					</Source>
+					<Parameters>
+						<Parameters Name="UseLauncher">False</Parameters>
+						<Parameters Name="LoadAllSymbols">True</Parameters>
+						<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
+					</Parameters>
+					<VersionInfo>
+						<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
+						<VersionInfo Name="AutoIncBuild">False</VersionInfo>
+						<VersionInfo Name="MajorVer">1</VersionInfo>
+						<VersionInfo Name="MinorVer">0</VersionInfo>
+						<VersionInfo Name="Release">2</VersionInfo>
+						<VersionInfo Name="Build">0</VersionInfo>
+						<VersionInfo Name="Debug">False</VersionInfo>
+						<VersionInfo Name="PreRelease">False</VersionInfo>
+						<VersionInfo Name="Special">False</VersionInfo>
+						<VersionInfo Name="Private">False</VersionInfo>
+						<VersionInfo Name="DLL">False</VersionInfo>
+						<VersionInfo Name="Locale">1036</VersionInfo>
+						<VersionInfo Name="CodePage">1252</VersionInfo>
+					</VersionInfo>
+					<VersionInfoKeys>
+						<VersionInfoKeys Name="CompanyName"/>
+						<VersionInfoKeys Name="FileDescription"/>
+						<VersionInfoKeys Name="FileVersion">1.0.2.0</VersionInfoKeys>
+						<VersionInfoKeys Name="InternalName"/>
+						<VersionInfoKeys Name="LegalCopyright"/>
+						<VersionInfoKeys Name="LegalTrademarks"/>
+						<VersionInfoKeys Name="OriginalFilename"/>
+						<VersionInfoKeys Name="ProductName"/>
+						<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
+						<VersionInfoKeys Name="Comments"/>
+					</VersionInfoKeys>
+				</Delphi.Personality>
+			</BorlandProject>
+			<ProjectFileVersion>12</ProjectFileVersion>
+		</ProjectExtensions>
+	</Project>
Index: Ludo/UFLudo.pas
===================================================================
--- Ludo/UFLudo.pas	(révision 0)
+++ Ludo/UFLudo.pas	(révision 3)
@@ -0,0 +1,1622 @@
+unit UFLudo;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, ComCtrls, StdCtrls, Mask, JvExMask, JvToolEdit, JvExStdCtrls,
+  JvCombobox, JvExComCtrls, JvComCtrls, JvSpeedButton, JvRadioButton,
+  JvExControls, JvComponent, JvLabel, JvEdit, JvValidateEdit, JvSpin,
+  JvStatusBar, JvGroupBox, DB, JvCsvData, Math, MidasLib, UVariables, ExtCtrls,
+  Buttons, TeeProcs, TeEngine, Chart, ASGSQLite3, Series, dmath, Registry,
+  XPMan;
+
+type
+  TFLudo = class(TForm)
+    JvDEFolder:   TJvDirectoryEdit;
+    JvFEImport:   TJvFilenameEdit;
+    JvFEResult:   TJvFilenameEdit;
+    JvCsvDSImport: TJvCsvDataSet;
+    JvCsvDSResult: TJvCsvDataSet;
+    JvFEBilan:    TJvFilenameEdit;
+    JvCsvDSBilan: TJvCsvDataSet;
+    PFolder:      TPanel;
+    PC:           TPageControl;
+    TSImport:     TTabSheet;
+    TSObserv:     TTabSheet;
+    TSCalibr:     TTabSheet;
+    TSGraph:      TTabSheet;
+    TSSimul:      TTabSheet;
+    MImport:      TMemo;
+    MSimul:       TMemo;
+    LFolder:      TLabel;
+    LImport:      TLabel;
+    LBilan:       TLabel;
+    LResult:      TLabel;
+    LRation2:     TLabel;
+    LSeqAli2:     TLabel;
+    CBRation2:    TComboBox;
+    CBSeqAli2:    TComboBox;
+    SBImport:     TSpeedButton;
+    SBSimul:      TSpeedButton;
+    JvCsvDSObserv: TJvCsvDataSet;
+    JvFEObserv:   TJvFilenameEdit;
+    MObserv:      TMemo;
+    LObserv:      TLabel;
+    SBObserv:     TSpeedButton;
+    LRation1:     TLabel;
+    LSeqAli1:     TLabel;
+    CBRation1:    TComboBox;
+    CBSeqAli1:    TComboBox;
+    SBCalibr:     TSpeedButton;
+    MCalibr:      TMemo;
+    LProfil:      TLabel;
+    CBProfil:     TComboBox;
+    CGraph:       TChart;
+    LUnite:       TLabel;
+    CBUnite:      TComboBox;
+    LEquation:    TLabel;
+    CBEquation:   TComboBox;
+    GBAdLib:      TGroupBox;
+    LY50:         TLabel;
+    LY100:        TLabel;
+    LCarcasse:    TLabel;
+    LPDMoy:       TLabel;
+    LPrecocite:   TLabel;
+    LEntretien:   TLabel;
+    LPVmr2:       TLabel;
+    JvVECarcasse: TJvValidateEdit;
+    JvVEPDMoy:    TJvValidateEdit;
+    JvVEPrecocite: TJvValidateEdit;
+    JvVEEntretien: TJvValidateEdit;
+    JvVEPVmr2:    TJvValidateEdit;
+    JvVEY50:      TJvValidateEdit;
+    JvVEY100:     TJvValidateEdit;
+    ASQLite3DBInraPorc: TASQLite3DB;
+    ASQLite3TableObserv: TASQLite3Table;
+    EY50:         TEdit;
+    EY100:        TEdit;
+    EPDMoy:       TEdit;
+    EPrecocite:   TEdit;
+    EEntretien:   TEdit;
+    LineFeed:     TLineSeries;
+    LineWeight:   TLineSeries;
+    PointFeed:    TLineSeries;
+    PointWeight:  TLineSeries;
+    CheckBox1:    TCheckBox;
+    CheckBox2:    TCheckBox;
+    CheckBox3:    TCheckBox;
+    CheckBox4:    TCheckBox;
+    CheckBox5:    TCheckBox;
+    CheckBox7:    TCheckBox;
+    CheckBox8:    TCheckBox;
+    CheckBox9:    TCheckBox;
+    TSExport:     TTabSheet;
+    LExport:      TLabel;
+    SBExport:     TSpeedButton;
+    JvFEExport:   TJvFilenameEdit;
+    MExport:      TMemo;
+    JvCsvDSExport: TJvCsvDataSet;
+    XPManifestStyle: TXPManifest;
+    GroupBoxFin:  TGroupBox;
+    JvValidateEditDuree: TJvValidateEdit;
+    JvValidateEditPVFin: TJvValidateEdit;
+    RadioButtonPVFin: TRadioButton;
+    RadioButtonDuree: TRadioButton;
+    CheckBoxProfil: TCheckBox;
+    CheckBox6: TCheckBox;
+    CBAALimitCalibr: TCheckBox;
+    EPVInit: TEdit;
+    CBAALimitSimul: TCheckBox;
+    CBAALimitGraph: TCheckBox;
+    procedure JvDEFolderChange(Sender: TObject);
+    procedure SBImportClick(Sender: TObject);
+    procedure SBSimulClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure SBObservClick(Sender: TObject);
+    procedure SBCalibrClick(Sender: TObject);
+    procedure CBProfilChange(Sender: TObject);
+    procedure CBUniteChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure SBExportClick(Sender: TObject);
+    procedure CheckBoxProfilClick(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    dUnite, mUnite: double;
+    procedure LoadAliment;
+    procedure LoadSeqAliP;
+    procedure LoadRationP;
+    procedure LoadProfilP;
+    procedure FreeAliment;
+    procedure FreeSeqAliP;
+    procedure FreeRationP;
+    procedure FreeProfilP;
+    procedure FreeSimulP;
+    procedure StringsSeqAliP(Liste: TStrings);
+    procedure StringsRationP(Liste: TStrings);
+    procedure StringsProfilP(Liste: TStrings);
+    procedure SaveProfilP;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FLudo: TFLudo;
+
+implementation
+
+uses
+  SHFolder, UFindRec, UUtil, UCalcul, UCalcSimulP;
+
+{$R *.dfm}
+
+const
+  MaxIter = 100;
+  Tol = MICRO;
+
+type
+  RecCalibr = record
+    Age: integer;
+    Id:  integer; // 1=Feed, 2=Weight, 3=Backfat, 4=Lean
+    Observ: extended;
+    Predict: extended;
+  end;
+  PRecCalibr = ^RecCalibr;
+
+var
+  ListRecCalibr: TList;
+  NVar, NVarDep, NData: integer;
+  X, G: TVector;
+  H_inv: TMatrix;
+  F_min, Det: Float;
+  Inv: array[1..6] of Float;
+  Nb:  array[1..4] of integer;
+  Tot, M, w: array[1..4] of double;
+
+// Fonction de minimisation des �carts entre les valeurs pr�dites et celles observ�es
+function Func(X: TVector): Float;
+var
+  i, jour: integer;
+  Y50, Y100, cumul: Float;
+  rec: PRecCalibr;
+begin
+  i := 0;
+  if FLudo.CheckBox5.Checked
+  then
+  begin
+    Inc(i);
+    if X[i] <= 0 then
+      PProfilP.PVInit := MILLI
+    else
+      PProfilP.PVInit := X[i];
+    // Recalculer les poids initiaux de prot�ines et lipides
+    PProfilP.ProtInit := CalcProt(PProfilP.PVInit);
+    PProfilP.LipInit := CalcLipProt(PProfilP.PVInit, PProfilP.ProtInit);
+  end;
+  if FLudo.CheckBox6.Checked then
+  begin
+    Inc(i);
+    Y50 := X[i];
+    Inc(i);
+    Y100 := X[i];
+    try
+      CalcCoef(PProfilP.Equation, PProfilP.Unite, Y50, Y100, PProfilP.a, PProfilP.b);
+    except
+      PProfilP.a := 0;
+      PProfilP.b := 0;
+    end;
+  end;
+  if FLudo.CheckBox7.Checked then
+  begin
+    Inc(i);
+    if X[i] <= 0 then
+      PProfilP.PDMoy := MILLI
+    else
+      PProfilP.PDMoy := X[i];
+  end;
+  if FLudo.CheckBox8.Checked then
+  begin
+    Inc(i);
+    if X[i] <= 0 then
+      PProfilP.BGompertz := MILLI
+    else
+      PProfilP.BGompertz := X[i];
+  end;
+  if FLudo.CheckBox9.Checked then
+  begin
+    Inc(i);
+    if X[i] <= 0 then
+      PProfilP.Entretien := MILLI
+    else
+      PProfilP.Entretien := X[i];
+  end;
+  // Valeur des param�tres du cas �valu�
+  try
+    // Affichage de la simulation
+    CalcSimulP(-1, PProfilP.Num, PProfilP.SeqAli, PProfilP.Ration, -1, 1, PResSimulP, FLudo.CBAALimitCalibr.Checked);
+  except // La simulation a �chou�
+    for i := 0 to ListRecCalibr.Count - 1 do
+    begin
+      rec := ListRecCalibr[i];
+      rec.Predict := 0;
+    end;
+  end;
+  // Evaluation du cas
+  i := 0;
+  rec := ListRecCalibr[i];
+  cumul := 0;
+  for jour := 1 to PResSimulP.NbJSim do
+  begin
+    while (i < ListRecCalibr.Count) and (PResSimulP.TabResult[1, jour] = rec.Age) do
+    begin
+      case rec.Id of
+        1: // Feed
+          rec.Predict := cumul;
+        2: // Weight
+          rec.Predict := PResSimulP.TabResult[2, jour];
+        3: // Backfat (P2)
+          rec.Predict := CalcP2(PResSimulP.TabResult[50, jour]);
+        4: // Lean (TMP)
+          rec.Predict := CalcTMP(PResSimulP.TabResult[48, jour],
+            PResSimulP.TabResult[49, jour], PResSimulP.TabResult[50, jour]);
+      end;
+      Inc(i);
+      if i < ListRecCalibr.Count then
+        rec := ListRecCalibr[i];
+    end;
+    cumul := cumul + PResSimulP.TabResult[113, jour];
+  end;
+  // Ecart par rapport aux valeurs du profil
+  Result := 0;
+  for i := 0 to ListRecCalibr.Count - 1 do
+  begin
+    rec := ListRecCalibr[i];
+    case rec.Id of
+      1: // Feed
+        if FLudo.CheckBox1.Checked then
+          Result := Result + w[1] * Power(rec.Observ - rec.Predict, 2);
+      2: // Weight
+        if FLudo.CheckBox2.Checked then
+          Result := Result + w[2] * Power(rec.Observ - rec.Predict, 2);
+      3: // Backfat
+        if FLudo.CheckBox3.Checked then
+          Result := Result + w[3] * Power(rec.Observ - rec.Predict, 2);
+      4: // Lean
+        if FLudo.CheckBox4.Checked then
+          Result := Result + w[4] * Power(rec.Observ - rec.Predict, 2);
+    end;
+  end;
+end;
+
+// Newton-Raphson method
+// procedure HessGrad to compute the gradient G and the hessian H of the function at point X
+{$I numhess.inc}
+
+ // Broyden-Fletcher-Goldfarb-Shanno method
+ // procedure Gradient to compute the gradient G of the function at point X
+ //{$I numgrad.inc}
+
+procedure TFLudo.FormCreate(Sender: TObject);
+begin
+  dUnite := cGammaEN;
+end;
+
+procedure TFLudo.FormShow(Sender: TObject);
+var
+  Buffer: Pointer;
+  Version: PVSFixedFileInfo;
+  BufferSize, VersionSize: DWORD;
+  VolumeSerialNumber, MaximumComponentLength, FileSystemFlags: DWORD;
+  Personal: array[0..MAX_PATH] of Char;
+begin
+  NFicAliment := 'Aliment.rec';
+  NFicSeqAliP := 'SeqAliP.rec';
+  NFicRationP := 'RationP2.rec';
+  NFicProfilP := 'ProfilP2.rec';
+  ListAliment := TList.Create;
+  ListSeqAliP := TList.Create;
+  ListRationP := TList.Create;
+  ListProfilP := TList.Create;
+  ListSimulP := TList.Create;
+  // Version du programme
+  MajorVersion := 0;
+  MinorVersion := 0;
+  ReleaseVersion := 0;
+  BuildVersion := 0;
+  BufferSize := GetFileVersionInfoSize(PChar(Application.ExeName), BufferSize);
+  if BufferSize > 0
+  then
+  begin
+    GetMem(Buffer, BufferSize);
+    if GetFileVersionInfo(PChar(Application.ExeName), 0, BufferSize, Buffer)
+    then
+    begin
+      VerQueryValue(Buffer, '\', Pointer(Version), VersionSize);
+      MajorVersion := Version.dwFileVersionMS shr 16;
+      MinorVersion := Version.dwFileVersionMS and $FFFF;
+      ReleaseVersion := Version.dwFileVersionLS shr 16;
+      BuildVersion := Version.dwFileVersionLS and $FFFF;
+    end;
+    FreeMem(Buffer, BufferSize);
+  end ;
+  VersionString := Format('%d.%d.%d.%d', [MajorVersion, MinorVersion, ReleaseVersion, BuildVersion]);
+  // Num�ro de s�rie du volume
+  Drive := IncludeTrailingPathDelimiter(ExtractFileDrive(Application.ExeName));
+  GetVolumeInformation(PChar(Drive), nil, 0, @VolumeSerialNumber, MaximumComponentLength, FileSystemFlags, nil, 0);
+  Volume := IntToHex(HiWord(VolumeSerialNumber), 4) + '-' + IntToHex(LoWord(VolumeSerialNumber), 4);
+  // LoadLicense
+  Reg := TRegistry.Create;
+  Reg.RootKey := HKEY_CURRENT_USER;
+  LicenseType := BdRReadInteger('\Software\InraPorc\License', 'LicenseType', 0);
+  LicenseNumber := BdRReadInteger('\Software\InraPorc\License', 'LicenseNumber', 0);
+  FirstName := BdRReadString('\Software\InraPorc\License', 'FirstName', '');
+  LastName := BdRReadString('\Software\InraPorc\License', 'LastName', '');
+  Company := BdRReadString('\Software\InraPorc\License', 'Company', '');
+  Address1 := BdRReadString('\Software\InraPorc\License', 'Address1', '');
+  Address2 := BdRReadString('\Software\InraPorc\License', 'Address2', '');
+  PostalCode := BdRReadString('\Software\InraPorc\License', 'PostalCode', '');
+  City := BdRReadString('\Software\InraPorc\License', 'City', '');
+  Country := BdRReadString('\Software\InraPorc\License', 'Country', '');
+  Phone := BdRReadString('\Software\InraPorc\License', 'Phone', '');
+  Fax := BdRReadString('\Software\InraPorc\License', 'Fax', '');
+  Mail := BdRReadString('\Software\InraPorc\License', 'Mail', '');
+  Course := BdRReadString('\Software\InraPorc\License', 'Course', '');
+  FinalDate := BdRReadString('\Software\InraPorc\License', 'FinalDate', '31/12/2099');
+  SoftwareEnableKey := BdRReadString('\Software\InraPorc\License', 'SoftwareEnableKey', '');
+  // LoadConfig
+  SHGetFolderPath(0, CSIDL_PERSONAL, 0, SHGFP_TYPE_CURRENT, Personal);
+  Folder := BdRReadString('\Software\InraPorc\Config\Data', 'Folder', IncludeTrailingPathDelimiter(Personal) + 'InraPorc');
+  JvDEFolder.Text := Reg.ReadString('Folder');
+  Reg.Free;
+  // V�rification de la licence
+  if not IsComplete then
+  begin
+    MessageDlg('Licence non valide !',
+      mtError, [mbOK], 0);
+    Close;
+    Exit;
+  end;
+  // Liste des num�ros autoris�s
+  if (LicenseNumber <> 1)      //   1 = Alain Valancogne
+    and (LicenseNumber <> 2)   //   2 = Jaap van Milgen
+    and (LicenseNumber <> 20)  //  20 = Ludovic Brossard
+    and (LicenseNumber <> 352) // 352 = Ludovic Brossard (portable)
+    and (LicenseNumber <> 301) // 301 = Ludovic Brossard (Alice Cadero)
+    and (LicenseNumber <> 372) // 372 = Florence Garcia-Launay
+    and (LicenseNumber <> 347) // 347 = Florence Garcia-Launay
+    and (LicenseNumber <> 16)  //  16 = Nathalie Quiniou
+    and (LicenseNumber <> 412) // 412 = Lisanne Verschuren (Topigs)
+    and (LicenseNumber <> 418) // 418 = Faezeh Soleimani-Jevinani (th�se H�l�ne Gilbert)
+  then
+  begin
+    MessageDlg('Num�ro de licence non autoris� !',
+      mtError, [mbOK], 0);
+    Close;
+    Exit;
+  end;
+  PC.ActivePageIndex := 0;
+end;
+
+procedure TFLudo.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  FreeAliment;
+  ListAliment.Free;
+  FreeSeqAliP;
+  ListSeqAliP.Free;
+  FreeRationP;
+  ListRationP.Free;
+  FreeProfilP;
+  ListProfilP.Free;
+  ListSimulP.Free;
+end;
+
+procedure TFLudo.JvDEFolderChange(Sender: TObject);
+begin
+  FreeAliment;
+  FreeSeqAliP;
+  FreeRationP;
+  FreeProfilP;
+  FreeSimulP;
+  MImport.Lines.Clear;
+  MSimul.Lines.Clear;
+  if not DirectoryExists(JvDEFolder.LongName) then
+    Exit;
+  SetCurrentDir(JvDEFolder.LongName);
+  JvFEImport.InitialDir := GetCurrentDir;
+  ASQLite3DBInraPorc.DefaultDir := GetCurrentDir;
+  JvFEObserv.InitialDir := GetCurrentDir;
+  JvFEResult.InitialDir := GetCurrentDir;
+  JvFEBilan.InitialDir  := GetCurrentDir;
+  if FileExists(NFicAliment) then
+    LoadAliment;
+  if FileExists(NFicSeqAliP) then
+    LoadSeqAliP;
+  StringsSeqAliP(CBSeqAli1.Items);
+  StringsSeqAliP(CBSeqAli2.Items);
+  if FileExists(NFicRationP) then
+    LoadRationP;
+  StringsRationP(CBRation1.Items);
+  StringsRationP(CBRation2.Items);
+  if FileExists(NFicProfilP) then
+  begin
+    LoadProfilP;
+    StringsProfilP(CBProfil.Items);
+    CBProfilChange(nil);
+  end;
+end;
+
+// Onglet Importation
+
+procedure TFLudo.SBImportClick(Sender: TObject);
+begin
+  if not FileExists(JvFEImport.Text) then
+  begin
+    MessageDlg('Indiquer le fichier � importer !', mtWarning, [mbOK], 0);
+    ActiveControl := JvFEImport;
+    Exit;
+  end;
+  if ListProfilP.Count > 0 then
+  begin
+    MessageDlg('Il existe d�j� un (ou plusieurs) profil(s) !', mtError, [mbOK], 0);
+    Exit;
+  end;
+  // Importation
+  Screen.Cursor := crHourGlass;
+  MImport.Lines.Clear;
+  Application.ProcessMessages;
+  JvCsvDSImport.FileName := JvFEImport.Text;
+  JvCsvDSImport.Active := True;
+  JvCsvDSImport.First;
+  while not JvCsvDSImport.EOF do
+  begin
+    New(PProfilP);
+    with PProfilP^ do
+    begin
+      Num := JvCsvDSImport.RecNo + 1;
+      Nom := ansistring(JvCsvDSImport.Fields[0].AsString);
+      Memo := '';
+      Sexe := JvCsvDSImport.Fields[1].AsInteger;
+      SeqAli := -1;
+      Ration := -1;
+      AgeInit := JvCsvDSImport.Fields[2].AsInteger;
+      PVInit := JvCsvDSImport.Fields[3].AsFloat;
+      ProtInit := CalcProt(PVInit);
+      LipInit := CalcLipProt(PVInit, ProtInit);
+      ModeFin := JvCsvDSImport.Fields[4].AsInteger;
+      Duree := JvCsvDSImport.Fields[5].AsInteger;
+      PVFin := JvCsvDSImport.Fields[6].AsFloat;
+      Carcasse := JvCsvDSImport.Fields[7].AsFloat;
+      Unite := JvCsvDSImport.Fields[8].AsInteger;
+      Equation := JvCsvDSImport.Fields[9].AsInteger;
+      a := JvCsvDSImport.Fields[10].AsFloat;
+      b := JvCsvDSImport.Fields[11].AsFloat;
+      PDMoy := JvCsvDSImport.Fields[12].AsFloat;
+      BGompertz := JvCsvDSImport.Fields[13].AsFloat;
+      Entretien := JvCsvDSImport.Fields[14].AsFloat;
+      PVmr2 := JvCsvDSImport.Fields[15].AsFloat;
+    end;
+    ListProfilP.Add(PProfilP);
+    MImport.Lines.Add(Format('%s (%d/%d)', [PProfilP.Nom, PProfilP.Num,
+      JvCsvDSImport.RecordCount]));
+    Application.ProcessMessages;
+    JvCsvDSImport.Next;
+  end;
+  JvCsvDSImport.Active := False;
+  SaveProfilP;
+  Screen.Cursor := crDefault;
+  StringsProfilP(CBProfil.Items);
+  CBProfilChange(nil);
+end;
+
+// Onglet Observations
+
+procedure TFLudo.CBUniteChange(Sender: TObject);
+begin
+  if (CBUnite.ItemIndex = 0) or (CBUnite.ItemIndex = 4) then // kg (QI ou MS)
+    JvVEY50.DecimalPlaces := 3
+  else // MJ (ED, EM ou EN)
+    JvVEY50.DecimalPlaces := 2;
+  JvVEY100.DecimalPlaces := JvVEY50.DecimalPlaces;
+  case CBUnite.ItemIndex of
+    0: // Quantit� (kg/j)
+      mUnite := cGammaFrais;
+    1: // ED (MJ/j)
+      mUnite := cGammaED;
+    2: // EM (MJ/j)
+      mUnite := cGammaEM;
+    3: // EN (MJ/j)
+      mUnite := cGammaEN;
+    4: // MS (kg/j)
+      mUnite := cGammaMS;
+    else
+      mUnite := 1;
+  end;
+  if dUnite <> mUnite then
+  begin
+    JvVEY50.AsFloat := mUnite * JvVEY50.AsFloat / dUnite;
+    JvVEY50.AsFloat := mUnite * JvVEY50.AsFloat / dUnite;
+    dUnite := mUnite;
+  end;
+end;
+
+procedure TFLudo.SBObservClick(Sender: TObject);
+var
+  ligne: integer;
+  cumul: double;
+begin
+  if not FileExists(JvFEObserv.Text) then
+  begin
+    MessageDlg('Indiquer le fichier � importer !', mtWarning, [mbOK], 0);
+    ActiveControl := JvFEObserv;
+    Exit;
+  end;
+  if ListProfilP.Count > 0 then
+  begin
+    MessageDlg('Il existe d�j� un (ou plusieurs) profil(s) !', mtError, [mbOK], 0);
+    Exit;
+  end;
+  if not FileExists(ASQLite3DBInraPorc.Database) then
+  begin
+    MessageDlg('Le dossier ne contient pas de base SQLite pour stocker les observations  !', mtError, [mbOK], 0);
+    Exit;
+  end;
+  ASQLite3TableObserv.Open;
+  if not ASQLite3TableObserv.IsEmpty then
+  begin
+    MessageDlg('Il existe d�j� une (ou plusieurs) observation(s) !',
+      mtError, [mbOK], 0);
+    Exit;
+  end;
+  // Observations
+  Screen.Cursor := crHourGlass;
+  MObserv.Lines.Clear;
+  Application.ProcessMessages;
+  ASQLite3TableObserv.DisableControls;
+  ASQLite3TableObserv.StartTransaction;
+  JvCsvDSObserv.FileName := JvFEObserv.Text;
+  JvCsvDSObserv.DisableControls;
+  JvCsvDSObserv.Active := True;
+  JvCsvDSObserv.First;
+  ligne := 0;
+  cumul := 0;
+  while not JvCsvDSObserv.EOF do
+  begin
+    if (ligne > 0) and (ansistring(JvCsvDSObserv.Fields[0].AsString) <> PProfilP.Nom)
+    then // Rupture profil
+    begin
+      PProfilP.Duree := ASQLite3TableObserv.FieldByName('Age').AsInteger -
+        PProfilP.AgeInit + 1;
+      ListProfilP.Add(PProfilP);
+      MObserv.Lines.Add(Format('%s : %d observations', [PProfilP.Nom, ligne]));
+      Application.ProcessMessages;
+      ligne := 0;
+      cumul := 0;
+    end;
+    if (ligne = 0) and not JvCsvDSObserv.Fields[4].IsNull then
+      // Initialisation profil
+    begin
+      New(PProfilP);
+      with PProfilP^ do
+      begin
+        Num  := ListProfilP.Count + 1;
+        Nom  := ansistring(JvCsvDSObserv.Fields[0].AsString);
+        Memo := '';
+        if JvCsvDSObserv.Fields[1].IsNull then
+          Sexe := -1
+        else
+          Sexe := JvCsvDSObserv.Fields[1].AsInteger;
+        SeqAli := -1;
+        Ration := -1;
+        AgeInit := JvCsvDSObserv.Fields[2].AsInteger;
+        PVInit := JvCsvDSObserv.Fields[4].AsFloat;
+        ProtInit := CalcProt(PVInit);
+        LipInit := CalcLipProt(PVInit, ProtInit);
+        ModeFin := 0; // Dur�e
+        PVFin := 0;
+        Carcasse := JvVECarcasse.AsFloat / 100;
+        Unite := CBUnite.ItemIndex;
+        Equation := CBEquation.ItemIndex;
+        CalcCoef(Equation, Unite, JvVEY50.AsFloat, JvVEY100.AsFloat, a, b);
+        PDMoy := JvVEPDMoy.AsFloat;
+        BGompertz := JvVEPrecocite.AsFloat;
+        Entretien := JvVEEntretien.AsFloat;
+        PVmr2 := JvVEPVmr2.AsFloat;
+      end;
+    end;
+    if (ligne > 0) or not JvCsvDSObserv.Fields[4].IsNull then
+      // Prise en compte de l'enregistrement
+    begin
+      ligne := ligne + 1;
+      with ASQLite3TableObserv do
+      begin
+        Append;
+        FieldByName('Profile').AsInteger := PProfilP.Num;
+        FieldByName('Line').AsInteger := ligne;
+        FieldByName('Age').AsInteger := JvCsvDSObserv.Fields[2].AsInteger;
+        FieldByName('Feed').AsFloat := cumul;
+        if not JvCsvDSObserv.Fields[4].IsNull then
+          FieldByName('Weight').AsFloat := JvCsvDSObserv.Fields[4].AsFloat;
+        if not JvCsvDSObserv.Fields[5].IsNull then
+          FieldByName('Backfat').AsFloat := JvCsvDSObserv.Fields[5].AsFloat;
+        if not JvCsvDSObserv.Fields[6].IsNull then
+          FieldByName('Lean').AsFloat := JvCsvDSObserv.Fields[6].AsFloat;
+        Post;
+      end;
+      cumul := cumul + JvCsvDSObserv.Fields[3].AsFloat;
+    end;
+    JvCsvDSObserv.Next;
+  end;
+  if ligne > 0 then // Enregistrement du dernier profil
+  begin
+    PProfilP.Duree := ASQLite3TableObserv.FieldByName('Age').AsInteger -
+      PProfilP.AgeInit + 1;
+    ListProfilP.Add(PProfilP);
+    MObserv.Lines.Add(Format('%s : %d observations', [PProfilP.Nom, ligne]));
+    Application.ProcessMessages;
+  end;
+  JvCsvDSObserv.Active := False;
+  JvCsvDSObserv.EnableControls;
+  try
+    ASQLite3TableObserv.Commit;
+  except
+    ASQLite3TableObserv.RollBack;
+  end;
+  ASQLite3TableObserv.EnableControls;
+  ASQLite3DBInraPorc.Close;
+  SaveProfilP;
+  Screen.Cursor := crDefault;
+  StringsProfilP(CBProfil.Items);
+  CBProfilChange(nil);
+end;
+
+// Onglet Calibrage
+
+procedure TFLudo.SBCalibrClick(Sender: TObject);
+var
+  i, profil: integer;
+  wTot: double;
+  rec:  PRecCalibr;
+  SSt, SSr: array[1..4] of double;
+  Log:  TextFile;
+
+  procedure Uncheck;
+  begin
+    CheckBox1.Checked := False; // Feed
+    CheckBox2.Checked := False; // Weight
+    CheckBox3.Checked := False; // Backfat
+    CheckBox4.Checked := False; // Lean
+    CheckBox5.Checked := False; // PVInit
+    CheckBox6.Checked := False; // Y50 & Y100
+    CheckBox7.Checked := False; // PDMean
+    CheckBox8.Checked := False; // Precocity
+    CheckBox9.Checked := False; // Maintenance
+  end;
+
+  procedure Calibration;
+  var
+    n: integer;
+  begin
+    // Initialisation des structures
+    NVarDep := 0;
+    if CheckBox1.Checked then
+      Inc(NVarDep);
+    if CheckBox2.Checked then
+      Inc(NVarDep);
+    if CheckBox3.Checked then
+      Inc(NVarDep);
+    if CheckBox4.Checked then
+      Inc(NVarDep);
+    NData := 0;
+    if CheckBox1.Checked then
+      NData := NData + Nb[1];
+    if CheckBox2.Checked then
+      NData := NData + Nb[2];
+    if CheckBox3.Checked then
+      NData := NData + Nb[3];
+    if CheckBox4.Checked then
+      NData := NData + Nb[4];
+    NVar := 0;
+    if CheckBox5.Checked then
+      Inc(NVar);
+    if CheckBox6.Checked then
+      Inc(NVar, 2);
+    if CheckBox7.Checked then
+      Inc(NVar);
+    if CheckBox8.Checked then
+      Inc(NVar);
+    if CheckBox9.Checked then
+      Inc(NVar);
+    DimVector(X, NVar);
+    DimVector(G, NVar);
+    DimMatrix(H_inv, NVar, NVar);
+    n := 0;
+    if CheckBox5.Checked then
+    begin
+      Inc(n);
+      X[n] := PProfilP.PVInit;
+    end;
+    if CheckBox6.Checked then
+    begin
+      Inc(n);
+      X[n] := CalcIngere(PProfilP.Equation, PProfilP.Unite, PProfilP.a, PProfilP.b, 50);
+      Inc(n);
+      X[n] := CalcIngere(PProfilP.Equation, PProfilP.Unite, PProfilP.a, PProfilP.b, 100);
+    end;
+    if CheckBox7.Checked then
+    begin
+      Inc(n);
+      X[n] := PProfilP.PDMoy;
+    end;
+    if CheckBox8.Checked then
+    begin
+      Inc(n);
+      X[n] := PProfilP.BGompertz;
+    end;
+    if CheckBox9.Checked then
+    begin
+      Inc(n);
+      X[n] := PProfilP.Entretien;
+    end;
+    Marquardt(Func, HessGrad, X, 1, NVar, MaxIter, Tol, F_min, G, H_inv, Det);
+    for n := 1 to NVar do
+      Inv[n] := H_inv[n, n];
+  end;
+
+  // SBCalibrClick
+begin
+  if (ListAliment.Count = 0) or (ListSeqAliP.Count = 0) or
+    (ListRationP.Count = 0) or (ListProfilP.Count = 0) then
+  begin
+    MessageDlg(
+      'Choisir un dossier contenant au moins les aliments, s�quences alimentaires, plans de rationnement et profils !',
+      mtWarning, [mbOK], 0);
+    ActiveControl := JvDEFolder;
+    Exit;
+  end;
+  if CBSeqAli1.ItemIndex = -1 then
+  begin
+    MessageDlg('S�lectionner une s�quence alimentaire !', mtWarning, [mbOK], 0);
+    ActiveControl := CBSeqAli1;
+    Exit;
+  end;
+  if CBRation1.ItemIndex = -1 then
+  begin
+    MessageDlg('S�lectionner un plan de rationnement !', mtWarning, [mbOK], 0);
+    ActiveControl := CBRation1;
+    Exit;
+  end;
+  // Calibrage
+  Screen.Cursor := crHourGlass;
+  MCalibr.Lines.Clear;
+  AssignFile(Log, 'Calibr.log');
+  Rewrite(Log);
+  WriteLn(Log, 'Profil' + AnsiChar(#9) + 'R�(Feed)' + AnsiChar(#9) +
+    'R�(Weight)' + AnsiChar(#9) + 'R�(Backfat)' + AnsiChar(#9) + 'R�(Lean)');
+  Application.ProcessMessages;
+  ASQLite3TableObserv.DisableControls;
+  for profil := 0 to ListProfilP.Count - 1 do
+  begin
+    PProfilP := ListProfilP[profil];
+    PSeqAliP := ListSeqAliP[FindIdxSeqAliP(CBSeqAli1.Text)];
+    PProfilP.SeqAli := PSeqAliP.Num;
+    PRationP := ListRationP[FindIdxRationP(CBRation1.Text)];
+    PProfilP.Ration := PRationP.Num;
+    ListRecCalibr := TList.Create;
+    with ASQLite3TableObserv do
+    begin
+      Filter := Format('Profile = %d', [PProfilP.Num]);
+      Filtered := True;
+      Open;
+      MCalibr.Lines.Add(Format('%s (%d/%d) : %d observations',
+        [PProfilP.Nom, profil + 1, ListProfilP.Count, RecordCount]));
+      Application.ProcessMessages;
+      First;
+      while not EOF do
+      begin
+        if (FieldByName('Line').AsInteger > 1) and not FieldByName('Feed').IsNull then
+        begin
+          Inc(Nb[1]);
+          Tot[1] := Tot[1] + FieldByName('Feed').AsFloat;
+          New(rec);
+          rec.Age := FieldByName('Age').AsInteger;
+          rec.Id  := 1;
+          rec.Observ := FieldByName('Feed').AsFloat;
+          ListRecCalibr.Add(rec);
+        end;
+        if not FieldByName('Weight').IsNull then
+        begin
+          Inc(Nb[2]);
+          Tot[2] := Tot[2] + FieldByName('Weight').AsFloat;
+          New(rec);
+          rec.Age := FieldByName('Age').AsInteger;
+          rec.Id  := 2;
+          rec.Observ := FieldByName('Weight').AsFloat;
+          ListRecCalibr.Add(rec);
+        end;
+        if not FieldByName('Backfat').IsNull then
+        begin
+          Inc(Nb[3]);
+          Tot[3] := Tot[3] + FieldByName('Backfat').AsFloat;
+          New(rec);
+          rec.Age := FieldByName('Age').AsInteger;
+          rec.Id  := 3;
+          rec.Observ := FieldByName('Backfat').AsFloat;
+          ListRecCalibr.Add(rec);
+        end;
+        if not FieldByName('Lean').IsNull then
+        begin
+          Inc(Nb[4]);
+          Tot[4] := Tot[4] + FieldByName('Lean').AsFloat;
+          New(rec);
+          rec.Age := FieldByName('Age').AsInteger;
+          rec.Id  := 4;
+          rec.Observ := FieldByName('Lean').AsFloat;
+          ListRecCalibr.Add(rec);
+        end;
+        Next;
+      end;
+      Close;
+    end;
+    // Moyennes observations
+    for i := 1 to 4 do
+      if Nb[i] <> 0 then
+        M[i] := Tot[i] / Nb[i];
+    // Pond�rations observations
+    for i := 1 to 4 do
+      if M[i] <> 0 then
+        w[i] := 1 / (Nb[i] * Power(M[i], 2));
+    // R�ajustement des pond�rations en fonction de la pond�ration totale
+    wTot := 0;
+    for i := 1 to 4 do
+      wTot := wTot + w[i];
+    for i := 1 to 4 do
+      w[i] := w[i] / wTot;
+    New(PResSimulP);
+    // Cycle 1 : Feed -> Y50 + Y100
+    Uncheck;
+    CheckBox1.Checked := True; // Feed
+    CheckBox6.Checked := True; // Y50 & Y100
+    Calibration;
+    // Cycle 2 : Weight -> PVInit + PDMean
+    Uncheck;
+    CheckBox2.Checked := True; // Weight
+    CheckBox5.Checked := True; // PVInit
+    CheckBox7.Checked := True; // PDMean
+    // Cycle 3 : Feed + Weight -> PVInit + Y50 + Y100 + PDMean
+    CheckBox1.Checked := True; // Feed
+    CheckBox6.Checked := True; // Y50 & Y100
+    Calibration;
+    // Cycle 4 : Weight -> PVInit + PDMean + Precocity
+    Uncheck;
+    CheckBox2.Checked := True; // Weight
+    CheckBox5.Checked := True; // PVInit
+    CheckBox7.Checked := True; // PDMean
+    CheckBox8.Checked := True; // Precocity
+    Calibration;
+    // Cycle 5 : Feed + Weight -> PVInit + Y50 + Y100 + PDMean + Precocity
+    CheckBox1.Checked := True; // Feed
+    CheckBox6.Checked := True; // Y50 & Y100
+    Calibration;
+    if PProfilP.ModeFin = 0 then // Dur�e
+      PProfilP.PVFin := PResSimulP.TabResult[2, PResSimulP.NbJSim] +
+        PResSimulP.TabResult[84, PResSimulP.NbJSim];
+    Dispose(PResSimulP);
+    // Calcul des statistiques
+    for i := 1 to 4 do
+    begin
+      SSt[i] := 0;
+      SSr[i] := 0;
+    end;
+    for i := 0 to ListRecCalibr.Count - 1 do
+    begin
+      rec := ListRecCalibr[i];
+      case rec.Id of
+        1: // Feed
+          if CheckBox1.Checked then
+          begin
+            SSt[1] := SSt[1] + Power(rec.Observ - M[1], 2);
+            SSr[1] := SSr[1] + Power(rec.Observ - rec.Predict, 2);
+          end;
+        2: // Weight
+          if CheckBox2.Checked then
+          begin
+            SSt[2] := SSt[2] + Power(rec.Observ - M[2], 2);
+            SSr[2] := SSr[2] + Power(rec.Observ - rec.Predict, 2);
+          end;
+        3: // Backfat
+          if CheckBox3.Checked then
+          begin
+            SSt[3] := SSt[3] + Power(rec.Observ - M[3], 2);
+            SSr[3] := SSr[3] + Power(rec.Observ - rec.Predict, 2);
+          end;
+        4: // Lean
+          if CheckBox4.Checked then
+          begin
+            SSt[4] := SSt[4] + Power(rec.Observ - M[4], 2);
+            SSr[4] := SSr[4] + Power(rec.Observ - rec.Predict, 2);
+          end;
+      end;
+    end;
+    // Enregistrement des statistiques
+    Write(Log, PProfilP.Nom + AnsiChar(#9));
+    if SSt[1] <> 0 then
+      Write(Log, Format('%1.2f %%', [100 - SSr[1] / SSt[1] * 100]));
+    Write(Log, AnsiChar(#9));
+    if SSt[2] <> 0 then
+      Write(Log, Format('%1.2f %%', [100 - SSr[2] / SSt[2] * 100]));
+    Write(Log, AnsiChar(#9));
+    if SSt[3] <> 0 then
+      Write(Log, Format('%1.2f %%', [100 - SSr[3] / SSt[3] * 100]));
+    Write(Log, AnsiChar(#9));
+    if SSt[4] <> 0 then
+      Write(Log, Format('%1.2f %%', [100 - SSr[4] / SSt[4] * 100]));
+    WriteLn(Log);
+    if ListRecCalibr.Count > 0 then
+      for i := 0 to ListRecCalibr.Count - 1 do
+      begin
+        rec := ListRecCalibr[i];
+        Dispose(rec);
+      end;
+    ListRecCalibr.Free;
+  end;
+  ASQLite3TableObserv.EnableControls;
+  ASQLite3DBInraPorc.Close;
+  CloseFile(Log);
+  SaveProfilP;
+  Screen.Cursor := crDefault;
+end;
+
+// Onglet Graphique
+
+procedure TFLudo.CBProfilChange(Sender: TObject);
+var
+  jour: integer;
+  cumul, x, y: double;
+begin
+  LineFeed.Clear;
+  LineWeight.Clear;
+  PointFeed.Clear;
+  PointWeight.Clear;
+  if CBProfil.ItemIndex = -1 then
+    Exit;
+  PProfilP := ListProfilP[FindIdxProfilP(CBProfil.Text)];
+  EPVInit.Text := FloatToStrF(PProfilP.PVInit, ffFixed, 15, 1);
+  if (PProfilP.Unite = 0) or (PProfilP.Unite = 4) then // kg (QI ou MS)
+  begin
+    EY50.Text  := FloatToStrF(CalcIngere(PProfilP.Equation, PProfilP.Unite,
+      PProfilP.a, PProfilP.b, 50), ffFixed, 15, 3);
+    EY100.Text := FloatToStrF(CalcIngere(PProfilP.Equation, PProfilP.Unite,
+      PProfilP.a, PProfilP.b, 100), ffFixed, 15, 3);
+  end
+  else // MJ (ED, EM ou EN)
+  begin
+    EY50.Text  := FloatToStrF(CalcIngere(PProfilP.Equation, PProfilP.Unite,
+      PProfilP.a, PProfilP.b, 50), ffFixed, 15, 2);
+    EY100.Text := FloatToStrF(CalcIngere(PProfilP.Equation, PProfilP.Unite,
+      PProfilP.a, PProfilP.b, 100), ffFixed, 15, 2);
+  end;
+  EPDMoy.Text := FloatToStrF(PProfilP.PDMoy, ffFixed, 15, 2);
+  EPrecocite.Text := FloatToStrF(PProfilP.BGompertz, ffFixed, 15, 5);
+  EEntretien.Text := FloatToStrF(PProfilP.Entretien, ffFixed, 15, 3);
+  with ASQLite3TableObserv do
+  begin
+    Filter := Format('Profile = %d', [PProfilP.Num]);
+    Filtered := True;
+    Open;
+    DisableControls;
+    First;
+    while not EOF do
+    begin
+      x := FieldByName('Age').AsInteger;
+      if (FieldByName('Line').AsInteger > 1) and not FieldByName('Feed').IsNull then
+      begin
+        y := FieldByName('Feed').AsFloat;
+        PointFeed.AddXY(x, y, '', clTeeColor);
+      end;
+      if not FieldByName('Weight').IsNull then
+      begin
+        y := FieldByName('Weight').AsFloat;
+        PointWeight.AddXY(x, y, '', clTeeColor);
+      end;
+      Next;
+    end;
+    EnableControls;
+  end;
+  ASQLite3DBInraPorc.Close;
+  if (PProfilP.SeqAli = -1) or (PProfilP.Ration = -1) then
+    Exit;
+  New(PResSimulP);
+  CalcSimulP(-1, PProfilP.Num, PProfilP.SeqAli, PProfilP.Ration, -1, 1, PResSimulP, FLudo.CBAALimitGraph.Checked);
+  cumul := 0;
+  for jour := 1 to PResSimulP.NbJSim do
+  begin
+    x := PResSimulP.TabResult[1, jour];
+    y := PResSimulP.TabResult[2, jour];
+    LineFeed.AddXY(x, cumul, '', clTeeColor);
+    LineWeight.AddXY(x, y, '', clTeeColor);
+    cumul := cumul + PResSimulP.TabResult[113, jour];
+  end;
+  Dispose(PResSimulP);
+end;
+
+// Onglet Simulation
+
+procedure TFLudo.CheckBoxProfilClick(Sender: TObject);
+begin
+  RadioButtonDuree.Enabled := not CheckBoxProfil.Checked;
+  JvValidateEditDuree.Enabled  := not CheckBoxProfil.Checked;
+  RadioButtonPVFin.Enabled := not CheckBoxProfil.Checked;
+  JvValidateEditPVFin.Enabled  := not CheckBoxProfil.Checked;
+end;
+
+procedure TFLudo.SBSimulClick(Sender: TObject);
+var
+  i, j, k:  integer;
+  Aliment1, Aliment2: integer;
+  CC1, CC2: CompositionChimique;
+  IngereFrais, Distrib, Gaspillage: double;
+  IngereSec1, IngereSec2, Taux1, Taux2: double;
+  Ptot, Ptot1, Ptot2, Pdig, Pdig1, Pdig2: double;
+  Ingere, Digestible, Depose: double;
+  PV, PVV, PVfin, PVVfin, GMQ, PD, LD, p, l: double;
+  CumulIngere, CumulDistrib, Cout: double;
+begin
+  if (ListAliment.Count = 0) or (ListSeqAliP.Count = 0) or
+    (ListRationP.Count = 0) or (ListProfilP.Count = 0) then
+  begin
+    MessageDlg(
+      'Choisir un dossier contenant au moins les aliments, s�quences alimentaires, plans de rationnement et profils !',
+      mtWarning, [mbOK], 0);
+    ActiveControl := JvDEFolder;
+    Exit;
+  end;
+  if CBSeqAli2.ItemIndex = -1 then
+  begin
+    MessageDlg('S�lectionner une s�quence alimentaire !', mtWarning, [mbOK], 0);
+    ActiveControl := CBSeqAli2;
+    Exit;
+  end;
+  if CBRation2.ItemIndex = -1 then
+  begin
+    MessageDlg('S�lectionner un plan de rationnement !', mtWarning, [mbOK], 0);
+    ActiveControl := CBRation2;
+    Exit;
+  end;
+  if JvFEResult.Text = '' then
+  begin
+    MessageDlg('Indiquer un nom de fichier pour les r�sultats d�taill�s !',
+      mtError, [mbOK], 0);
+    ActiveControl := JvFEResult;
+    Exit;
+  end;
+  if JvFEBilan.Text = '' then
+  begin
+    MessageDlg('Indiquer un nom de fichier pour le bilan !', mtError, [mbOK], 0);
+    ActiveControl := JvFEBilan;
+    Exit;
+  end;
+  if FileExists(JvFEResult.Text) then
+    if MessageDlg(Format('Le fichier %s existe d�j� !' + sLineBreak +
+      'Faut-il l''�craser ?', [JvFEResult.Text]), mtConfirmation, [mbYes, mbNo], 0) =
+      mrYes then
+      DeleteFile(JvFEResult.Text)
+    else
+      Exit;
+  if FileExists(JvFEBilan.Text) then
+    if MessageDlg(Format('Le fichier %s existe d�j� !' + sLineBreak +
+      'Faut-il l''�craser ?', [JvFEBilan.Text]), mtConfirmation, [mbYes, mbNo], 0) =
+      mrYes then
+      DeleteFile(JvFEBilan.Text)
+    else
+      Exit;
+  // Simulation
+  Screen.Cursor := crHourGlass;
+  MSimul.Lines.Clear;
+  Application.ProcessMessages;
+  JvCsvDSResult.FileName := JvFEResult.Text;
+  JvCsvDSResult.Active := True;
+  JvCsvDSBilan.FileName := JvFEBilan.Text;
+  JvCsvDSBilan.Active := True;
+  for i := 0 to ListProfilP.Count - 1 do
+  begin
+    PProfilP := ListProfilP[i];
+    PSeqAliP := ListSeqAliP[FindIdxSeqAliP(CBSeqAli2.Text)];
+    PRationP := ListRationP[FindIdxRationP(CBRation2.Text)];
+    New(PSimulP);
+    with PSimulP^ do
+    begin
+      Num := PProfilP.Num;
+      Nom := PProfilP.Nom;
+      Application.ProcessMessages;
+      Memo := '';
+      Profil := PProfilP.Num;
+      SeqAli := PSeqAliP.Num;
+      Ration := PRationP.Num;
+      AgeInitProfil := True;
+      PVInitProfil := True;
+      ProtLipInitProfil := True;
+      AgeInit := 0;
+      PVInit := 0;
+      ProtInit := 0;
+      LipInit := 0;
+      FinProfil := CheckBoxProfil.Checked;
+      if RadioButtonDuree.Checked then
+        ModeFin := 0
+      else
+        ModeFin := 1;
+      Duree := JvValidateEditDuree.AsInteger;
+      PVFin := JvValidateEditPVFin.AsFloat;
+    end;
+    ListSimulP.Add(PSimulP);
+    New(PResSimulP);
+    try
+      CalcSimulP(PSimulP.Num, PSimulP.Profil, PSimulP.SeqAli, PSimulP.Ration, -1, 1, PResSimulP, FLudo.CBAALimitSimul.Checked);
+    finally
+      MSimul.Lines.Add(Format('%s (%d/%d) : %d jours',
+        [PSimulP.Nom, i + 1, ListProfilP.Count, PResSimulP.NbJSim]));
+      Application.ProcessMessages;
+    end;
+    CumulIngere := 0;
+    CumulDistrib := 0;
+    Cout := 0;
+    for j := 1 to PResSimulP.NbJSim do
+      with JvCsvDSResult do
+      begin
+        PV := PResSimulP.TabResult[2, j];
+        PVV := CalcPVV(PV);
+        PVfin := PResSimulP.TabResult[83, j];
+        PVVfin := CalcPVV(PVfin);
+        GMQ := PResSimulP.TabResult[84, j];
+        PD := PResSimulP.TabResult[79, j];
+        LD := PResSimulP.TabResult[80, j];
+        p := PResSimulP.TabResult[49, j];
+        l := PResSimulP.TabResult[50, j];
+        // Composition des aliments
+        IngereFrais := PresSimulP.TabResult[11, j];
+        Distrib := PresSimulP.TabResult[113, j];
+        Gaspillage := PResSimulP.TabResult[112, j];
+        // Aliment 1
+        Aliment1 := Trunc(PresSimulP.TabResult[7, j]);
+        if Aliment1 = -1 then
+          CC1 := CCVide
+        else
+        begin
+          PAliment := ListAliment[FindIdxAliment(FindNomAliment(Aliment1))];
+          CC1 := PAliment.CC;
+        end;
+        Taux1 := PresSimulP.TabResult[9, j] / 100;
+        IngereSec1 := IngereFrais * Taux1 * CC1.MS / 1000;
+        Ptot1 := IngereSec1 * CC1.P;
+        if Aliment1 = -1 then
+          Pdig1 := 0
+        else
+        if PAliment.Presentation = 0 then // Granul�s
+          Pdig1 := IngereSec1 * PAliment.CC.PdigG
+        else // Farine
+          Pdig1 := IngereSec1 * PAliment.CC.PdigF;
+        // Aliment 2
+        Aliment2 := Trunc(PresSimulP.TabResult[8, j]);
+        if Aliment2 = -1 then
+          CC2 := CCVide
+        else
+        begin
+          PAliment := ListAliment[FindIdxAliment(FindNomAliment(Aliment2))];
+          CC2 := PAliment.CC;
+        end;
+        Taux2 := PresSimulP.TabResult[10, j] / 100;
+        IngereSec2 := IngereFrais * Taux2 * CC2.MS / 1000;
+        Ptot2 := IngereSec2 * CC2.P;
+        if Aliment2 = -1 then
+          Pdig2 := 0
+        else
+        if PAliment.Presentation = 0 then // Granul�s
+          Pdig2 := IngereSec2 * PAliment.CC.PdigG
+        else // Farine
+          Pdig2 := IngereSec2 * PAliment.CC.PdigF;
+        // Cumul
+        Ptot := Ptot1 + Ptot2;
+        Pdig := Pdig1 + Pdig2;
+        // R�sultats d�taill�s
+        Append;
+        Fields[0].AsAnsiString := PProfilP.Nom;
+        Fields[1].AsInteger := Trunc(PResSimulP.TabResult[1, j]);
+        Fields[2].AsFloat  := PV;
+        Fields[3].AsAnsiString := PSeqAliP.Nom;
+        Fields[4].AsAnsiString := PRationP.Nom;
+        Fields[5].AsInteger := Aliment1;
+        Fields[6].AsInteger := Aliment2;
+        Fields[7].AsFloat  := Taux1 * 100;
+        Fields[8].AsFloat  := Taux2 * 100;
+        Fields[9].AsFloat  := Distrib;
+        Fields[10].AsFloat := IngereFrais;
+        Fields[11].AsFloat := PResSimulP.TabResult[78, j];
+        Fields[12].AsFloat := PResSimulP.TabResult[106, j];
+        Fields[13].AsFloat := p;
+        Fields[14].AsFloat := l;
+        Fields[15].AsFloat := PD;
+        Fields[16].AsFloat := LD;
+        Fields[17].AsFloat := GMQ;
+        if PResSimulP.TabResult[84, j] <> 0 then
+          Fields[18].AsFloat := Distrib / GMQ;
+        Fields[19].AsFloat := CalcP2(l);
+        Fields[20].AsFloat := CalcTMP(PVV, p, l);
+        Fields[21].AsFloat := CalcRC(PResSimulP.TabResult[2, PResSimulP.NbJSim],
+          CalcRCStd(PProfilP.PVFin, PProfilP.Carcasse), PV) * 100;
+        Fields[22].AsFloat := PResSimulP.TabResult[90, j] * IngereFrais;
+        // Apport total AA
+        for k := 0 to 12 do
+          Fields[23 + k].AsFloat := PResSimulP.TabResult[93 + k, j];
+        // Apport digestible AA
+        for k := 0 to 12 do
+          Fields[36 + k].AsFloat := PResSimulP.TabResult[19 + k, j];
+        // Besoin AA
+        for k := 0 to 12 do
+          Fields[49 + k].AsFloat :=
+            // Energie
+            PResSimulP.TabResult[77, j] {py1} / GEProtJaap * AAbody[k] / kAA[k]
+            // Entretien
+            + AAm75[k] * Power(Fields[2].AsFloat {PV}, 0.75)
+            // Basal
+            + (IngereSec1 + IngereSec2) {IngereSec} * AAendogene[k];
+        // Azote
+        Ingere := (IngereSec1 * CC1.MAT + IngereSec2 * CC2.MAT) * 0.16;
+        Digestible := (IngereSec1 * CC1.MAT * CC1.dMAT_C / 100 +
+          IngereSec2 * CC2.MAT * CC2.dMAT_C / 100) * 0.16;
+        Depose := PD * 0.16;
+        Fields[62].AsFloat := Ingere / (1 - Gaspillage) - Ingere;
+        Fields[63].AsFloat := Ingere - Digestible;
+        Fields[64].AsFloat := Math.Max(Digestible - Depose, 0);
+        Fields[65].AsFloat := Math.Min(Digestible, Depose);
+        // Phosphore
+        Ingere := Ptot;
+        Digestible := Pdig;
+        Depose := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+        Fields[66].AsFloat := Ingere / (1 - Gaspillage) - Ingere;
+        Fields[67].AsFloat := Ingere - Digestible;
+        Fields[68].AsFloat := Math.Max(Digestible - Depose, 0);
+        Fields[69].AsFloat := Math.Min(Digestible, Depose);
+        // Calcium
+        Ingere := IngereSec1 * CC1.Ca + IngereSec2 * CC2.Ca;
+        Depose := -0.00180 * (Power(PVVfin, 2) - Power(PVV, 2)) +
+          8.64633 * (PVVfin - PVV);
+        Fields[70].AsFloat := Ingere / (1 - Gaspillage) - Ingere;
+        Fields[71].AsFloat := Math.Max(Ingere - Depose, 0);
+        Fields[72].AsFloat := Math.Min(Ingere, Depose);
+        // Potassium
+        Ingere := IngereSec1 * CC1.K + IngereSec2 * CC2.K;
+        Depose := -0.00345 * (Power (PVVfin, 2) - Power (PVV, 2)) +
+          2.53338 * (PVVfin - PVV);
+        Fields[73].AsFloat := Ingere / (1 - Gaspillage) - Ingere;
+        Fields[74].AsFloat := Math.Max(Ingere - Depose, 0);
+        Fields[75].AsFloat := Math.Min(Ingere, Depose);
+        // Cuivre
+        Ingere := IngereSec1 * CC1.Cu + IngereSec2 * CC2.Cu;
+        Depose := -0.00251 * (Power(PVVfin, 2) - Power(PVV, 2)) +
+          1.05393 * (PVVfin - PVV);
+        Fields[76].AsFloat := Ingere / (1 - Gaspillage) - Ingere;
+        Fields[77].AsFloat := Math.Max(Ingere - Depose, 0);
+        Fields[78].AsFloat := Math.Min(Ingere, Depose);
+        // Zinc
+        Ingere := IngereSec1 * CC1.Zn + IngereSec2 * CC2.Zn;
+        Depose := 21.8 * (PVVfin - PVV);
+        Fields[79].AsFloat := Ingere / (1 - Gaspillage) - Ingere;
+        Fields[80].AsFloat := Math.Max(Ingere - Depose, 0);
+        Fields[81].AsFloat := Math.Min(Ingere, Depose);
+        Post;
+        CumulIngere  := CumulIngere + IngereFrais;
+        CumulDistrib := CumulDistrib + Distrib;
+        if Aliment1 <> -1 then // Aliment 1
+        begin
+          PAliment := ListAliment[FindIdxAliment(FindNomAliment(Aliment1))];
+          Cout := Cout + Distrib * Taux1 * PAliment.Prix / 1000;
+        end;
+        if Aliment2 <> -1 then // Aliment 2
+        begin
+          PAliment := ListAliment[FindIdxAliment(FindNomAliment(Aliment2))];
+          Cout := Cout + Distrib * Taux2 * PAliment.Prix / 1000;
+        end;
+      end;
+    // Bilan
+    with JvCsvDSBilan do
+    begin
+      Append;
+      Fields[0].AsAnsiString := PProfilP.Nom;
+      Fields[1].AsAnsiString := PSeqAliP.Nom;
+      Fields[2].AsAnsiString := PRationP.Nom;
+      if PProfilP.ModeFin = 0 then
+        Fields[3].AsString := 'Dur�e'
+      else
+        Fields[3].AsString := 'Poids vif';
+      Fields[4].AsInteger := Trunc(PResSimulP.TabResult[1, 1]);
+      Fields[5].AsInteger := Trunc(PResSimulP.TabResult[1, PResSimulP.NbJSim]) + 1;
+      Fields[6].AsFloat  := PResSimulP.TabResult[2, 1];
+      Fields[7].AsFloat  := PResSimulP.TabResult[2, PResSimulP.NbJSim] +
+        PResSimulP.TabResult[84, PResSimulP.NbJSim];
+      Fields[8].AsFloat  := PResSimulP.TabResult[49, 1];
+      Fields[9].AsFloat  := PResSimulP.TabResult[49, PResSimulP.NbJSim] +
+        PResSimulP.TabResult[79, PResSimulP.NbJSim] / 1000;
+      Fields[10].AsFloat := PResSimulP.TabResult[50, 1];
+      Fields[11].AsFloat := PResSimulP.TabResult[50, PResSimulP.NbJSim] +
+        PResSimulP.TabResult[80, PResSimulP.NbJSim] / 1000;
+      Fields[12].AsFloat := CumulIngere;
+      Fields[13].AsFloat := CumulDistrib;
+      Fields[14].AsFloat := Cout;
+      Fields[15].AsFloat := CalcRC(Fields[7].AsFloat,
+        CalcRCStd(PProfilP.PVFin, PProfilP.Carcasse), Fields[7].AsFloat) * 100;
+      Post;
+    end;
+    Dispose(PResSimulP);
+  end;
+  JvCsvDSResult.Active := False;
+  JvCsvDSBilan.Active := False;
+  Screen.Cursor := crDefault;
+  FreeSimulP;
+end;
+
+// Onglet Exportation
+
+procedure TFLudo.SBExportClick(Sender: TObject);
+var
+  i: integer;
+begin
+  if (ListAliment.Count = 0) or (ListSeqAliP.Count = 0) or
+    (ListRationP.Count = 0) or (ListProfilP.Count = 0) then
+  begin
+    MessageDlg(
+      'Choisir un dossier contenant au moins les aliments, s�quences alimentaires, plans de rationnement et profils !',
+      mtWarning, [mbOK], 0);
+    ActiveControl := JvDEFolder;
+    Exit;
+  end;
+  if JvFEExport.Text = '' then
+  begin
+    MessageDlg('Indiquer un nom de fichier pour l''exportation !', mtWarning, [mbOK], 0);
+    ActiveControl := JvFEExport;
+    Exit;
+  end;
+  // Exportation
+  Screen.Cursor := crHourGlass;
+  MExport.Lines.Clear;
+  Application.ProcessMessages;
+  JvCsvDSExport.FileName := JvFEExport.Text;
+  JvCsvDSExport.Active := True;
+  for i := 0 to ListProfilP.Count - 1 do
+  begin
+    PProfilP := ListProfilP[i];
+    with JvCsvDSExport do
+    begin
+      Append;
+      Fields[0].AsAnsiString := PProfilP.Nom;
+      Fields[1].AsInteger := PProfilP.Sexe;
+      Fields[2].AsInteger := PProfilP.AgeInit;
+      Fields[3].AsFloat  := PProfilP.PVInit;
+      Fields[4].AsInteger := PProfilP.ModeFin;
+      Fields[5].AsInteger := PProfilP.Duree;
+      Fields[6].AsFloat  := PProfilP.PVFin;
+      Fields[7].AsFloat  := PProfilP.Carcasse;
+      Fields[8].AsInteger := PProfilP.Unite;
+      Fields[9].AsInteger := PProfilP.Equation;
+      Fields[10].AsFloat := PProfilP.a;
+      Fields[11].AsFloat := PProfilP.b;
+      Fields[12].AsFloat := PProfilP.PDMoy;
+      Fields[13].AsFloat := PProfilP.BGompertz;
+      Fields[14].AsFloat := PProfilP.Entretien;
+      Fields[15].AsFloat := PProfilP.PVmr2;
+      Post;
+    end;
+    MExport.Lines.Add(Format('%s (%d/%d)', [PProfilP.Nom, i + 1, ListProfilP.Count]));
+    Application.ProcessMessages;
+  end;
+  JvCsvDSExport.Active := False;
+  Screen.Cursor := crDefault;
+end;
+
+// Aliment
+
+procedure TFLudo.LoadAliment;
+var
+  fic: file of RecAliment;
+  rec: PRecAliment;
+begin
+  // chargement du fichier
+  AssignFile(fic, NFicAliment);
+  Reset(fic);
+  while not EOF(fic) do
+  begin
+    New(rec);
+    Read(fic, rec^);
+    ListAliment.Add(rec);
+  end;
+  CloseFile(fic);
+end;
+
+procedure TFLudo.FreeAliment;
+var
+  i: integer;
+  rec: PRecAliment;
+begin
+  if ListAliment.Count > 0 then
+    for i := 0 to ListAliment.Count - 1 do
+    begin
+      rec := ListAliment[i];
+      Dispose(rec);
+    end;
+  ListAliment.Clear;
+end;
+
+// S�quence alimentaire porc
+
+procedure TFLudo.LoadSeqAliP;
+var
+  fic: file of RecSeqAliP;
+  rec: PRecSeqAliP;
+begin
+  // chargement du fichier
+  AssignFile(fic, NFicSeqAliP);
+  Reset(fic);
+  while not EOF(fic) do
+  begin
+    New(rec);
+    Read(fic, rec^);
+    ListSeqAliP.Add(rec);
+  end;
+  CloseFile(fic);
+end;
+
+procedure TFLudo.FreeSeqAliP;
+var
+  i: integer;
+  rec: PRecSeqAliP;
+begin
+  if ListSeqAliP.Count > 0 then
+    for i := 0 to ListSeqAliP.Count - 1 do
+    begin
+      rec := ListSeqAliP[i];
+      Dispose(rec);
+    end;
+  ListSeqAliP.Clear;
+end;
+
+procedure TFLudo.StringsSeqAliP(Liste: TStrings);
+var
+  i: integer;
+  rec: PRecSeqAliP;
+begin
+  Liste.Clear;
+  if ListSeqAliP.Count > 0 then
+    for i := 0 to ListSeqAliP.Count - 1 do
+    begin
+      rec := ListSeqAliP[i];
+      Liste.Add(rec.Nom);
+    end;
+end;
+
+// Plan de rationnement porc
+
+procedure TFLudo.LoadRationP;
+var
+  fic: file of RecRationP;
+  rec: PRecRationP;
+begin
+  // chargement du fichier
+  AssignFile(fic, NFicRationP);
+  Reset(fic);
+  while not EOF(fic) do
+  begin
+    New(rec);
+    Read(fic, rec^);
+    ListRationP.Add(rec);
+  end;
+  CloseFile(fic);
+end;
+
+procedure TFLudo.FreeRationP;
+var
+  i: integer;
+  rec: PRecRationP;
+begin
+  if ListRationP.Count > 0 then
+    for i := 0 to ListRationP.Count - 1 do
+    begin
+      rec := ListRationP[i];
+      Dispose(rec);
+    end;
+  ListRationP.Clear;
+end;
+
+procedure TFLudo.StringsRationP(Liste: TStrings);
+var
+  i: integer;
+  rec: PRecRationP;
+begin
+  Liste.Clear;
+  if ListRationP.Count > 0 then
+    for i := 0 to ListRationP.Count - 1 do
+    begin
+      rec := ListRationP[i];
+      Liste.Add(rec.Nom);
+    end;
+end;
+
+// Profil porc
+
+procedure TFLudo.LoadProfilP;
+var
+  fic: file of RecProfilP;
+  rec: PRecPRofilP;
+begin
+  // chargement du fichier
+  AssignFile(fic, NFicProfilP);
+  Reset(fic);
+  while not EOF(fic) do
+  begin
+    New(rec);
+    Read(fic, rec^);
+    ListProfilP.Add(rec);
+  end;
+  CloseFile(fic);
+end;
+
+procedure TFLudo.FreeProfilP;
+var
+  i: integer;
+  rec: PRecProfilP;
+begin
+  if ListProfilP.Count > 0 then
+    for i := 0 to ListProfilP.Count - 1 do
+    begin
+      rec := ListProfilP[i];
+      Dispose(rec);
+    end;
+  ListProfilP.Clear;
+end;
+
+procedure TFLudo.StringsProfilP(Liste: TStrings);
+var
+  i: integer;
+  rec: PRecProfilP;
+begin
+  Liste.Clear;
+  if ListProfilP.Count > 0 then
+    for i := 0 to ListProfilP.Count - 1 do
+    begin
+      rec := ListProfilP[i];
+      Liste.Add(rec.Nom);
+    end;
+end;
+
+procedure TFLudo.SaveProfilP;
+var
+  i: integer;
+  fic: file of RecProfilP;
+  rec: PRecProfilP;
+begin
+  AssignFile(fic, NFicProfilP);
+  Rewrite(fic);
+  if ListProfilP.Count > 0 then
+    for i := 0 to ListProfilP.Count - 1 do
+    begin
+      rec := ListProfilP[i];
+      Write(fic, rec^);
+    end;
+  CloseFile(fic);
+end;
+
+// Simulation porc
+
+procedure TFLudo.FreeSimulP;
+var
+  i: integer;
+  rec: PRecSimulP;
+begin
+  if ListSimulP.Count > 0 then
+    for i := 0 to ListSimulP.Count - 1 do
+    begin
+      rec := ListSimulP[i];
+      Dispose(rec);
+    end;
+  ListSimulP.Clear;
+end;
+
+end.
Index: Ludo/Ludo.cfg
===================================================================
--- Ludo/Ludo.cfg	(révision 0)
+++ Ludo/Ludo.cfg	(révision 3)
@@ -0,0 +1,38 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-LE"C:\Documents and Settings\Alain VALANCOGNE\Mes documents\Projets Borland Studio\Bpl"
+-LN"C:\Documents and Settings\Alain VALANCOGNE\Mes documents\Projets Borland Studio\Bpl"
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST
Index: Ludo/UFLudo.dfm
===================================================================
--- Ludo/UFLudo.dfm	(révision 0)
+++ Ludo/UFLudo.dfm	(révision 3)
@@ -0,0 +1,1060 @@
+object FLudo: TFLudo
+  Left = 120
+  Top = 120
+  Caption = 'InraPorc population'
+  ClientHeight = 566
+  ClientWidth = 792
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poDesktopCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PFolder: TPanel
+    Left = 0
+    Top = 0
+    Width = 792
+    Height = 56
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 0
+    object LFolder: TLabel
+      Left = 16
+      Top = 20
+      Width = 94
+      Height = 13
+      Caption = 'Dossier de donn'#233'es'
+      Transparent = True
+    end
+    object JvDEFolder: TJvDirectoryEdit
+      Left = 160
+      Top = 16
+      Width = 320
+      Height = 21
+      AcceptFiles = False
+      DialogKind = dkWin32
+      DialogText = 'S'#233'lectionner le dossier contenant les donn'#233'es'
+      DialogOptions = []
+      DirectInput = False
+      TabOrder = 0
+      OnChange = JvDEFolderChange
+    end
+  end
+  object PC: TPageControl
+    Left = 0
+    Top = 56
+    Width = 792
+    Height = 510
+    ActivePage = TSImport
+    Align = alClient
+    TabOrder = 1
+    object TSImport: TTabSheet
+      Caption = 'Importation'
+      DesignSize = (
+        784
+        482)
+      object LImport: TLabel
+        Left = 12
+        Top = 12
+        Width = 80
+        Height = 13
+        Caption = 'Fichier '#224' importer'
+        Transparent = True
+      end
+      object SBImport: TSpeedButton
+        Left = 156
+        Top = 32
+        Width = 80
+        Height = 24
+        Caption = 'Importer'
+        ParentShowHint = False
+        ShowHint = True
+        Spacing = 1
+        Transparent = False
+        OnClick = SBImportClick
+      end
+      object JvFEImport: TJvFilenameEdit
+        Left = 156
+        Top = 8
+        Width = 240
+        Height = 21
+        Hint = 
+          'Ligne de titre : Nom;Sexe;AgeInit;PVInit;ModeFin;Duree;PVFin;Car' +
+          'casse;Unite;Equation;a;b;PDMoy;Bgompertz;Entretien;PVmr2'
+        AddQuotes = False
+        DefaultExt = '.csv'
+        Filter = 'Fichier CSV|*.csv'
+        DialogOptions = [ofHideReadOnly, ofNoChangeDir, ofPathMustExist, ofFileMustExist]
+        DialogTitle = 'S'#233'lectionner le fichier CSV '#224' importer'
+        DirectInput = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+      end
+      object MImport: TMemo
+        Left = 12
+        Top = 64
+        Width = 760
+        Height = 410
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        Color = clBtnFace
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 1
+      end
+    end
+    object TSObserv: TTabSheet
+      Caption = 'Observations'
+      ImageIndex = 1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      DesignSize = (
+        784
+        482)
+      object LObserv: TLabel
+        Left = 12
+        Top = 260
+        Width = 80
+        Height = 13
+        Caption = 'Fichier '#224' importer'
+        Transparent = True
+      end
+      object SBObserv: TSpeedButton
+        Left = 156
+        Top = 280
+        Width = 80
+        Height = 24
+        Caption = 'Importer'
+        ParentShowHint = False
+        ShowHint = True
+        Spacing = 1
+        Transparent = False
+        OnClick = SBObservClick
+      end
+      object LCarcasse: TLabel
+        Left = 12
+        Top = 12
+        Width = 118
+        Height = 13
+        Caption = 'Rendement carcasse (%)'
+        Transparent = True
+      end
+      object LPDMoy: TLabel
+        Left = 12
+        Top = 156
+        Width = 71
+        Height = 13
+        Caption = 'PD moyen (g/j)'
+        Transparent = True
+      end
+      object LPrecocite: TLabel
+        Left = 12
+        Top = 180
+        Width = 61
+        Height = 13
+        Caption = 'Pr'#233'cocit'#233' (/j)'
+        Transparent = True
+      end
+      object LEntretien: TLabel
+        Left = 12
+        Top = 204
+        Width = 42
+        Height = 13
+        Caption = 'Entretien'
+        Transparent = True
+      end
+      object LPVmr2: TLabel
+        Left = 12
+        Top = 228
+        Width = 72
+        Height = 13
+        Caption = 'PV PDmax (kg)'
+        Transparent = True
+      end
+      object JvFEObserv: TJvFilenameEdit
+        Left = 156
+        Top = 256
+        Width = 240
+        Height = 21
+        Hint = 'Ligne de titre : Nom;Sexe;Age;Conso;PV;P2;TMP'
+        AddQuotes = False
+        DefaultExt = '.csv'
+        Filter = 'Fichier CSV|*.csv'
+        DialogOptions = [ofHideReadOnly, ofNoChangeDir, ofPathMustExist, ofFileMustExist]
+        DialogTitle = 'S'#233'lectionner le fichier CSV '#224' importer'
+        DirectInput = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 6
+      end
+      object MObserv: TMemo
+        Left = 12
+        Top = 312
+        Width = 760
+        Height = 162
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        Color = clBtnFace
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 7
+      end
+      object GBAdLib: TGroupBox
+        Left = 4
+        Top = 32
+        Width = 400
+        Height = 116
+        Caption = 'Consommation ad libitum'
+        TabOrder = 1
+        object LUnite: TLabel
+          Left = 8
+          Top = 20
+          Width = 25
+          Height = 13
+          Caption = 'Unit'#233
+          Transparent = True
+        end
+        object LEquation: TLabel
+          Left = 8
+          Top = 44
+          Width = 42
+          Height = 13
+          Caption = 'Equation'
+          Transparent = True
+        end
+        object LY50: TLabel
+          Left = 8
+          Top = 68
+          Width = 105
+          Height = 13
+          Caption = 'Aliment ing'#233'r'#233' '#224' 50 kg'
+          Transparent = True
+        end
+        object LY100: TLabel
+          Left = 8
+          Top = 92
+          Width = 111
+          Height = 13
+          Caption = 'Aliment ing'#233'r'#233' '#224' 100 kg'
+          Transparent = True
+        end
+        object CBUnite: TComboBox
+          Left = 152
+          Top = 16
+          Width = 240
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 3
+          TabOrder = 0
+          Text = 'EN (MJ/j)'
+          OnChange = CBUniteChange
+          Items.Strings = (
+            'Quantit'#233' (kg/j)'
+            'ED (MJ/j)'
+            'EM (MJ/j)'
+            'EN (MJ/j)'
+            'MS (kg/j)')
+        end
+        object CBEquation: TComboBox
+          Left = 152
+          Top = 40
+          Width = 240
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 3
+          TabOrder = 1
+          Text = 'Gamma (entretien)'
+          Items.Strings = (
+            'a+PV*b'
+            'a*PV^b'
+            'a*(1-exp(-b*PV))'
+            'Gamma (entretien)')
+        end
+        object JvVEY50: TJvValidateEdit
+          Left = 152
+          Top = 64
+          Width = 64
+          Height = 21
+          CriticalPoints.MaxValueIncluded = False
+          CriticalPoints.MinValueIncluded = False
+          DisplayFormat = dfFloat
+          DecimalPlaces = 2
+          EditText = '20.00'
+          TabOrder = 2
+        end
+        object JvVEY100: TJvValidateEdit
+          Left = 152
+          Top = 88
+          Width = 64
+          Height = 21
+          CriticalPoints.MaxValueIncluded = False
+          CriticalPoints.MinValueIncluded = False
+          DisplayFormat = dfFloat
+          DecimalPlaces = 2
+          EditText = '30.00'
+          TabOrder = 3
+        end
+      end
+      object JvVECarcasse: TJvValidateEdit
+        Left = 156
+        Top = 8
+        Width = 64
+        Height = 21
+        CriticalPoints.MaxValueIncluded = False
+        CriticalPoints.MinValueIncluded = False
+        DisplayFormat = dfFloat
+        DecimalPlaces = 1
+        EditText = '79'
+        TabOrder = 0
+      end
+      object JvVEPDMoy: TJvValidateEdit
+        Left = 156
+        Top = 152
+        Width = 64
+        Height = 21
+        CriticalPoints.MaxValueIncluded = False
+        CriticalPoints.MinValueIncluded = False
+        DisplayFormat = dfFloat
+        DecimalPlaces = 2
+        EditText = '150.00'
+        TabOrder = 2
+      end
+      object JvVEPrecocite: TJvValidateEdit
+        Left = 156
+        Top = 176
+        Width = 64
+        Height = 21
+        CriticalPoints.MaxValueIncluded = False
+        CriticalPoints.MinValueIncluded = False
+        DisplayFormat = dfFloat
+        DecimalPlaces = 5
+        EditText = '0.01400'
+        TabOrder = 3
+      end
+      object JvVEEntretien: TJvValidateEdit
+        Left = 156
+        Top = 200
+        Width = 64
+        Height = 21
+        CriticalPoints.MaxValueIncluded = False
+        CriticalPoints.MinValueIncluded = False
+        DisplayFormat = dfFloat
+        DecimalPlaces = 3
+        EditText = '1.000'
+        TabOrder = 4
+      end
+      object JvVEPVmr2: TJvValidateEdit
+        Left = 156
+        Top = 224
+        Width = 64
+        Height = 21
+        CriticalPoints.MaxValueIncluded = False
+        CriticalPoints.MinValueIncluded = False
+        DisplayFormat = dfFloat
+        EditText = '70'
+        TabOrder = 5
+      end
+    end
+    object TSCalibr: TTabSheet
+      Caption = 'Calibrage'
+      ImageIndex = 2
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      DesignSize = (
+        784
+        482)
+      object LRation1: TLabel
+        Left = 12
+        Top = 36
+        Width = 100
+        Height = 13
+        Caption = 'Plan de rationnement'
+        Transparent = True
+      end
+      object LSeqAli1: TLabel
+        Left = 12
+        Top = 12
+        Width = 102
+        Height = 13
+        Caption = 'S'#233'quence alimentaire'
+        Transparent = True
+      end
+      object SBCalibr: TSpeedButton
+        Left = 156
+        Top = 64
+        Width = 80
+        Height = 24
+        Caption = 'Calibrer'
+        NumGlyphs = 2
+        ParentShowHint = False
+        ShowHint = True
+        Spacing = 1
+        Transparent = False
+        OnClick = SBCalibrClick
+      end
+      object CBRation1: TComboBox
+        Left = 156
+        Top = 32
+        Width = 240
+        Height = 21
+        Style = csDropDownList
+        ItemHeight = 0
+        Sorted = True
+        TabOrder = 1
+      end
+      object CBSeqAli1: TComboBox
+        Left = 156
+        Top = 8
+        Width = 240
+        Height = 21
+        Style = csDropDownList
+        ItemHeight = 0
+        Sorted = True
+        TabOrder = 0
+      end
+      object MCalibr: TMemo
+        Left = 12
+        Top = 96
+        Width = 760
+        Height = 378
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        Color = clBtnFace
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 3
+      end
+      object CheckBox1: TCheckBox
+        Left = 412
+        Top = 66
+        Width = 16
+        Height = 17
+        TabOrder = 4
+        Visible = False
+      end
+      object CheckBox2: TCheckBox
+        Left = 428
+        Top = 66
+        Width = 16
+        Height = 17
+        TabOrder = 5
+        Visible = False
+      end
+      object CheckBox3: TCheckBox
+        Left = 444
+        Top = 66
+        Width = 16
+        Height = 17
+        TabOrder = 6
+        Visible = False
+      end
+      object CheckBox4: TCheckBox
+        Left = 460
+        Top = 66
+        Width = 16
+        Height = 17
+        TabOrder = 7
+        Visible = False
+      end
+      object CheckBox5: TCheckBox
+        Left = 484
+        Top = 66
+        Width = 16
+        Height = 17
+        TabOrder = 8
+        Visible = False
+      end
+      object CheckBox7: TCheckBox
+        Left = 516
+        Top = 66
+        Width = 16
+        Height = 17
+        TabOrder = 10
+        Visible = False
+      end
+      object CheckBox8: TCheckBox
+        Left = 532
+        Top = 66
+        Width = 16
+        Height = 17
+        TabOrder = 11
+        Visible = False
+      end
+      object CheckBox9: TCheckBox
+        Left = 548
+        Top = 66
+        Width = 16
+        Height = 17
+        TabOrder = 12
+        Visible = False
+      end
+      object CheckBox6: TCheckBox
+        Left = 500
+        Top = 66
+        Width = 16
+        Height = 17
+        TabOrder = 9
+        Visible = False
+      end
+      object CBAALimitCalibr: TCheckBox
+        Left = 12
+        Top = 66
+        Width = 128
+        Height = 17
+        Caption = 'Acides amin'#233's limitants'
+        Checked = True
+        State = cbChecked
+        TabOrder = 2
+      end
+    end
+    object TSGraph: TTabSheet
+      Caption = 'Graphique'
+      ImageIndex = 3
+      DesignSize = (
+        784
+        482)
+      object LProfil: TLabel
+        Left = 12
+        Top = 12
+        Width = 56
+        Height = 13
+        Caption = 'Profil animal'
+        Transparent = True
+      end
+      object CBProfil: TComboBox
+        Left = 156
+        Top = 8
+        Width = 240
+        Height = 21
+        Style = csDropDownList
+        ItemHeight = 13
+        Sorted = True
+        TabOrder = 0
+        OnChange = CBProfilChange
+      end
+      object CGraph: TChart
+        Left = 4
+        Top = 64
+        Width = 776
+        Height = 418
+        Legend.Visible = False
+        MarginBottom = 1
+        MarginLeft = 1
+        MarginRight = 1
+        MarginTop = 1
+        Title.Text.Strings = (
+          'TChart')
+        Title.Visible = False
+        BottomAxis.Labels = False
+        BottomAxis.Title.Caption = 'Age (j)'
+        BottomAxis.Title.Font.Style = [fsBold]
+        LeftAxis.Labels = False
+        LeftAxis.Title.Caption = 'Aliment distribu'#233' (kg)'
+        LeftAxis.Title.Font.Color = clRed
+        LeftAxis.Title.Font.Style = [fsBold]
+        RightAxis.Labels = False
+        RightAxis.Title.Caption = 'Poids vif (kg)'
+        RightAxis.Title.Font.Color = clGreen
+        RightAxis.Title.Font.Style = [fsBold]
+        View3D = False
+        BevelOuter = bvNone
+        TabOrder = 7
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        object LineFeed: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          Title = 'Aliment distribu'#233
+          LinePen.Width = 2
+          Pointer.InflateMargins = True
+          Pointer.Style = psRectangle
+          Pointer.Visible = False
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+        object LineWeight: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          Title = 'Poids vif'
+          VertAxis = aRightAxis
+          LinePen.Width = 2
+          Pointer.InflateMargins = True
+          Pointer.Style = psRectangle
+          Pointer.Visible = False
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+        object PointFeed: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          Title = 'Aliment distribu'#233
+          LinePen.Width = 2
+          LinePen.Visible = False
+          Pointer.Brush.Color = clWhite
+          Pointer.Brush.Style = bsClear
+          Pointer.InflateMargins = True
+          Pointer.Pen.Color = clRed
+          Pointer.Pen.Width = 2
+          Pointer.Style = psCircle
+          Pointer.Visible = True
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+        object PointWeight: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          Title = 'Poids vif'
+          VertAxis = aRightAxis
+          LinePen.Width = 2
+          LinePen.Visible = False
+          Pointer.Brush.Color = clWhite
+          Pointer.Brush.Style = bsClear
+          Pointer.InflateMargins = True
+          Pointer.Pen.Color = clGreen
+          Pointer.Pen.Width = 2
+          Pointer.Style = psCircle
+          Pointer.Visible = True
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+      end
+      object EY50: TEdit
+        Left = 236
+        Top = 40
+        Width = 64
+        Height = 21
+        Hint = 'Aliment ing'#233'r'#233' '#224' 50 kg'
+        TabStop = False
+        Anchors = [akLeft, akBottom]
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+      end
+      object EY100: TEdit
+        Left = 316
+        Top = 40
+        Width = 64
+        Height = 21
+        Hint = 'Aliment ing'#233'r'#233' '#224' 100 kg'
+        TabStop = False
+        Anchors = [akLeft, akBottom]
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+      end
+      object EPDMoy: TEdit
+        Left = 396
+        Top = 40
+        Width = 64
+        Height = 21
+        Hint = 'PD moyen (g/j)'
+        TabStop = False
+        Anchors = [akLeft, akBottom]
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 4
+      end
+      object EPrecocite: TEdit
+        Left = 476
+        Top = 40
+        Width = 64
+        Height = 21
+        Hint = 'Pr'#233'cocit'#233' (/j)'
+        TabStop = False
+        Anchors = [akLeft, akBottom]
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 5
+      end
+      object EEntretien: TEdit
+        Left = 556
+        Top = 40
+        Width = 64
+        Height = 21
+        Hint = 'Entretien'
+        TabStop = False
+        Anchors = [akLeft, akBottom]
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 6
+      end
+      object EPVInit: TEdit
+        Left = 156
+        Top = 40
+        Width = 64
+        Height = 21
+        Hint = 'Poids vif initial'
+        TabStop = False
+        Anchors = [akLeft, akBottom]
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+      end
+      object CBAALimitGraph: TCheckBox
+        Left = 12
+        Top = 42
+        Width = 128
+        Height = 17
+        Caption = 'Acides amin'#233's limitants'
+        Checked = True
+        State = cbChecked
+        TabOrder = 8
+      end
+    end
+    object TSSimul: TTabSheet
+      Caption = 'Simulation'
+      ImageIndex = 4
+      DesignSize = (
+        784
+        482)
+      object LBilan: TLabel
+        Left = 12
+        Top = 100
+        Width = 80
+        Height = 13
+        Caption = 'Bilan synth'#233'tique'
+        Transparent = True
+      end
+      object LResult: TLabel
+        Left = 12
+        Top = 76
+        Width = 85
+        Height = 13
+        Caption = 'R'#233'sultats d'#233'taill'#233's'
+        Transparent = True
+      end
+      object LRation2: TLabel
+        Left = 12
+        Top = 44
+        Width = 100
+        Height = 13
+        Caption = 'Plan de rationnement'
+        Transparent = True
+      end
+      object LSeqAli2: TLabel
+        Left = 12
+        Top = 20
+        Width = 102
+        Height = 13
+        Caption = 'S'#233'quence alimentaire'
+        Transparent = True
+      end
+      object SBSimul: TSpeedButton
+        Left = 156
+        Top = 120
+        Width = 80
+        Height = 24
+        Caption = 'Simuler'
+        NumGlyphs = 2
+        ParentShowHint = False
+        ShowHint = True
+        Spacing = 1
+        Transparent = False
+        OnClick = SBSimulClick
+      end
+      object JvFEBilan: TJvFilenameEdit
+        Left = 156
+        Top = 96
+        Width = 240
+        Height = 21
+        AddQuotes = False
+        DialogKind = dkSave
+        DefaultExt = '.csv'
+        Filter = 'Fichier CSV|*.csv'
+        DialogOptions = [ofHideReadOnly, ofNoChangeDir, ofPathMustExist]
+        DialogTitle = 
+          'Indiquer le fichier CSV qui contiendra les r'#233'sultats des simulat' +
+          'ions'
+        DirectInput = False
+        TabOrder = 3
+      end
+      object JvFEResult: TJvFilenameEdit
+        Left = 156
+        Top = 72
+        Width = 240
+        Height = 21
+        AddQuotes = False
+        DialogKind = dkSave
+        DefaultExt = '.csv'
+        Filter = 'Fichier CSV|*.csv'
+        DialogOptions = [ofHideReadOnly, ofNoChangeDir, ofPathMustExist]
+        DialogTitle = 
+          'Indiquer le fichier CSV qui contiendra les r'#233'sultats des simulat' +
+          'ions'
+        DirectInput = False
+        TabOrder = 2
+      end
+      object MSimul: TMemo
+        Left = 12
+        Top = 152
+        Width = 760
+        Height = 322
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        Color = clBtnFace
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 4
+      end
+      object CBRation2: TComboBox
+        Left = 156
+        Top = 40
+        Width = 240
+        Height = 21
+        Style = csDropDownList
+        ItemHeight = 0
+        Sorted = True
+        TabOrder = 1
+      end
+      object CBSeqAli2: TComboBox
+        Left = 156
+        Top = 16
+        Width = 240
+        Height = 21
+        Style = csDropDownList
+        ItemHeight = 0
+        Sorted = True
+        TabOrder = 0
+      end
+      object GroupBoxFin: TGroupBox
+        Left = 416
+        Top = 0
+        Width = 176
+        Height = 72
+        Caption = 'Etat final'
+        TabOrder = 5
+        object JvValidateEditDuree: TJvValidateEdit
+          Left = 120
+          Top = 16
+          Width = 40
+          Height = 21
+          CriticalPoints.MaxValueIncluded = False
+          CriticalPoints.MinValueIncluded = False
+          EditText = '100'
+          TabOrder = 0
+        end
+        object JvValidateEditPVFin: TJvValidateEdit
+          Left = 120
+          Top = 40
+          Width = 40
+          Height = 21
+          CriticalPoints.MaxValueIncluded = False
+          CriticalPoints.MinValueIncluded = False
+          DisplayFormat = dfFloatFixed
+          DecimalPlaces = 1
+          EditText = '120.0'
+          TabOrder = 1
+        end
+        object RadioButtonPVFin: TRadioButton
+          Left = 32
+          Top = 42
+          Width = 80
+          Height = 17
+          Caption = 'Poids vif (kg)'
+          TabOrder = 2
+        end
+        object RadioButtonDuree: TRadioButton
+          Left = 32
+          Top = 18
+          Width = 80
+          Height = 17
+          Caption = 'Dur'#233'e (j)'
+          Checked = True
+          TabOrder = 3
+          TabStop = True
+        end
+        object CheckBoxProfil: TCheckBox
+          Left = 8
+          Top = 32
+          Width = 17
+          Height = 17
+          Hint = 'Utiliser l'#39#233'tat final du profil animal'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 4
+          OnClick = CheckBoxProfilClick
+        end
+      end
+      object CBAALimitSimul: TCheckBox
+        Left = 12
+        Top = 122
+        Width = 128
+        Height = 17
+        Caption = 'Acides amin'#233's limitants'
+        Checked = True
+        State = cbChecked
+        TabOrder = 6
+      end
+    end
+    object TSExport: TTabSheet
+      Caption = 'Exportation'
+      ImageIndex = 5
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      DesignSize = (
+        784
+        482)
+      object LExport: TLabel
+        Left = 12
+        Top = 12
+        Width = 81
+        Height = 13
+        Caption = 'Fichier '#224' exporter'
+        Transparent = True
+      end
+      object SBExport: TSpeedButton
+        Left = 156
+        Top = 32
+        Width = 80
+        Height = 24
+        Caption = 'Exporter'
+        ParentShowHint = False
+        ShowHint = True
+        Spacing = 1
+        Transparent = False
+        OnClick = SBExportClick
+      end
+      object JvFEExport: TJvFilenameEdit
+        Left = 156
+        Top = 8
+        Width = 240
+        Height = 21
+        AddQuotes = False
+        DialogKind = dkSave
+        DefaultExt = '.csv'
+        Filter = 'Fichier CSV|*.csv'
+        DialogOptions = [ofHideReadOnly, ofNoChangeDir, ofPathMustExist]
+        DialogTitle = 'Indiquer le fichier CSV '#224' exporter'
+        DirectInput = False
+        TabOrder = 0
+      end
+      object MExport: TMemo
+        Left = 12
+        Top = 64
+        Width = 760
+        Height = 410
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        Color = clBtnFace
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 1
+      end
+    end
+  end
+  object JvCsvDSImport: TJvCsvDataSet
+    ReadOnly = True
+    ValidateHeaderRow = False
+    Separator = ';'
+    SavesChanges = False
+    AutoBackupCount = 0
+    StoreDefs = True
+    Left = 488
+    Top = 16
+  end
+  object JvCsvDSResult: TJvCsvDataSet
+    CsvFieldDef = 
+      'PROFIL:$25;AGE:%;PV:&;SEQALI:$25;RATION:$25;NUMALI1:%;NUMALI2:%;' +
+      'PCTALI1:&;PCTALI2:&;DISTRIB:&;INGERE:&;INGERE_ADLIB:&;MS:&;P:&;L' +
+      ':&;PD:&;LD:&;GMQ:&;IC:&;P2:&;TMP:&;CARCASSE:&;EN:&;N_ING:&;LYS_I' +
+      'NG:&;MET_ING:&;CYS_ING:&;TRP_ING:&;THR_ING:&;PHE_ING:&;TYR_ING:&' +
+      ';LEU_ING:&;ILE_ING:&;VAL_ING:&;HIS_ING:&;ARG_ING:&;N_DIG:&;LYS_D' +
+      'IG:&;MET_DIG:&;CYS_DIG:&;TRP_DIG:&;THR_DIG:&;PHE_DIG:&;TYR_DIG:&' +
+      ';LEU_DIG:&;ILE_DIG:&;VAL_DIG:&;HIS_DIG:&;ARG_DIG:&;N_BES:&;LYS_B' +
+      'ES:&;MET_BES:&;CYS_BES:&;TRP_BES:&;THR_BES:&;PHE_BES:&;TYR_BES:&' +
+      ';LEU_BES:&;ILE_BES:&;VAL_BES:&;HIS_BES:&;ARG_BES:&;N_GAS:&;N_FEC' +
+      ':&;N_URI:&;N_RET:&;P_GAS:&;P_FEC:&;P_URI:&;P_RET:&;CA_GAS:&;CA_E' +
+      'XC:&;CA_RET:&;K_GAS:&;K_EXC:&;K_RET:&;CU_GAS:&;CU_EXC:&;CU_RET:&' +
+      ';ZN_GAS:&;ZN_EXC:&;ZN_RET:&'
+    Separator = ';'
+    AutoBackupCount = 0
+    Left = 552
+    Top = 16
+  end
+  object JvCsvDSBilan: TJvCsvDataSet
+    CsvFieldDef = 
+      'PROFIL:$25;SEQALI:$25;RATION:$25;MODEFIN:$10;AGEINIT:%;AGEFIN:%;' +
+      'PVINIT:&;PVFIN:&;PINIT:&;PFIN:&;LINIT:&;LFIN:&;INGERE:&;DISTRIB:' +
+      '&;COUT:&;CARCASSE:&'
+    Separator = ';'
+    AutoBackupCount = 0
+    Left = 584
+    Top = 16
+  end
+  object JvCsvDSObserv: TJvCsvDataSet
+    ReadOnly = True
+    ValidateHeaderRow = False
+    Separator = ';'
+    SavesChanges = False
+    AutoBackupCount = 0
+    StoreDefs = True
+    Left = 520
+    Top = 16
+  end
+  object ASQLite3DBInraPorc: TASQLite3DB
+    TimeOut = 0
+    Database = 'InraPorc.sqb'
+    DefaultExt = '.sqb'
+    DriverDLL = 'SQLite3.dll'
+    Connected = False
+    MustExist = False
+    ExecuteInlineSQL = False
+    Left = 616
+    Top = 16
+  end
+  object ASQLite3TableObserv: TASQLite3Table
+    AutoCommit = False
+    SQLiteDateFormat = True
+    Connection = ASQLite3DBInraPorc
+    MaxResults = 0
+    StartResult = 0
+    TypeLess = False
+    SQLCursor = True
+    ReadOnly = False
+    UniDirectional = False
+    TableName = 'ObservProfilP'
+    PrimaryAutoInc = False
+    Left = 648
+    Top = 16
+  end
+  object JvCsvDSExport: TJvCsvDataSet
+    CsvFieldDef = 
+      'NOM:$25;SEXE:%;AGEINIT:%;PVINIT:&;MODEFIN:%;DUREE:%;PVFIN:&;CARC' +
+      'ASSE:&;UNITE:%;EQUATION:%;A:&;B:&;PDMOY:&;BGOMPERTZ:&;ENTRETIEN:' +
+      '&;PVMR2:&'
+    Separator = ';'
+    AutoBackupCount = 0
+    Left = 680
+    Top = 16
+  end
+  object XPManifestStyle: TXPManifest
+    Left = 712
+    Top = 16
+  end
+end
Index: Ludo/Ludo.bdsproj
===================================================================
--- Ludo/Ludo.bdsproj	(révision 0)
+++ Ludo/Ludo.bdsproj	(révision 3)
@@ -0,0 +1,175 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject>
+	<PersonalityInfo>
+		<Option>
+			<Option Name="Personality">Delphi.Personality</Option>
+			<Option Name="ProjectType">VCLApplication</Option>
+			<Option Name="Version">1.0</Option>
+			<Option Name="GUID">{34268E2A-356E-453F-9EBA-BFE16E4DF6E9}</Option>
+		</Option>
+	</PersonalityInfo>
+	<Delphi.Personality>
+		<Source>
+			<Source Name="MainSource">Ludo.dpr</Source>
+		</Source>
+		<FileVersion>
+			<FileVersion Name="Version">7.0</FileVersion>
+		</FileVersion>
+		<Compiler>
+			<Compiler Name="A">8</Compiler>
+			<Compiler Name="B">0</Compiler>
+			<Compiler Name="C">1</Compiler>
+			<Compiler Name="D">1</Compiler>
+			<Compiler Name="E">0</Compiler>
+			<Compiler Name="F">0</Compiler>
+			<Compiler Name="G">1</Compiler>
+			<Compiler Name="H">1</Compiler>
+			<Compiler Name="I">1</Compiler>
+			<Compiler Name="J">0</Compiler>
+			<Compiler Name="K">0</Compiler>
+			<Compiler Name="L">1</Compiler>
+			<Compiler Name="M">0</Compiler>
+			<Compiler Name="N">1</Compiler>
+			<Compiler Name="O">1</Compiler>
+			<Compiler Name="P">1</Compiler>
+			<Compiler Name="Q">0</Compiler>
+			<Compiler Name="R">0</Compiler>
+			<Compiler Name="S">0</Compiler>
+			<Compiler Name="T">0</Compiler>
+			<Compiler Name="U">0</Compiler>
+			<Compiler Name="V">1</Compiler>
+			<Compiler Name="W">0</Compiler>
+			<Compiler Name="X">1</Compiler>
+			<Compiler Name="Y">1</Compiler>
+			<Compiler Name="Z">1</Compiler>
+			<Compiler Name="ShowHints">True</Compiler>
+			<Compiler Name="ShowWarnings">True</Compiler>
+			<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
+			<Compiler Name="NamespacePrefix"></Compiler>
+			<Compiler Name="GenerateDocumentation">False</Compiler>
+			<Compiler Name="DefaultNamespace"></Compiler>
+			<Compiler Name="SymbolDeprecated">True</Compiler>
+			<Compiler Name="SymbolLibrary">True</Compiler>
+			<Compiler Name="SymbolPlatform">True</Compiler>
+			<Compiler Name="SymbolExperimental">True</Compiler>
+			<Compiler Name="UnitLibrary">True</Compiler>
+			<Compiler Name="UnitPlatform">True</Compiler>
+			<Compiler Name="UnitDeprecated">True</Compiler>
+			<Compiler Name="UnitExperimental">True</Compiler>
+			<Compiler Name="HResultCompat">True</Compiler>
+			<Compiler Name="HidingMember">True</Compiler>
+			<Compiler Name="HiddenVirtual">True</Compiler>
+			<Compiler Name="Garbage">True</Compiler>
+			<Compiler Name="BoundsError">True</Compiler>
+			<Compiler Name="ZeroNilCompat">True</Compiler>
+			<Compiler Name="StringConstTruncated">True</Compiler>
+			<Compiler Name="ForLoopVarVarPar">True</Compiler>
+			<Compiler Name="TypedConstVarPar">True</Compiler>
+			<Compiler Name="AsgToTypedConst">True</Compiler>
+			<Compiler Name="CaseLabelRange">True</Compiler>
+			<Compiler Name="ForVariable">True</Compiler>
+			<Compiler Name="ConstructingAbstract">True</Compiler>
+			<Compiler Name="ComparisonFalse">True</Compiler>
+			<Compiler Name="ComparisonTrue">True</Compiler>
+			<Compiler Name="ComparingSignedUnsigned">True</Compiler>
+			<Compiler Name="CombiningSignedUnsigned">True</Compiler>
+			<Compiler Name="UnsupportedConstruct">True</Compiler>
+			<Compiler Name="FileOpen">True</Compiler>
+			<Compiler Name="FileOpenUnitSrc">True</Compiler>
+			<Compiler Name="BadGlobalSymbol">True</Compiler>
+			<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
+			<Compiler Name="InvalidDirective">True</Compiler>
+			<Compiler Name="PackageNoLink">True</Compiler>
+			<Compiler Name="PackageThreadVar">True</Compiler>
+			<Compiler Name="ImplicitImport">True</Compiler>
+			<Compiler Name="HPPEMITIgnored">True</Compiler>
+			<Compiler Name="NoRetVal">True</Compiler>
+			<Compiler Name="UseBeforeDef">True</Compiler>
+			<Compiler Name="ForLoopVarUndef">True</Compiler>
+			<Compiler Name="UnitNameMismatch">True</Compiler>
+			<Compiler Name="NoCFGFileFound">True</Compiler>
+			<Compiler Name="ImplicitVariants">True</Compiler>
+			<Compiler Name="UnicodeToLocale">True</Compiler>
+			<Compiler Name="LocaleToUnicode">True</Compiler>
+			<Compiler Name="ImagebaseMultiple">True</Compiler>
+			<Compiler Name="SuspiciousTypecast">True</Compiler>
+			<Compiler Name="PrivatePropAccessor">True</Compiler>
+			<Compiler Name="UnsafeType">False</Compiler>
+			<Compiler Name="UnsafeCode">False</Compiler>
+			<Compiler Name="UnsafeCast">False</Compiler>
+			<Compiler Name="OptionTruncated">True</Compiler>
+			<Compiler Name="WideCharReduced">True</Compiler>
+			<Compiler Name="DuplicatesIgnored">True</Compiler>
+			<Compiler Name="UnitInitSeq">True</Compiler>
+			<Compiler Name="LocalPInvoke">True</Compiler>
+			<Compiler Name="MessageDirective">True</Compiler>
+			<Compiler Name="CodePage"></Compiler>
+		</Compiler>
+		<Linker>
+			<Linker Name="MapFile">0</Linker>
+			<Linker Name="OutputObjs">0</Linker>
+			<Linker Name="GenerateHpps">False</Linker>
+			<Linker Name="ConsoleApp">1</Linker>
+			<Linker Name="DebugInfo">False</Linker>
+			<Linker Name="RemoteSymbols">False</Linker>
+			<Linker Name="GenerateDRC">False</Linker>
+			<Linker Name="MinStackSize">16384</Linker>
+			<Linker Name="MaxStackSize">1048576</Linker>
+			<Linker Name="ImageBase">4194304</Linker>
+			<Linker Name="ExeDescription"></Linker>
+		</Linker>
+		<Directories>
+			<Directories Name="OutputDir"></Directories>
+			<Directories Name="UnitOutputDir"></Directories>
+			<Directories Name="PackageDLLOutputDir"></Directories>
+			<Directories Name="PackageDCPOutputDir"></Directories>
+			<Directories Name="SearchPath"></Directories>
+			<Directories Name="Packages"></Directories>
+			<Directories Name="Conditionals"></Directories>
+			<Directories Name="DebugSourceDirs"></Directories>
+			<Directories Name="UsePackages">False</Directories>
+		</Directories>
+		<Parameters>
+			<Parameters Name="RunParams"></Parameters>
+			<Parameters Name="HostApplication"></Parameters>
+			<Parameters Name="Launcher"></Parameters>
+			<Parameters Name="UseLauncher">False</Parameters>
+			<Parameters Name="DebugCWD"></Parameters>
+			<Parameters Name="Debug Symbols Search Path"></Parameters>
+			<Parameters Name="LoadAllSymbols">True</Parameters>
+			<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
+		</Parameters>
+		<Language>
+			<Language Name="ActiveLang"></Language>
+			<Language Name="ProjectLang">$00000000</Language>
+			<Language Name="RootDir"></Language>
+		</Language>
+		<VersionInfo>
+			<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
+			<VersionInfo Name="AutoIncBuild">False</VersionInfo>
+			<VersionInfo Name="MajorVer">1</VersionInfo>
+			<VersionInfo Name="MinorVer">0</VersionInfo>
+			<VersionInfo Name="Release">0</VersionInfo>
+			<VersionInfo Name="Build">0</VersionInfo>
+			<VersionInfo Name="Debug">False</VersionInfo>
+			<VersionInfo Name="PreRelease">False</VersionInfo>
+			<VersionInfo Name="Special">False</VersionInfo>
+			<VersionInfo Name="Private">False</VersionInfo>
+			<VersionInfo Name="DLL">False</VersionInfo>
+			<VersionInfo Name="Locale">1036</VersionInfo>
+			<VersionInfo Name="CodePage">1252</VersionInfo>
+		</VersionInfo>
+		<VersionInfoKeys>
+			<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
+			<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="Comments"></VersionInfoKeys>
+		</VersionInfoKeys>
+	</Delphi.Personality>
+</BorlandProject>
Index: Ludo/numgrad.inc
===================================================================
--- Ludo/numgrad.inc	(révision 0)
+++ Ludo/numgrad.inc	(révision 3)
@@ -0,0 +1,42 @@
+{ ******************************************************************
+  Numerical gradient
+  ****************************************************************** }
+
+procedure Gradient(X, G : TVector);
+
+const
+  Eta = 1.0E-4;     { Relative increment }
+
+var
+  I     : Integer;  { Loop variable }
+  Temp  : Float;    { Temporary variable }
+  Delta : Float;    { Increment }
+  Xm    : Float;    { X - Delta }
+  Xp    : Float;    { X + Delta }
+  Fm    : Float;    { F(X - Delta) }
+  Fp    : Float;    { F(X + Delta) }
+
+begin
+  for I := 1 to Nvar do
+    begin
+      if X[I] <> 0.0 then
+        Delta := Eta * Abs(X[I])
+      else
+        Delta := Eta;
+
+      Xp := X[I] + Delta;
+       Xm := X[I] - Delta;
+
+      Temp := X[I];
+
+      X[I] := Xm;
+      Fm := Func(X);
+
+      X[I] := Xp;
+      Fp := Func(X);
+
+      G[I] := (Fp - Fm) / (2.0 * Delta);
+
+      X[I] := Temp
+    end;
+end;
Index: Ludo/Install/LudoSetup.iss
===================================================================
--- Ludo/Install/LudoSetup.iss	(révision 0)
+++ Ludo/Install/LudoSetup.iss	(révision 3)
@@ -0,0 +1,57 @@
+[ISPP]
+#define Project "Ludo"
+#define Publisher "INRA"
+#define URL "https://inraporc.inra.fr/inraporc/"
+; Version
+#define Major
+#define Minor
+#define Release
+#define Build
+#expr ParseVersion(SourcePath + '\..\' + Project + '.exe',Major,Minor,Release,Build)
+
+[Setup]
+; Compiller
+PrivilegesRequired=none
+OutputBaseFilename={#Project}Setup
+OutputDir=.
+VersionInfoCompany={#Publisher}
+VersionInfoDescription=InraPorc population Setup
+VersionInfoVersion={#Major}.{#Minor}.{#Release}.{#Build}
+; Installer
+AppMutex={#Project}
+AppName={#Project}
+AppVerName={cm:NameAndVersion,{#Project},{#Major}.{#Minor}.{#Release}.{#Build}}
+AppVersion={#Major}.{#Minor}.{#Release}.{#Build}
+AppPublisher={#Publisher}
+AppPublisherURL={#URL}
+DefaultDirName={code:DefDirRoot}\InraPorc
+DefaultGroupName=InraPorc
+AllowNoIcons=true
+DisableDirPage=yes
+DisableProgramGroupPage=yes
+
+[Tasks]
+Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}
+Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
+
+[Files]
+Source: ..\{#Project}.exe; DestDir: {app}; Flags: ignoreversion
+
+[Icons]
+Name: {group}\InraPorc population; Filename: {app}\{#Project}.exe; WorkingDir: {app}
+Name: {userdesktop}\InraPorc population; Filename: {app}\{#Project}.exe; WorkingDir: {app}; Tasks: desktopicon
+Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\InraPorc population; Filename: {app}\{#Project}.exe; WorkingDir: {app}; Tasks: quicklaunchicon
+
+[Code]
+function IsRegularUser(): Boolean;
+begin
+  Result := not (IsAdminLoggedOn or IsPowerUserLoggedOn);
+end;
+
+function DefDirRoot(Param: String): String;
+begin
+  if IsRegularUser then
+    Result := ExpandConstant('{localappdata}')
+  else
+    Result := ExpandConstant('{pf}')
+end;
Index: Ludo/Ludo.dpr
===================================================================
--- Ludo/Ludo.dpr	(révision 0)
+++ Ludo/Ludo.dpr	(révision 3)
@@ -0,0 +1,22 @@
+program Ludo;
+
+uses
+  gnugettext in '..\..\gnugettext.pas',
+  gginit in '..\..\gginit.pas',
+  Forms,
+  UFLudo in 'UFLudo.pas' {FLudo},
+  UVariables in '..\UVariables.pas',
+  UCalcSimulP in '..\UCalcSimulP.pas',
+  UStrings in '..\UStrings.pas',
+  UFindRec in '..\UFindRec.pas',
+  UCalcul in '..\UCalcul.pas',
+  UUtil in '..\UUtil.pas';
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.Title := 'LudoPorc';
+  Application.CreateForm(TFLudo, FLudo);
+  Application.Run;
+end.
Index: UFCommentMat.dfm
===================================================================
--- UFCommentMat.dfm	(révision 0)
+++ UFCommentMat.dfm	(révision 3)
@@ -0,0 +1,84 @@
+object FCommentMat: TFCommentMat
+  Left = 200
+  Top = 200
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Comment'
+  ClientHeight = 144
+  ClientWidth = 468
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object LType: TLabel
+    Left = 24
+    Top = 84
+    Width = 109
+    Height = 13
+    Caption = 'Type of feed ingredient'
+  end
+  object Memo: TMemo
+    Left = 8
+    Top = 8
+    Width = 452
+    Height = 60
+    MaxLength = 255
+    TabOrder = 0
+    WantReturns = False
+  end
+  object BBOk: TBitBtn
+    Left = 296
+    Top = 112
+    Width = 80
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    NumGlyphs = 2
+    TabOrder = 2
+  end
+  object BBCancel: TBitBtn
+    Left = 384
+    Top = 112
+    Width = 80
+    Height = 25
+    Cancel = True
+    Caption = 'Cancel'
+    ModalResult = 2
+    NumGlyphs = 2
+    TabOrder = 3
+  end
+  object CBType: TComboBox
+    Left = 160
+    Top = 80
+    Width = 200
+    Height = 21
+    Style = csDropDownList
+    ItemHeight = 13
+    ItemIndex = 0
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 1
+    Text = '(Not specified)'
+    Items.Strings = (
+      '(Not specified)'
+      'Cereals and cereal by-products'
+      'Protein and oil containing products'
+      'Oilseed meals'
+      'Other plant products'
+      'Animal products'
+      'Fats and oils'
+      'Free amino acids'
+      'Vitamin and mineral products'
+      'Not referenced')
+  end
+end
Index: UFRapportMat.pas
===================================================================
--- UFRapportMat.pas	(révision 0)
+++ UFRapportMat.pas	(révision 3)
@@ -0,0 +1,130 @@
+unit UFRapportMat;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, ExtCtrls, QuickRpt, UVariables, gnugettext;
+
+type
+  TFRapportMat = class(TForm)
+    SBRapMatElem: TSpeedButton;
+    SBRapMatAA: TSpeedButton;
+    SBRapMatAG: TSpeedButton;
+    SBRapMatMin: TSpeedButton;
+    ChkRapMatElem: TCheckBox;
+    ChkRapMatAA: TCheckBox;
+    ChkRapMatAG: TCheckBox;
+    CHKRapMatMin: TCheckBox;
+    BBPrint: TBitBtn;
+    PD: TPrintDialog;
+    BBClose: TBitBtn;
+    procedure SBRapMatElemClick(Sender: TObject);
+    procedure SBRapMatAAClick(Sender: TObject);
+    procedure SBRapMatAGClick(Sender: TObject);
+    procedure SBRapMatMinClick(Sender: TObject);
+    procedure BBPrintClick(Sender: TObject);
+    procedure ChkRapMatClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapportMat: TFRapportMat;
+
+implementation
+
+uses
+  Printers, UUtil, UFRapMatElem, UFRapMatAA, UFRapMatAG, UFRapMatMin;
+
+{$R *.dfm}
+
+{ TFRapportMat }
+
+procedure TFRapportMat.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+end;
+
+procedure TFRapportMat.ChkRapMatClick(Sender: TObject);
+begin
+  BBPrint.Enabled := (IsComplete or IsEducation)
+    and (ChkRapMatElem.Checked or ChkRapMatAA.Checked or ChkRapMatAG.Checked or ChkRapMatMin.Checked);
+end;
+
+procedure TFRapportMat.SBRapMatElemClick(Sender: TObject);
+begin
+  FRapMatElem := TFRapMatElem.Create(Self);
+  FRapMatElem.QRRapport.PreviewModal;
+  FRapMatElem.Release;
+end;
+
+procedure TFRapportMat.SBRapMatAAClick(Sender: TObject);
+begin
+  FRapMatAA := TFRapMatAA.Create(Self);
+  FRapMatAA.QRRapport.PreviewModal;
+  FRapMatAA.Release;
+end;
+
+procedure TFRapportMat.SBRapMatAGClick(Sender: TObject);
+begin
+  FRapMatAG := TFRapMatAG.Create(Self);
+  FRapMatAG.QRRapport.PreviewModal;
+  FRapMatAG.Release;
+end;
+
+procedure TFRapportMat.SBRapMatMinClick(Sender: TObject);
+begin
+  FRapMatMin := TFRapMatMin.Create(Self);
+  FRapMatMin.QRRapport.PreviewModal;
+  FRapMatMin.Release;
+end;
+
+procedure TFRapportMat.BBPrintClick(Sender: TObject);
+begin
+  if PD.Execute
+  then
+  begin
+    if ChkRapMatElem.Checked
+    then
+    begin
+      FRapMatElem := TFRapMatElem.Create(Self);
+      FRapMatElem.QRRapport.PrinterSettings.PrinterIndex := Printer.PrinterIndex;
+      FRapMatElem.QRRapport.Print;
+      FRapMatElem.Release;
+    end ;
+    if ChkRapMatAA.Checked
+    then
+    begin
+      FRapMatAA := TFRapMatAA.Create(Self);
+      FRapMatAA.QRRapport.PrinterSettings.PrinterIndex := Printer.PrinterIndex;
+      FRapMatAA.QRRapport.Print;
+      FRapMatAA.Release;
+    end ;
+    if ChkRapMatAG.Checked
+    then
+    begin
+      FRapMatAG := TFRapMatAG.Create(Self);
+      FRapMatAG.QRRapport.PrinterSettings.PrinterIndex := Printer.PrinterIndex;
+      FRapMatAG.QRRapport.Print;
+      FRapMatAG.Release;
+    end ;
+    if ChkRapMatMin.Checked
+    then
+    begin
+      FRapMatMin := TFRapMatMin.Create(Self);
+      FRapMatMin.QRRapport.PrinterSettings.PrinterIndex := Printer.PrinterIndex;
+      FRapMatMin.QRRapport.Print;
+      FRapMatMin.Release;
+    end ;
+    Close;
+  end;
+end;
+
+end.
Index: md5.pas
===================================================================
--- md5.pas	(révision 0)
+++ md5.pas	(révision 3)
@@ -0,0 +1,394 @@
+// tabs = 2
+// -----------------------------------------------------------------------------------------------
+//
+//                                 MD5 Message-Digest for Delphi 4
+//
+//                                 Delphi 4 Unit implementing the
+//                      RSA Data Security, Inc. MD5 Message-Digest Algorithm
+//
+//                          Implementation of Ronald L. Rivest's RFC 1321
+//
+//                      Copyright � 1997-1999 Medienagentur Fichtner & Meyer
+//                                  Written by Matthias Fichtner
+//
+// -----------------------------------------------------------------------------------------------
+//               See RFC 1321 for RSA Data Security's copyright and license notice!
+// -----------------------------------------------------------------------------------------------
+//
+//     14-Jun-97  mf  Implemented MD5 according to RFC 1321                           RFC 1321
+//     16-Jun-97  mf  Initial release of the compiled unit (no source code)           RFC 1321
+//     28-Feb-99  mf  Added MD5Match function for comparing two digests               RFC 1321
+//     13-Sep-99  mf  Reworked the entire unit                                        RFC 1321
+//     17-Sep-99  mf  Reworked the "Test Driver" project                              RFC 1321
+//     19-Sep-99  mf  Release of sources for MD5 unit and "Test Driver" project       RFC 1321
+//
+// -----------------------------------------------------------------------------------------------
+//                   The latest release of md5.pas will always be available from
+//                  the distribution site at: http://www.fichtner.net/delphi/md5/
+// -----------------------------------------------------------------------------------------------
+//                       Please send questions, bug reports and suggestions
+//                      regarding this code to: mfichtner@fichtner-meyer.com
+// -----------------------------------------------------------------------------------------------
+//                        This code is provided "as is" without express or
+//                     implied warranty of any kind. Use it at your own risk.
+// -----------------------------------------------------------------------------------------------
+
+unit md5;
+
+// -----------------------------------------------------------------------------------------------
+INTERFACE
+// -----------------------------------------------------------------------------------------------
+
+uses
+	Windows;
+
+type
+	MD5Count = array[0..1] of DWORD;
+	MD5State = array[0..3] of DWORD;
+	MD5Block = array[0..15] of DWORD;
+	MD5CBits = array[0..7] of byte;
+	MD5Digest = array[0..15] of byte;
+	MD5Buffer = array[0..63] of byte;
+	MD5Context = record
+		State: MD5State;
+		Count: MD5Count;
+		Buffer: MD5Buffer;
+	end;
+
+procedure MD5Init(var Context: MD5Context);
+procedure MD5Update(var Context: MD5Context; Input: pChar; Length: longword);
+procedure MD5Final(var Context: MD5Context; var Digest: MD5Digest);
+
+function MD5String(M: string): MD5Digest;
+function MD5File(N: string): MD5Digest;
+function MD5Print(D: MD5Digest): string;
+
+function MD5Match(D1, D2: MD5Digest): boolean;
+
+// -----------------------------------------------------------------------------------------------
+IMPLEMENTATION
+// -----------------------------------------------------------------------------------------------
+
+var
+	PADDING: MD5Buffer = (
+		$80, $00, $00, $00, $00, $00, $00, $00,
+		$00, $00, $00, $00, $00, $00, $00, $00,
+		$00, $00, $00, $00, $00, $00, $00, $00,
+		$00, $00, $00, $00, $00, $00, $00, $00,
+		$00, $00, $00, $00, $00, $00, $00, $00,
+		$00, $00, $00, $00, $00, $00, $00, $00,
+		$00, $00, $00, $00, $00, $00, $00, $00,
+		$00, $00, $00, $00, $00, $00, $00, $00
+	);
+
+function F(x, y, z: DWORD): DWORD;
+begin
+	Result := (x and y) or ((not x) and z);
+end;
+
+function G(x, y, z: DWORD): DWORD;
+begin
+	Result := (x and z) or (y and (not z));
+end;
+
+function H(x, y, z: DWORD): DWORD;
+begin
+	Result := x xor y xor z;
+end;
+
+function I(x, y, z: DWORD): DWORD;
+begin
+	Result := y xor (x or (not z));
+end;
+
+procedure rot(var x: DWORD; n: BYTE);
+begin
+	x := (x shl n) or (x shr (32 - n));
+end;
+
+procedure FF(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
+begin
+	inc(a, F(b, c, d) + x + ac);
+	rot(a, s);
+	inc(a, b);
+end;
+
+procedure GG(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
+begin
+	inc(a, G(b, c, d) + x + ac);
+	rot(a, s);
+	inc(a, b);
+end;
+
+procedure HH(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
+begin
+	inc(a, H(b, c, d) + x + ac);
+	rot(a, s);
+	inc(a, b);
+end;
+
+procedure II(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
+begin
+	inc(a, I(b, c, d) + x + ac);
+	rot(a, s);
+	inc(a, b);
+end;
+
+// -----------------------------------------------------------------------------------------------
+
+// Encode Count bytes at Source into (Count / 4) DWORDs at Target
+procedure Encode(Source, Target: pointer; Count: longword);
+var
+	S: PByte;
+	T: PDWORD;
+	I: longword;
+begin
+	S := Source;
+	T := Target;
+	for I := 1 to Count div 4 do begin
+		T^ := S^;
+		inc(S);
+		T^ := T^ or (S^ shl 8);
+		inc(S);
+		T^ := T^ or (S^ shl 16);
+		inc(S);
+		T^ := T^ or (S^ shl 24);
+		inc(S);
+		inc(T);
+	end;
+end;
+
+// Decode Count DWORDs at Source into (Count * 4) Bytes at Target
+procedure Decode(Source, Target: pointer; Count: longword);
+var
+	S: PDWORD;
+	T: PByte;
+	I: longword;
+begin
+	S := Source;
+	T := Target;
+	for I := 1 to Count do begin
+		T^ := S^ and $ff;
+		inc(T);
+		T^ := (S^ shr 8) and $ff;
+		inc(T);
+		T^ := (S^ shr 16) and $ff;
+		inc(T);
+		T^ := (S^ shr 24) and $ff;
+		inc(T);
+		inc(S);
+	end;
+end;
+
+// Transform State according to first 64 bytes at Buffer
+procedure Transform(Buffer: pointer; var State: MD5State);
+var
+	a, b, c, d: DWORD;
+	Block: MD5Block;
+begin
+	Encode(Buffer, @Block, 64);
+	a := State[0];
+	b := State[1];
+	c := State[2];
+	d := State[3];
+	FF (a, b, c, d, Block[ 0],  7, $d76aa478);
+	FF (d, a, b, c, Block[ 1], 12, $e8c7b756);
+	FF (c, d, a, b, Block[ 2], 17, $242070db);
+	FF (b, c, d, a, Block[ 3], 22, $c1bdceee);
+	FF (a, b, c, d, Block[ 4],  7, $f57c0faf);
+	FF (d, a, b, c, Block[ 5], 12, $4787c62a);
+	FF (c, d, a, b, Block[ 6], 17, $a8304613);
+	FF (b, c, d, a, Block[ 7], 22, $fd469501);
+	FF (a, b, c, d, Block[ 8],  7, $698098d8);
+	FF (d, a, b, c, Block[ 9], 12, $8b44f7af);
+	FF (c, d, a, b, Block[10], 17, $ffff5bb1);
+	FF (b, c, d, a, Block[11], 22, $895cd7be);
+	FF (a, b, c, d, Block[12],  7, $6b901122);
+	FF (d, a, b, c, Block[13], 12, $fd987193);
+	FF (c, d, a, b, Block[14], 17, $a679438e);
+	FF (b, c, d, a, Block[15], 22, $49b40821);
+	GG (a, b, c, d, Block[ 1],  5, $f61e2562);
+	GG (d, a, b, c, Block[ 6],  9, $c040b340);
+	GG (c, d, a, b, Block[11], 14, $265e5a51);
+	GG (b, c, d, a, Block[ 0], 20, $e9b6c7aa);
+	GG (a, b, c, d, Block[ 5],  5, $d62f105d);
+	GG (d, a, b, c, Block[10],  9,  $2441453);
+	GG (c, d, a, b, Block[15], 14, $d8a1e681);
+	GG (b, c, d, a, Block[ 4], 20, $e7d3fbc8);
+	GG (a, b, c, d, Block[ 9],  5, $21e1cde6);
+	GG (d, a, b, c, Block[14],  9, $c33707d6);
+	GG (c, d, a, b, Block[ 3], 14, $f4d50d87);
+	GG (b, c, d, a, Block[ 8], 20, $455a14ed);
+	GG (a, b, c, d, Block[13],  5, $a9e3e905);
+	GG (d, a, b, c, Block[ 2],  9, $fcefa3f8);
+	GG (c, d, a, b, Block[ 7], 14, $676f02d9);
+	GG (b, c, d, a, Block[12], 20, $8d2a4c8a);
+	HH (a, b, c, d, Block[ 5],  4, $fffa3942);
+	HH (d, a, b, c, Block[ 8], 11, $8771f681);
+	HH (c, d, a, b, Block[11], 16, $6d9d6122);
+	HH (b, c, d, a, Block[14], 23, $fde5380c);
+	HH (a, b, c, d, Block[ 1],  4, $a4beea44);
+	HH (d, a, b, c, Block[ 4], 11, $4bdecfa9);
+	HH (c, d, a, b, Block[ 7], 16, $f6bb4b60);
+	HH (b, c, d, a, Block[10], 23, $bebfbc70);
+	HH (a, b, c, d, Block[13],  4, $289b7ec6);
+	HH (d, a, b, c, Block[ 0], 11, $eaa127fa);
+	HH (c, d, a, b, Block[ 3], 16, $d4ef3085);
+	HH (b, c, d, a, Block[ 6], 23,  $4881d05);
+	HH (a, b, c, d, Block[ 9],  4, $d9d4d039);
+	HH (d, a, b, c, Block[12], 11, $e6db99e5);
+	HH (c, d, a, b, Block[15], 16, $1fa27cf8);
+	HH (b, c, d, a, Block[ 2], 23, $c4ac5665);
+	II (a, b, c, d, Block[ 0],  6, $f4292244);
+	II (d, a, b, c, Block[ 7], 10, $432aff97);
+	II (c, d, a, b, Block[14], 15, $ab9423a7);
+	II (b, c, d, a, Block[ 5], 21, $fc93a039);
+	II (a, b, c, d, Block[12],  6, $655b59c3);
+	II (d, a, b, c, Block[ 3], 10, $8f0ccc92);
+	II (c, d, a, b, Block[10], 15, $ffeff47d);
+	II (b, c, d, a, Block[ 1], 21, $85845dd1);
+	II (a, b, c, d, Block[ 8],  6, $6fa87e4f);
+	II (d, a, b, c, Block[15], 10, $fe2ce6e0);
+	II (c, d, a, b, Block[ 6], 15, $a3014314);
+	II (b, c, d, a, Block[13], 21, $4e0811a1);
+	II (a, b, c, d, Block[ 4],  6, $f7537e82);
+	II (d, a, b, c, Block[11], 10, $bd3af235);
+	II (c, d, a, b, Block[ 2], 15, $2ad7d2bb);
+	II (b, c, d, a, Block[ 9], 21, $eb86d391);
+	inc(State[0], a);
+	inc(State[1], b);
+	inc(State[2], c);
+	inc(State[3], d);
+end;
+
+// -----------------------------------------------------------------------------------------------
+
+// Initialize given Context
+procedure MD5Init(var Context: MD5Context);
+begin
+	with Context do begin
+		State[0] := $67452301;
+		State[1] := $efcdab89;
+		State[2] := $98badcfe;
+		State[3] := $10325476;
+		Count[0] := 0;
+		Count[1] := 0;
+		ZeroMemory(@Buffer, SizeOf(MD5Buffer));
+	end;
+end;
+
+// Update given Context to include Length bytes of Input
+procedure MD5Update(var Context: MD5Context; Input: pChar; Length: longword);
+var
+	Index: longword;
+	PartLen: longword;
+	I: longword;
+begin
+	with Context do begin
+		Index := (Count[0] shr 3) and $3f;
+		inc(Count[0], Length shl 3);
+		if Count[0] < (Length shl 3) then inc(Count[1]);
+		inc(Count[1], Length shr 29);
+	end;
+	PartLen := 64 - Index;
+	if Length >= PartLen then begin
+		CopyMemory(@Context.Buffer[Index], Input, PartLen);
+		Transform(@Context.Buffer, Context.State);
+		I := PartLen;
+		while I + 63 < Length do begin
+			Transform(@Input[I], Context.State);
+			inc(I, 64);
+		end;
+		Index := 0;
+	end else I := 0;
+	CopyMemory(@Context.Buffer[Index], @Input[I], Length - I);
+end;
+
+// Finalize given Context, create Digest and zeroize Context
+procedure MD5Final(var Context: MD5Context; var Digest: MD5Digest);
+var
+	Bits: MD5CBits;
+	Index: longword;
+	PadLen: longword;
+begin
+	Decode(@Context.Count, @Bits, 2);
+	Index := (Context.Count[0] shr 3) and $3f;
+	if Index < 56 then PadLen := 56 - Index else PadLen := 120 - Index;
+	MD5Update(Context, @PADDING, PadLen);
+	MD5Update(Context, @Bits, 8);
+	Decode(@Context.State, @Digest, 4);
+	ZeroMemory(@Context, SizeOf(MD5Context));
+end;
+
+// -----------------------------------------------------------------------------------------------
+
+// Create digest of given Message
+function MD5String(M: string): MD5Digest;
+var
+	Context: MD5Context;
+begin
+	MD5Init(Context);
+	MD5Update(Context, pChar(M), length(M));
+	MD5Final(Context, Result);
+end;
+
+// Create digest of file with given Name
+function MD5File(N: string): MD5Digest;
+var
+	FileHandle: THandle;
+	MapHandle: THandle;
+	ViewPointer: pointer;
+	Context: MD5Context;
+begin
+	MD5Init(Context);
+	FileHandle := CreateFile(pChar(N), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,
+		nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, 0);
+	if FileHandle <> INVALID_HANDLE_VALUE then try
+		MapHandle := CreateFileMapping(FileHandle, nil, PAGE_READONLY, 0, 0, nil);
+		if MapHandle <> 0 then try
+			ViewPointer := MapViewOfFile(MapHandle, FILE_MAP_READ, 0, 0, 0);
+			if ViewPointer <> nil then try
+				MD5Update(Context, ViewPointer, GetFileSize(FileHandle, nil));
+			finally
+				UnmapViewOfFile(ViewPointer);
+			end;
+		finally
+			CloseHandle(MapHandle);
+		end;
+	finally
+		CloseHandle(FileHandle);
+	end;
+	MD5Final(Context, Result);
+end;
+
+// Create hex representation of given Digest
+function MD5Print(D: MD5Digest): string;
+var
+	I: byte;
+        MD5String: string;
+const
+	Digits: array[0..15] of char =
+		('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
+begin
+	MD5String := '';
+	for I := 0 to 15 do MD5String := MD5String + Digits[(D[I] shr 4) and $0f] + Digits[D[I] and $0f];
+        Result := Copy(MD5String, 1, 8) + '-' + Copy(MD5String, 9, 8) + '-' + Copy(MD5String, 17, 8) + '-' + Copy(MD5String, 25, 8);
+end;
+
+// -----------------------------------------------------------------------------------------------
+
+// Compare two Digests
+function MD5Match(D1, D2: MD5Digest): boolean;
+var
+	I: byte;
+begin
+	I := 0;
+	Result := TRUE;
+	while Result and (I < 16) do begin
+		Result := D1[I] = D2[I];
+		inc(I);
+	end;
+end;
+
+end.
+
Index: UFRapCompSimulP.pas
===================================================================
--- UFRapCompSimulP.pas	(révision 0)
+++ UFRapCompSimulP.pas	(révision 3)
@@ -0,0 +1,398 @@
+unit UFRapCompSimulP ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapCompSimulP = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLCaract: TQRLabel;
+    QRLPerf: TQRLabel;
+    QRLProfil: TQRLabel;
+    QRLSeqAli: TQRLabel;
+    QRLRation: TQRLabel;
+    QRLPoidsDeb: TQRLabel;
+    QRLPoidsFin: TQRLabel;
+    QRDBTProfil: TQRDBText;
+    QRDBTSeqAli: TQRDBText;
+    QRDBTRation: TQRDBText;
+    QRDBTPoidsDeb_1: TQRDBText;
+    QRDBTPoidsFin_1: TQRDBText;
+    QRLAgeDeb: TQRLabel;
+    QRLAgeFin: TQRLabel;
+    QRDBTAgeDeb_1: TQRDBText;
+    QRDBTAgeFin_1: TQRDBText;
+    QRLDuree: TQRLabel;
+    QRLGMQ: TQRLabel;
+    QREDuree_1: TQRExpr;
+    QREGMQ_1: TQRExpr;
+    QRLPD: TQRLabel;
+    QRLLD: TQRLabel;
+    QRLAliTot: TQRLabel;
+    QRLAliMoy: TQRLabel;
+    QRDBTAliTot_1: TQRDBText;
+    QREAliMoy_1: TQRExpr;
+    QREPD_1: TQRExpr;
+    QRELD_1: TQRExpr;
+    QRLWastage: TQRLabel;
+    QREWastage_1: TQRExpr;
+    QRLFeed: TQRLabel;
+    QRLTMP: TQRLabel;
+    QRDBTTMP_1: TQRDBText;
+    QRLP2: TQRLabel;
+    QRDBTP2_1: TQRDBText;
+    CDSRapport: TClientDataSet;
+    IFAgeDeb_1: TIntegerField;
+    IFAgeFin_1: TIntegerField;
+    FFPoidsDeb_1: TFloatField;
+    FFPoidsFin_1: TFloatField;
+    FFpDeb_1: TFloatField;
+    FFlDeb_1: TFloatField;
+    FFConso_1: TFloatField;
+    FFTMP_1: TFloatField;
+    FFP2_1: TFloatField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    QRLRC: TQRLabel;
+    QRDBTRC_1: TQRDBText;
+    FFRC_2: TFloatField;
+    QRSDRapport: TQRSubDetail;
+    CDSSimul: TClientDataSet;
+    SFProfil: TStringField;
+    SFSeqAli: TStringField;
+    SFRation: TStringField;
+    IFAgeDeb_2: TIntegerField;
+    IFAgeFin_2: TIntegerField;
+    FFPoidsDeb_2: TFloatField;
+    FFPoidsFin_2: TFloatField;
+    FFpDeb_2: TFloatField;
+    FFlDeb_2: TFloatField;
+    FFConso_2: TFloatField;
+    FFTMP_2: TFloatField;
+    FFP2_2: TFloatField;
+    IFAgeDeb_3: TIntegerField;
+    IFAgeFin_3: TIntegerField;
+    FFPoidsDeb_3: TFloatField;
+    FFPoidsFin_3: TFloatField;
+    FFpDeb_3: TFloatField;
+    FFlDeb_3: TFloatField;
+    FFConso_3: TFloatField;
+    FFTMP_3: TFloatField;
+    FFP2_3: TFloatField;
+    FFRC_3: TFloatField;
+    IFAgeDeb_4: TIntegerField;
+    IFAgeFin_4: TIntegerField;
+    FFPoidsDeb_4: TFloatField;
+    FFPoidsFin_4: TFloatField;
+    FFpDeb_4: TFloatField;
+    FFlDeb_4: TFloatField;
+    FFConso_4: TFloatField;
+    FFTMP_4: TFloatField;
+    FFP2_4: TFloatField;
+    FFRC_4: TFloatField;
+    IFAgeDeb_5: TIntegerField;
+    IFAgeFin_5: TIntegerField;
+    FFPoidsDeb_5: TFloatField;
+    FFPoidsFin_5: TFloatField;
+    FFpDeb_5: TFloatField;
+    FFlDeb_5: TFloatField;
+    FFConso_5: TFloatField;
+    FFTMP_5: TFloatField;
+    FFP2_5: TFloatField;
+    FFRC_5: TFloatField;
+    FFRC_1: TFloatField;
+    QREWastage_2: TQRExpr;
+    QRELD_2: TQRExpr;
+    QREPD_2: TQRExpr;
+    QREAliMoy_2: TQRExpr;
+    QREGMQ_2: TQRExpr;
+    QREDuree_2: TQRExpr;
+    QRDBTPoidsDeb_2: TQRDBText;
+    QRDBTPoidsFin_2: TQRDBText;
+    QRDBTAgeDeb_2: TQRDBText;
+    QRDBTAgeFin_2: TQRDBText;
+    QRDBTAliTot_2: TQRDBText;
+    QRDBTTMP_2: TQRDBText;
+    QRDBTP2_2: TQRDBText;
+    QRDBTRC_2: TQRDBText;
+    QREWastage_3: TQRExpr;
+    QRELD_3: TQRExpr;
+    QREPD_3: TQRExpr;
+    QREAliMoy_3: TQRExpr;
+    QREGMQ_3: TQRExpr;
+    QREDuree_3: TQRExpr;
+    QRDBTPoidsDeb_3: TQRDBText;
+    QRDBTPoidsFin_3: TQRDBText;
+    QRDBTAgeDeb_3: TQRDBText;
+    QRDBTAgeFin_3: TQRDBText;
+    QRDBTAliTot_3: TQRDBText;
+    QRDBTTMP_3: TQRDBText;
+    QRDBTP2_3: TQRDBText;
+    QRDBTRC_3: TQRDBText;
+    QREWastage_4: TQRExpr;
+    QRELD_4: TQRExpr;
+    QREPD_4: TQRExpr;
+    QREAliMoy_4: TQRExpr;
+    QREGMQ_4: TQRExpr;
+    QREDuree_4: TQRExpr;
+    QRDBTPoidsDeb_4: TQRDBText;
+    QRDBTPoidsFin_4: TQRDBText;
+    QRDBTAgeDeb_4: TQRDBText;
+    QRDBTAgeFin_4: TQRDBText;
+    QRDBTAliTot_4: TQRDBText;
+    QRDBTTMP_4: TQRDBText;
+    QRDBTP2_4: TQRDBText;
+    QRDBTRC_4: TQRDBText;
+    QREWastage_5: TQRExpr;
+    QRELD_5: TQRExpr;
+    QREPD_5: TQRExpr;
+    QREAliMoy_5: TQRExpr;
+    QREGMQ_5: TQRExpr;
+    QREDuree_5: TQRExpr;
+    QRDBTPoidsDeb_5: TQRDBText;
+    QRDBTPoidsFin_5: TQRDBText;
+    QRDBTAgeDeb_5: TQRDBText;
+    QRDBTAgeFin_5: TQRDBText;
+    QRDBTAliTot_5: TQRDBText;
+    QRDBTTMP_5: TQRDBText;
+    QRDBTP2_5: TQRDBText;
+    QRDBTRC_5: TQRDBText;
+    SFSimul: TStringField;
+    QRDBTSimul: TQRDBText;
+    QRLSimulNo: TQRLabel;
+    QRLNo1: TQRLabel;
+    QRLabel1: TQRLabel;
+    QRLabel2: TQRLabel;
+    QRLabel3: TQRLabel;
+    QRLabel4: TQRLabel;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    FFpFin_1: TFloatField;
+    FFlFin_1: TFloatField;
+    FFpFin_2: TFloatField;
+    FFlFin_2: TFloatField;
+    FFpFin_3: TFloatField;
+    FFlFin_3: TFloatField;
+    FFpFin_4: TFloatField;
+    FFlFin_4: TFloatField;
+    FFpFin_5: TFloatField;
+    FFlFin_5: TFloatField;
+    FFIngere_1: TFloatField;
+    FFIngere_2: TFloatField;
+    FFIngere_3: TFloatField;
+    FFIngere_4: TFloatField;
+    FFIngere_5: TFloatField;
+    QREFeed_5: TQRExpr;
+    QREFeed_4: TQRExpr;
+    QREFeed_3: TQRExpr;
+    QREFeed_2: TQRExpr;
+    QREFeed_1: TQRExpr;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapCompSimulP: TFRapCompSimulP;
+
+implementation
+
+uses
+  UStrings, UFindRec, UCalcul, UUtil, UFSimulP, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapSimulP }
+
+procedure TFRapCompSimulP.FormCreate(Sender: TObject);
+var
+  i, k, t : integer ;
+  c : double ;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSSimul do
+  begin
+    CreateDataSet;
+    for k := 1 to 5 do
+      if TabSimulP[k].Ok
+      then
+      begin
+        Append;
+        FieldValues['_Simul_'] := Format (StrSimulNo, [k]) ;
+        PSimulP := ListSimulP[FindIdxSimulP (FindNomSimulP (TabSimulP[k].Simul))] ;
+        if TabSimulP[k].Profil = -1
+        then // Profil de la simulation
+          FieldValues['_Profil_'] := FindNomProfilP (PSimulP.Profil)
+        else
+          FieldValues['_Profil_'] := FindNomProfilP (TabSimulP[k].Profil) ;
+        if TabSimulP[k].SeqAli = -1
+        then // S�quence alimentaire de la simulation
+          FieldValues['_SeqAli_'] := FindNomSeqAliP (PSimulP.SeqAli)
+        else
+          FieldValues['_SeqAli_'] := FindNomSeqAliP (TabSimulP[k].SeqAli) ;
+        if TabSimulP[k].Ration = -1
+        then // plan de rationnement de la simulation
+          FieldValues['_Ration_'] := FindNomRationP (PSimulP.Ration)
+        else
+          FieldValues['_Ration_'] := FindNomRationP (TabSimulP[k].Ration) ;
+        Post;
+      end ;
+  end ;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    for k := 1 to 5 do
+      if TabSimulP[k].Ok
+      then
+      begin
+        if TabSimulP[k].Profil = -1
+        then // Profil de la simulation
+          PProfilP := ListProfilP[FindIdxProfilP (FindNomProfilP (PSimulP.Profil))]
+        else
+          PProfilP := ListProfilP[FindIdxProfilP (FindNomProfilP (TabSimulP[k].Profil))] ;
+        t := TabSimulP[k].Result.NbJSim;
+        FieldValues[Format('_AgeDeb_%d_', [k])] := TabSimulP[k].Result.TabResult[1, 1];
+        FieldValues[Format('_AgeFin_%d_', [k])] := TabSimulP[k].Result.TabResult[1, t] + 1;
+        FieldValues[Format('_PoidsDeb_%d_', [k])] := TabSimulP[k].Result.TabResult[2, 1];
+        FieldValues[Format('_PoidsFin_%d_', [k])] := TabSimulP[k].Result.TabResult[2, t] + TabSimulP[k].Result.TabResult[84, t];
+        FieldValues[Format('_pDeb_%d_', [k])] := TabSimulP[k].Result.TabResult[49, 1];
+        FieldValues[Format('_pFin_%d_', [k])] := TabSimulP[k].Result.TabResult[49, t] + TabSimulP[k].Result.TabResult[79, t] / 1000;
+        FieldValues[Format('_lDeb_%d_', [k])] := TabSimulP[k].Result.TabResult[50, 1];
+        FieldValues[Format('_lFin_%d_', [k])] := TabSimulP[k].Result.TabResult[50, t] + TabSimulP[k].Result.TabResult[80, t] / 1000;
+        c := 0;
+        for i := 1 to t do
+          c := c + TabSimulP[k].Result.TabResult[113, i];
+        FieldValues[Format('_Conso_%d_', [k])] := c;
+        c := 0;
+        for i := 1 to t do
+          c := c + TabSimulP[k].Result.TabResult[11, i];
+        FieldValues[Format('_Ingere_%d_', [k])] := c;
+        if FatInfo = 0
+        then // P2
+          FieldValues[Format('_P2_%d_', [k])] := CalcP2(FieldValues[Format('_lFin_%d_', [k])])
+        else // User defined
+          FieldValues[Format('_P2_%d_', [k])] := CalcUserFat(CalcPVV(FieldValues[Format('_PoidsFin_%d_', [k])]), FieldValues[Format('_pFin_%d_', [k])], FieldValues[Format('_lFin_%d_', [k])]);
+        if LeanInfo = 0
+        then // TMP
+          FieldValues[Format('_TMP_%d_', [k])] := CalcTMP(CalcPVV(FieldValues[Format('_PoidsFin_%d_', [k])]), FieldValues[Format('_pFin_%d_', [k])], FieldValues[Format('_lFin_%d_', [k])])
+        else // User defined
+          FieldValues[Format('_TMP_%d_', [k])] := CalcUserLean(CalcPVV(FieldValues[Format('_PoidsFin_%d_', [k])]), FieldValues[Format('_pFin_%d_', [k])], FieldValues[Format('_lFin_%d_', [k])]);
+        FieldValues[Format('_RC_%d_', [k])] := CalcRC(FieldValues[Format('_PoidsFin_%d_', [k])], CalcRCStd(PProfilP.PVFin, PProfilP.Carcasse), FieldValues[Format('_PoidsFin_%d_', [k])]) * 100;
+      end
+      else
+      begin
+        FieldValues[Format('_AgeDeb_%d_', [k])] := 0;
+        FieldValues[Format('_AgeFin_%d_', [k])] := 0;
+        FieldValues[Format('_PoidsDeb_%d_', [k])] := 0;
+        FieldValues[Format('_PoidsFin_%d_', [k])] := 0;
+        FieldValues[Format('_pDeb_%d_', [k])] := 0;
+        FieldValues[Format('_pFin_%d_', [k])] := 0;
+        FieldValues[Format('_lDeb_%d_', [k])] := 0;
+        FieldValues[Format('_lFin_%d_', [k])] := 0;
+        FieldValues[Format('_Conso_%d_', [k])] := 0;
+        FieldValues[Format('_Ingere_%d_', [k])] := 0;
+        FieldValues[Format('_P2_%d_', [k])] := 0;
+        FieldValues[Format('_TMP_%d_', [k])] := 0;
+        FieldValues[Format('_RC_%d_', [k])] := 0;
+      end ;
+    Post;
+  end ;
+  if FeedInfo = 0
+  then // Indice de consommation
+    QREFeed_1.Expression := 'IF(CDSRapport._PoidsDeb_1_ = CDSRapport._PoidsFin_1_, 0, CDSRapport._Conso_1_ / (CDSRapport._PoidsFin_1_ - CDSRapport._PoidsDeb_1_))'
+  else // Efficacit� alimentaire
+    QREFeed_1.Expression := 'IF(CDSRapport._Conso_1_ = 0, 0, (CDSRapport._PoidsFin_1_ - CDSRapport._PoidsDeb_1_) / CDSRapport._Conso_1_)';
+  if FeedInfo = 0
+  then // Indice de consommation
+    QREFeed_2.Expression := 'IF(CDSRapport._PoidsDeb_2_ = CDSRapport._PoidsFin_2_, 0, CDSRapport._Conso_2_ / (CDSRapport._PoidsFin_2_ - CDSRapport._PoidsDeb_2_))'
+  else // Efficacit� alimentaire
+    QREFeed_2.Expression := 'IF(CDSRapport._Conso_2_ = 0, 0, (CDSRapport._PoidsFin_2_ - CDSRapport._PoidsDeb_2_) / CDSRapport._Conso_2_)';
+  if FeedInfo = 0
+  then // Indice de consommation
+    QREFeed_3.Expression := 'IF(CDSRapport._PoidsDeb_3_ = CDSRapport._PoidsFin_3_, 0, CDSRapport._Conso_3_ / (CDSRapport._PoidsFin_3_ - CDSRapport._PoidsDeb_3_))'
+  else // Efficacit� alimentaire
+    QREFeed_3.Expression := 'IF(CDSRapport._Conso_3_ = 0, 0, (CDSRapport._PoidsFin_3_ - CDSRapport._PoidsDeb_3_) / CDSRapport._Conso_3_)';
+  if FeedInfo = 0
+  then // Indice de consommation
+    QREFeed_4.Expression := 'IF(CDSRapport._PoidsDeb_4_ = CDSRapport._PoidsFin_4_, 0, CDSRapport._Conso_4_ / (CDSRapport._PoidsFin_4_ - CDSRapport._PoidsDeb_4_))'
+  else // Efficacit� alimentaire
+    QREFeed_4.Expression := 'IF(CDSRapport._Conso_4_ = 0, 0, (CDSRapport._PoidsFin_4_ - CDSRapport._PoidsDeb_4_) / CDSRapport._Conso_4_)';
+  if FeedInfo = 0
+  then // Indice de consommation
+    QREFeed_5.Expression := 'IF(CDSRapport._PoidsDeb_5_ = CDSRapport._PoidsFin_5_, 0, CDSRapport._Conso_5_ / (CDSRapport._PoidsFin_5_ - CDSRapport._PoidsDeb_5_))'
+  else // Efficacit� alimentaire
+    QREFeed_5.Expression := 'IF(CDSRapport._Conso_5_ = 0, 0, (CDSRapport._PoidsFin_5_ - CDSRapport._PoidsDeb_5_) / CDSRapport._Conso_5_)';
+  QRLAgeDeb.Caption := Format('%s (%s)', [QRLAgeDeb.Caption, _('d')]);
+  QRLAgeFin.Caption := Format('%s (%s)', [QRLAgeFin.Caption, _('d')]);
+  QRLDuree.Caption := Format('%s (%s)', [QRLDuree.Caption, _('d')]);
+  QRLPoidsDeb.Caption := Format('%s (%s)', [QRLPoidsDeb.Caption, _('kg')]);
+  QRLPoidsFin.Caption := Format('%s (%s)', [QRLPoidsFin.Caption, _('kg')]);
+  QRLGMQ.Caption := Format('%s (%s/%s)', [QRLGMQ.Caption, _('g'), _('d')]);
+  QRLPD.Caption := Format('%s (%s/%s)', [QRLPD.Caption, _('g'), _('d')]);
+  QRLLD.Caption := Format('%s (%s/%s)', [QRLLD.Caption, _('g'), _('d')]);
+  QRLAliTot.Caption := Format('%s (%s)', [QRLAliTot.Caption, _('kg')]);
+  QRLAliMoy.Caption := Format('%s (%s/%s)', [QRLAliMoy.Caption, _('g'), _('d')]);
+  QRLWastage.Caption := Format('%s (%%)', [QRLWastage.Caption]);
+  if FeedInfo = 0
+  then // Indice de consommation
+    QRLFeed.Caption := Format('%s (%s/%s)', [_('Average feed-to-gain ratio'), _('kg feed'), _('kg gain')])
+  else // Efficacit� alimentaire
+    QRLFeed.Caption := Format('%s (%s/%s)', [_('Average gain-to-feed ratio'), _('kg gain'), _('kg feed')]);
+  if FatInfo = 0
+  then // P2
+    QRLP2.Caption := Format('%s (%s)', [_('Backfat thickness at slaughter'), _('mm')])
+  else // User defined
+    if Length(UserFatLongName) = 0
+    then
+      QRLP2.Caption := Format('%s (%s)', [_('User-defined backfat thickness'), _('mm')])
+    else
+      QRLP2.Caption := Format('%s (%s)', [UserFatLongName, _('mm')]);
+  if LeanInfo = 0
+  then // TMP
+    QRLTMP.Caption := Format('%s (%%)', [_('Lean meat at slaughter')])
+  else // User defined
+    if Length(UserLeanLongName) = 0
+    then
+      QRLTMP.Caption := Format('%s (%%)', [_('User-defined lean meat')])
+    else
+      QRLTMP.Caption := Format('%s (%%)', [UserLeanLongName]);
+  QRLRC.Caption := Format('%s (%%)', [QRLRC.Caption]);
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFRapMatAG.pas
===================================================================
--- UFRapMatAG.pas	(révision 0)
+++ UFRapMatAG.pas	(révision 3)
@@ -0,0 +1,218 @@
+unit UFRapMatAG;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapMatAG = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLMatiere: TQRLabel;
+    CDSRapport: TClientDataSet;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    SFMatiere: TStringField;
+    QRDBMatiere: TQRDBText;
+    QRLTAG: TQRLabel;
+    QRLC6C8C10: TQRLabel;
+    QRDBTTC6C8C10_Tot: TQRDBText;
+    QRLCompo: TQRLabel;
+    QRLTot: TQRLabel;
+    QRDBTTC6C8C10_0: TQRDBText;
+    QRL0: TQRLabel;
+    QRL1: TQRLabel;
+    QRL2: TQRLabel;
+    QRL3: TQRLabel;
+    QRL4: TQRLabel;
+    QRL5: TQRLabel;
+    QRL6: TQRLabel;
+    QRLC14: TQRLabel;
+    QRDBTTC14_Tot: TQRDBText;
+    QRDBTTC14_0: TQRDBText;
+    QRLC18: TQRLabel;
+    QRDBTTC18_Tot: TQRDBText;
+    QRDBTTC18_0: TQRDBText;
+    QRDBTTC18_1: TQRDBText;
+    QRDBTTC18_2: TQRDBText;
+    QRDBTTC18_3: TQRDBText;
+    QRDBTTC18_4: TQRDBText;
+    QRLC22: TQRLabel;
+    QRDBTTC22_Tot: TQRDBText;
+    QRDBTTC22_0: TQRDBText;
+    QRDBTTC22_1: TQRDBText;
+    QRDBTTC22_5: TQRDBText;
+    QRDBTTC22_6: TQRDBText;
+    QRLCTot: TQRLabel;
+    QRDBTTCTot_Tot: TQRDBText;
+    QRDBTTCTot_0: TQRDBText;
+    QRDBTTCTot_1: TQRDBText;
+    QRDBTTCTot_2: TQRDBText;
+    QRDBTTCTot_3: TQRDBText;
+    QRDBTTCTot_4: TQRDBText;
+    QRDBTTCTot_5: TQRDBText;
+    QRDBTTCTot_6: TQRDBText;
+    QRLC12: TQRLabel;
+    QRDBTTC12_Tot: TQRDBText;
+    QRDBTTC12_0: TQRDBText;
+    QRLC16: TQRLabel;
+    QRDBTTC16_Tot: TQRDBText;
+    QRDBTTC16_0: TQRDBText;
+    QRDBTTC16_1: TQRDBText;
+    QRLC20: TQRLabel;
+    QRDBTTC20_Tot: TQRDBText;
+    QRDBTTC20_0: TQRDBText;
+    QRDBTTC20_1: TQRDBText;
+    QRDBTTC20_4: TQRDBText;
+    QRDBTTC20_5: TQRDBText;
+    QRLC24: TQRLabel;
+    QRDBTTC24_Tot: TQRDBText;
+    QRDBTTC24_0: TQRDBText;
+    QRLLip: TQRLabel;
+    QRDBTLip: TQRDBText;
+    QRLAGsLip: TQRLabel;
+    QRDBTAGsLip: TQRDBText;
+    SFAGsLip: TStringField;
+    SFC6C8C10_0: TStringField;
+    SFLip: TStringField;
+    SFC14_0: TStringField;
+    SFC6C8C10_Tot: TStringField;
+    SFC16_0: TStringField;
+    SFC18_0: TStringField;
+    SFC20_5: TStringField;
+    SFC22_6: TStringField;
+    SFC24_0: TStringField;
+    SFC12_0: TStringField;
+    SFC12_Tot: TStringField;
+    SFC14_Tot: TStringField;
+    SFC16_1: TStringField;
+    SFC16_Tot: TStringField;
+    SFC18_1: TStringField;
+    SFC18_2: TStringField;
+    SFC18_3: TStringField;
+    SFC18_4: TStringField;
+    SFC18_Tot: TStringField;
+    SFCTot_1: TStringField;
+    SFC20_Tot: TStringField;
+    SFC22_Tot: TStringField;
+    SFC20_0: TStringField;
+    SFC22_0: TStringField;
+    SFC20_1: TStringField;
+    SFC20_4: TStringField;
+    SFC22_1: TStringField;
+    SFC22_5: TStringField;
+    SFC24_Tot: TStringField;
+    SFCTot_Tot: TStringField;
+    SFCTot_2: TStringField;
+    SFCTot_3: TStringField;
+    SFCTot_4: TStringField;
+    SFCTot_5_: TStringField;
+    SFCTot_6: TStringField;
+    SFCTot_0: TStringField;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapMatAG: TFRapMatAG;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFMatiere, UFPrevRap;
+
+{$R *.dfm}
+
+{ TFRapMatAG }
+
+procedure TFRapMatAG.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Matiere_']:= FMatiere.CBMatiere.Text;
+    FieldValues['_C6C8C10_0_']:= FMatiere.PBC6C8C10_0.Text;
+    FieldValues['_C6C8C10_Tot_']:= FMatiere.PBC6C8C10_tot.Text;
+    FieldValues['_C12_0_']:= FMatiere.PBC12_0.Text;
+    FieldValues['_C12_Tot_']:= FMatiere.PBC12_tot.Text;
+    FieldValues['_C14_0_']:= FMatiere.PBC14_0.Text;
+    FieldValues['_C14_Tot_']:= FMatiere.PBC14_tot.Text;
+    FieldValues['_C16_0_']:= FMatiere.PBC16_0.Text;
+    FieldValues['_C16_1_']:= FMatiere.PBC16_1.Text;
+    FieldValues['_C16_Tot_']:= FMatiere.PBC16_tot.Text;
+    FieldValues['_C18_0_']:= FMatiere.PBC18_0.Text;
+    FieldValues['_C18_1_']:= FMatiere.PBC18_1.Text;
+    FieldValues['_C18_2_']:= FMatiere.PBC18_2.Text;
+    FieldValues['_C18_3_']:= FMatiere.PBC18_3.Text;
+    FieldValues['_C18_4_']:= FMatiere.PBC18_4.Text;
+    FieldValues['_C18_Tot_']:= FMatiere.PBC18_tot.Text;
+    FieldValues['_C20_0_']:= FMatiere.PBC20_0.Text;
+    FieldValues['_C20_1_']:= FMatiere.PBC20_1.Text;
+    FieldValues['_C20_4_']:= FMatiere.PBC20_4.Text;
+    FieldValues['_C20_5_']:= FMatiere.PBC20_5.Text;
+    FieldValues['_C20_Tot_']:= FMatiere.PBC20_tot.Text;
+    FieldValues['_C22_0_']:= FMatiere.PBC22_0.Text;
+    FieldValues['_C22_1_']:= FMatiere.PBC22_1.Text;
+    FieldValues['_C22_5_']:= FMatiere.PBC22_5.Text;
+    FieldValues['_C22_6_']:= FMatiere.PBC22_6.Text;
+    FieldValues['_C22_Tot_']:= FMatiere.PBC22_tot.Text;
+    FieldValues['_C24_0_']:= FMatiere.PBC24_0.Text;
+    FieldValues['_C24_Tot_']:= FMatiere.PBC24_tot.Text;
+    FieldValues['_CTot_0_']:= FMatiere.PBCtot_0.Text;
+    FieldValues['_CTot_1_']:= FMatiere.PBCtot_1.Text;
+    FieldValues['_CTot_2_']:= FMatiere.PBCtot_2.Text;
+    FieldValues['_CTot_3_']:= FMatiere.PBCtot_3.Text;
+    FieldValues['_CTot_4_']:= FMatiere.PBCtot_4.Text;
+    FieldValues['_CTot_5_']:= FMatiere.PBCtot_5.Text;
+    FieldValues['_CTot_6_']:= FMatiere.PBCtot_6.Text;
+    FieldValues['_CTot_Tot_']:= FMatiere.PBCtot_tot.Text;
+    FieldValues['_Lip_']:= FMatiere.PBLip2.Text;
+    FieldValues['_AGsLip_']:= FMatiere.PBAG.Text;
+    Post;
+  end;
+  QRMMemo.Lines.Add(FMatiere.CBMatiere.Hint);
+  QRLCompo.Caption := FMatiere.Hint;
+  QRLTAG.Caption := FMatiere.GBTAG.Caption;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFRapAliMat.dfm
===================================================================
--- UFRapAliMat.dfm	(révision 0)
+++ UFRapAliMat.dfm	(révision 3)
@@ -0,0 +1,1255 @@
+object FRapAliMat: TFRapAliMat
+  Left = 0
+  Top = 80
+  Caption = 'Feed composition report - Feeds ingredients'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed composition: feed ingredients'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 152
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        402.166666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRLAliment: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRDBAliment: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Aliment_'
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMat: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 329
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          254.000000000000000000
+          870.479166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Composition of feed ingredients (g/kg feed)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLTQte: TQRLabel
+        Left = 426
+        Top = 128
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1127.125000000000000000
+          338.666666666666700000
+          142.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Quantity'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMS: TQRLabel
+        Left = 573
+        Top = 128
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1516.062500000000000000
+          338.666666666666700000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Dry matter'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 290
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 27
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          21.166666666666670000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 383
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          63.500000000000000000
+          1013.354166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1711.854166666667000000
+          63.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+    object QRSDRegles: TQRSubDetail
+      Left = 38
+      Top = 270
+      Width = 718
+      Height = 20
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        52.916666666666670000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      Master = QRRapport
+      DataSet = CDSMatieres
+      PrintBefore = False
+      PrintIfEmpty = True
+      object QRDBTMS: TQRDBText
+        Left = 605
+        Top = 0
+        Width = 35
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1600.729166666667000000
+          0.000000000000000000
+          92.604166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSMatieres
+        DataField = '_MS_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMat: TQRDBText
+        Left = 40
+        Top = 0
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          0.000000000000000000
+          153.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSMatieres
+        DataField = '_Matiere_'
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTQte: TQRDBText
+        Left = 444
+        Top = 0
+        Width = 36
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1174.750000000000000000
+          0.000000000000000000
+          95.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSMatieres
+        DataField = '_Qte_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    IndexFieldNames = '_Aliment_'
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFAliment: TStringField
+      DisplayWidth = 35
+      FieldName = '_Aliment_'
+      Size = 35
+    end
+  end
+  object DSRelation: TDataSource
+    DataSet = CDSRapport
+    Left = 40
+    Top = 8
+  end
+  object CDSMatieres: TClientDataSet
+    Aggregates = <>
+    IndexFieldNames = '_Aliment_ ; _No_'
+    MasterFields = '_Aliment_'
+    MasterSource = DSRelation
+    PacketRecords = 0
+    Params = <>
+    Left = 72
+    Top = 8
+    object SFAlimentKey: TStringField
+      DisplayWidth = 35
+      FieldName = '_Aliment_'
+      Size = 35
+    end
+    object IFNo: TIntegerField
+      FieldName = '_No_'
+    end
+    object SFMatiere: TStringField
+      DisplayWidth = 35
+      FieldName = '_Matiere_'
+      Size = 35
+    end
+    object FFQte: TFloatField
+      FieldName = '_Qte_'
+    end
+    object FFMS: TFloatField
+      FieldName = '_MS_'
+    end
+  end
+end
Index: ReInit.pas
===================================================================
--- ReInit.pas	(révision 0)
+++ ReInit.pas	(révision 3)
@@ -0,0 +1,132 @@
+unit reinit;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms;
+
+procedure ReinitializeForms;
+function LoadNewResourceModule(Locale: LCID): Longint;
+
+implementation
+
+type
+  TAsInheritedReader = class(TReader)
+  public
+    procedure ReadPrefix(var Flags: TFilerFlags; var AChildPos: Integer); override;
+  end;
+
+procedure TAsInheritedReader.ReadPrefix(var Flags: TFilerFlags; var AChildPos: Integer);
+begin
+  inherited ReadPrefix(Flags, AChildPos);
+  Include(Flags, ffInherited);
+end;
+
+function SetResourceHInstance(NewInstance: Longint): Longint;
+var
+  CurModule: PLibModule;
+begin
+  CurModule := LibModuleList;
+  Result := 0;
+  while CurModule <> nil do
+  begin
+    if CurModule.Instance = HInstance then
+    begin
+      if CurModule.ResInstance <> CurModule.Instance then
+        FreeLibrary(CurModule.ResInstance);
+      CurModule.ResInstance := NewInstance;
+      Result := NewInstance;
+      Exit;
+    end;
+    CurModule := CurModule.Next;
+  end;
+end;
+
+function LoadNewResourceModule(Locale: LCID): Longint;
+var
+  FileName: array [0..260] of char;
+  P: PChar;
+  LocaleName: array[0..4] of Char;
+  NewInst: Longint;
+begin
+  GetModuleFileName(HInstance, FileName, SizeOf(FileName));
+  GetLocaleInfo(Locale, LOCALE_SABBREVLANGNAME, LocaleName, SizeOf(LocaleName));
+  P := PChar(@FileName) + lstrlen(FileName);
+  while (P^ <> '.') and (P <> @FileName) do Dec(P);
+  NewInst := 0;
+  Result := 0;
+  if P <> @FileName then
+  begin
+    Inc(P);
+    if LocaleName[0] <> #0 then
+    begin
+      // Then look for a potential language/country translation
+      lstrcpy(P, LocaleName);
+      NewInst := LoadLibraryEx(FileName, 0, LOAD_LIBRARY_AS_DATAFILE);
+      if NewInst = 0 then
+      begin
+        // Finally look for a language only translation
+        LocaleName[2] := #0;
+        lstrcpy(P, LocaleName);
+        NewInst := LoadLibraryEx(FileName, 0, LOAD_LIBRARY_AS_DATAFILE);
+      end;
+    end;
+  end;
+  if NewInst <> 0 then
+    Result := SetResourceHInstance(NewInst)
+end;
+
+function InternalReloadComponentRes(const ResName: string; HInst: THandle; var Instance: TComponent): Boolean;
+var
+  HRsrc: THandle;
+  ResStream: TResourceStream;
+  AsInheritedReader: TAsInheritedReader;
+begin                   { avoid possible EResNotFound exception }
+  if HInst = 0 then HInst := HInstance;
+  HRsrc := FindResource(HInst, PChar(ResName), RT_RCDATA);
+  Result := HRsrc <> 0;
+  if not Result then Exit;
+  ResStream := TResourceStream.Create(HInst, ResName, RT_RCDATA);
+  try
+    AsInheritedReader := TAsInheritedReader.Create(ResStream, 4096);
+    try
+      Instance := AsInheritedReader.ReadRootComponent(Instance);
+    finally
+      AsInheritedReader.Free;
+    end;
+  finally
+    ResStream.Free;
+  end;
+  Result := True;
+end;
+
+function ReloadInheritedComponent(Instance: TComponent; RootAncestor: TClass): Boolean;
+
+  function InitComponent(ClassType: TClass): Boolean;
+  begin
+    Result := False;
+    if (ClassType = TComponent) or (ClassType = RootAncestor) then Exit;
+    Result := InitComponent(ClassType.ClassParent);
+    Result := InternalReloadComponentRes(ClassType.ClassName, FindResourceHInstance(
+      FindClassHInstance(ClassType)), Instance) or Result;
+  end;
+
+begin
+  Result := InitComponent(Instance.ClassType);
+end;
+
+procedure ReinitializeForms;
+var
+  Count: Integer;
+  I: Integer;
+  Form: TTntForm;
+begin
+  Count := Screen.FormCount;
+  for I := 0 to Count - 1 do
+  begin
+    Form := Screen.Forms[I];
+    ReloadInheritedComponent(Form, TForm);
+  end;
+end;
+
+end.
Index: UFRapAliMin.dfm
===================================================================
--- UFRapAliMin.dfm	(révision 0)
+++ UFRapAliMin.dfm	(révision 3)
@@ -0,0 +1,2774 @@
+object FRapAliMin: TFRapAliMin
+  Left = 0
+  Top = 80
+  Caption = 'Feed composition report - Minerals'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed composition: minerals'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRLAliment: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRDBAliment: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Aliment_'
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTMacro: TQRLabel
+        Left = 270
+        Top = 168
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          444.500000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCa: TQRLabel
+        Left = 40
+        Top = 192
+        Width = 82
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          508.000000000000000000
+          216.958333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Calcium (Ca)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCa: TQRDBText
+        Left = 289
+        Top = 192
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          508.000000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ca_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMacro: TQRLabel
+        Left = 40
+        Top = 136
+        Width = 122
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          359.833333333333300000
+          322.791666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Macro-elements'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLCompo: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          254.000000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'StrCompo'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsItalic]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNa: TQRLabel
+        Left = 40
+        Top = 232
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          613.833333333333300000
+          209.020833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sodium (Na)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNa: TQRDBText
+        Left = 289
+        Top = 232
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          613.833333333333300000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Na_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMg: TQRLabel
+        Left = 40
+        Top = 272
+        Width = 105
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          719.666666666666700000
+          277.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Magnesium (Mg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMg: TQRDBText
+        Left = 287
+        Top = 272
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          719.666666666666700000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Mg_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLS: TQRLabel
+        Left = 40
+        Top = 312
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          825.500000000000000000
+          158.750000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sulfur (S)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTS: TQRDBText
+        Left = 296
+        Top = 312
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          783.166666666666700000
+          825.500000000000000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_S_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP: TQRLabel
+        Left = 40
+        Top = 212
+        Width = 96
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          560.916666666666700000
+          254.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phosphorus (P)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP: TQRDBText
+        Left = 296
+        Top = 212
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          783.166666666666700000
+          560.916666666666700000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLK: TQRLabel
+        Left = 40
+        Top = 252
+        Width = 87
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          666.750000000000000000
+          230.187500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Potassium (K)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTK: TQRDBText
+        Left = 296
+        Top = 252
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          783.166666666666700000
+          666.750000000000000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_K_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCl: TQRLabel
+        Left = 40
+        Top = 292
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          772.583333333333300000
+          211.666666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Chlorine (Cl)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCl: TQRDBText
+        Left = 293
+        Top = 292
+        Width = 27
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          775.229166666666700000
+          772.583333333333300000
+          71.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Cl_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTOligo: TQRLabel
+        Left = 270
+        Top = 384
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          1016.000000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCu: TQRLabel
+        Left = 40
+        Top = 408
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1079.500000000000000000
+          201.083333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Copper (Cu)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCu: TQRDBText
+        Left = 289
+        Top = 408
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1079.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Cu_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLOligo: TQRLabel
+        Left = 40
+        Top = 352
+        Width = 118
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          931.333333333333300000
+          312.208333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Trace-elements'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLMn: TQRLabel
+        Left = 40
+        Top = 448
+        Width = 105
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1185.333333333333000000
+          277.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Manganese (Mn)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMn: TQRDBText
+        Left = 287
+        Top = 448
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1185.333333333333000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Mn_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSe: TQRLabel
+        Left = 40
+        Top = 488
+        Width = 91
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1291.166666666667000000
+          240.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Selenium (Se)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSe: TQRDBText
+        Left = 289
+        Top = 488
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1291.166666666667000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Se_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMb: TQRLabel
+        Left = 40
+        Top = 528
+        Width = 102
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1397.000000000000000000
+          269.875000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Molybdene (Mo)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMb: TQRDBText
+        Left = 287
+        Top = 528
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1397.000000000000000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Mb_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLZn: TQRLabel
+        Left = 40
+        Top = 428
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1132.416666666667000000
+          142.875000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Zinc (Zn)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTZn: TQRDBText
+        Left = 291
+        Top = 428
+        Width = 29
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          769.937500000000000000
+          1132.416666666667000000
+          76.729166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Zn_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLFe: TQRLabel
+        Left = 40
+        Top = 468
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1238.250000000000000000
+          142.875000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Iron (Fe)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTFe: TQRDBText
+        Left = 290
+        Top = 468
+        Width = 30
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          767.291666666666700000
+          1238.250000000000000000
+          79.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Fe_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCo: TQRLabel
+        Left = 40
+        Top = 508
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1344.083333333333000000
+          187.854166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Cobalt (Co)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCo: TQRDBText
+        Left = 289
+        Top = 508
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1344.083333333333000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Co_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLI: TQRLabel
+        Left = 40
+        Top = 548
+        Width = 57
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1449.916666666667000000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Iodine (I)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTI: TQRDBText
+        Left = 302
+        Top = 548
+        Width = 18
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          799.041666666666700000
+          1449.916666666667000000
+          47.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_I_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPhosphore: TQRLabel
+        Left = 40
+        Top = 588
+        Width = 296
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          1555.750000000000000000
+          783.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phosphorus digestion and metabolism'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLPTot: TQRLabel
+        Left = 40
+        Top = 620
+        Width = 149
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1640.416666666667000000
+          394.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total phosphorus (g/kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPTot: TQRDBText
+        Left = 278
+        Top = 620
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          735.541666666666700000
+          1640.416666666667000000
+          111.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PTot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPDigG: TQRLabel
+        Left = 80
+        Top = 660
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1746.250000000000000000
+          134.937500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '- pellets'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPDigG: TQRDBText
+        Left = 267
+        Top = 660
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          706.437500000000000000
+          1746.250000000000000000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PDigG_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPhytase: TQRLabel
+        Left = 40
+        Top = 700
+        Width = 163
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1852.083333333330000000
+          431.270833333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phytic acid phosphorus (% P)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPhytase: TQRDBText
+        Left = 257
+        Top = 700
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          679.979166666667000000
+          1852.083333333330000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Phytase_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLActPhytE: TQRLabel
+        Left = 80
+        Top = 740
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          211.666666666667000000
+          1957.916666666670000000
+          193.145833333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '- endogenous'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTActPhytE: TQRDBText
+        Left = 249
+        Top = 740
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          658.812500000000000000
+          1957.916666666670000000
+          187.854166666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ActPhytE_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPDig: TQRLabel
+        Left = 40
+        Top = 640
+        Width = 180
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1693.333333333333000000
+          476.250000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible phosphorus (g/kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPDigF: TQRLabel
+        Left = 80
+        Top = 680
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1799.166666666667000000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '- mash'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPDigF: TQRDBText
+        Left = 269
+        Top = 680
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          711.729166666666700000
+          1799.166666666667000000
+          134.937500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PDigF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLActPhyt: TQRLabel
+        Left = 40
+        Top = 720
+        Width = 165
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1905.000000000000000000
+          436.562500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phytase activity (IU/kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLActPhytM: TQRLabel
+        Left = 80
+        Top = 760
+        Width = 89
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          211.666666666667000000
+          2010.833333333330000000
+          235.479166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '- microbial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTActPhytM: TQRDBText
+        Left = 247
+        Top = 760
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          653.520833333333000000
+          2010.833333333330000000
+          193.145833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ActPhytM_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFAliment: TStringField
+      DisplayWidth = 35
+      FieldName = '_Aliment_'
+      Size = 35
+    end
+    object SFCa: TStringField
+      FieldName = '_Ca_'
+      Size = 8
+    end
+    object SFP: TStringField
+      FieldName = '_P_'
+      Size = 8
+    end
+    object SFNa: TStringField
+      FieldName = '_Na_'
+      Size = 8
+    end
+    object SFK: TStringField
+      FieldName = '_K_'
+      Size = 8
+    end
+    object SFMg: TStringField
+      FieldName = '_Mg_'
+      Size = 8
+    end
+    object SFCl: TStringField
+      FieldName = '_Cl_'
+      Size = 8
+    end
+    object SFS: TStringField
+      FieldName = '_S_'
+      Size = 8
+    end
+    object SFCu: TStringField
+      FieldName = '_Cu_'
+      Size = 8
+    end
+    object SFZn: TStringField
+      FieldName = '_Zn_'
+      Size = 8
+    end
+    object SFMn: TStringField
+      FieldName = '_Mn_'
+      Size = 8
+    end
+    object SFFe: TStringField
+      FieldName = '_Fe_'
+      Size = 8
+    end
+    object SFSe: TStringField
+      FieldName = '_Se_'
+      Size = 8
+    end
+    object SFCo: TStringField
+      FieldName = '_Co_'
+      Size = 8
+    end
+    object SFMb: TStringField
+      FieldName = '_Mb_'
+      Size = 8
+    end
+    object SFI: TStringField
+      FieldName = '_I_'
+      Size = 8
+    end
+    object SFPTot: TStringField
+      FieldName = '_PTot_'
+      Size = 8
+    end
+    object SFPDigG: TStringField
+      FieldName = '_PDigG_'
+      Size = 8
+    end
+    object SFPDigF: TStringField
+      FieldName = '_PDigF_'
+      Size = 8
+    end
+    object SFPhytase: TStringField
+      FieldName = '_Phytase_'
+      Size = 8
+    end
+    object SFActPhytE: TStringField
+      FieldName = '_ActPhytE_'
+      Size = 8
+    end
+    object SFActPhytM: TStringField
+      FieldName = '_ActPhytM_'
+      Size = 8
+    end
+  end
+end
Index: UFPrevRap.dfm
===================================================================
--- UFPrevRap.dfm	(révision 0)
+++ UFPrevRap.dfm	(révision 3)
@@ -0,0 +1,145 @@
+object FPrevRap: TFPrevRap
+  Left = 200
+  Top = 200
+  Caption = 'Report preview'
+  ClientHeight = 480
+  ClientWidth = 640
+  Color = clBtnFace
+  Constraints.MinHeight = 360
+  Constraints.MinWidth = 608
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRPRapport: TQRPreview
+    Left = 0
+    Top = 40
+    Width = 640
+    Height = 440
+    HorzScrollBar.Tracking = True
+    VertScrollBar.Tracking = True
+    Align = alClient
+    BevelInner = bvNone
+    BevelOuter = bvNone
+    BorderStyle = bsNone
+    TabOrder = 1
+    OnPageAvailable = QRPRapportPageAvailable
+    PageNumber = 1
+    Zoom = 100
+  end
+  object LBas: TPanel
+    Left = 0
+    Top = 0
+    Width = 640
+    Height = 40
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 0
+    object LPrinter: TLabel
+      Left = 8
+      Top = 12
+      Width = 30
+      Height = 13
+      Caption = 'Printer'
+    end
+    object BBPrint: TBitBtn
+      Left = 320
+      Top = 8
+      Width = 80
+      Height = 24
+      Caption = 'Print'
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        0400000000000001000000000000000000001000000000000000000000000000
+        80000080000000808000800000008000800080800000C0C0C000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDD00000000000DDDDD88888888888DDDD07777777770
+        70DDD8DDDDDDDDD8D8DD000000000000070D8888888888888D8D0777777BBB77
+        000D8DDDDDDDDDDD888D077777788877070D8DDDDDDDDDDD8D8D000000000000
+        07708888888888888DD807777777777070708DDDDDDDDDD8D8D8D00000000007
+        0700D8888888888D8D88DD0FFFFFFFF07070DD8DDDDDDDD8D8D8DDD0F00000F0
+        000DDDD8D88888D8888DDDD0FFFFFFFF0DDDDDD8DDDDDDDD8DDDDDDD0F00000F
+        0DDDDDDD8D88888D8DDDDDDD0FFFFFFFF0DDDDDD8DDDDDDDD8DDDDDDD0000000
+        00DDDDDDD888888888DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+      NumGlyphs = 2
+      TabOrder = 0
+      OnClick = BBPrintClick
+    end
+    object CBPrinter: TComboBox
+      Left = 72
+      Top = 8
+      Width = 240
+      Height = 21
+      Style = csDropDownList
+      ItemHeight = 13
+      TabOrder = 1
+      OnChange = CBPrinterChange
+    end
+    object PPage: TPanel
+      Left = 440
+      Top = 8
+      Width = 160
+      Height = 24
+      BevelOuter = bvNone
+      TabOrder = 2
+      object SBNext: TSpeedButton
+        Left = 128
+        Top = 0
+        Width = 24
+        Height = 24
+        Glyph.Data = {
+          76010000424D7601000000000000760000002800000020000000100000000100
+          0400000000000001000000000000000000001000000000000000000000000000
+          80000080000000808000800000008000800080800000C0C0C000808080000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDD0DDDDDDDDDDDDDDD8DDDDDDDDDDDDDDD00DDD
+          DDDDDDDDDDD88DDDDDDDDDDDDDD0C0DDDDDDDDDDDDD8D8DDDDDDDDD00000CC0D
+          DDDDDDD88888DD8DDDDDDDD0CCCCCCC0DDDDDDD8DDDDDDD8DDDDDDD0CCCCCCCC
+          0DDDDDD8DDDDDDDD8DDDDDD0CCCCCCC0DDDDDDD8DDDDDDD8DDDDDDD00000CC0D
+          DDDDDDD88888DD8DDDDDDDDDDDD0C0DDDDDDDDDDDDD8D8DDDDDDDDDDDDD00DDD
+          DDDDDDDDDDD88DDDDDDDDDDDDDD0DDDDDDDDDDDDDDD8DDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+        NumGlyphs = 2
+        OnClick = SBNextClick
+      end
+      object LPage: TLabel
+        Left = 48
+        Top = 4
+        Width = 25
+        Height = 13
+        Caption = 'Page'
+      end
+      object SBPrev: TSpeedButton
+        Left = 8
+        Top = 0
+        Width = 24
+        Height = 24
+        Glyph.Data = {
+          76010000424D7601000000000000760000002800000020000000100000000100
+          0400000000000001000000000000000000001000000000000000000000000000
+          80000080000000808000800000008000800080800000C0C0C000808080000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDD0DDDDDDDDDDDDDDD8DDDDDDDDDDDDDD00DDD
+          DDDDDDDDDDD88DDDDDDDDDDDDD0C0DDDDDDDDDDDDD8D8DDDDDDDDDDDD0CC0000
+          0DDDDDDDD8DD88888DDDDDDD0CCCCCCC0DDDDDDD8DDDDDDD8DDDDDD0CCCCCCCC
+          0DDDDDD8DDDDDDDD8DDDDDDD0CCCCCCC0DDDDDDD8DDDDDDD8DDDDDDDD0CC0000
+          0DDDDDDDD8DD88888DDDDDDDDD0C0DDDDDDDDDDDDD8D8DDDDDDDDDDDDDD00DDD
+          DDDDDDDDDDD88DDDDDDDDDDDDDDD0DDDDDDDDDDDDDDD8DDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+        NumGlyphs = 2
+        OnClick = SBPrevClick
+      end
+    end
+  end
+end
Index: UFindRec.pas
===================================================================
--- UFindRec.pas	(révision 0)
+++ UFindRec.pas	(révision 3)
@@ -0,0 +1,586 @@
+unit UFindRec;
+
+interface
+
+function FindNumMatiere(Nom: string): integer;
+function FindNomMatiere(Num: integer): string;
+function FindIdxMatiere(Nom: string): integer;
+function FindNumAliment(Nom: string): integer;
+function FindNomAliment(Num: integer): string;
+function FindIdxAliment(Nom: string): integer;
+function FindNumSeqAliT(Nom: string): integer;
+function FindNomSeqAliT(Num: integer): string;
+function FindIdxSeqAliT(Nom: string): integer;
+function FindNumRationT(Nom: string): integer;
+function FindNomRationT(Num: integer): string;
+function FindIdxRationT(Nom: string): integer;
+function FindNumLogeT(Nom: string): integer;
+function FindNomLogeT(Num: integer): string;
+function FindIdxLogeT(Nom: string): integer;
+function FindNumProfilT(Nom: string): integer;
+function FindNomProfilT(Num: integer): string;
+function FindIdxProfilT(Nom: string): integer;
+function FindNumSimulT(Nom: string): integer;
+function FindNomSimulT(Num: integer): string;
+function FindIdxSimulT(Nom: string): integer;
+function FindNumSeqAliP(Nom: string): integer;
+function FindNomSeqAliP(Num: integer): string;
+function FindIdxSeqAliP(Nom: string): integer;
+function FindNumRationP(Nom: string): integer;
+function FindNomRationP(Num: integer): string;
+function FindIdxRationP(Nom: string): integer;
+function FindNumProfilP(Nom: string): integer;
+function FindNomProfilP(Num: integer): string;
+function FindIdxProfilP(Nom: string): integer;
+function FindNumSimulP(Nom: string): integer;
+function FindNomSimulP(Num: integer): string;
+function FindIdxSimulP(Nom: string): integer;
+
+implementation
+
+uses
+  gnugettext, UVariables;
+
+// Renvoie le num�ro de la mati�re premi�re � partir de son nom
+function FindNumMatiere(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PMatiere := ListMatiere[i];
+    if PMatiere.Num > 0 then // Mati�re premi�re utilisateur
+      ok := PMatiere.Nom = Nom
+    else // Mati�re premi�re INRA-AFZ (traduction)
+      ok := dgettext('InraAfz', PMatiere.Nom) = Nom;
+  until ok;
+  Result := PMatiere.Num;
+end;
+
+// Renvoie le nom de la mati�re premi�re � partir de son num�ro
+function FindNomMatiere(Num: integer): string;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PMatiere := ListMatiere[i];
+  until PMatiere.Num = Num;
+  if Num > 0 then // Mati�re premi�re utilisateur
+    Result := PMatiere.Nom
+  else // Mati�re premi�re INRA-AFZ (traduction)
+    Result := dgettext('InraAfz', PMatiere.Nom);
+end;
+
+// Renvoie l'index de la mati�re premi�re � partir de son nom
+function FindIdxMatiere(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  ok := True;
+  i  := 0;
+  while ok and (i < ListMatiere.Count) do
+  begin
+    PMatiere := ListMatiere[i];
+    if PMatiere.Num > 0 then // Mati�re premi�re utilisateur
+      if PMatiere.Nom = Nom then
+        ok := False
+      else
+        Inc(i)
+    else // Mati�re premi�re INRA-AFZ (traduction)
+    if dgettext('InraAfz', PMatiere.Nom) = Nom then
+      ok := False
+    else
+      Inc(i);
+  end;
+  if ok then
+    Result := -1
+  else
+    Result := i;
+end;
+
+// Renvoie le num�ro de l'aliment � partir de son nom
+function FindNumAliment(Nom: string): integer;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PAliment := ListAliment[i];
+  until PAliment.Nom = Nom;
+  Result := PAliment.Num;
+end;
+
+// Renvoie le nom de l'aliment � partir de son num�ro
+function FindNomAliment(Num: integer): string;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PAliment := ListAliment[i];
+  until PAliment.Num = Num;
+  Result := PAliment.Nom;
+end;
+
+// Renvoie l'index de l'aliment � partir de son nom
+function FindIdxAliment(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  ok := True;
+  i  := 0;
+  while ok and (i < ListAliment.Count) do
+  begin
+    PAliment := ListAliment[i];
+    if PAliment.Nom = Nom then
+      ok := False
+    else
+      Inc(i);
+  end;
+  if ok then
+    Result := -1
+  else
+    Result := i;
+end;
+
+// Renvoie le num�ro de la s�quence alimentaire truie � partir de son nom
+function FindNumSeqAliT(Nom: string): integer;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PSeqAliT := ListSeqAliT[i];
+  until PSeqAliT.Nom = Nom;
+  Result := PSeqAliT.Num;
+end;
+
+// Renvoie le nom de la s�quence alimentaire truie � partir de son num�ro
+function FindNomSeqAliT(Num: integer): string;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PSeqAliT := ListSeqAliT[i];
+  until PSeqAliT.Num = Num;
+  Result := PSeqAliT.Nom;
+end;
+
+// Renvoie l'index de la s�quence alimentaire truie � partir de son nom
+function FindIdxSeqAliT(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  ok := True;
+  i  := 0;
+  while ok and (i < ListSeqAliT.Count) do
+  begin
+    PSeqAliT := ListSeqAliT[i];
+    if PSeqAliT.Nom = Nom then
+      ok := False
+    else
+      Inc(i);
+  end;
+  if ok then
+    Result := -1
+  else
+    Result := i;
+end;
+
+// Renvoie le num�ro du plan de rationnement truie � partir de son nom
+function FindNumRationT(Nom: string): integer;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PRationT := ListRationT[i];
+  until PRationT.Nom = Nom;
+  Result := PRationT.Num;
+end;
+
+// Renvoie le nom du plan de rationnement truie � partir de son num�ro
+function FindNomRationT(Num: integer): string;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PRationT := ListRationT[i];
+  until PRationT.Num = Num;
+  Result := PRationT.Nom;
+end;
+
+// Renvoie l'index du plan de rationnement truie � partir de son nom
+function FindIdxRationT(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  ok := True;
+  i  := 0;
+  while ok and (i < ListRationT.Count) do
+  begin
+    PRationT := ListRationT[i];
+    if PRationT.Nom = Nom then
+      ok := False
+    else
+      Inc(i);
+  end;
+  if ok then
+    Result := -1
+  else
+    Result := i;
+end;
+
+// Renvoie le num�ro du logement truie � partir de son nom
+function FindNumLogeT(Nom: string): integer;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PLogeT := ListLogeT[i];
+  until PLogeT.Nom = Nom;
+  Result := PLogeT.Num;
+end;
+
+// Renvoie le nom du logement truie � partir de son num�ro
+function FindNomLogeT(Num: integer): string;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PLogeT := ListLogeT[i];
+  until PLogeT.Num = Num;
+  Result := PLogeT.Nom;
+end;
+
+// Renvoie l'index de lu logement truie � partir de son nom
+function FindIdxLogeT(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  ok := True;
+  i  := 0;
+  while ok and (i < ListLogeT.Count) do
+  begin
+    PLogeT := ListLogeT[i];
+    if PLogeT.Nom = Nom then
+      ok := False
+    else
+      Inc(i);
+  end;
+  if ok then
+    Result := -1
+  else
+    Result := i;
+end;
+
+// Renvoie le num�ro du profil truie � partir de son nom
+function FindNumProfilT(Nom: string): integer;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PProfilT := ListProfilT[i];
+  until PProfilT.Nom = Nom;
+  Result := PProfilT.Num;
+end;
+
+// Renvoie le nom du profil truie � partir de son num�ro
+function FindNomProfilT(Num: integer): string;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PProfilT := ListProfilT[i];
+  until PProfilT.Num = Num;
+  Result := PProfilT.Nom;
+end;
+
+// Renvoie l'index du profil truie � partir de son nom
+function FindIdxProfilT(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  ok := True;
+  i  := 0;
+  while ok and (i < ListProfilT.Count) do
+  begin
+    PProfilT := ListProfilT[i];
+    if PProfilT.Nom = Nom then
+      ok := False
+    else
+      Inc(i);
+  end;
+  if ok then
+    Result := -1
+  else
+    Result := i;
+end;
+
+// Renvoie le num�ro de la simulation truie � partir de son nom
+function FindNumSimulT(Nom: string): integer;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PSimulT := ListSimulT[i];
+  until PSimulT.Nom = Nom;
+  Result := PSimulT.Num;
+end;
+
+// Renvoie le nom de la simulation truie � partir de son num�ro
+function FindNomSimulT(Num: integer): string;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PSimulT := ListSimulT[i];
+  until PSimulT.Num = Num;
+  Result := PSimulT.Nom;
+end;
+
+// Renvoie l'index de la simulation truie � partir de son nom
+function FindIdxSimulT(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  ok := True;
+  i  := 0;
+  while ok and (i < ListSimulT.Count) do
+  begin
+    PSimulT := ListSimulT[i];
+    if PSimulT.Nom = Nom then
+      ok := False
+    else
+      Inc(i);
+  end;
+  if ok then
+    Result := -1
+  else
+    Result := i;
+end;
+
+// Renvoie le num�ro de la s�quence alimentaire porc � partir de son nom
+function FindNumSeqAliP(Nom: string): integer;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PSeqAliP := ListSeqAliP[i];
+  until PSeqAliP.Nom = Nom;
+  Result := PSeqAliP.Num;
+end;
+
+// Renvoie le nom de la s�quence alimentaire porc � partir de son num�ro
+function FindNomSeqAliP(Num: integer): string;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PSeqAliP := ListSeqAliP[i];
+  until PSeqAliP.Num = Num;
+  Result := PSeqAliP.Nom;
+end;
+
+// Renvoie l'index de la s�quence alimentaire porc � partir de son nom
+function FindIdxSeqAliP(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  ok := True;
+  i  := 0;
+  while ok and (i < ListSeqAliP.Count) do
+  begin
+    PSeqAliP := ListSeqAliP[i];
+    if PSeqAliP.Nom = Nom then
+      ok := False
+    else
+      Inc(i);
+  end;
+  if ok then
+    Result := -1
+  else
+    Result := i;
+end;
+
+// Renvoie le num�ro du plan de rationnement porc � partir de son nom
+function FindNumRationP(Nom: string): integer;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PRationP := ListRationP[i];
+  until PRationP.Nom = Nom;
+  Result := PRationP.Num;
+end;
+
+// Renvoie le nom du plan de rationnement porc � partir de son num�ro
+function FindNomRationP(Num: integer): string;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PRationP := ListRationP[i];
+  until PRationP.Num = Num;
+  Result := PRationP.Nom;
+end;
+
+// Renvoie l'index du plan de rationnement porc � partir de son nom
+function FindIdxRationP(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  ok := True;
+  i  := 0;
+  while ok and (i < ListRationP.Count) do
+  begin
+    PRationP := ListRationP[i];
+    if PRationP.Nom = Nom then
+      ok := False
+    else
+      Inc(i);
+  end;
+  if ok then
+    Result := -1
+  else
+    Result := i;
+end;
+
+// Renvoie le num�ro du profil porc � partir de son nom
+function FindNumProfilP(Nom: string): integer;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PProfilP := ListProfilP[i];
+  until PProfilP.Nom = Nom;
+  Result := PProfilP.Num;
+end;
+
+// Renvoie le nom du profil porc � partir de son num�ro
+function FindNomProfilP(Num: integer): string;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PProfilP := ListProfilP[i];
+  until PProfilP.Num = Num;
+  Result := PProfilP.Nom;
+end;
+
+// Renvoie l'index du profil porc � partir de son nom
+function FindIdxProfilP(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  ok := True;
+  i  := 0;
+  while ok and (i < ListProfilP.Count) do
+  begin
+    PProfilP := ListProfilP[i];
+    if PProfilP.Nom = Nom then
+      ok := False
+    else
+      Inc(i);
+  end;
+  if ok then
+    Result := -1
+  else
+    Result := i;
+end;
+
+// Renvoie le num�ro de la simulation porc � partir de son nom
+function FindNumSimulP(Nom: string): integer;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PSimulP := ListSimulP[i];
+  until PSimulP.Nom = Nom;
+  Result := PSimulP.Num;
+end;
+
+// Renvoie le nom de la simulation porc � partir de son num�ro
+function FindNomSimulP(Num: integer): string;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    Inc(i);
+    PSimulP := ListSimulP[i];
+  until PSimulP.Num = Num;
+  Result := PSimulP.Nom;
+end;
+
+// Renvoie l'index de la simulation porc � partir de son nom
+function FindIdxSimulP(Nom: string): integer;
+var
+  i:  integer;
+  ok: boolean;
+begin
+  ok := True;
+  i  := 0;
+  while ok and (i < ListSimulP.Count) do
+  begin
+    PSimulP := ListSimulP[i];
+    if PSimulP.Nom = Nom then
+      ok := False
+    else
+      Inc(i);
+  end;
+  if ok then
+    Result := -1
+  else
+    Result := i;
+end;
+
+end.
Index: UFWarning.pas
===================================================================
--- UFWarning.pas	(révision 0)
+++ UFWarning.pas	(révision 3)
@@ -0,0 +1,95 @@
+unit UFWarning ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, ComCtrls, StrUtils, UVariables, gnugettext;
+
+type
+  TFWarning = class(TForm)
+    BBOk: TBitBtn;
+    CBDisplay: TCheckBox;
+    REMessage: TRichEdit;
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+    Msg: String;
+  end;
+
+var
+  FWarning: TFWarning;
+
+implementation
+
+uses
+  UUtil, UStrings;
+
+{$R *.dfm}
+
+{ TFComment }
+
+procedure TFWarning.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Width := 468 + (Width - ClientWidth);
+  Height := 248 + (Height - ClientHeight);
+end;
+
+procedure TFWarning.FormShow(Sender: TObject);
+{
+var
+  ResName: String;
+  Stream: TResourceStream;
+}
+begin
+  {
+  ResName := UpperCase(Msg);
+  Stream := TResourceStream.Create(ResInstance, ResName, 'TEXT');
+  try
+    REMessage.Lines.LoadFromStream(Stream);
+  finally
+    Stream.Free;
+  end;
+  }
+  case AnsiIndexStr(Msg, ['CorrCUD', 'CalcAli', 'GraphAli', 'UnitProfilP', 'PDMoy', 'Precocite', 'Entretien', 'OptInit', 'SimulT', 'Besoin', 'InraAfz']) of
+    0: // CorrCUD
+      REMessage.Lines.Add(MsgCorrCUD);
+    1: // CalcAli
+      REMessage.Lines.Add(MsgCalcAli);
+    2: // GraphAli
+      REMessage.Lines.Add(MsgGraphAli);
+    3: // UnitProfilP
+      REMessage.Lines.Add(MsgUnitProfilP);
+    4: // PDMoy
+      REMessage.Lines.Add(MsgPDMoy);
+    5: // Precocite
+      REMessage.Lines.Add(MsgPrecocite);
+    6: // Entretien
+      REMessage.Lines.Add(MsgEntretien);
+    7: // OptInit
+      REMessage.Lines.Add(MsgOptInit);
+    8: // SimulT
+      REMessage.Lines.Add(MsgSimulT);
+    9: // Besoin
+      REMessage.Lines.Add(MsgBesoin);
+    10: // InraAfz
+      REMessage.Lines.Add(MsgInraAfz);
+  end;
+end;
+
+procedure TFWarning.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if CBDisplay.Checked
+  then
+    BdRWriteBoolean('\Software\InraPorc\Config\Messages', Msg, False);
+end;
+
+end.
Index: UFResSimulP.dfm
===================================================================
--- UFResSimulP.dfm	(révision 0)
+++ UFResSimulP.dfm	(révision 3)
@@ -0,0 +1,1060 @@
+object FResSimulP: TFResSimulP
+  Left = 200
+  Top = 200
+  HelpContext = 5500
+  Caption = 'Simulation results for growing pigs'
+  ClientHeight = 353
+  ClientWidth = 544
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  DesignSize = (
+    544
+    353)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PC: TPageControl
+    Left = 0
+    Top = 0
+    Width = 544
+    Height = 96
+    ActivePage = TabPerf
+    Align = alTop
+    HotTrack = True
+    MultiLine = True
+    TabOrder = 0
+    TabStop = False
+    OnChange = PCChange
+    object TabPerf: TTabSheet
+      HelpContext = 5510
+      Caption = 'Performance'
+      ImageIndex = -1
+      object GBPerfT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBPerf1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Dynamic view'
+          OnChange = CBPerf1Change
+          Items.Strings = (
+            'Dynamic view'
+            'View per period')
+        end
+        object CBPerfAL: TCheckBox
+          Left = 16
+          Top = 42
+          Width = 144
+          Height = 17
+          Hint = 'Check the checkbox to display ad libitum intake'
+          Caption = 'Ad libitum intake'
+          TabOrder = 1
+          Visible = False
+          OnClick = CBPerfALClick
+        end
+      end
+      object GBPerfX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBPerf2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          OnChange = CBPerf2Change
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+        object CBPerf2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Week'
+          Visible = False
+          OnChange = CBPerf2Change
+          Items.Strings = (
+            'Week'
+            'Feed sequence rule'
+            'Feed rationing rule'
+            'Global')
+        end
+      end
+      object GBPerfY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBPerf3D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight'
+          OnChange = CBPerf3Change
+          Items.Strings = (
+            'Body weight'
+            'Time'
+            'Feed usage'
+            'Feed wastage'
+            'Feed intake'
+            'Feed:Gain'
+            'Gain:Feed'
+            'Protein'
+            'Lipid'
+            'Carcass')
+        end
+        object CBPerf4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 2
+          OnChange = CBPerf4Change
+        end
+        object CBPerf3P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Body weight'
+          Visible = False
+          OnChange = CBPerf3Change
+          Items.Strings = (
+            'Body weight'
+            'Time'
+            'Feed usage'
+            'Feed wastage'
+            'Feed intake'
+            'Feed:Gain'
+            'Gain:Feed'
+            'Protein'
+            'Lipid')
+        end
+      end
+    end
+    object TabAli: TTabSheet
+      HelpContext = 5520
+      Caption = 'Feeds'
+      ImageIndex = -1
+      object GBAliT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBAli1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBAli1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning'
+            'Partitioning by period')
+        end
+        object CBAli5: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Feeds'
+          OnChange = CBAli5Change
+          Items.Strings = (
+            'Feeds'
+            'Feed ingredients')
+        end
+      end
+      object GBAliY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBAli4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 1
+          OnChange = CBAli4Change
+        end
+        object CBAli3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Feed usage'
+          OnChange = CBAli3Change
+          Items.Strings = (
+            'Feed usage'
+            'Feed cost')
+        end
+      end
+      object GBAliX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBAli2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          Visible = False
+          OnChange = CBAli2Change
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+        object CBAli2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Week'
+          Visible = False
+          OnChange = CBAli2Change
+          Items.Strings = (
+            'Week'
+            'Feed sequence rule'
+            'Feed rationing rule'
+            'Global')
+        end
+      end
+    end
+    object TabPD: TTabSheet
+      HelpContext = 5530
+      Caption = 'Protein deposition'
+      ImageIndex = -1
+      object GBPDT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+      end
+      object GBPDY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+      end
+      object GBPDX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBPD2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          OnChange = CBPD2Change
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+      end
+    end
+    object TabAA: TTabSheet
+      HelpContext = 5540
+      Caption = 'Amino acids'
+      ImageIndex = 8
+      object GBAAX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBAA2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          Visible = False
+          OnChange = CBAA2Change
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+        object CBAA2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Week'
+          Visible = False
+          OnChange = CBAA2Change
+          Items.Strings = (
+            'Week'
+            'Feed sequence rule'
+            'Feed rationing rule'
+            'Global')
+        end
+      end
+      object GBAAT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBAA1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBAA1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning'
+            'Partitioning by period'
+            'Requirement and supply')
+        end
+        object CBAA5: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Standardized digestible'
+          OnChange = CBAA5Change
+          Items.Strings = (
+            'Standardized digestible'
+            'Apparently digestible'
+            'Total')
+        end
+      end
+      object GBAAY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBAA3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 1
+          TabOrder = 0
+          Text = 'Lysine'
+          OnChange = CBAA3Change
+          Items.Strings = (
+            'Crude protein'
+            'Lysine'
+            'Methionine'
+            'Methionine + Cystine'
+            'Tryptophan'
+            'Threonine'
+            'Phenylalanine'
+            'Phenylalanine + Tyrosine'
+            'Leucine'
+            'Isoleucine'
+            'Valine'
+            'Histidine'
+            'Arginine')
+        end
+        object CBAA4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 1
+          OnChange = CBAA4Change
+        end
+      end
+    end
+    object TabNRJ: TTabSheet
+      HelpContext = 5550
+      Caption = 'Energy'
+      ImageIndex = -1
+      object GBNRJT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBNRJ1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBNRJ1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning'
+            'Partitioning by period'
+            'Partitioning of retained energy'
+            'Energy values')
+        end
+      end
+      object GBNRJY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBNRJ3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Gross energy'
+          OnChange = CBNRJ3Change
+          Items.Strings = (
+            'Gross energy'
+            'Digestible energy'
+            'Metabolizable energy'
+            'Net energy')
+        end
+        object CBNRJ4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 3
+          OnChange = CBNRJ4Change
+        end
+        object CBNRJ3R: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Marginal PD'
+          Visible = False
+          OnChange = CBNRJ3Change
+          Items.Strings = (
+            'Marginal PD'
+            'X'
+            'LD / PD'
+            'Marginal (PD / LD)'
+            'lipid / protein')
+        end
+        object CBNRJ3V: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 2
+          Text = 'Digestible energy'
+          Visible = False
+          OnChange = CBNRJ3Change
+          Items.Strings = (
+            'Digestible energy'
+            'Metabolizable energy'
+            'Net energy')
+        end
+      end
+      object GBNRJX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBNRJ2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          Visible = False
+          OnChange = CBNRJ2Change
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+        object CBNRJ2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Week'
+          Visible = False
+          OnChange = CBNRJ2Change
+          Items.Strings = (
+            'Week'
+            'Feed sequence rule'
+            'Feed rationing rule'
+            'Global')
+        end
+      end
+    end
+    object TabMin: TTabSheet
+      HelpContext = 5570
+      Caption = 'Minerals'
+      ImageIndex = 6
+      object GBMinX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBMin2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          Visible = False
+          OnChange = CBMin2Change
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+        object CBMin2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Week'
+          Visible = False
+          OnChange = CBMin2Change
+          Items.Strings = (
+            'Week'
+            'Feed sequence rule'
+            'Feed rationing rule'
+            'Global')
+        end
+      end
+      object GBMinY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBMin3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Phosphorus'
+          OnChange = CBMin3Change
+          Items.Strings = (
+            'Phosphorus')
+        end
+        object CBMin4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 1
+          OnChange = CBMin4Change
+        end
+      end
+      object GBMinT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBMin1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBMin1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning'
+            'Partitioning by period'
+            'Requirement and supply')
+        end
+        object CBMin5: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Apparently digestible'
+          OnChange = CBMin5Change
+          Items.Strings = (
+            'Apparently digestible'
+            'Total')
+        end
+      end
+    end
+    object TabRej: TTabSheet
+      HelpContext = 5560
+      Caption = 'Mineral balance'
+      ImageIndex = 9
+      object GBRejT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBRej1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBRej1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning'
+            'Partitioning by period')
+        end
+      end
+      object GBRejY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBRej3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Nitrogen'
+          OnChange = CBRej3Change
+          Items.Strings = (
+            'Nitrogen'
+            'Phosphorus'
+            'Calcium'
+            'Potassium'
+            'Copper'
+            'Zinc')
+        end
+        object CBRej4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 1
+          OnChange = CBRej4Change
+        end
+      end
+      object GBRejX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBRej2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          Visible = False
+          OnChange = CBRej2Change
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+        object CBRej2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Week'
+          Visible = False
+          OnChange = CBRej2Change
+          Items.Strings = (
+            'Week'
+            'Feed sequence rule'
+            'Feed rationing rule'
+            'Global')
+        end
+      end
+    end
+  end
+  object Graph: TChart
+    Left = 136
+    Top = 96
+    Width = 408
+    Height = 257
+    Foot.Alignment = taLeftJustify
+    Foot.Font.Color = clBlack
+    Foot.Font.Style = []
+    Foot.Text.Strings = (
+      'Simulation')
+    Legend.Inverted = True
+    Legend.LegendStyle = lsSeries
+    MarginBottom = 1
+    MarginLeft = 1
+    MarginRight = 1
+    MarginTop = 1
+    SubTitle.Font.Color = clBlack
+    SubTitle.Text.Strings = (
+      'Total')
+    Title.Font.Height = -16
+    Title.Font.Style = [fsBold]
+    Title.Text.Strings = (
+      'Title')
+    BottomAxis.Title.Caption = 'X'
+    BottomAxis.Title.Font.Style = [fsBold]
+    LeftAxis.Automatic = False
+    LeftAxis.AutomaticMaximum = False
+    LeftAxis.AutomaticMinimum = False
+    LeftAxis.Title.Caption = 'Y'
+    LeftAxis.Title.Font.Style = [fsBold]
+    View3D = False
+    Align = alClient
+    BevelOuter = bvNone
+    PopupMenu = PM
+    TabOrder = 1
+    PrintMargins = (
+      5
+      5
+      5
+      5)
+  end
+  object GBPDF: TGroupBox
+    Left = 0
+    Top = 96
+    Width = 136
+    Height = 257
+    Hint = 'Potentially limiting factors'
+    HelpContext = 5530
+    Align = alLeft
+    Caption = 'Factors'
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 2
+    object LBPD: TListBox
+      Left = 8
+      Top = 24
+      Width = 120
+      Height = 199
+      Hint = 
+        'Click on an item to display the protein deposition if this selec' +
+        'ted item had been the only limiting factor'
+      Style = lbOwnerDrawFixed
+      ExtendedSelect = False
+      IntegralHeight = True
+      ItemHeight = 13
+      Items.Strings = (
+        'Energy'
+        'PDmax'
+        'Lys'
+        'Thr'
+        'Trp'
+        'Met'
+        'Met + Cys'
+        'Val'
+        'Ile'
+        'Leu'
+        'Phe'
+        'Phe + Tyr'
+        'Arg'
+        'His'
+        'Crude protein')
+      MultiSelect = True
+      TabOrder = 0
+      OnClick = LBPDClick
+      OnDrawItem = LBPDDrawItem
+    end
+  end
+  object LBNRJ: TListBox
+    Left = 144
+    Top = 200
+    Width = 120
+    Height = 108
+    ItemHeight = 13
+    Items.Strings = (
+      'Feed wastage'
+      'Indigestible'
+      'Methane and urine'
+      'Maintenance'
+      'Activity'
+      'Heat increment'
+      'Protein'
+      'Lipid')
+    TabOrder = 3
+    Visible = False
+  end
+  object LBRej: TListBox
+    Left = 400
+    Top = 200
+    Width = 120
+    Height = 69
+    ItemHeight = 13
+    Items.Strings = (
+      'Feed wastage'
+      'Fecal'
+      'Urinary'
+      'Excreted'
+      'Retained')
+    TabOrder = 4
+    Visible = False
+  end
+  object LBAA: TListBox
+    Left = 16
+    Top = 200
+    Width = 120
+    Height = 121
+    ItemHeight = 13
+    Items.Strings = (
+      'Feed wastage'
+      'Indigestible'
+      'Basal endogenous'
+      'Maintenance'
+      'Minimum oxidation'
+      'Deposition'
+      'Unbalanced'
+      'Deficiency'
+      'Excess')
+    TabOrder = 5
+    Visible = False
+  end
+  object LBMin: TListBox
+    Left = 272
+    Top = 200
+    Width = 120
+    Height = 82
+    ItemHeight = 13
+    Items.Strings = (
+      'Feed wastage'
+      'Indigestible'
+      'Maintenance'
+      'Retained'
+      'Deficiency'
+      'Excess')
+    TabOrder = 6
+    Visible = False
+  end
+  object MExport: TMemo
+    Left = 144
+    Top = 104
+    Width = 392
+    Height = 80
+    Anchors = [akLeft, akTop, akRight]
+    ReadOnly = True
+    TabOrder = 7
+    Visible = False
+    WordWrap = False
+  end
+  object PM: TPopupMenu
+    Left = 120
+    Top = 96
+    object MI3D: TMenuItem
+      Caption = '2D / 3D'
+      OnClick = MI3DClick
+    end
+    object MIPreview: TMenuItem
+      Caption = 'Print preview'
+      OnClick = MIPreviewClick
+    end
+    object MIPrint: TMenuItem
+      Caption = 'Print...'
+      OnClick = MIPrintClick
+    end
+    object MIExport: TMenuItem
+      Caption = 'Export...'
+      OnClick = MIExportClick
+    end
+  end
+  object PD: TPrintDialog
+    Left = 152
+    Top = 96
+  end
+  object SD: TSaveDialog
+    DefaultExt = 'csv'
+    Filter = 'CSV text|*.csv'
+    Options = [ofOverwritePrompt, ofHideReadOnly, ofNoChangeDir, ofEnableSizing]
+    Title = 'Import / export file'
+    Left = 184
+    Top = 96
+  end
+end
Index: UFResSimulT.dfm
===================================================================
--- UFResSimulT.dfm	(révision 0)
+++ UFResSimulT.dfm	(révision 3)
@@ -0,0 +1,1017 @@
+object FResSimulT: TFResSimulT
+  Left = 200
+  Top = 200
+  HelpContext = 4500
+  Caption = 'Simulation results for sows'
+  ClientHeight = 353
+  ClientWidth = 544
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  DesignSize = (
+    544
+    353)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PC: TPageControl
+    Left = 0
+    Top = 0
+    Width = 544
+    Height = 96
+    ActivePage = TabPerf
+    Align = alTop
+    HotTrack = True
+    MultiLine = True
+    TabOrder = 0
+    TabStop = False
+    OnChange = PCChange
+    object TabPerf: TTabSheet
+      HelpContext = 4510
+      Caption = 'Performance'
+      ImageIndex = -1
+      object GBPerfT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBPerf1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Dynamic view'
+          OnChange = CBPerf1Change
+          Items.Strings = (
+            'Dynamic view'
+            'View per period')
+        end
+      end
+      object GBPerfX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBPerf2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          OnChange = CBPerf2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+        object CBPerf2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Cycle'
+          Visible = False
+          OnChange = CBPerf2Change
+          Items.Strings = (
+            'Cycle'
+            'Stage'
+            'Global')
+        end
+      end
+      object GBPerfY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBPerf3D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Total body weight'
+          OnChange = CBPerf3Change
+          Items.Strings = (
+            'Total body weight'
+            'Total weight gain'
+            'Net body weight'
+            'Net weight gain'
+            'Feed intake'
+            'Feed conversion ratio'
+            'Feed efficiency'
+            'Protein weight'
+            'Protein deposition'
+            'Lipid weight'
+            'Lipid deposition'
+            'Backfat thickness'
+            'Variation in P2'
+            'Milk production')
+        end
+        object CBPerf4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 2
+          OnChange = CBPerf4Change
+        end
+        object CBPerf3P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Total weight gain'
+          Visible = False
+          OnChange = CBPerf3Change
+          Items.Strings = (
+            'Total weight gain'
+            'Net weight gain'
+            'Duration'
+            'Feed intake'
+            'Feed conversion ratio'
+            'Feed efficiency'
+            'Protein deposition'
+            'Lipid deposition'
+            'Variation in P2'
+            'Milk production')
+        end
+      end
+    end
+    object TabAli: TTabSheet
+      HelpContext = 4520
+      Caption = 'Feeds'
+      ImageIndex = -1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 66
+      object GBAliT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBAli1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBAli1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning'
+            'Partitioning by period')
+        end
+        object CBAli5: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Feeds'
+          OnChange = CBAli5Change
+          Items.Strings = (
+            'Feeds'
+            'Feed ingredients')
+        end
+      end
+      object GBAliY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBAli4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBAli4Change
+        end
+        object CBAli3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Quantity'
+          OnChange = CBAli3Change
+          Items.Strings = (
+            'Quantity'
+            'Feed cost')
+        end
+      end
+      object GBAliX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBAli2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          Visible = False
+          OnChange = CBAli2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+        object CBAli2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Cycle'
+          Visible = False
+          OnChange = CBAli2Change
+          Items.Strings = (
+            'Cycle'
+            'Stage'
+            'Global')
+        end
+      end
+    end
+    object TabPD: TTabSheet
+      HelpContext = 4530
+      Caption = 'Deposited and exported protein'
+      ImageIndex = -1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 66
+      object GBPDT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+      end
+      object GBPDY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+      end
+      object GBPDX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBPD2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          OnChange = CBPD2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+      end
+    end
+    object TabAA: TTabSheet
+      HelpContext = 4540
+      Caption = 'Amino acids'
+      ImageIndex = 8
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 66
+      object GBAAX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBAA2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          Visible = False
+          OnChange = CBAA2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+        object CBAA2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Cycle'
+          Visible = False
+          OnChange = CBAA2Change
+          Items.Strings = (
+            'Cycle'
+            'Stage'
+            'Global')
+        end
+      end
+      object GBAAT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBAA1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBAA1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning'
+            'Partitioning by period'
+            'Requirement and supply')
+        end
+        object CBAA5: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Standardized digestible'
+          OnChange = CBAA5Change
+          Items.Strings = (
+            'Standardized digestible'
+            'Apparently digestible'
+            'Total')
+        end
+      end
+      object GBAAY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBAA3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 1
+          TabOrder = 0
+          Text = 'Lysine'
+          OnChange = CBAA3Change
+          Items.Strings = (
+            'Crude protein'
+            'Lysine'
+            'Methionine'
+            'Methionine + Cystine'
+            'Tryptophan'
+            'Threonine'
+            'Phenylalanine'
+            'Phenylalanine + Tyrosine'
+            'Leucine'
+            'Isoleucine'
+            'Valine'
+            'Histidine'
+            'Arginine')
+        end
+        object CBAA4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBAA4Change
+        end
+      end
+    end
+    object TabNRJ: TTabSheet
+      HelpContext = 4570
+      Caption = 'Energy'
+      ImageIndex = 5
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 66
+      object GBNRJX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBNRJ2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          Visible = False
+          OnChange = CBNRJ2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+        object CBNRJ2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Cycle'
+          Visible = False
+          OnChange = CBNRJ2Change
+          Items.Strings = (
+            'Cycle'
+            'Stage'
+            'Global')
+        end
+      end
+      object GBNRJY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBNRJ3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Gross energy'
+          OnChange = CBNRJ3Change
+          Items.Strings = (
+            'Gross energy'
+            'Digestible energy'
+            'Metabolizable energy'
+            'Net energy')
+        end
+        object CBNRJ4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBNRJ4Change
+        end
+      end
+      object GBNRJT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBNRJ1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBNRJ1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning'
+            'Partitioning by period')
+        end
+      end
+    end
+    object TabMin: TTabSheet
+      HelpContext = 4560
+      Caption = 'Minerals'
+      ImageIndex = 6
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 66
+      object GBMinX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBMin2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          Visible = False
+          OnChange = CBMin2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+        object CBMin2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Cycle'
+          Visible = False
+          OnChange = CBMin2Change
+          Items.Strings = (
+            'Cycle'
+            'Stage'
+            'Global')
+        end
+      end
+      object GBMinY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBMin3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Phosphorus'
+          OnChange = CBMin3Change
+          Items.Strings = (
+            'Phosphorus')
+        end
+        object CBMin4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBMin4Change
+        end
+      end
+      object GBMinT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBMin1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBMin1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning'
+            'Partitioning by period'
+            'Requirement and supply')
+        end
+        object CBMin5: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Apparently digestible'
+          OnChange = CBMin5Change
+          Items.Strings = (
+            'Apparently digestible'
+            'Total')
+        end
+      end
+    end
+    object TabRej: TTabSheet
+      HelpContext = 4550
+      Caption = 'Mineral balance'
+      ImageIndex = 9
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 66
+      object GBRejT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBRej1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBRej1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning'
+            'Partitioning by period')
+        end
+      end
+      object GBRejY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBRej3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Nitrogen'
+          OnChange = CBRej3Change
+          Items.Strings = (
+            'Nitrogen'
+            'Phosphorus'
+            'Calcium'
+            'Potassium'
+            'Copper'
+            'Zinc')
+        end
+        object CBRej4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBRej4Change
+        end
+      end
+      object GBRejX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBRej2D: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          Visible = False
+          OnChange = CBRej2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+        object CBRej2P: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Cycle'
+          Visible = False
+          OnChange = CBRej2Change
+          Items.Strings = (
+            'Cycle'
+            'Stage'
+            'Global')
+        end
+      end
+    end
+  end
+  object Graph: TChart
+    Left = 136
+    Top = 96
+    Width = 408
+    Height = 257
+    Foot.Alignment = taLeftJustify
+    Foot.Font.Color = clBlack
+    Foot.Font.Style = []
+    Foot.Text.Strings = (
+      'Simulation')
+    Legend.Inverted = True
+    Legend.LegendStyle = lsSeries
+    MarginBottom = 1
+    MarginLeft = 1
+    MarginRight = 1
+    MarginTop = 1
+    SubTitle.Font.Color = clBlack
+    SubTitle.Text.Strings = (
+      'Total')
+    Title.Font.Height = -16
+    Title.Font.Style = [fsBold]
+    Title.Text.Strings = (
+      'Title')
+    BottomAxis.Title.Caption = 'X'
+    BottomAxis.Title.Font.Style = [fsBold]
+    LeftAxis.Automatic = False
+    LeftAxis.AutomaticMaximum = False
+    LeftAxis.AutomaticMinimum = False
+    LeftAxis.Title.Caption = 'Y'
+    LeftAxis.Title.Font.Style = [fsBold]
+    View3D = False
+    Align = alClient
+    BevelOuter = bvNone
+    PopupMenu = PM
+    TabOrder = 1
+    PrintMargins = (
+      5
+      5
+      5
+      5)
+  end
+  object GBPDF: TGroupBox
+    Left = 0
+    Top = 96
+    Width = 136
+    Height = 257
+    HelpContext = 5530
+    Align = alLeft
+    Caption = 'Limiting factors'
+    TabOrder = 2
+    object LBPD: TListBox
+      Left = 8
+      Top = 24
+      Width = 120
+      Height = 186
+      Style = lbOwnerDrawFixed
+      ExtendedSelect = False
+      IntegralHeight = True
+      ItemHeight = 13
+      Items.Strings = (
+        'Energy'
+        'Lys'
+        'Thr'
+        'Trp'
+        'Met'
+        'Met + Cys'
+        'Val'
+        'Ile'
+        'Leu'
+        'Phe'
+        'Phe + Tyr'
+        'Arg'
+        'His'
+        'Crude protein')
+      MultiSelect = True
+      TabOrder = 0
+      OnClick = LBPDClick
+      OnDrawItem = LBPDDrawItem
+    end
+  end
+  object LBRej: TListBox
+    Left = 400
+    Top = 200
+    Width = 120
+    Height = 56
+    ItemHeight = 13
+    Items.Strings = (
+      'Fecal'
+      'Urinary'
+      'Retained or exported'
+      'Excreted')
+    TabOrder = 3
+    Visible = False
+  end
+  object LBNRJ: TListBox
+    Left = 144
+    Top = 200
+    Width = 120
+    Height = 134
+    ItemHeight = 13
+    Items.Strings = (
+      'Indigestible'
+      'Methane and urine'
+      'Maintenance and activity'
+      'Thermoregulation'
+      'Heat increment'
+      'Litter'
+      'Milk'
+      'Protein deposition'
+      'Lipid deposition'
+      'Deficiency (mobilization)')
+    TabOrder = 4
+    Visible = False
+  end
+  object LBMin: TListBox
+    Left = 272
+    Top = 200
+    Width = 120
+    Height = 95
+    ItemHeight = 13
+    Items.Strings = (
+      'Indigestible'
+      'Maintenance'
+      'Litter'
+      'Retained'
+      'Milk'
+      'Deficiency (mobilization)'
+      'Excess')
+    TabOrder = 5
+    Visible = False
+  end
+  object LBAA: TListBox
+    Left = 16
+    Top = 200
+    Width = 120
+    Height = 147
+    ItemHeight = 13
+    Items.Strings = (
+      'Indigestible'
+      'Basal endogenous'
+      'Maintenance'
+      'Litter'
+      'Minimum oxidation'
+      'Deposition'
+      'Milk'
+      'Mobilization'
+      'Unbalanced'
+      'Deficiency'
+      'Excess')
+    TabOrder = 6
+    Visible = False
+  end
+  object MExport: TMemo
+    Left = 144
+    Top = 104
+    Width = 392
+    Height = 80
+    Anchors = [akLeft, akTop, akRight]
+    ReadOnly = True
+    TabOrder = 7
+    Visible = False
+    WordWrap = False
+  end
+  object PD: TPrintDialog
+    Left = 152
+    Top = 96
+  end
+  object PM: TPopupMenu
+    Left = 120
+    Top = 96
+    object MI3D: TMenuItem
+      Caption = '2D / 3D'
+      OnClick = MI3DClick
+    end
+    object MIPreview: TMenuItem
+      Caption = 'Print preview'
+      OnClick = MIPreviewClick
+    end
+    object MIPrint: TMenuItem
+      Caption = 'Print...'
+      OnClick = MIPrintClick
+    end
+    object MIExport: TMenuItem
+      Caption = 'Export...'
+      OnClick = MIExportClick
+    end
+  end
+  object SD: TSaveDialog
+    DefaultExt = 'csv'
+    Filter = 'CSV text|*.csv'
+    Options = [ofOverwritePrompt, ofHideReadOnly, ofNoChangeDir, ofEnableSizing]
+    Title = 'Import / export file'
+    Left = 184
+    Top = 96
+  end
+end
Index: UFAliment.dfm
===================================================================
--- UFAliment.dfm	(révision 0)
+++ UFAliment.dfm	(révision 3)
@@ -0,0 +1,4321 @@
+object FAliment: TFAliment
+  Left = 165
+  Top = 154
+  HelpContext = 2000
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Feed composition'
+  ClientHeight = 463
+  ClientWidth = 744
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBAliment: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 744
+    Height = 48
+    Align = alTop
+    Caption = 'Feed'
+    TabOrder = 0
+    object SBAdd: TSpeedButton
+      Left = 264
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Add a feed'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000800000800000800000800000800000
+        8000008000008000008000008000008000008000008000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBAddClick
+    end
+    object SBDel: TSpeedButton
+      Left = 296
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Delete the current feed'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF0000000000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBDelClick
+    end
+    object SBRename: TSpeedButton
+      Left = 328
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Rename the current feed'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FF80808080808080
+        8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFF800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFF0000FFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFF0000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FF808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFF800000FFFFFFFFFFFF800000FF
+        FFFFFFFFFF800000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FF80808080808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFF800000800000800000800000800000800000800000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBRenameClick
+    end
+    object SBComment: TSpeedButton
+      Left = 360
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 
+        'Add additional information to the current feed (comment, type, p' +
+        'rice)'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        00000000000000000000000000000000000000FF0000FFFF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000080000080FF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF
+        FF0000FF0000FF0000FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00080
+        80000080000080000080FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF0000FF000080FFFF0000FF0000FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080
+        80808080808080808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0800000800000008080000080000080FF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00
+        00FF000080FFFFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000
+        00800000008080FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0800000800000800000800000800000FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF00
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FF808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000008000008000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+        0000800000800000800000800000000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0800000800000800000800000800000C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFF4080FFFF0000FF
+        0000FF0000FF0000FFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FF808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C000408080000080
+        0000800000800000C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFF4080FF4080FFFF0000FF0000FFFFFFFFFFFFFFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80808080808080
+        8080808080FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0004080004080800000800000C0C0C0C0C0C0C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF0000004080FF4080FF40
+        80FFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C000000000408000408000
+        4080C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080FF00FFFF
+        00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0000000000000C0C0C0C0C0C0C0C0C00000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBCommentClick
+    end
+    object SBSave: TSpeedButton
+      Left = 392
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Save the current feed'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000C0C0C0C0C0C0000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000808080808080000000800000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF8080808080808080808080808080808080808080808080808080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000000000800000000000FF00FFFF00FF000000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF000000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000FF0000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080808080808080FF00
+        FFFF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000800000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00000000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00000000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080000000FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBSaveClick
+    end
+    object SBPrint: TSpeedButton
+      Left = 424
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'View the report for the current feed'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+        808080808080808080808080808080808080808080808080808080FF00FFFF00
+        FF808080808080FF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+        00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+        00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+        C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+        FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+        C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+        8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+        808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBPrintClick
+    end
+    object JvEnterAsTab: TJvEnterAsTab
+      Left = 456
+      Top = 16
+      Width = 28
+      Height = 28
+    end
+    object CBAliment: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBAlimentChange
+    end
+  end
+  object PC: TPageControl
+    Left = 0
+    Top = 48
+    Width = 744
+    Height = 415
+    ActivePage = TSElem
+    Align = alClient
+    HotTrack = True
+    TabOrder = 1
+    Visible = False
+    OnChange = PCChange
+    object TSElem: TTabSheet
+      HelpContext = 2100
+      Caption = 'Elementary composition'
+      object GBEnergie: TGroupBox
+        Left = 408
+        Top = 0
+        Width = 320
+        Height = 288
+        Caption = 'Energy'
+        TabOrder = 1
+        object GBEVal: TGroupBox
+          Left = 8
+          Top = 16
+          Width = 304
+          Height = 168
+          Caption = 'Energy values (MJ/kg)'
+          TabOrder = 0
+          object LEVal_C: TLabel
+            Left = 140
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Growing pig'
+          end
+          object LEN: TLabel
+            Left = 24
+            Top = 116
+            Width = 52
+            Height = 13
+            Caption = 'Net energy'
+            OnClick = LENClick
+          end
+          object LEM: TLabel
+            Left = 24
+            Top = 92
+            Width = 100
+            Height = 13
+            Caption = 'Metabolizable energy'
+            OnClick = LEMClick
+          end
+          object LEB: TLabel
+            Left = 24
+            Top = 44
+            Width = 62
+            Height = 13
+            Caption = 'Gross energy'
+          end
+          object LEVal_T: TLabel
+            Left = 220
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Sow'
+          end
+          object LCorrCUD: TLabel
+            Left = 24
+            Top = 140
+            Width = 102
+            Height = 13
+            Hint = 
+              'Check the checkbox to use an energy value that will correct the ' +
+              'fecal digestibility'
+            Caption = 'Digestibility correction'
+            ParentShowHint = False
+            ShowHint = True
+            OnClick = LCorrCUDClick
+          end
+          object LED: TLabel
+            Left = 24
+            Top = 68
+            Width = 81
+            Height = 13
+            Caption = 'Digestible energy'
+            OnClick = LEDClick
+          end
+          object CBCorrCUD: TCheckBox
+            Left = 8
+            Top = 138
+            Width = 16
+            Height = 17
+            Hint = 
+              'Check the checkbox to use an energy value that will correct the ' +
+              'fecal digestibility'
+            TabStop = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 8
+            OnClick = CBCorrCUDClick
+          end
+          object RBEN: TRadioButton
+            Left = 8
+            Top = 114
+            Width = 16
+            Height = 17
+            Enabled = False
+            TabOrder = 11
+            OnClick = RBENClick
+          end
+          object RBEM: TRadioButton
+            Left = 8
+            Top = 90
+            Width = 16
+            Height = 17
+            Enabled = False
+            TabOrder = 10
+            OnClick = RBEMClick
+          end
+          object RBED: TRadioButton
+            Left = 8
+            Top = 66
+            Width = 16
+            Height = 17
+            Enabled = False
+            TabOrder = 9
+            OnClick = RBEDClick
+          end
+          object PBEB_T: TPBNumEdit
+            Left = 240
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 4
+          end
+          object PBEB_C: TPBNumEdit
+            Left = 160
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBED_C: TPBNumEdit
+            Left = 160
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBED_CChange
+            OnExit = PBED_CExit
+            TabOrder = 1
+          end
+          object PBED_T: TPBNumEdit
+            Left = 240
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBED_TChange
+            OnExit = PBED_TExit
+            TabOrder = 5
+          end
+          object PBEM_C: TPBNumEdit
+            Left = 160
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBEM_CChange
+            OnExit = PBEM_CExit
+            TabOrder = 2
+          end
+          object PBEM_T: TPBNumEdit
+            Left = 240
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBEM_TChange
+            OnExit = PBEM_TExit
+            TabOrder = 6
+          end
+          object PBEN_C: TPBNumEdit
+            Left = 160
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBEN_CChange
+            OnExit = PBEN_CExit
+            TabOrder = 3
+          end
+          object PBEN_T: TPBNumEdit
+            Left = 240
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBEN_TChange
+            OnExit = PBEN_TExit
+            TabOrder = 7
+          end
+        end
+        object BGERap: TGroupBox
+          Left = 8
+          Top = 184
+          Width = 304
+          Height = 96
+          Caption = 'Energy ratios (%)'
+          TabOrder = 1
+          object LEDsEB: TLabel
+            Left = 24
+            Top = 44
+            Width = 57
+            Height = 13
+            Caption = 'DE/GE (dE)'
+          end
+          object LENsEM: TLabel
+            Left = 24
+            Top = 68
+            Width = 36
+            Height = 13
+            Caption = 'NE/ME'
+          end
+          object LERap_C: TLabel
+            Left = 140
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Growing pig'
+          end
+          object LERap_T: TLabel
+            Left = 220
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Sow'
+          end
+          object PBEDsEB_C: TPBNumEdit
+            Left = 160
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBENsEM_C: TPBNumEdit
+            Left = 160
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBEDsEB_T: TPBNumEdit
+            Left = 240
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 2
+          end
+          object PBENsEM_T: TPBNumEdit
+            Left = 240
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 3
+          end
+        end
+      end
+      object GBFecale: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 400
+        Height = 264
+        Caption = 'Content and fecal digestibility'
+        TabOrder = 0
+        object LMS: TLabel
+          Left = 8
+          Top = 60
+          Width = 48
+          Height = 13
+          Caption = 'Dry matter'
+        end
+        object LMM: TLabel
+          Left = 8
+          Top = 84
+          Width = 18
+          Height = 13
+          Caption = 'Ash'
+        end
+        object LMO: TLabel
+          Left = 8
+          Top = 108
+          Width = 69
+          Height = 13
+          Caption = 'Organic matter'
+        end
+        object LLip: TLabel
+          Left = 8
+          Top = 132
+          Width = 43
+          Height = 13
+          Caption = 'Crude fat'
+        end
+        object LMAT: TLabel
+          Left = 8
+          Top = 156
+          Width = 63
+          Height = 13
+          Caption = 'Crude protein'
+        end
+        object LAmidon: TLabel
+          Left = 8
+          Top = 180
+          Width = 31
+          Height = 13
+          Caption = 'Starch'
+        end
+        object LSucres: TLabel
+          Left = 8
+          Top = 204
+          Width = 33
+          Height = 13
+          Caption = 'Sugars'
+        end
+        object LResidu: TLabel
+          Left = 8
+          Top = 228
+          Width = 39
+          Height = 13
+          Caption = 'Residue'
+        end
+        object GBdFecale: TGroupBox
+          Left = 224
+          Top = 16
+          Width = 168
+          Height = 240
+          Caption = 'Digestibility'
+          TabOrder = 1
+          object LdFecale_C: TLabel
+            Left = 4
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Growing pig'
+          end
+          object LdFecale_T: TLabel
+            Left = 84
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Sow'
+          end
+          object PBdMO_C: TPBNumEdit
+            Left = 24
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMO_CChange
+            TabOrder = 0
+          end
+          object PBdLip_C: TPBNumEdit
+            Left = 24
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdLip_CChange
+            TabOrder = 1
+          end
+          object PBdMAT_C: TPBNumEdit
+            Left = 24
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMAT_CChange
+            TabOrder = 2
+          end
+          object PBdSucres_C: TPBNumEdit
+            Left = 24
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 4
+          end
+          object PBdLip_T: TPBNumEdit
+            Left = 104
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdLip_TChange
+            TabOrder = 6
+          end
+          object PBdMAT_T: TPBNumEdit
+            Left = 104
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMAT_TChange
+            TabOrder = 7
+          end
+          object PBdAmidon_T: TPBNumEdit
+            Left = 104
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 8
+          end
+          object PBdSucres_T: TPBNumEdit
+            Left = 104
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 9
+          end
+          object PBdMO_T: TPBNumEdit
+            Left = 104
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMO_TChange
+            TabOrder = 5
+          end
+          object PBdAmidon_C: TPBNumEdit
+            Left = 24
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 3
+          end
+          object PBdResidu_C: TPBNumEdit
+            Left = 24
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 10
+          end
+          object PBdResidu_T: TPBNumEdit
+            Left = 104
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 11
+          end
+        end
+        object GBTFecale: TGroupBox
+          Left = 120
+          Top = 16
+          Width = 96
+          Height = 240
+          Caption = 'Content'
+          TabOrder = 0
+          object PBTMS: TPBNumEdit
+            Left = 24
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTMSChange
+            OnExit = PBTMSExit
+            TabOrder = 0
+          end
+          object PBTMM: TPBNumEdit
+            Left = 24
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTMMChange
+            OnExit = PBTMMExit
+            TabOrder = 1
+          end
+          object PBTMO: TPBNumEdit
+            Left = 24
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 2
+          end
+          object PBTLip: TPBNumEdit
+            Left = 24
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTLipChange
+            TabOrder = 3
+          end
+          object PBTMAT: TPBNumEdit
+            Left = 24
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTMATChange
+            OnExit = PBTMATExit
+            TabOrder = 4
+          end
+          object PBTAmidon: TPBNumEdit
+            Left = 24
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTAmidonChange
+            TabOrder = 5
+          end
+          object PBTSucres: TPBNumEdit
+            Left = 24
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTSucresChange
+            TabOrder = 6
+          end
+          object CBAAsMAT: TCheckBox
+            Left = 71
+            Top = 138
+            Width = 17
+            Height = 17
+            Hint = 
+              'Check the checkbox to maintain a constant ratio between crude pr' +
+              'otein and the amino acids'
+            TabStop = False
+            Checked = True
+            ParentShowHint = False
+            ShowHint = True
+            State = cbChecked
+            TabOrder = 7
+          end
+          object PBTResidu: TPBNumEdit
+            Left = 24
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTSucresChange
+            TabOrder = 8
+          end
+        end
+      end
+    end
+    object TSAA: TTabSheet
+      HelpContext = 2200
+      Caption = 'Amino acids'
+      ImageIndex = 1
+      object GBAA: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 560
+        Height = 384
+        Caption = 'Content, ileal digestibility and ideal protein'
+        TabOrder = 0
+        object LMAT2: TLabel
+          Left = 8
+          Top = 60
+          Width = 63
+          Height = 13
+          Caption = 'Crude protein'
+        end
+        object LLys: TLabel
+          Left = 8
+          Top = 84
+          Width = 30
+          Height = 13
+          Caption = 'Lysine'
+        end
+        object LMet: TLabel
+          Left = 8
+          Top = 108
+          Width = 52
+          Height = 13
+          Caption = 'Methionine'
+        end
+        object LCys: TLabel
+          Left = 8
+          Top = 132
+          Width = 34
+          Height = 13
+          Caption = 'Cystine'
+        end
+        object LTrp: TLabel
+          Left = 8
+          Top = 156
+          Width = 54
+          Height = 13
+          Caption = 'Tryptophan'
+        end
+        object LThr: TLabel
+          Left = 8
+          Top = 180
+          Width = 48
+          Height = 13
+          Caption = 'Threonine'
+        end
+        object LPhe: TLabel
+          Left = 8
+          Top = 204
+          Width = 66
+          Height = 13
+          Caption = 'Phenylalanine'
+        end
+        object LTyr: TLabel
+          Left = 8
+          Top = 228
+          Width = 40
+          Height = 13
+          Caption = 'Tyrosine'
+        end
+        object LLeu: TLabel
+          Left = 8
+          Top = 252
+          Width = 38
+          Height = 13
+          Caption = 'Leucine'
+        end
+        object LIle: TLabel
+          Left = 8
+          Top = 276
+          Width = 48
+          Height = 13
+          Caption = 'Isoleucine'
+        end
+        object LVal: TLabel
+          Left = 8
+          Top = 300
+          Width = 29
+          Height = 13
+          Caption = 'Valine'
+        end
+        object LHis: TLabel
+          Left = 8
+          Top = 324
+          Width = 40
+          Height = 13
+          Caption = 'Histidine'
+        end
+        object LArg: TLabel
+          Left = 8
+          Top = 348
+          Width = 38
+          Height = 13
+          Caption = 'Arginine'
+        end
+        object GBTAA: TGroupBox
+          Left = 88
+          Top = 16
+          Width = 96
+          Height = 360
+          Caption = 'Content'
+          TabOrder = 0
+          object PBTVal: TPBNumEdit
+            Left = 24
+            Top = 280
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTValChange
+            TabOrder = 11
+          end
+          object PBTMAT2: TPBNumEdit
+            Left = 24
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBTLys: TPBNumEdit
+            Left = 24
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTLysChange
+            OnExit = PBTLysExit
+            TabOrder = 1
+          end
+          object PBTMet: TPBNumEdit
+            Left = 24
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTMetChange
+            TabOrder = 3
+          end
+          object PBTCys: TPBNumEdit
+            Left = 24
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTCysChange
+            TabOrder = 4
+          end
+          object PBTTrp: TPBNumEdit
+            Left = 24
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTTrpChange
+            TabOrder = 5
+          end
+          object PBTThr: TPBNumEdit
+            Left = 24
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTThrChange
+            TabOrder = 6
+          end
+          object PBTPhe: TPBNumEdit
+            Left = 24
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTPheChange
+            TabOrder = 7
+          end
+          object PBTTyr: TPBNumEdit
+            Left = 24
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTTyrChange
+            TabOrder = 8
+          end
+          object PBTLeu: TPBNumEdit
+            Left = 24
+            Top = 232
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTLeuChange
+            TabOrder = 9
+          end
+          object PBTIle: TPBNumEdit
+            Left = 24
+            Top = 256
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTIleChange
+            TabOrder = 10
+          end
+          object PBTArg: TPBNumEdit
+            Left = 24
+            Top = 328
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTArgChange
+            TabOrder = 13
+          end
+          object PBTHis: TPBNumEdit
+            Left = 24
+            Top = 304
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTHisChange
+            TabOrder = 12
+          end
+          object CBAAsLys: TCheckBox
+            Left = 72
+            Top = 66
+            Width = 17
+            Height = 17
+            Hint = 
+              'Check the checkbox to maintain a constant ratio between lysine a' +
+              'nd the other amino acids (ideal protein)'
+            TabStop = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 2
+            OnClick = CBAAsLysClick
+          end
+        end
+        object GBdAA: TGroupBox
+          Left = 192
+          Top = 16
+          Width = 176
+          Height = 360
+          Caption = 'Digestibility'
+          TabOrder = 1
+          object LdAAStd: TLabel
+            Left = 4
+            Top = 20
+            Width = 88
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Standardized'
+          end
+          object LdAAApp: TLabel
+            Left = 92
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Apparent'
+          end
+          object PBdArgStd: TPBNumEdit
+            Left = 28
+            Top = 328
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdArgStdChange
+            TabOrder = 12
+          end
+          object PBdMATStd: TPBNumEdit
+            Left = 28
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMATStdChange
+            TabOrder = 0
+          end
+          object PBdLysStd: TPBNumEdit
+            Left = 28
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdLysStdChange
+            TabOrder = 1
+          end
+          object PBdMetStd: TPBNumEdit
+            Left = 28
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMetStdChange
+            TabOrder = 2
+          end
+          object PBdCysStd: TPBNumEdit
+            Left = 28
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdCysStdChange
+            TabOrder = 3
+          end
+          object PBdTrpStd: TPBNumEdit
+            Left = 28
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdTrpStdChange
+            TabOrder = 4
+          end
+          object PBdThrStd: TPBNumEdit
+            Left = 28
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdThrStdChange
+            TabOrder = 5
+          end
+          object PBdPheStd: TPBNumEdit
+            Left = 28
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdPheStdChange
+            TabOrder = 6
+          end
+          object PBdTyrStd: TPBNumEdit
+            Left = 28
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdTyrStdChange
+            TabOrder = 7
+          end
+          object PBdLeuStd: TPBNumEdit
+            Left = 28
+            Top = 232
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdLeuStdChange
+            TabOrder = 8
+          end
+          object PBdIleStd: TPBNumEdit
+            Left = 28
+            Top = 256
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdIleStdChange
+            TabOrder = 9
+          end
+          object PBdValStd: TPBNumEdit
+            Left = 28
+            Top = 280
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdValStdChange
+            TabOrder = 10
+          end
+          object PBdHisStd: TPBNumEdit
+            Left = 28
+            Top = 304
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdHisStdChange
+            TabOrder = 11
+          end
+          object PBdMATApp: TPBNumEdit
+            Left = 112
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 13
+          end
+          object PBdLysApp: TPBNumEdit
+            Left = 112
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 14
+          end
+          object PBdMetApp: TPBNumEdit
+            Left = 112
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 15
+          end
+          object PBdCysApp: TPBNumEdit
+            Left = 112
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 16
+          end
+          object PBdTrpApp: TPBNumEdit
+            Left = 112
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 17
+          end
+          object PBdThrApp: TPBNumEdit
+            Left = 112
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 18
+          end
+          object PBdPheApp: TPBNumEdit
+            Left = 112
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 19
+          end
+          object PBdTyrApp: TPBNumEdit
+            Left = 112
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 20
+          end
+          object PBdLeuApp: TPBNumEdit
+            Left = 112
+            Top = 232
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 21
+          end
+          object PBdIleApp: TPBNumEdit
+            Left = 112
+            Top = 256
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 22
+          end
+          object PBdValApp: TPBNumEdit
+            Left = 112
+            Top = 280
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 23
+          end
+          object PBdHisApp: TPBNumEdit
+            Left = 112
+            Top = 304
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 24
+          end
+          object PBdArgApp: TPBNumEdit
+            Left = 112
+            Top = 328
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 25
+          end
+        end
+        object GBProt: TGroupBox
+          Left = 376
+          Top = 16
+          Width = 176
+          Height = 360
+          Caption = 'Ideal protein (% Lys)'
+          TabOrder = 2
+          object LProtStd: TLabel
+            Left = 4
+            Top = 20
+            Width = 88
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Standardized'
+          end
+          object LProtTot: TLabel
+            Left = 92
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Total'
+          end
+          object PBProtTrpStd: TPBNumEdit
+            Left = 28
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 3
+          end
+          object PBProtLysStd: TPBNumEdit
+            Left = 28
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBProtMetStd: TPBNumEdit
+            Left = 28
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBProtCysStd: TPBNumEdit
+            Left = 28
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 2
+          end
+          object PBProtThrStd: TPBNumEdit
+            Left = 28
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 4
+          end
+          object PBProtPheStd: TPBNumEdit
+            Left = 28
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 5
+          end
+          object PBProtTyrStd: TPBNumEdit
+            Left = 28
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 6
+          end
+          object PBProtLeuStd: TPBNumEdit
+            Left = 28
+            Top = 232
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 7
+          end
+          object PBProtIleStd: TPBNumEdit
+            Left = 28
+            Top = 256
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 8
+          end
+          object PBProtValStd: TPBNumEdit
+            Left = 28
+            Top = 280
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 9
+          end
+          object PBProtHisStd: TPBNumEdit
+            Left = 28
+            Top = 304
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 10
+          end
+          object PBProtArgStd: TPBNumEdit
+            Left = 28
+            Top = 328
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 11
+          end
+          object PBProtLysTot: TPBNumEdit
+            Left = 112
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 12
+          end
+          object PBProtMetTot: TPBNumEdit
+            Left = 112
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 13
+          end
+          object PBProtCysTot: TPBNumEdit
+            Left = 112
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 14
+          end
+          object PBProtTrpTot: TPBNumEdit
+            Left = 112
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 15
+          end
+          object PBProtThrTot: TPBNumEdit
+            Left = 112
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 16
+          end
+          object PBProtPheTot: TPBNumEdit
+            Left = 112
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 17
+          end
+          object PBProtTyrTot: TPBNumEdit
+            Left = 112
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 18
+          end
+          object PBProtLeuTot: TPBNumEdit
+            Left = 112
+            Top = 232
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 19
+          end
+          object PBProtIleTot: TPBNumEdit
+            Left = 112
+            Top = 256
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 20
+          end
+          object PBProtValTot: TPBNumEdit
+            Left = 112
+            Top = 280
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 21
+          end
+          object PBProtHisTot: TPBNumEdit
+            Left = 112
+            Top = 304
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 22
+          end
+          object PBProtArgTot: TPBNumEdit
+            Left = 112
+            Top = 328
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 23
+          end
+        end
+      end
+      object GBCompAA: TGroupBox
+        Left = 568
+        Top = 0
+        Width = 168
+        Height = 360
+        Caption = 'Additional information'
+        TabOrder = 1
+        object GBMetCys: TGroupBox
+          Left = 8
+          Top = 16
+          Width = 152
+          Height = 96
+          Hint = 'Total methionine and cystine'
+          Caption = 'Met + Cys'
+          TabOrder = 0
+          object LTMetCys: TLabel
+            Left = 8
+            Top = 20
+            Width = 37
+            Height = 13
+            Caption = 'Content'
+          end
+          object LdMetCys: TLabel
+            Left = 8
+            Top = 44
+            Width = 72
+            Height = 13
+            Caption = 'Std. digestibility'
+          end
+          object LProtMetCys: TLabel
+            Left = 8
+            Top = 68
+            Width = 79
+            Height = 13
+            Caption = 'Std. ideal protein'
+          end
+          object PBProtMetCysTot: TPBNumEdit
+            Left = 104
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 4
+            Visible = False
+          end
+          object PBdMetCysApp: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 3
+            Visible = False
+          end
+          object PBTMetCys: TPBNumEdit
+            Left = 104
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBdMetCysStd: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBProtMetCysStd: TPBNumEdit
+            Left = 104
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 2
+          end
+        end
+        object GBTrp: TGroupBox
+          Left = 8
+          Top = 208
+          Width = 152
+          Height = 72
+          Hint = 
+            'Ratio between tryptophan et neutral amino acids (Phe+Tyr+Ile+Leu' +
+            '+Val)'
+          Caption = 'Trp / neutral AA (%)'
+          TabOrder = 1
+          object LTrpTot: TLabel
+            Left = 8
+            Top = 44
+            Width = 24
+            Height = 13
+            Caption = 'Total'
+          end
+          object LTrpStd: TLabel
+            Left = 8
+            Top = 20
+            Width = 62
+            Height = 13
+            Caption = 'Standardized'
+          end
+          object PBTrpTot: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBTrpStd: TPBNumEdit
+            Left = 104
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+        end
+        object GBPheTyr: TGroupBox
+          Left = 8
+          Top = 112
+          Width = 152
+          Height = 96
+          Hint = 'Total phenylalanine and tyrosine'
+          Caption = 'Phe + Tyr'
+          TabOrder = 2
+          object LTPheTyr: TLabel
+            Left = 8
+            Top = 20
+            Width = 37
+            Height = 13
+            Caption = 'Content'
+          end
+          object LdPheTyr: TLabel
+            Left = 8
+            Top = 44
+            Width = 72
+            Height = 13
+            Caption = 'Std. digestibility'
+          end
+          object LProtPheTyr: TLabel
+            Left = 8
+            Top = 68
+            Width = 79
+            Height = 13
+            Caption = 'Std. ideal protein'
+          end
+          object PBProtPheTyrTot: TPBNumEdit
+            Left = 104
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 4
+          end
+          object PBdPheTyrApp: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 3
+          end
+          object PBTPheTyr: TPBNumEdit
+            Left = 104
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBdPheTyrStd: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBProtPheTyrStd: TPBNumEdit
+            Left = 104
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 2
+          end
+        end
+        object GBEAA: TGroupBox
+          Left = 8
+          Top = 280
+          Width = 152
+          Height = 72
+          Hint = 'Ratio between essential amino acid nitrogen and total nitrogen'
+          Caption = 'EAA-N / N (%)'
+          TabOrder = 3
+          object LEAATot: TLabel
+            Left = 8
+            Top = 44
+            Width = 24
+            Height = 13
+            Caption = 'Total'
+          end
+          object LEAAStd: TLabel
+            Left = 8
+            Top = 20
+            Width = 62
+            Height = 13
+            Caption = 'Standardized'
+          end
+          object PBEAATot: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBEAAStd: TPBNumEdit
+            Left = 104
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+        end
+      end
+    end
+    object TSAG: TTabSheet
+      HelpContext = 2300
+      Caption = 'Fatty acids'
+      ImageIndex = 2
+      object LAG: TLabel
+        Left = 8
+        Top = 308
+        Width = 101
+        Height = 13
+        Caption = 'Fatty acids (% of lipid)'
+      end
+      object LLip2: TLabel
+        Left = 8
+        Top = 284
+        Width = 75
+        Height = 13
+        Caption = 'Crude fat (g/kg)'
+      end
+      object LSatur: TLabel
+        Left = 328
+        Top = 284
+        Width = 114
+        Height = 13
+        Caption = 'Saturated fatty acids (%)'
+      end
+      object LMono: TLabel
+        Left = 328
+        Top = 308
+        Width = 154
+        Height = 13
+        Caption = 'Mono-unsaturated fatty acids (%)'
+      end
+      object LPoly: TLabel
+        Left = 328
+        Top = 332
+        Width = 147
+        Height = 13
+        Caption = 'Poly-unsaturated fatty acids (%)'
+      end
+      object LO6sO3: TLabel
+        Left = 328
+        Top = 356
+        Width = 97
+        Height = 13
+        Caption = 'Omega-6 / Omega-3'
+      end
+      object GBTAG: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 616
+        Height = 264
+        Caption = 'Content'
+        TabOrder = 0
+        object LC6C8C10: TLabel
+          Left = 8
+          Top = 36
+          Width = 80
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C6 + C8 + C10'
+        end
+        object LC24: TLabel
+          Left = 48
+          Top = 204
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C24'
+        end
+        object LC22: TLabel
+          Left = 48
+          Top = 180
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C22'
+        end
+        object LC20: TLabel
+          Left = 48
+          Top = 156
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C20'
+        end
+        object LC18: TLabel
+          Left = 48
+          Top = 132
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C18'
+        end
+        object LC14: TLabel
+          Left = 48
+          Top = 84
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C14'
+        end
+        object LC16: TLabel
+          Left = 48
+          Top = 108
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C16'
+        end
+        object LC12: TLabel
+          Left = 48
+          Top = 60
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C12'
+        end
+        object LCtot: TLabel
+          Left = 48
+          Top = 228
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'Total'
+        end
+        object GBAGtot: TGroupBox
+          Left = 104
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:m)'
+          TabOrder = 35
+        end
+        object GBAG0: TGroupBox
+          Left = 168
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:0)'
+          TabOrder = 36
+        end
+        object GBAG1: TGroupBox
+          Left = 232
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:1)'
+          TabOrder = 37
+        end
+        object GBAG2: TGroupBox
+          Left = 296
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:2)'
+          TabOrder = 38
+        end
+        object GBAG3: TGroupBox
+          Left = 360
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:3)'
+          TabOrder = 39
+        end
+        object GBAG4: TGroupBox
+          Left = 424
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:4)'
+          TabOrder = 40
+        end
+        object GBAG5: TGroupBox
+          Left = 488
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:5)'
+          TabOrder = 41
+        end
+        object GBAG6: TGroupBox
+          Left = 552
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:6)'
+          TabOrder = 42
+        end
+        object PBC12_tot: TPBNumEdit
+          Left = 112
+          Top = 56
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 2
+        end
+        object PBCtot_tot: TPBNumEdit
+          Left = 112
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 27
+        end
+        object PBC6C8C10_tot: TPBNumEdit
+          Left = 112
+          Top = 32
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 0
+        end
+        object PBC24_tot: TPBNumEdit
+          Left = 112
+          Top = 200
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 25
+        end
+        object PBC22_tot: TPBNumEdit
+          Left = 112
+          Top = 176
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 20
+        end
+        object PBC20_tot: TPBNumEdit
+          Left = 112
+          Top = 152
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 15
+        end
+        object PBC18_tot: TPBNumEdit
+          Left = 112
+          Top = 128
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 9
+        end
+        object PBC16_tot: TPBNumEdit
+          Left = 112
+          Top = 104
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 6
+        end
+        object PBC14_tot: TPBNumEdit
+          Left = 112
+          Top = 80
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 4
+        end
+        object PBC12_0: TPBNumEdit
+          Left = 176
+          Top = 56
+          Width = 40
+          Height = 21
+          Hint = 'Lauric acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC12_0Change
+          TabOrder = 3
+        end
+        object PBCtot_0: TPBNumEdit
+          Left = 176
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 28
+        end
+        object PBC6C8C10_0: TPBNumEdit
+          Left = 176
+          Top = 32
+          Width = 40
+          Height = 21
+          Hint = 'Caproic, caprylic and capric acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC6C8C10_0Change
+          TabOrder = 1
+        end
+        object PBC24_0: TPBNumEdit
+          Left = 176
+          Top = 200
+          Width = 40
+          Height = 21
+          Hint = 'Lignoceric acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC24_0Change
+          TabOrder = 26
+        end
+        object PBC22_0: TPBNumEdit
+          Left = 176
+          Top = 176
+          Width = 40
+          Height = 21
+          Hint = 'Behenic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC22_0Change
+          TabOrder = 21
+        end
+        object PBC20_0: TPBNumEdit
+          Left = 176
+          Top = 152
+          Width = 40
+          Height = 21
+          Hint = 'Arachidic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC20_0Change
+          TabOrder = 16
+        end
+        object PBC18_0: TPBNumEdit
+          Left = 176
+          Top = 128
+          Width = 40
+          Height = 21
+          Hint = 'Stearic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC18_0Change
+          TabOrder = 10
+        end
+        object PBC16_0: TPBNumEdit
+          Left = 176
+          Top = 104
+          Width = 40
+          Height = 21
+          Hint = 'Palmitic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC16_0Change
+          TabOrder = 7
+        end
+        object PBC14_0: TPBNumEdit
+          Left = 176
+          Top = 80
+          Width = 40
+          Height = 21
+          Hint = 'Myristic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC14_0Change
+          TabOrder = 5
+        end
+        object PBC16_1: TPBNumEdit
+          Left = 240
+          Top = 104
+          Width = 40
+          Height = 21
+          Hint = 'Palmitoleic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC16_1Change
+          TabOrder = 8
+        end
+        object PBCtot_1: TPBNumEdit
+          Left = 240
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 29
+        end
+        object PBC22_1: TPBNumEdit
+          Left = 240
+          Top = 176
+          Width = 40
+          Height = 21
+          Hint = 'Erucic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC22_1Change
+          TabOrder = 22
+        end
+        object PBC20_1: TPBNumEdit
+          Left = 240
+          Top = 152
+          Width = 40
+          Height = 21
+          Hint = 'Gadoleic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC20_1Change
+          TabOrder = 17
+        end
+        object PBC18_1: TPBNumEdit
+          Left = 240
+          Top = 128
+          Width = 40
+          Height = 21
+          Hint = 'Oleic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC18_1Change
+          TabOrder = 11
+        end
+        object PBC18_2: TPBNumEdit
+          Left = 304
+          Top = 128
+          Width = 40
+          Height = 21
+          Hint = 'Linoleic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC18_2Change
+          TabOrder = 12
+        end
+        object PBCtot_2: TPBNumEdit
+          Left = 304
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 30
+        end
+        object PBC18_3: TPBNumEdit
+          Left = 368
+          Top = 128
+          Width = 40
+          Height = 21
+          Hint = 'Linolenic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC18_3Change
+          TabOrder = 13
+        end
+        object PBCtot_3: TPBNumEdit
+          Left = 368
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 31
+        end
+        object PBC18_4: TPBNumEdit
+          Left = 432
+          Top = 128
+          Width = 40
+          Height = 21
+          Hint = 'Parinaric acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC18_4Change
+          TabOrder = 14
+        end
+        object PBCtot_4: TPBNumEdit
+          Left = 432
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 32
+        end
+        object PBC20_4: TPBNumEdit
+          Left = 432
+          Top = 152
+          Width = 40
+          Height = 21
+          Hint = 'Arachidonic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC20_4Change
+          TabOrder = 18
+        end
+        object PBC20_5: TPBNumEdit
+          Left = 496
+          Top = 152
+          Width = 40
+          Height = 21
+          Hint = 'Timnodonic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC20_5Change
+          TabOrder = 19
+        end
+        object PBCtot_5: TPBNumEdit
+          Left = 496
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 33
+        end
+        object PBC22_5: TPBNumEdit
+          Left = 496
+          Top = 176
+          Width = 40
+          Height = 21
+          Hint = 'Clupanodonic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC22_5Change
+          TabOrder = 23
+        end
+        object PBC22_6: TPBNumEdit
+          Left = 560
+          Top = 176
+          Width = 40
+          Height = 21
+          Hint = 'Docosa hexaenoic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC22_6Change
+          TabOrder = 24
+        end
+        object PBCtot_6: TPBNumEdit
+          Left = 560
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 34
+        end
+      end
+      object PBAG: TPBNumEdit
+        Left = 208
+        Top = 304
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 1
+        NumberFormat = Standard
+        OnChange = PBAGChange
+        TabOrder = 2
+      end
+      object PBLip2: TPBNumEdit
+        Left = 208
+        Top = 280
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 1
+        NumberFormat = Standard
+        TabOrder = 1
+      end
+      object PBSatur: TPBNumEdit
+        Left = 528
+        Top = 280
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 1
+        NumberFormat = Standard
+        TabOrder = 3
+      end
+      object PBMono: TPBNumEdit
+        Left = 528
+        Top = 304
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 1
+        NumberFormat = Standard
+        TabOrder = 4
+      end
+      object PBPoly: TPBNumEdit
+        Left = 528
+        Top = 328
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 1
+        NumberFormat = Standard
+        TabOrder = 5
+      end
+      object PBO6sO3: TPBNumEdit
+        Left = 528
+        Top = 352
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 1
+        NumberFormat = Standard
+        TabOrder = 6
+      end
+    end
+    object TSMineraux: TTabSheet
+      HelpContext = 2400
+      Caption = 'Minerals'
+      ImageIndex = 3
+      object LBilanCA: TLabel
+        Left = 8
+        Top = 260
+        Width = 147
+        Height = 13
+        Caption = 'Cation-anion balance (mEq/kg)'
+      end
+      object LBilanE: TLabel
+        Left = 8
+        Top = 284
+        Width = 137
+        Height = 13
+        Caption = 'Electrolyte balance (mEq/kg)'
+      end
+      object GBP: TGroupBox
+        Left = 416
+        Top = 0
+        Width = 216
+        Height = 240
+        Caption = 'Phosphorus digestion and metabolism'
+        TabOrder = 2
+        object LPdigG: TLabel
+          Left = 32
+          Top = 68
+          Width = 36
+          Height = 13
+          Caption = '- pellets'
+        end
+        object LPhytase: TLabel
+          Left = 8
+          Top = 116
+          Width = 137
+          Height = 13
+          Caption = 'Phytic acid phosphorus (% P)'
+        end
+        object LActPhytE: TLabel
+          Left = 32
+          Top = 164
+          Width = 102
+          Height = 13
+          Caption = '- endogenous (IU/kg)'
+        end
+        object LCasP: TLabel
+          Left = 8
+          Top = 212
+          Width = 31
+          Height = 13
+          Caption = 'Ca / P'
+        end
+        object LPtot: TLabel
+          Left = 8
+          Top = 20
+          Width = 82
+          Height = 13
+          Caption = 'Total phosphorus'
+        end
+        object LPdigF: TLabel
+          Left = 32
+          Top = 92
+          Width = 31
+          Height = 13
+          Caption = '- mash'
+        end
+        object LActPhytM: TLabel
+          Left = 32
+          Top = 188
+          Width = 84
+          Height = 13
+          Caption = '- microbial (IU/kg)'
+        end
+        object LActPhyt: TLabel
+          Left = 8
+          Top = 140
+          Width = 74
+          Height = 13
+          Caption = 'Phytase activity'
+        end
+        object LPdig: TLabel
+          Left = 8
+          Top = 44
+          Width = 104
+          Height = 13
+          Caption = 'Digestible phosphorus'
+        end
+        object PBPhytase: TPBNumEdit
+          Left = 168
+          Top = 112
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPhytaseChange
+          TabOrder = 3
+        end
+        object PBPdigG: TPBNumEdit
+          Left = 168
+          Top = 64
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBPdigGChange
+          TabOrder = 1
+        end
+        object PBActPhytE: TPBNumEdit
+          Left = 168
+          Top = 160
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBActPhytEChange
+          TabOrder = 4
+        end
+        object PBCasP: TPBNumEdit
+          Left = 168
+          Top = 208
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 6
+        end
+        object PBPtot: TPBNumEdit
+          Left = 168
+          Top = 16
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 0
+        end
+        object PBPdigF: TPBNumEdit
+          Left = 168
+          Top = 88
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBPdigFChange
+          TabOrder = 2
+        end
+        object PBActPhytM: TPBNumEdit
+          Left = 168
+          Top = 184
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBActPhytMChange
+          TabOrder = 5
+        end
+      end
+      object GBMacro: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 200
+        Height = 216
+        Caption = 'Macro-elements'
+        TabOrder = 0
+        object LCa: TLabel
+          Left = 8
+          Top = 36
+          Width = 59
+          Height = 13
+          Caption = 'Calcium (Ca)'
+        end
+        object LP: TLabel
+          Left = 8
+          Top = 60
+          Width = 72
+          Height = 13
+          Caption = 'Phosphorus (P)'
+        end
+        object LMg: TLabel
+          Left = 8
+          Top = 132
+          Width = 78
+          Height = 13
+          Caption = 'Magnesium (Mg)'
+        end
+        object LCl: TLabel
+          Left = 8
+          Top = 156
+          Width = 56
+          Height = 13
+          Caption = 'Chlorine (Cl)'
+        end
+        object LK: TLabel
+          Left = 8
+          Top = 108
+          Width = 64
+          Height = 13
+          Caption = 'Potassium (K)'
+        end
+        object LNa: TLabel
+          Left = 8
+          Top = 84
+          Width = 58
+          Height = 13
+          Caption = 'Sodium (Na)'
+        end
+        object LS: TLabel
+          Left = 8
+          Top = 180
+          Width = 43
+          Height = 13
+          Caption = 'Sulfur (S)'
+        end
+        object GBTMacro: TGroupBox
+          Left = 104
+          Top = 16
+          Width = 88
+          Height = 192
+          Caption = 'Content'
+          TabOrder = 0
+          object PBCa: TPBNumEdit
+            Left = 24
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBCaChange
+            TabOrder = 0
+          end
+          object PBP: TPBNumEdit
+            Left = 24
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBPChange
+            TabOrder = 1
+          end
+          object PBMg: TPBNumEdit
+            Left = 24
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBMgChange
+            TabOrder = 4
+          end
+          object PBCl: TPBNumEdit
+            Left = 24
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBClChange
+            TabOrder = 5
+          end
+          object PBK: TPBNumEdit
+            Left = 24
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBKChange
+            TabOrder = 3
+          end
+          object PBNa: TPBNumEdit
+            Left = 24
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBNaChange
+            TabOrder = 2
+          end
+          object PBS: TPBNumEdit
+            Left = 24
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBSChange
+            TabOrder = 6
+          end
+        end
+      end
+      object GBOligo: TGroupBox
+        Left = 208
+        Top = 0
+        Width = 200
+        Height = 240
+        Caption = 'Trace-elements'
+        TabOrder = 1
+        object LZn: TLabel
+          Left = 8
+          Top = 60
+          Width = 43
+          Height = 13
+          Caption = 'Zinc (Zn)'
+        end
+        object LCu: TLabel
+          Left = 8
+          Top = 36
+          Width = 56
+          Height = 13
+          Caption = 'Copper (Cu)'
+        end
+        object LFe: TLabel
+          Left = 8
+          Top = 108
+          Width = 39
+          Height = 13
+          Caption = 'Iron (Fe)'
+        end
+        object LMn: TLabel
+          Left = 8
+          Top = 84
+          Width = 80
+          Height = 13
+          Caption = 'Manganese (Mn)'
+        end
+        object LCo: TLabel
+          Left = 8
+          Top = 156
+          Width = 52
+          Height = 13
+          Caption = 'Cobalt (Co)'
+        end
+        object LSe: TLabel
+          Left = 8
+          Top = 132
+          Width = 65
+          Height = 13
+          Caption = 'Selenium (Se)'
+        end
+        object LI: TLabel
+          Left = 8
+          Top = 204
+          Width = 41
+          Height = 13
+          Caption = 'Iodine (I)'
+        end
+        object LMb: TLabel
+          Left = 8
+          Top = 180
+          Width = 76
+          Height = 13
+          Caption = 'Molybdene (Mo)'
+        end
+        object GBTOligo: TGroupBox
+          Left = 104
+          Top = 16
+          Width = 88
+          Height = 216
+          Caption = 'Content'
+          TabOrder = 0
+          object PBCu: TPBNumEdit
+            Left = 24
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBCuChange
+            TabOrder = 0
+          end
+          object PBFe: TPBNumEdit
+            Left = 24
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBFeChange
+            TabOrder = 3
+          end
+          object PBMn: TPBNumEdit
+            Left = 24
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBMnChange
+            TabOrder = 2
+          end
+          object PBZn: TPBNumEdit
+            Left = 24
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBZnChange
+            TabOrder = 1
+          end
+          object PBSe: TPBNumEdit
+            Left = 24
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBSeChange
+            TabOrder = 4
+          end
+          object PBI: TPBNumEdit
+            Left = 24
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBIChange
+            TabOrder = 7
+          end
+          object PBMb: TPBNumEdit
+            Left = 24
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBMbChange
+            TabOrder = 6
+          end
+          object PBCo: TPBNumEdit
+            Left = 24
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBCoChange
+            TabOrder = 5
+          end
+        end
+      end
+      object PBBilanCA: TPBNumEdit
+        Left = 208
+        Top = 256
+        Width = 56
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 0
+        NumberFormat = Standard
+        TabOrder = 3
+      end
+      object PBBilanE: TPBNumEdit
+        Left = 208
+        Top = 280
+        Width = 56
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 0
+        NumberFormat = Standard
+        TabOrder = 4
+      end
+    end
+    object TSFibres: TTabSheet
+      HelpContext = 2500
+      Caption = 'Fiber'
+      ImageIndex = 4
+      object GBFibres: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 144
+        Caption = 'Content'
+        TabOrder = 0
+        object LNDF: TLabel
+          Left = 8
+          Top = 44
+          Width = 22
+          Height = 13
+          Caption = 'NDF'
+        end
+        object LCB: TLabel
+          Left = 8
+          Top = 20
+          Width = 51
+          Height = 13
+          Caption = 'Crude fiber'
+        end
+        object LParois: TLabel
+          Left = 8
+          Top = 116
+          Width = 81
+          Height = 13
+          Caption = 'Total dietary fiber'
+        end
+        object LADL: TLabel
+          Left = 8
+          Top = 92
+          Width = 21
+          Height = 13
+          Caption = 'ADL'
+        end
+        object LADF: TLabel
+          Left = 8
+          Top = 68
+          Width = 21
+          Height = 13
+          Caption = 'ADF'
+        end
+        object PBParois: TPBNumEdit
+          Left = 128
+          Top = 112
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBParoisChange
+          TabOrder = 4
+        end
+        object PBADL: TPBNumEdit
+          Left = 128
+          Top = 88
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBADLChange
+          TabOrder = 3
+        end
+        object PBADF: TPBNumEdit
+          Left = 128
+          Top = 64
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBADFChange
+          TabOrder = 2
+        end
+        object PBNDF: TPBNumEdit
+          Left = 128
+          Top = 40
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBNDFChange
+          TabOrder = 1
+        end
+        object PBCB: TPBNumEdit
+          Left = 128
+          Top = 16
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBCBChange
+          TabOrder = 0
+        end
+      end
+      object LBRap: TListBox
+        Left = 200
+        Top = 8
+        Width = 104
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'as-fed'
+          'DM basis')
+        TabOrder = 1
+        Visible = False
+      end
+      object LBDig: TListBox
+        Left = 320
+        Top = 8
+        Width = 104
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'Digestibility'
+          'Digestible content')
+        TabOrder = 2
+        Visible = False
+      end
+      object LBdCompo: TListBox
+        Left = 320
+        Top = 40
+        Width = 64
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%')
+        TabOrder = 3
+        Visible = False
+      end
+      object LBdAA: TListBox
+        Left = 320
+        Top = 72
+        Width = 64
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%')
+        TabOrder = 4
+        Visible = False
+      end
+      object LBTCompo: TListBox
+        Left = 200
+        Top = 40
+        Width = 104
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%')
+        TabOrder = 5
+        Visible = False
+      end
+      object LBTAA: TListBox
+        Left = 200
+        Top = 72
+        Width = 104
+        Height = 43
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%'
+          '% CP')
+        TabOrder = 6
+        Visible = False
+      end
+      object LBTAG: TListBox
+        Left = 200
+        Top = 120
+        Width = 104
+        Height = 43
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%'
+          '% fatty acids')
+        TabOrder = 7
+        Visible = False
+      end
+      object LBTMacro: TListBox
+        Left = 200
+        Top = 168
+        Width = 104
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%')
+        TabOrder = 8
+        Visible = False
+      end
+      object LBTOligo: TListBox
+        Left = 200
+        Top = 200
+        Width = 104
+        Height = 17
+        ItemHeight = 13
+        Items.Strings = (
+          'mg/kg')
+        TabOrder = 9
+        Visible = False
+      end
+      object LBTFibres: TListBox
+        Left = 200
+        Top = 224
+        Width = 104
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%')
+        TabOrder = 10
+        Visible = False
+      end
+    end
+    object TSMatiere: TTabSheet
+      Hint = 'Composition of feed ingredients (g/kg feed)'
+      HelpContext = 2600
+      Caption = 'Feed ingredients'
+      ImageIndex = 5
+      DesignSize = (
+        736
+        387)
+      object SBPlus: TSpeedButton
+        Left = 272
+        Top = 128
+        Width = 24
+        Height = 24
+        Hint = 'Add the selected feed ingredient'
+        Glyph.Data = {
+          F6010000424DF601000000000000760000002800000030000000100000000100
+          04000000000080010000120B0000120B00001000000000000000000000000000
+          80000080000000808000800000008000800080800000C0C0C000808080000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDD88DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD88DDD
+          DDDDDDDDDD00888DDDDDDDDDDD88DDDDDDDDDDDDDD00888DDDDDDDDDDD0C0088
+          8DDDDDDDDD8D88DDDDDDDDDDDD0400888DDDDD88880CCC00888DDDDDDD8DDD88
+          DDDDDD8888044400888DD000000CCCCC0088D888888DDDDD88DDD00040044444
+          0088D0CCCCCCCCCCCC08D8DDDDDDDDDDDD8DD044444444444408D0CCCCCCCCCC
+          CC0DD8DDDDDDDDDDDD8DD04444444444440DD000000CCCCC00DDD888888DDDDD
+          88DDD0000004444400DDDDDDDD0CCC00DDDDDDDDDD8DDD88DDDDDDDDDD044400
+          DDDDDDDDDD0C00DDDDDDDDDDDD8D88DDDDDDDDDDDD0400DDDDDDDDDDDD00DDDD
+          DDDDDDDDDD88DDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+        NumGlyphs = 3
+        ParentShowHint = False
+        ShowHint = True
+        OnClick = SBPlusClick
+      end
+      object SBMoins: TSpeedButton
+        Left = 272
+        Top = 192
+        Width = 24
+        Height = 24
+        Hint = 'Delete the selected feed ingredient'
+        Glyph.Data = {
+          F6010000424DF601000000000000760000002800000030000000100000000100
+          04000000000080010000120B0000120B00001000000000000000000000000000
+          80000080000000808000800000008000800080800000C0C0C000808080000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDD88DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD88D
+          DDDDDDDDDDD8008DDDDDDDDDDDDD88DDDDDDDDDDDDD8008DDDDDDDDDD800C08D
+          DDDDDDDDDD88D8DDDDDDDDDDD800408DDDDDDDD800CCC0888888DDDD88DDD8DD
+          DDDDDDD8004440888888DD00CCCCC0000008DD88DDDDD88888DDDD0044444000
+          0008D0CCCCCCCCCCCC08D8DDDDDDDDDDD8DDD044444444444408D0CCCCCCCCCC
+          CC08D8DDDDDDDDDDD8DDD044444444444408DD00CCCCC000000DDD88DDDDD888
+          88DDDD0044444000000DDDDD00CCC0DDDDDDDDDD88DDD8DDDDDDDDDD004440DD
+          DDDDDDDDDD00C0DDDDDDDDDDDD88D8DDDDDDDDDDDD0040DDDDDDDDDDDDDD00DD
+          DDDDDDDDDDDD88DDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+        NumGlyphs = 3
+        ParentShowHint = False
+        ShowHint = True
+        OnClick = SBMoinsClick
+      end
+      object SBReplace: TSpeedButton
+        Left = 272
+        Top = 160
+        Width = 24
+        Height = 24
+        Hint = 'Replace the selected feed ingedient'
+        Glyph.Data = {
+          F6010000424DF601000000000000760000002800000030000000100000000100
+          04000000000080010000120B0000120B00001000000000000000000000000000
+          80000080000000808000800000008000800080800000C0C0C000808080000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDD8DDDD8DDDDDDDDDDDDDDDDDDDDDDDDDD8DDDD8
+          DDDDDDDDD08DDD088DDDDDDDD8DDDD8DDDDDDDDDD08DDD088DDDDDDD008DDD00
+          88DDDDDD88DDDD88DDDDDDDD008DDD0088DDDDD0C088880C088DDDD8D8DDDD8D
+          8DDDDDD040888804088DDD0CC000000CC088DD8DD888888DD8DDDD0440000004
+          4088D0CCCCCCCCCCCC08D8DDDDDDDDDDDD8DD044444444444408D0CCCCCCCCCC
+          CC0DD8DDDDDDDDDDDD8DD04444444444440DDD0CC000000CC0DDDD8DD888888D
+          D8DDDD044000000440DDDDD0C08DDD0C0DDDDDD8D8DDDD8D8DDDDDD0408DDD04
+          0DDDDDDD008DDD00DDDDDDDD88DDDD88DDDDDDDD008DDD00DDDDDDDDD0DDDD0D
+          DDDDDDDDD8DDDD8DDDDDDDDDD0DDDD0DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+        NumGlyphs = 3
+        ParentShowHint = False
+        ShowHint = True
+        OnClick = SBReplaceClick
+      end
+      object GBGauche: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 256
+        Height = 384
+        Anchors = [akLeft, akTop, akBottom]
+        Caption = 'List of feed ingredients'
+        TabOrder = 0
+        object LMSG: TLabel
+          Left = 8
+          Top = 312
+          Width = 48
+          Height = 13
+          Hint = 'Dry matter (g/kg as-fed)'
+          Caption = 'Dry matter'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LType: TLabel
+          Left = 8
+          Top = 20
+          Width = 24
+          Height = 13
+          Caption = 'Type'
+        end
+        object LMATG: TLabel
+          Left = 8
+          Top = 336
+          Width = 63
+          Height = 13
+          Hint = 'Crude protein (g/kg as-fed)'
+          Caption = 'Crude protein'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LdLysG: TLabel
+          Left = 8
+          Top = 360
+          Width = 75
+          Height = 13
+          Hint = 'Digestible lysine (g/kg as-fed)'
+          Caption = 'Digestible lysine'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LEDG: TLabel
+          Left = 184
+          Top = 312
+          Width = 15
+          Height = 13
+          Caption = 'DE'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LEMG: TLabel
+          Left = 184
+          Top = 336
+          Width = 16
+          Height = 13
+          Caption = 'ME'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LENG: TLabel
+          Left = 184
+          Top = 360
+          Width = 15
+          Height = 13
+          Caption = 'NE'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LBGauche: TListBox
+          Left = 8
+          Top = 40
+          Width = 240
+          Height = 264
+          Style = lbOwnerDrawFixed
+          ItemHeight = 13
+          Sorted = True
+          TabOrder = 1
+          OnClick = LBGaucheClick
+          OnDblClick = LBGaucheDblClick
+        end
+        object CBType: TComboBox
+          Left = 48
+          Top = 16
+          Width = 200
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          Text = '(All)'
+          OnChange = CBTypeChange
+          Items.Strings = (
+            '(All)'
+            'Cereals and cereal by-products'
+            'Protein and oil containing products'
+            'Oilseed meals'
+            'Other plant products'
+            'Animal products'
+            'Fats and oils'
+            'Free amino acids'
+            'Vitamin and mineral products'
+            'Not referenced')
+        end
+        object PBMSG: TPBNumEdit
+          Left = 96
+          Top = 308
+          Width = 40
+          Height = 21
+          Hint = 'Dry matter (g/kg as-fed)'
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 1
+          NumberFormat = Standard
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+        end
+        object PBMATG: TPBNumEdit
+          Left = 96
+          Top = 332
+          Width = 40
+          Height = 21
+          Hint = 'Crude protein (g/kg as-fed)'
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 1
+          NumberFormat = Standard
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 3
+        end
+        object PBdLysG: TPBNumEdit
+          Left = 96
+          Top = 356
+          Width = 40
+          Height = 21
+          Hint = 'Digestible lysine (g/kg as-fed)'
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 4
+        end
+        object PBEDG: TPBNumEdit
+          Left = 208
+          Top = 308
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 5
+        end
+        object PBEMG: TPBNumEdit
+          Left = 208
+          Top = 332
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 6
+        end
+        object PBENG: TPBNumEdit
+          Left = 208
+          Top = 356
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 7
+        end
+      end
+      object GBDroite: TGroupBox
+        Left = 312
+        Top = 0
+        Width = 336
+        Height = 384
+        Anchors = [akLeft, akTop, akBottom]
+        Caption = 'Composition of feed ingredients (g/kg feed)'
+        TabOrder = 1
+        object LMSD: TLabel
+          Left = 8
+          Top = 312
+          Width = 48
+          Height = 13
+          Caption = 'Dry matter'
+        end
+        object LQte: TLabel
+          Left = 232
+          Top = 24
+          Width = 39
+          Height = 13
+          Caption = 'Quantity'
+        end
+        object LTotal: TLabel
+          Left = 178
+          Top = 336
+          Width = 30
+          Height = 13
+          Caption = 'Total'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+        end
+        object SBHaut: TSpeedButton
+          Left = 304
+          Top = 40
+          Width = 24
+          Height = 24
+          Hint = 'Move the selected feed ingredient up in the list'
+          Glyph.Data = {
+            F6010000424DF601000000000000760000002800000030000000100000000100
+            04000000000080010000120B0000120B00001000000000000000000000000000
+            80000080000000808000800000008000800080800000C0C0C000808080000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDD8888D
+            DDDDDDDDDDDDDDDDDDDDDDDDDDD8888DDDDDDDDDDD00008DDDDDDDDDDD8888DD
+            DDDDDDDDDD00008DDDDDDDDDDD0CC08DDDDDDDDDDD8DD8DDDDDDDDDDDD04408D
+            DDDDDDDDDD0CC08DDDDDDDDDDD8DD8DDDDDDDDDDDD04408DDDDDDDDDDD0CC08D
+            DDDDDDDDDD8DD8DDDDDDDDDDDD04408DDDDDDDDD880CC08888DDDDDDDD8DD8DD
+            DDDDDDDD8804408888DDDDD0000CC00008DDDDD8888DD8888DDDDDD000044000
+            08DDDDD0CCCCCCCC0DDDDDD8DDDDDDDD8DDDDDD0444444440DDDDDDD0CCCCCC0
+            8DDDDDDD8DDDDDD8DDDDDDDD044444408DDDDDDD0CCCCCC0DDDDDDDD8DDDDDD8
+            DDDDDDDD04444440DDDDDDDDD0CCCC08DDDDDDDDD8DDDD8DDDDDDDDDD0444408
+            DDDDDDDDD0CCCC0DDDDDDDDDD8DDDD8DDDDDDDDDD044440DDDDDDDDDDD0CC08D
+            DDDDDDDDDD8DD8DDDDDDDDDDDD04408DDDDDDDDDDD0CC0DDDDDDDDDDDD8DD8DD
+            DDDDDDDDDD0440DDDDDDDDDDDDD00DDDDDDDDDDDDDD88DDDDDDDDDDDDDD00DDD
+            DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBHautClick
+        end
+        object SBBas: TSpeedButton
+          Left = 304
+          Top = 280
+          Width = 24
+          Height = 24
+          Hint = 'Move the selected feed ingredient down in the list'
+          Glyph.Data = {
+            F6010000424DF601000000000000760000002800000030000000100000000100
+            04000000000080010000120B0000120B00001000000000000000000000000000
+            80000080000000808000800000008000800080800000C0C0C000808080000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDD88DD
+            DDDDDDDDDDDDDDDDDDDDDDDDDDDD88DDDDDDDDDDDDD0088DDDDDDDDDDDD88DDD
+            DDDDDDDDDDD0088DDDDDDDDDDD0CC08DDDDDDDDDDD8DD8DDDDDDDDDDDD04408D
+            DDDDDDDDDD0CC088DDDDDDDDDD8DD8DDDDDDDDDDDD044088DDDDDDDDD0CCCC08
+            DDDDDDDDD8DDDD8DDDDDDDDDD0444408DDDDDDDDD0CCCC088DDDDDDDD8DDDD8D
+            DDDDDDDDD04444088DDDDDDD0CCCCCC08DDDDDDD8DDDDDD8DDDDDDDD04444440
+            8DDDDDDD0CCCCCC088DDDDDD8DDDDDD8DDDDDDDD0444444088DDDDD0CCCCCCCC
+            08DDDDD8DDDDDDDD8DDDDDD04444444408DDDDD0000CC0000DDDDDD8888DD888
+            8DDDDDD0000440000DDDDDDDDD0CC08DDDDDDDDDDD8DD8DDDDDDDDDDDD04408D
+            DDDDDDDDDD0CC08DDDDDDDDDDD8DD8DDDDDDDDDDDD04408DDDDDDDDDDD0CC08D
+            DDDDDDDDDD8DD8DDDDDDDDDDDD04408DDDDDDDDDDD0CC08DDDDDDDDDDD8DD8DD
+            DDDDDDDDDD04408DDDDDDDDDDD0000DDDDDDDDDDDD8888DDDDDDDDDDDD0000DD
+            DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBBasClick
+        end
+        object SBSortQte: TSpeedButton
+          Left = 304
+          Top = 144
+          Width = 24
+          Height = 24
+          Hint = 'Sort the list by incorporation rate'
+          Glyph.Data = {
+            F6010000424DF601000000000000760000002800000030000000100000000100
+            0400000000008001000000000000000000001000000000000000000000000000
+            80000080000000808000800000008000800080800000C0C0C000808080000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+            DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD0DDDDCCDDDD0DDDD8DDDD88DDD
+            D8DDDD0DDDD44DDDD0DDDD0DDDCDDCDDD0DDDD8DDD8DD8DDD8DDDD0DDD4DD4DD
+            D0DDD000DDCDDCDDD0DDD888DD8DD8DDD8DDD000DD4DD4DDD0DDD000DDCDDCDD
+            D0DDD888DD8DD8DDD8DDD000DD4DD4DDD0DD00000DCDDCDDD0DD88888D8DD8DD
+            D8DD00000D4DD4DDD0DDDD0DDDDCCDDDD0DDDD8DDDD88DDDD8DDDD0DDDD44DDD
+            D0DDDD0DDDDDDDDDD0DDDD8DDDDDDDDDD8DDDD0DDDDDDDDDD0DDDD0DDDDDDDDD
+            D0DDDD8DDDDDDDDDD8DDDD0DDDDDDDDDD0DDDD0DDDD99DDDD0DDDD8DDDD88DDD
+            D8DDDD0DDDD11DDDD0DDDD0DDD9DD9D00000DD8DDD8DD8D88888DD0DDD1DD1D0
+            0000DD0DDDDDD9DD000DDD8DDDDDD8DD888DDD0DDDDDD1DD000DDD0DDDD999DD
+            000DDD8DDDD888DD888DDD0DDDD111DD000DDD0DDD9DD9DDD0DDDD8DDD8DD8DD
+            D8DDDD0DDD1DD1DDD0DDDD0DDDD99DDDD0DDDD8DDDD88DDDD8DDDD0DDDD11DDD
+            D0DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBSortQteClick
+        end
+        object SBSortNom: TSpeedButton
+          Left = 304
+          Top = 176
+          Width = 24
+          Height = 24
+          Hint = 'Sort the list by name'
+          Glyph.Data = {
+            F6010000424DF601000000000000760000002800000030000000100000000100
+            0400000000008001000000000000000000001000000000000000000000000000
+            80000080000000808000800000008000800080800000C0C0C000808080000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+            DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD0DDD9999DDD0DDDD8DDD8888DD
+            D8DDDD0DDD1111DDD0DDDD0DDD9DDDDDD0DDDD8DDD8DDDDDD8DDDD0DDD1DDDDD
+            D0DDD000DDD9DDDDD0DDD888DDD8DDDDD8DDD000DDD1DDDDD0DDD000DDDD9DDD
+            D0DDD888DDDD8DDDD8DDD000DDDD1DDDD0DD00000DDDD9DDD0DD88888DDDD8DD
+            D8DD00000DDDD1DDD0DDDD0DDD9999DDD0DDDD8DDD8888DDD8DDDD0DDD1111DD
+            D0DDDD0DDDDDDDDDD0DDDD8DDDDDDDDDD8DDDD0DDDDDDDDDD0DDDD0DDDDDDDDD
+            D0DDDD8DDDDDDDDDD8DDDD0DDDDDDDDDD0DDDD0DDDCDDCDDD0DDDD8DDD8DD8DD
+            D8DDDD0DDD4DD4DDD0DDDD0DDDCDDCD00000DD8DDD8DD8D88888DD0DDD4DD4D0
+            0000DD0DDDCCCCDD000DDD8DDD8888DD888DDD0DDD4444DD000DDD0DDDCDDCDD
+            000DDD8DDD8DD8DD888DDD0DDD4DD4DD000DDD0DDDCDDCDDD0DDDD8DDD8DD8DD
+            D8DDDD0DDD4DD4DDD0DDDD0DDDDCCDDDD0DDDD8DDDD88DDDD8DDDD0DDDD44DDD
+            D0DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBSortNomClick
+        end
+        object LBDroite: TListBox
+          Left = 8
+          Top = 40
+          Width = 288
+          Height = 264
+          Style = lbOwnerDrawFixed
+          ItemHeight = 13
+          TabOrder = 0
+          OnClick = LBDroiteClick
+          OnDblClick = LBDroiteDblClick
+          OnDrawItem = LBDroiteDrawItem
+        end
+        object BBCalcul: TBitBtn
+          Left = 8
+          Top = 352
+          Width = 80
+          Height = 24
+          Hint = 
+            'Calculation of the chemical composition of the feed from the fee' +
+            'd ingredients'
+          Caption = 'Calculate'
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00337000000000
+            73333337777777773F333308888888880333337F3F3F3FFF7F33330808089998
+            0333337F737377737F333308888888880333337F3F3F3F3F7F33330808080808
+            0333337F737373737F333308888888880333337F3F3F3F3F7F33330808080808
+            0333337F737373737F333308888888880333337F3F3F3F3F7F33330808080808
+            0333337F737373737F333308888888880333337F3FFFFFFF7F33330800000008
+            0333337F7777777F7F333308000E0E080333337F7FFFFF7F7F33330800000008
+            0333337F777777737F333308888888880333337F333333337F33330888888888
+            03333373FFFFFFFF733333700000000073333337777777773333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = BBCalculClick
+        end
+        object PBMSD: TPBNumEdit
+          Left = 96
+          Top = 308
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBMSDChange
+          TabOrder = 3
+        end
+        object PBQte: TPBNumEdit
+          Left = 222
+          Top = 308
+          Width = 56
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBQteChange
+          OnKeyPress = PBQteKeyPress
+          TabOrder = 4
+        end
+        object PBTotal: TPBNumEdit
+          Left = 222
+          Top = 332
+          Width = 56
+          Height = 21
+          TabStop = False
+          Alignment = taRightJustify
+          Color = clBlack
+          Decimals = 3
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWhite
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          NumberFormat = Standard
+          OnChange = PBTotalChange
+          ParentFont = False
+          ReadOnly = True
+          TabOrder = 5
+        end
+        object BBGraph: TBitBtn
+          Left = 96
+          Top = 352
+          Width = 80
+          Height = 24
+          Hint = 'Contribution of feed ingredients to the chemical composition'
+          Caption = 'Graphs'
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
+            000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
+            033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
+            B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
+            C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
+            033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
+            3000773373FFFF73377733333700073333333333377777333333333333333333
+            3333333333333333333333333333333333333333333333333333}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          OnClick = BBGraphClick
+        end
+        object JvSGSort: TJvStringGrid
+          Left = 8
+          Top = 16
+          Width = 246
+          Height = 19
+          Ctl3D = False
+          DefaultColWidth = 48
+          DefaultRowHeight = 17
+          FixedCols = 0
+          RowCount = 1
+          FixedRows = 0
+          ParentCtl3D = False
+          ScrollBars = ssNone
+          TabOrder = 6
+          Visible = False
+          Alignment = taLeftJustify
+          FixedFont.Charset = DEFAULT_CHARSET
+          FixedFont.Color = clWindowText
+          FixedFont.Height = -11
+          FixedFont.Name = 'MS Sans Serif'
+          FixedFont.Style = []
+        end
+      end
+    end
+  end
+end
Index: UFError.dfm
===================================================================
--- UFError.dfm	(révision 0)
+++ UFError.dfm	(révision 3)
@@ -0,0 +1,102 @@
+object FError: TFError
+  Left = 200
+  Top = 200
+  HelpContext = 190
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Error(s) were found while loading the data'
+  ClientHeight = 368
+  ClientWidth = 592
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  DesignSize = (
+    592
+    368)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object LFolder: TLabel
+    Left = 8
+    Top = 12
+    Width = 40
+    Height = 13
+    Caption = 'Data set'
+  end
+  object LQuestion: TLabel
+    Left = 8
+    Top = 332
+    Width = 198
+    Height = 13
+    Anchors = [akLeft, akBottom]
+    Caption = 'Would you like delete the corrupted links?'
+  end
+  object LWarning: TLabel
+    Left = 8
+    Top = 348
+    Width = 251
+    Height = 13
+    Anchors = [akLeft, akBottom]
+    Caption = 'You then have to correct the data entries concerned.'
+  end
+  object MErrors: TMemo
+    Left = 8
+    Top = 32
+    Width = 576
+    Height = 296
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 0
+  end
+  object EFolder: TEdit
+    Left = 128
+    Top = 8
+    Width = 456
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    ReadOnly = True
+    TabOrder = 1
+  end
+  object BBYes: TBitBtn
+    Left = 328
+    Top = 336
+    Width = 80
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'Yes'
+    ModalResult = 6
+    NumGlyphs = 2
+    TabOrder = 2
+  end
+  object BBNo: TBitBtn
+    Left = 416
+    Top = 336
+    Width = 80
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'No'
+    ModalResult = 7
+    NumGlyphs = 2
+    TabOrder = 3
+  end
+  object BBHelp: TBitBtn
+    Left = 504
+    Top = 335
+    Width = 80
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'Help'
+    NumGlyphs = 2
+    TabOrder = 4
+    OnClick = BBHelpClick
+  end
+end
Index: UFSeqAliP.dfm
===================================================================
--- UFSeqAliP.dfm	(révision 0)
+++ UFSeqAliP.dfm	(révision 3)
@@ -0,0 +1,1051 @@
+object FSeqAliP: TFSeqAliP
+  Left = 165
+  Top = 156
+  HelpContext = 5100
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Feed sequence plan for growing pigs'
+  ClientHeight = 432
+  ClientWidth = 616
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBSeqAli: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 616
+    Height = 48
+    Align = alTop
+    Caption = 'Feed sequence plan'
+    TabOrder = 0
+    object SBAddSeqAli: TSpeedButton
+      Left = 264
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Add a feed sequence plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000800000800000800000800000800000
+        8000008000008000008000008000008000008000008000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBAddSeqAliClick
+    end
+    object SBDelSeqAli: TSpeedButton
+      Left = 296
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Delete the current feed sequence plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF0000000000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBDelSeqAliClick
+    end
+    object SBRename: TSpeedButton
+      Left = 328
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Rename the current feed sequence plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FF80808080808080
+        8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFF800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFF0000FFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFF0000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FF808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFF800000FFFFFFFFFFFF800000FF
+        FFFFFFFFFF800000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FF80808080808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFF800000800000800000800000800000800000800000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBRenameClick
+    end
+    object SBComment: TSpeedButton
+      Left = 360
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 
+        'Add additional information to the current feed sequence plan (co' +
+        'mment)'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        00000000000000000000000000000000000000FF0000FFFF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000080000080FF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF
+        FF0000FF0000FF0000FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00080
+        80000080000080000080FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF0000FF000080FFFF0000FF0000FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080
+        80808080808080808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0800000800000008080000080000080FF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00
+        00FF000080FFFFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000
+        00800000008080FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0800000800000800000800000800000FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF00
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FF808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000008000008000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+        0000800000800000800000800000000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0800000800000800000800000800000C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFF4080FFFF0000FF
+        0000FF0000FF0000FFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FF808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C000408080000080
+        0000800000800000C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFF4080FF4080FFFF0000FF0000FFFFFFFFFFFFFFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80808080808080
+        8080808080FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0004080004080800000800000C0C0C0C0C0C0C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF0000004080FF4080FF40
+        80FFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C000000000408000408000
+        4080C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080FF00FFFF
+        00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0000000000000C0C0C0C0C0C0C0C0C00000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBCommentClick
+    end
+    object SBSave: TSpeedButton
+      Left = 392
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Save the current feed sequence plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000C0C0C0C0C0C0000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000808080808080000000800000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF8080808080808080808080808080808080808080808080808080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000000000800000000000FF00FFFF00FF000000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF000000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000FF0000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080808080808080FF00
+        FFFF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000800000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00000000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00000000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080000000FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBSaveClick
+    end
+    object SBPrint: TSpeedButton
+      Left = 424
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'View the report for the current feed sequence plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+        808080808080808080808080808080808080808080808080808080FF00FFFF00
+        FF808080808080FF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+        00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+        00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+        C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+        FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+        C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+        8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+        808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBPrintClick
+    end
+    object JvEnterAsTab: TJvEnterAsTab
+      Left = 456
+      Top = 16
+      Width = 28
+      Height = 28
+    end
+    object CBSeqAli: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBSeqAliChange
+    end
+  end
+  object PSeqAli: TPanel
+    Left = 0
+    Top = 48
+    Width = 616
+    Height = 384
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 1
+    Visible = False
+    object GBRule: TGroupBox
+      Left = 0
+      Top = 0
+      Width = 616
+      Height = 200
+      Hint = 
+        'The first rule starts at the beginning of a simulation and the l' +
+        'ast rule terminates at the end of a simulation'
+      Align = alTop
+      Caption = 'Rules'
+      TabOrder = 0
+      DesignSize = (
+        616
+        200)
+      object LModeFin: TLabel
+        Left = 32
+        Top = 16
+        Width = 101
+        Height = 13
+        Caption = 'Termination condition'
+      end
+      object LNo: TLabel
+        Left = 16
+        Top = 16
+        Width = 7
+        Height = 13
+        Caption = '#'
+      end
+      object SBAddRule: TSpeedButton
+        Left = 16
+        Top = 168
+        Width = 80
+        Height = 24
+        Hint = 'Insert a rule before the selected rule'
+        Caption = 'Insert'
+        Glyph.Data = {
+          36090000424D3609000000000000360000002800000030000000100000000100
+          18000000000000090000120B0000120B00000000000000000000FF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+          8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+          FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+          00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+          FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+          8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+          0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+          FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+          80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+          0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+          FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+          0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+          8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+          FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+          00008000008000000000FF00FFFF00FFFF00FF00000000000000000000000000
+          000000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FFFF00FF
+          FF00FF8080808080808080808080808080808080808080808080808080808080
+          80808080808080808080FF00FFFF00FFFF00FF00000000000000000000000000
+          0000008000008000008000008000008000008000008000000000FF00FFFF00FF
+          FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+          0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+          8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+          FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+          00008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+          0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+          FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+          80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+          0000000000000000000000000000000000000000000000000000FF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+          8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+          FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+          00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+          FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+          8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+          00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+          FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+          00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+        NumGlyphs = 3
+        ParentShowHint = False
+        ShowHint = True
+        OnClick = SBAddRuleClick
+      end
+      object SBDelRule: TSpeedButton
+        Left = 104
+        Top = 168
+        Width = 80
+        Height = 24
+        Hint = 'Delete the selected rule'
+        Caption = 'Delete'
+        Glyph.Data = {
+          36090000424D3609000000000000360000002800000030000000100000000100
+          18000000000000090000120B0000120B00000000000000000000FF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+          8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+          FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+          00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+          FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+          8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+          0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+          FF00FF808080808080808080808080808080808080808080808080808080FF00
+          FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+          0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+          FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+          FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+          8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+          FF00FF000000000080000080000080000080000080000080000080000000FF00
+          FFFF00FF000000FF00FFFF00FFFF00FFFF00FF0000000000FF0000FF0000FF00
+          00FF0000FF0000FF0000FF000000000000000000000000000000FF00FFFF00FF
+          FF00FF8080808080808080808080808080808080808080808080808080808080
+          80808080808080808080FF00FFFF00FFFF00FF00000000008000008000008000
+          0080000080000080000080000000000000000000000000000000FF00FFFF00FF
+          FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+          FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+          8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+          FF00FF000000000080000080000080000080000080000080000080000000FF00
+          FFFF00FF000000FF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+          0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+          FF00FF808080808080808080808080808080808080808080808080808080FF00
+          FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+          0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+          8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+          FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+          00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+          FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+          8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+          000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+          00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+          FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+          FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+          00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+        NumGlyphs = 3
+        ParentShowHint = False
+        ShowHint = True
+        OnClick = SBDelRuleClick
+      end
+      object LAli: TLabel
+        Left = 160
+        Top = 16
+        Width = 61
+        Height = 13
+        Caption = 'Feed(s) used'
+      end
+      object LBRule: TListBox
+        Left = 8
+        Top = 32
+        Width = 600
+        Height = 134
+        Style = lbOwnerDrawFixed
+        Anchors = [akLeft, akTop, akRight]
+        ItemHeight = 13
+        TabOrder = 0
+        OnClick = LBRuleClick
+        OnDrawItem = LBRuleDrawItem
+      end
+    end
+    object GBParam: TGroupBox
+      Left = 0
+      Top = 200
+      Width = 616
+      Height = 184
+      Align = alBottom
+      Anchors = [akLeft, akTop, akRight]
+      Caption = 'Parameters of the selected rule'
+      TabOrder = 1
+      object GBEnd: TGroupBox
+        Left = 8
+        Top = 16
+        Width = 424
+        Height = 48
+        Hint = 'Termination conditition of the selected rule'
+        Caption = 'Termination condition'
+        TabOrder = 0
+        object LUnitFin: TLabel
+          Left = 175
+          Top = 20
+          Width = 17
+          Height = 13
+          Caption = 'unit'
+        end
+        object PBValFin: TPBNumEdit
+          Left = 136
+          Top = 16
+          Width = 33
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBValFinChange
+          TabOrder = 1
+        end
+        object CBModeFin: TComboBox
+          Left = 8
+          Top = 16
+          Width = 120
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 0
+          OnChange = CBModeFinChange
+          Items.Strings = (
+            'Duration'
+            'Age'
+            'Body weight'
+            'Total feed usage')
+        end
+      end
+      object GBAli: TGroupBox
+        Left = 8
+        Top = 64
+        Width = 424
+        Height = 112
+        Hint = 'Feed(s) used during the selected rule'
+        Caption = 'Feed(s) used'
+        TabOrder = 1
+        object LAli1: TLabel
+          Left = 8
+          Top = 60
+          Width = 33
+          Height = 13
+          Caption = 'Feed 1'
+        end
+        object LAli2: TLabel
+          Left = 8
+          Top = 84
+          Width = 33
+          Height = 13
+          Caption = 'Feed 2'
+        end
+        object CBTwoAli: TCheckBox
+          Left = 8
+          Top = 18
+          Width = 80
+          Height = 17
+          Hint = 
+            'Check the checkbox if two feeds will be used during the selected' +
+            ' rule'
+          TabStop = False
+          Caption = '2 feeds'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = CBTwoAliClick
+        end
+        object CBTransit: TCheckBox
+          Left = 312
+          Top = 18
+          Width = 80
+          Height = 17
+          Hint = 'Check the checkbox if the two feeds are used in a varying ratio'
+          TabStop = False
+          Caption = 'Transition'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = CBTransitClick
+        end
+        object CBAli1: TComboBox
+          Left = 64
+          Top = 56
+          Width = 240
+          Height = 21
+          AutoCompleteDelay = 1500
+          Style = csDropDownList
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 2
+          OnChange = CBAli1Change
+        end
+        object PInit: TPanel
+          Left = 312
+          Top = 40
+          Width = 48
+          Height = 64
+          BevelOuter = bvNone
+          TabOrder = 4
+          object LInit: TLabel
+            Left = 8
+            Top = 0
+            Width = 24
+            Height = 13
+            Caption = 'Initial'
+          end
+          object LAli1Init: TLabel
+            Left = 36
+            Top = 20
+            Width = 8
+            Height = 13
+            Caption = '%'
+          end
+          object LAli2Init: TLabel
+            Left = 36
+            Top = 44
+            Width = 8
+            Height = 13
+            Caption = '%'
+          end
+          object PBAli1Init: TPBNumEdit
+            Left = 0
+            Top = 16
+            Width = 32
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 0
+            MaxValue = 100.000000000000000000
+            NumberFormat = Standard
+            OnChange = PBAli1InitChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+          end
+          object PBAli2Init: TPBNumEdit
+            Left = 0
+            Top = 40
+            Width = 32
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 0
+            MaxValue = 100.000000000000000000
+            NumberFormat = Standard
+            TabOrder = 1
+            Value = 100.000000000000000000
+          end
+        end
+        object PFin: TPanel
+          Left = 368
+          Top = 40
+          Width = 48
+          Height = 64
+          BevelOuter = bvNone
+          TabOrder = 5
+          object LFin: TLabel
+            Left = 8
+            Top = 0
+            Width = 22
+            Height = 13
+            Caption = 'Final'
+          end
+          object LAli1Fin: TLabel
+            Left = 36
+            Top = 20
+            Width = 8
+            Height = 13
+            Caption = '%'
+          end
+          object LAli2Fin: TLabel
+            Left = 36
+            Top = 44
+            Width = 8
+            Height = 13
+            Caption = '%'
+          end
+          object PBAli1Fin: TPBNumEdit
+            Left = 0
+            Top = 16
+            Width = 32
+            Height = 21
+            Hint = 
+              'Percentage of feed 1 in the ration at the end of the selected ru' +
+              'le'
+            Alignment = taRightJustify
+            Decimals = 0
+            MaxValue = 100.000000000000000000
+            NumberFormat = Standard
+            OnChange = PBAli1FinChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+          end
+          object PBAli2Fin: TPBNumEdit
+            Left = 0
+            Top = 40
+            Width = 32
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 0
+            MaxValue = 100.000000000000000000
+            NumberFormat = Standard
+            TabOrder = 1
+            Value = 100.000000000000000000
+          end
+        end
+        object CBAli2: TComboBox
+          Left = 64
+          Top = 80
+          Width = 240
+          Height = 21
+          AutoCompleteDelay = 1500
+          Style = csDropDownList
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 3
+          OnChange = CBAli2Change
+        end
+      end
+    end
+  end
+end
Index: UFSeqAliT.dfm
===================================================================
--- UFSeqAliT.dfm	(révision 0)
+++ UFSeqAliT.dfm	(révision 3)
@@ -0,0 +1,1057 @@
+object FSeqAliT: TFSeqAliT
+  Left = 165
+  Top = 156
+  HelpContext = 4100
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Feed sequence plan for sows'
+  ClientHeight = 460
+  ClientWidth = 616
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBSeqAli: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 616
+    Height = 48
+    Align = alTop
+    Caption = 'Feed sequence plan'
+    TabOrder = 0
+    object SBAddSeqAli: TSpeedButton
+      Left = 264
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Add a feed sequence plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000800000800000800000800000800000
+        8000008000008000008000008000008000008000008000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBAddSeqAliClick
+    end
+    object SBDelSeqAli: TSpeedButton
+      Left = 296
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Delete the current feed sequence plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF0000000000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBDelSeqAliClick
+    end
+    object SBRename: TSpeedButton
+      Left = 328
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Rename the current feed sequence plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FF80808080808080
+        8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFF800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFF0000FFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFF0000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FF808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFF800000FFFFFFFFFFFF800000FF
+        FFFFFFFFFF800000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FF80808080808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFF800000800000800000800000800000800000800000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBRenameClick
+    end
+    object SBComment: TSpeedButton
+      Left = 360
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 
+        'Add additional information to the current feed sequence plan (co' +
+        'mment)'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        00000000000000000000000000000000000000FF0000FFFF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000080000080FF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF
+        FF0000FF0000FF0000FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00080
+        80000080000080000080FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF0000FF000080FFFF0000FF0000FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080
+        80808080808080808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0800000800000008080000080000080FF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00
+        00FF000080FFFFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000
+        00800000008080FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0800000800000800000800000800000FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF00
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FF808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000008000008000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+        0000800000800000800000800000000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0800000800000800000800000800000C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFF4080FFFF0000FF
+        0000FF0000FF0000FFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FF808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C000408080000080
+        0000800000800000C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFF4080FF4080FFFF0000FF0000FFFFFFFFFFFFFFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80808080808080
+        8080808080FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0004080004080800000800000C0C0C0C0C0C0C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF0000004080FF4080FF40
+        80FFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C000000000408000408000
+        4080C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080FF00FFFF
+        00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0000000000000C0C0C0C0C0C0C0C0C00000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBCommentClick
+    end
+    object SBSave: TSpeedButton
+      Left = 392
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Save the current feed sequence plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000C0C0C0C0C0C0000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000808080808080000000800000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF8080808080808080808080808080808080808080808080808080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000000000800000000000FF00FFFF00FF000000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF000000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000FF0000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080808080808080FF00
+        FFFF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000800000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00000000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00000000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080000000FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBSaveClick
+    end
+    object SBPrint: TSpeedButton
+      Left = 424
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'View the report for the current feed sequence plan'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+        808080808080808080808080808080808080808080808080808080FF00FFFF00
+        FF808080808080FF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+        00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+        00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+        C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+        FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+        C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+        8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+        808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBPrintClick
+    end
+    object JvEnterAsTab: TJvEnterAsTab
+      Left = 456
+      Top = 16
+      Width = 28
+      Height = 28
+    end
+    object CBSeqAli: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBSeqAliChange
+    end
+  end
+  object TC: TTabControl
+    Left = 0
+    Top = 48
+    Width = 616
+    Height = 412
+    Align = alClient
+    HotTrack = True
+    TabOrder = 1
+    Tabs.Strings = (
+      'Gestation'
+      'Lactation'
+      'IWC')
+    TabIndex = 0
+    Visible = False
+    OnChange = TCChange
+    object PSeqAli: TPanel
+      Left = 4
+      Top = 24
+      Width = 608
+      Height = 384
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object GBRule: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 608
+        Height = 200
+        Hint = 
+          'The first rule starts at the beginning of a simulation and the l' +
+          'ast rule terminates at the end of a simulation'
+        Align = alTop
+        Caption = 'Rules'
+        TabOrder = 0
+        DesignSize = (
+          608
+          200)
+        object LModeFin: TLabel
+          Left = 32
+          Top = 16
+          Width = 101
+          Height = 13
+          Caption = 'Termination condition'
+        end
+        object LNo: TLabel
+          Left = 16
+          Top = 16
+          Width = 7
+          Height = 13
+          Caption = '#'
+        end
+        object SBAddRule: TSpeedButton
+          Left = 16
+          Top = 168
+          Width = 80
+          Height = 24
+          Hint = 'Insert a rule before the selected rule'
+          Caption = 'Insert'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+            8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+            00008000008000000000FF00FFFF00FFFF00FF00000000000000000000000000
+            000000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FF00000000000000000000000000
+            0000008000008000008000008000008000008000008000000000FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+            0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+            8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+            FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+            00008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+            0000000000000000000000000000000000000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBAddRuleClick
+        end
+        object SBDelRule: TSpeedButton
+          Left = 104
+          Top = 168
+          Width = 80
+          Height = 24
+          Hint = 'Delete the selected rule'
+          Caption = 'Delete'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000120B0000120B00000000000000000000FF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+            8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+            FF00FF000000000080000080000080000080000080000080000080000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF0000000000FF0000FF0000FF00
+            00FF0000FF0000FF0000FF000000000000000000000000000000FF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080808080808080FF00FFFF00FFFF00FF00000000008000008000008000
+            0080000080000080000080000000000000000000000000000000FF00FFFF00FF
+            FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+            8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+            FF00FF000000000080000080000080000080000080000080000080000000FF00
+            FFFF00FF000000FF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF808080808080808080808080808080808080808080808080808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+            0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+            8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+            000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBDelRuleClick
+        end
+        object LAli: TLabel
+          Left = 160
+          Top = 16
+          Width = 61
+          Height = 13
+          Caption = 'Feed(s) used'
+        end
+        object LBRule: TListBox
+          Left = 8
+          Top = 32
+          Width = 592
+          Height = 134
+          Style = lbOwnerDrawFixed
+          Anchors = [akLeft, akTop, akRight]
+          ItemHeight = 13
+          TabOrder = 0
+          OnClick = LBRuleClick
+          OnDrawItem = LBRuleDrawItem
+        end
+      end
+      object GBParam: TGroupBox
+        Left = 0
+        Top = 200
+        Width = 608
+        Height = 184
+        Align = alBottom
+        Caption = 'Parameters of the selected rule'
+        TabOrder = 1
+        object GBEnd: TGroupBox
+          Left = 8
+          Top = 16
+          Width = 424
+          Height = 48
+          Hint = 'Termination conditition of the selected rule'
+          Caption = 'Termination condition'
+          TabOrder = 0
+          object LUnitFin: TLabel
+            Left = 176
+            Top = 20
+            Width = 6
+            Height = 13
+            Caption = 'd'
+          end
+          object PBValFin: TPBNumEdit
+            Left = 136
+            Top = 16
+            Width = 33
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 0
+            NumberFormat = Standard
+            OnChange = PBValFinChange
+            TabOrder = 1
+          end
+          object CBModeFin: TComboBox
+            Left = 8
+            Top = 16
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            Enabled = False
+            ItemHeight = 13
+            ItemIndex = 0
+            TabOrder = 0
+            Text = 'Duration'
+            Items.Strings = (
+              'Duration')
+          end
+        end
+        object GBAli: TGroupBox
+          Left = 8
+          Top = 64
+          Width = 424
+          Height = 112
+          Hint = 'Feed(s) used during the selected rule'
+          Caption = 'Feed(s) used'
+          TabOrder = 1
+          object LAli1: TLabel
+            Left = 8
+            Top = 60
+            Width = 33
+            Height = 13
+            Caption = 'Feed 1'
+          end
+          object LAli2: TLabel
+            Left = 8
+            Top = 84
+            Width = 33
+            Height = 13
+            Caption = 'Feed 2'
+          end
+          object CBTwoAli: TCheckBox
+            Left = 8
+            Top = 16
+            Width = 80
+            Height = 17
+            Hint = 
+              'Check the checkbox if two feeds will be used during the selected' +
+              ' rule'
+            TabStop = False
+            Caption = '2 feeds'
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            OnClick = CBTwoAliClick
+          end
+          object CBTransit: TCheckBox
+            Left = 312
+            Top = 16
+            Width = 80
+            Height = 17
+            Hint = 'Check the checkbox if the two feeds are used in a varying ratio'
+            TabStop = False
+            Caption = 'Transition'
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 1
+            OnClick = CBTransitClick
+          end
+          object CBAli1: TComboBox
+            Left = 64
+            Top = 56
+            Width = 240
+            Height = 21
+            AutoCompleteDelay = 1500
+            Style = csDropDownList
+            ItemHeight = 13
+            ParentShowHint = False
+            ShowHint = True
+            Sorted = True
+            TabOrder = 2
+            OnChange = CBAli1Change
+          end
+          object PInit: TPanel
+            Left = 312
+            Top = 40
+            Width = 48
+            Height = 64
+            BevelOuter = bvNone
+            TabOrder = 4
+            object LInit: TLabel
+              Left = 8
+              Top = 0
+              Width = 24
+              Height = 13
+              Caption = 'Initial'
+            end
+            object LAli1Init: TLabel
+              Left = 36
+              Top = 20
+              Width = 8
+              Height = 13
+              Caption = '%'
+            end
+            object LAli2Init: TLabel
+              Left = 36
+              Top = 44
+              Width = 8
+              Height = 13
+              Caption = '%'
+            end
+            object PBAli1Init: TPBNumEdit
+              Left = 0
+              Top = 16
+              Width = 33
+              Height = 21
+              Alignment = taRightJustify
+              Decimals = 0
+              MaxValue = 100.000000000000000000
+              NumberFormat = Standard
+              OnChange = PBAli1InitChange
+              TabOrder = 0
+            end
+            object PBAli2Init: TPBNumEdit
+              Left = 0
+              Top = 40
+              Width = 33
+              Height = 21
+              Alignment = taRightJustify
+              Enabled = False
+              Decimals = 0
+              MaxValue = 100.000000000000000000
+              NumberFormat = Standard
+              TabOrder = 1
+              Value = 100.000000000000000000
+            end
+          end
+          object PFin: TPanel
+            Left = 368
+            Top = 40
+            Width = 48
+            Height = 64
+            BevelOuter = bvNone
+            TabOrder = 5
+            object LFin: TLabel
+              Left = 8
+              Top = 0
+              Width = 22
+              Height = 13
+              Caption = 'Final'
+            end
+            object LAli1Fin: TLabel
+              Left = 36
+              Top = 20
+              Width = 8
+              Height = 13
+              Caption = '%'
+            end
+            object LAli2Fin: TLabel
+              Left = 36
+              Top = 44
+              Width = 8
+              Height = 13
+              Caption = '%'
+            end
+            object PBAli1Fin: TPBNumEdit
+              Left = 0
+              Top = 16
+              Width = 33
+              Height = 21
+              Alignment = taRightJustify
+              Decimals = 0
+              MaxValue = 100.000000000000000000
+              NumberFormat = Standard
+              OnChange = PBAli1FinChange
+              TabOrder = 0
+            end
+            object PBAli2Fin: TPBNumEdit
+              Left = 0
+              Top = 40
+              Width = 33
+              Height = 21
+              Alignment = taRightJustify
+              Enabled = False
+              Decimals = 0
+              MaxValue = 100.000000000000000000
+              NumberFormat = Standard
+              TabOrder = 1
+              Value = 100.000000000000000000
+            end
+          end
+          object CBAli2: TComboBox
+            Left = 64
+            Top = 80
+            Width = 240
+            Height = 21
+            AutoCompleteDelay = 1500
+            Style = csDropDownList
+            ItemHeight = 13
+            ParentShowHint = False
+            ShowHint = True
+            Sorted = True
+            TabOrder = 3
+            OnChange = CBAli2Change
+          end
+        end
+      end
+    end
+  end
+end
Index: UFConfig.dfm
===================================================================
--- UFConfig.dfm	(révision 0)
+++ UFConfig.dfm	(révision 3)
@@ -0,0 +1,1182 @@
+object FConfig: TFConfig
+  Left = 160
+  Top = 160
+  HelpContext = 100
+  Caption = 'Configuration'
+  ClientHeight = 436
+  ClientWidth = 480
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PC: TPageControl
+    Left = 0
+    Top = 0
+    Width = 480
+    Height = 396
+    ActivePage = TSGeneral
+    Align = alClient
+    TabOrder = 0
+    object TSGeneral: TTabSheet
+      Caption = 'General'
+      ImageIndex = 1
+      object GBFolder: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 472
+        Height = 48
+        Align = alTop
+        Caption = 'Data directory'
+        TabOrder = 0
+        object SBFolder: TSpeedButton
+          Left = 8
+          Top = 16
+          Width = 21
+          Height = 21
+          Hint = 'Select a data directory'
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00555555555555
+            5555555555555555555555555555555555555555555555555555555555555555
+            555555555555555555555555555555555555555FFFFFFFFFF555550000000000
+            55555577777777775F55500B8B8B8B8B05555775F555555575F550F0B8B8B8B8
+            B05557F75F555555575F50BF0B8B8B8B8B0557F575FFFFFFFF7F50FBF0000000
+            000557F557777777777550BFBFBFBFB0555557F555555557F55550FBFBFBFBF0
+            555557F555555FF7555550BFBFBF00055555575F555577755555550BFBF05555
+            55555575FFF75555555555700007555555555557777555555555555555555555
+            5555555555555555555555555555555555555555555555555555}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBFolderClick
+        end
+        object EFolder: TEdit
+          Left = 48
+          Top = 16
+          Width = 360
+          Height = 21
+          ReadOnly = True
+          TabOrder = 0
+          OnChange = EFolderChange
+        end
+      end
+      object GBWindow: TGroupBox
+        Left = 0
+        Top = 96
+        Width = 472
+        Height = 72
+        Hint = 
+          'Resize and position the main window according to your preference' +
+          's. Then click on the button to save these for the next time you ' +
+          'use the software.'
+        Align = alTop
+        Caption = 'Main window'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        object LWidth: TLabel
+          Left = 208
+          Top = 20
+          Width = 28
+          Height = 13
+          Caption = 'Width'
+        end
+        object SBWindow: TSpeedButton
+          Left = 368
+          Top = 28
+          Width = 80
+          Height = 25
+          Caption = 'Default'
+          OnClick = SBWindowClick
+        end
+        object LHeight: TLabel
+          Left = 208
+          Top = 44
+          Width = 31
+          Height = 13
+          Caption = 'Height'
+        end
+        object LTop: TLabel
+          Left = 8
+          Top = 44
+          Width = 19
+          Height = 13
+          Caption = 'Top'
+        end
+        object LLeft: TLabel
+          Left = 8
+          Top = 20
+          Width = 18
+          Height = 13
+          Caption = 'Left'
+        end
+        object PBHeight: TPBNumEdit
+          Left = 288
+          Top = 40
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = -1
+          NumberFormat = Standard
+          TabOrder = 3
+        end
+        object PBWidth: TPBNumEdit
+          Left = 288
+          Top = 16
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = -1
+          NumberFormat = Standard
+          TabOrder = 2
+        end
+        object PBTop: TPBNumEdit
+          Left = 88
+          Top = 40
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = -1
+          NumberFormat = Standard
+          TabOrder = 1
+        end
+        object PBLeft: TPBNumEdit
+          Left = 88
+          Top = 16
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = -1
+          NumberFormat = Standard
+          TabOrder = 0
+        end
+      end
+      object GBLocal: TGroupBox
+        Left = 0
+        Top = 216
+        Width = 472
+        Height = 72
+        Align = alTop
+        Caption = 'Localization'
+        TabOrder = 4
+        object LLanguage: TLabel
+          Left = 8
+          Top = 20
+          Width = 48
+          Height = 13
+          Caption = 'Language'
+        end
+        object LMonnaie: TLabel
+          Left = 8
+          Top = 44
+          Width = 77
+          Height = 13
+          Caption = 'Currency symbol'
+        end
+        object PBMonnaie: TPBEdit
+          Left = 168
+          Top = 40
+          Width = 40
+          Height = 21
+          Alignment = taLeftJustify
+          MaxLength = 3
+          TabOrder = 0
+          OnChange = PBMonnaieChange
+        end
+        object CBLanguage: TComboBox
+          Left = 168
+          Top = 16
+          Width = 200
+          Height = 22
+          Style = csOwnerDrawFixed
+          ItemHeight = 16
+          Sorted = True
+          TabOrder = 1
+          OnChange = CBLanguageChange
+          OnDrawItem = CBLanguageDrawItem
+        end
+      end
+      object GBLogo: TGroupBox
+        Left = 0
+        Top = 168
+        Width = 472
+        Height = 48
+        Align = alTop
+        Caption = 'Logo'
+        TabOrder = 3
+        object SBLogo: TSpeedButton
+          Left = 8
+          Top = 16
+          Width = 21
+          Height = 21
+          Hint = 'Select a logo'
+          Glyph.Data = {
+            F6000000424DF600000000000000760000002800000010000000100000000100
+            04000000000080000000C30E0000C30E00001000000010000000000000000000
+            80000080000000808000800000008000800080800000C0C0C000808080000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00D00000000000
+            000D0777777777777770078000030000037007380A080770307707830A038003
+            807007088AA03838387007000A0A0000007007E0AA00A0EFEF70070A0A00A0FE
+            FE70070A0A000FEF0070070A0A0EFEF0BB7007E00A0FEFE0BB7007FE0A0EFEF0
+            BB7007EFE0EFEFEF00700777777777777770D00000000000000D}
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBLogoClick
+        end
+        object ELogo: TEdit
+          Left = 48
+          Top = 16
+          Width = 360
+          Height = 21
+          TabOrder = 0
+          OnChange = ELogoChange
+        end
+      end
+      object GBExcelFile: TGroupBox
+        Left = 0
+        Top = 48
+        Width = 472
+        Height = 48
+        Align = alTop
+        Caption = 'Excel file'
+        TabOrder = 1
+        object SBExcelFile: TSpeedButton
+          Left = 8
+          Top = 16
+          Width = 21
+          Height = 21
+          Hint = 
+            'Select the Excel file to which the simulation results will be ex' +
+            'ported'
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000120B0000120B00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00555555555555
+            5555555555555555555555555555555555555555555555555555555555555555
+            555555555555555555555555555555555555555FFFFFFFFFF555550000000000
+            55555577777777775F55500B8B8B8B8B05555775F555555575F550F0B8B8B8B8
+            B05557F75F555555575F50BF0B8B8B8B8B0557F575FFFFFFFF7F50FBF0000000
+            000557F557777777777550BFBFBFBFB0555557F555555557F55550FBFBFBFBF0
+            555557F555555FF7555550BFBFBF00055555575F555577755555550BFBF05555
+            55555575FFF75555555555700007555555555557777555555555555555555555
+            5555555555555555555555555555555555555555555555555555}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBExcelFileClick
+        end
+        object EExcelFile: TEdit
+          Left = 48
+          Top = 16
+          Width = 360
+          Height = 21
+          ReadOnly = True
+          TabOrder = 0
+          OnChange = EExcelFileChange
+        end
+      end
+      object GBWarning: TGroupBox
+        Left = 0
+        Top = 288
+        Width = 472
+        Height = 48
+        Align = alTop
+        Caption = 'Warning messages'
+        ParentShowHint = False
+        ShowHint = False
+        TabOrder = 5
+        object SBWarning: TSpeedButton
+          Left = 8
+          Top = 16
+          Width = 80
+          Height = 25
+          Hint = 'Show all warning messages'
+          Caption = 'Reset'
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBWarningClick
+        end
+      end
+      object CheckBoxUpdates: TCheckBox
+        Left = 8
+        Top = 346
+        Width = 456
+        Height = 17
+        Caption = 'Automatically check for updates'
+        TabOrder = 6
+        OnClick = CheckBoxUpdatesClick
+      end
+    end
+    object TSAliment: TTabSheet
+      Caption = 'Feed ingredients and feeds'
+      ImageIndex = 1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      DesignSize = (
+        472
+        368)
+      object CBAffMP: TCheckBox
+        Left = 8
+        Top = 234
+        Width = 456
+        Height = 17
+        Anchors = [akLeft, akTop, akRight]
+        Caption = 
+          'Display the "Feed ingredients" tab-sheet in the "Feed compositio' +
+          'n" window'
+        TabOrder = 1
+        OnClick = CBAffMPClick
+      end
+      object GBExpr: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 472
+        Height = 224
+        Align = alTop
+        Caption = 'Mode of expression'
+        TabOrder = 0
+        object LFibres: TLabel
+          Left = 8
+          Top = 188
+          Width = 23
+          Height = 13
+          Caption = 'Fiber'
+        end
+        object LGal: TLabel
+          Left = 8
+          Top = 20
+          Width = 90
+          Height = 13
+          Caption = 'General expression'
+        end
+        object LCompo: TLabel
+          Left = 8
+          Top = 68
+          Width = 111
+          Height = 13
+          Caption = 'Elementary composition'
+        end
+        object LAA: TLabel
+          Left = 8
+          Top = 92
+          Width = 57
+          Height = 13
+          Caption = 'Amino acids'
+        end
+        object LAG: TLabel
+          Left = 8
+          Top = 116
+          Width = 51
+          Height = 13
+          Caption = 'Fatty acids'
+        end
+        object LMacro: TLabel
+          Left = 8
+          Top = 140
+          Width = 122
+          Height = 13
+          Caption = 'Minerals (macro-elements)'
+        end
+        object LOligo: TLabel
+          Left = 8
+          Top = 164
+          Width = 115
+          Height = 13
+          Caption = 'Minerals (oligo-elements)'
+        end
+        object GBTeneur: TGroupBox
+          Left = 160
+          Top = 48
+          Width = 136
+          Height = 168
+          Caption = 'Content'
+          TabOrder = 2
+          object CBTCompo: TComboBox
+            Left = 8
+            Top = 16
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 0
+            TabOrder = 0
+            OnChange = CBTCompoChange
+            Items.Strings = (
+              'g/kg'
+              '%')
+          end
+          object CBTAA: TComboBox
+            Left = 8
+            Top = 40
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 0
+            TabOrder = 1
+            OnChange = CBTAAChange
+            Items.Strings = (
+              'g/kg'
+              '%'
+              '% CP')
+          end
+          object CBTAG: TComboBox
+            Left = 8
+            Top = 64
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 0
+            TabOrder = 2
+            OnChange = CBTAGChange
+            Items.Strings = (
+              'g/kg'
+              '%'
+              '% fatty acids')
+          end
+          object CBTMacro: TComboBox
+            Left = 8
+            Top = 88
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 0
+            TabOrder = 3
+            OnChange = CBTMacroChange
+            Items.Strings = (
+              'g/kg'
+              '%')
+          end
+          object CBTOligo: TComboBox
+            Left = 8
+            Top = 112
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 0
+            TabOrder = 4
+            OnChange = CBTOligoChange
+            Items.Strings = (
+              'mg/kg')
+          end
+          object CBTFibres: TComboBox
+            Left = 8
+            Top = 136
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 0
+            TabOrder = 5
+            OnChange = CBTFibresChange
+            Items.Strings = (
+              'g/kg'
+              '%')
+          end
+        end
+        object GBDigest: TGroupBox
+          Left = 320
+          Top = 48
+          Width = 136
+          Height = 168
+          Caption = 'Digestibility'
+          TabOrder = 3
+          object CBdCompo: TComboBox
+            Left = 8
+            Top = 16
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 0
+            TabOrder = 0
+            OnChange = CBdCompoChange
+            Items.Strings = (
+              'g/kg'
+              '%')
+          end
+          object CBdAA: TComboBox
+            Left = 8
+            Top = 40
+            Width = 120
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 0
+            TabOrder = 1
+            OnChange = CBdAAChange
+            Items.Strings = (
+              'g/kg'
+              '%')
+          end
+        end
+        object CBRap: TComboBox
+          Left = 168
+          Top = 16
+          Width = 120
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 0
+          OnChange = CBRapChange
+          Items.Strings = (
+            'as-fed'
+            'DM basis')
+        end
+        object CBDig: TComboBox
+          Left = 328
+          Top = 16
+          Width = 120
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBDigChange
+          Items.Strings = (
+            'Digestibility'
+            'Digestible content')
+        end
+      end
+    end
+    object TSTruie: TTabSheet
+      Caption = 'Sow'
+      ImageIndex = 2
+      object GBAliGest: TGroupBox
+        Left = 0
+        Top = 48
+        Width = 472
+        Height = 152
+        Align = alTop
+        Caption = 'Gestation strategy'
+        TabOrder = 1
+        object LAliDuree: TLabel
+          Left = 8
+          Top = 64
+          Width = 55
+          Height = 13
+          Caption = 'Duration (d)'
+        end
+        object LAliQuantite: TLabel
+          Left = 8
+          Top = 88
+          Width = 60
+          Height = 13
+          Caption = 'Quantity (kg)'
+        end
+        object LAugment: TLabel
+          Left = 8
+          Top = 124
+          Width = 62
+          Height = 13
+          Caption = 'Increase (kg)'
+        end
+        object GBAli1: TGroupBox
+          Left = 128
+          Top = 48
+          Width = 80
+          Height = 66
+          Caption = 'Period 1'
+          TabOrder = 1
+          object PBDuree1: TPBSuperSpin
+            Left = 8
+            Top = 16
+            Width = 64
+            Height = 22
+            Cursor = crDefault
+            Alignment = taRightJustify
+            Decimals = 0
+            MaxValue = 35.000000000000000000
+            NumberFormat = Standard
+            OnChange = PBDuree1Change
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            Increment = 1.000000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+          object PBQuantite1: TPBSuperSpin
+            Left = 8
+            Top = 40
+            Width = 64
+            Height = 22
+            Cursor = crDefault
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBQuantite1Change
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 1
+            Increment = 0.010000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+        end
+        object GBAli3: TGroupBox
+          Left = 296
+          Top = 48
+          Width = 80
+          Height = 66
+          Caption = 'Period 3'
+          TabOrder = 3
+          object PBDuree3: TPBSuperSpin
+            Left = 8
+            Top = 16
+            Width = 64
+            Height = 22
+            Cursor = crDefault
+            Alignment = taRightJustify
+            Decimals = 0
+            MaxValue = 35.000000000000000000
+            NumberFormat = Standard
+            OnChange = PBDuree3Change
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            Increment = 1.000000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+          object PBQuantite3: TPBSuperSpin
+            Left = 8
+            Top = 40
+            Width = 64
+            Height = 22
+            Cursor = crDefault
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBQuantite3Change
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 1
+            Increment = 0.010000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+        end
+        object CBTypeAliGest: TComboBox
+          Left = 8
+          Top = 16
+          Width = 320
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 0
+          OnChange = CBTypeAliGestChange
+          Items.Strings = (
+            'One period - Fixed quantity'
+            'Two periods - Fixed final quantity'
+            'Two periods - Fixed increase'
+            'Three periods - Fixed increase and final quantity'
+            'Three periods - Fixed quantities during periods 2 and 3'
+            'Three periods - Fixed increase and initial quantity')
+        end
+        object PBAugment: TPBSuperSpin
+          Left = 260
+          Top = 120
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBAugmentChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 4
+          Increment = 0.010000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object GBAli2: TGroupBox
+          Left = 212
+          Top = 48
+          Width = 80
+          Height = 66
+          Caption = 'Period 2'
+          TabOrder = 2
+          object PBDuree2: TPBNumEdit
+            Left = 8
+            Top = 16
+            Width = 64
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 0
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBQuantite2: TPBSuperSpin
+            Left = 8
+            Top = 40
+            Width = 64
+            Height = 22
+            Cursor = crDefault
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBQuantite2Change
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 1
+            Increment = 0.010000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+        end
+      end
+      object GBXTruie: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 472
+        Height = 48
+        Align = alTop
+        Caption = 'Graph preferences'
+        TabOrder = 0
+        object LXTruie: TLabel
+          Left = 8
+          Top = 20
+          Width = 65
+          Height = 13
+          Caption = 'Default X-axis'
+        end
+        object CBXTruie: TComboBox
+          Left = 168
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          OnChange = CBXTruieChange
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+      end
+    end
+    object TSPorc: TTabSheet
+      Caption = 'Growing pig'
+      ImageIndex = 4
+      object GBXCrois: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 472
+        Height = 48
+        Align = alTop
+        Caption = 'Graph preferences'
+        TabOrder = 0
+        object LXCrois: TLabel
+          Left = 8
+          Top = 20
+          Width = 65
+          Height = 13
+          Caption = 'Default X-axis'
+        end
+        object CBXCrois: TComboBox
+          Left = 160
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          OnChange = CBXCroisChange
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+      end
+      object GBCarcasse: TGroupBox
+        Left = 0
+        Top = 264
+        Width = 472
+        Height = 72
+        Align = alTop
+        Caption = 'Carcass characteristics'
+        TabOrder = 4
+        DesignSize = (
+          472
+          72)
+        object CBTete: TCheckBox
+          Left = 8
+          Top = 18
+          Width = 120
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Head'
+          TabOrder = 0
+          OnClick = CBTeteClick
+        end
+        object CBLangue: TCheckBox
+          Left = 168
+          Top = 18
+          Width = 120
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Tongue'
+          TabOrder = 1
+          OnClick = CBLangueClick
+        end
+        object CBPieds: TCheckBox
+          Left = 328
+          Top = 18
+          Width = 120
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Feet'
+          TabOrder = 2
+          OnClick = CBPiedsClick
+        end
+        object CBQueue: TCheckBox
+          Left = 8
+          Top = 42
+          Width = 120
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Tail'
+          TabOrder = 3
+          OnClick = CBQueueClick
+        end
+        object CBHampe: TCheckBox
+          Left = 168
+          Top = 42
+          Width = 120
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Diaphragm'
+          TabOrder = 4
+          OnClick = CBHampeClick
+        end
+        object CBPanne: TCheckBox
+          Left = 328
+          Top = 42
+          Width = 120
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Leaf fat'
+          TabOrder = 5
+          OnClick = CBPanneClick
+        end
+      end
+      object GBIntake: TGroupBox
+        Left = 0
+        Top = 48
+        Width = 472
+        Height = 72
+        Align = alTop
+        Caption = 'Feed efficiency'
+        TabOrder = 1
+        object RBIC: TRadioButton
+          Left = 8
+          Top = 18
+          Width = 400
+          Height = 17
+          Hint = 'Feed conversion ratio'
+          Caption = 'Feed:Gain'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = RBFeedInfoClick
+        end
+        object RBEA: TRadioButton
+          Left = 8
+          Top = 42
+          Width = 400
+          Height = 17
+          Hint = 'Feed efficiency'
+          Caption = 'Gain:Feed'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = RBFeedInfoClick
+        end
+      end
+      object GBFat: TGroupBox
+        Left = 0
+        Top = 120
+        Width = 472
+        Height = 72
+        Align = alTop
+        Caption = 'Backfat thickness (mm)'
+        TabOrder = 2
+        object SBUserFat: TSpeedButton
+          Left = 376
+          Top = 40
+          Width = 80
+          Height = 25
+          Caption = 'Define'
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBUserFatClick
+        end
+        object RBP2: TRadioButton
+          Left = 8
+          Top = 18
+          Width = 360
+          Height = 17
+          Hint = 
+            'Backfat thickness measured at 65 mm from the midline at the leve' +
+            'l of the last rib'
+          Caption = 'Backfat thickness'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = RBFatInfoClick
+        end
+        object RBUserFat: TRadioButton
+          Left = 8
+          Top = 42
+          Width = 360
+          Height = 17
+          Caption = 'User defined'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = RBFatInfoClick
+        end
+      end
+      object GBLean: TGroupBox
+        Left = 0
+        Top = 192
+        Width = 472
+        Height = 72
+        Align = alTop
+        Caption = 'Lean meat (%)'
+        TabOrder = 3
+        object SBUserLean: TSpeedButton
+          Left = 376
+          Top = 40
+          Width = 80
+          Height = 25
+          Caption = 'Define'
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBUserLeanClick
+        end
+        object RBTMP: TRadioButton
+          Left = 8
+          Top = 18
+          Width = 360
+          Height = 17
+          Hint = 
+            'Lean meat percentage in the loin, shoulder, ham and belly (EC re' +
+            'gulation 1197/2006)'
+          Caption = 'Lean meat'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = RBLeanInfoClick
+        end
+        object RBUserLean: TRadioButton
+          Left = 8
+          Top = 42
+          Width = 360
+          Height = 17
+          Caption = 'User defined'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = RBLeanInfoClick
+        end
+      end
+    end
+    object TSMessages: TTabSheet
+      Hint = 'Check the checkbox of the messages you want display'
+      Caption = 'Warning messages'
+      ImageIndex = 3
+      ParentShowHint = False
+      ShowHint = True
+      TabVisible = False
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object GBProfilP: TGroupBox
+        Left = 0
+        Top = 96
+        Width = 472
+        Height = 120
+        Align = alTop
+        Caption = 'Growing pig profile'
+        TabOrder = 1
+        DesignSize = (
+          472
+          120)
+        object CBAffPDMoy: TCheckBox
+          Left = 8
+          Top = 42
+          Width = 456
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Mean PD'
+          TabOrder = 0
+        end
+        object CBAffUnitProfilP: TCheckBox
+          Left = 8
+          Top = 18
+          Width = 456
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Mode of expressing ad libitum feed intake (units)'
+          TabOrder = 1
+        end
+        object CBAffPrecocite: TCheckBox
+          Left = 8
+          Top = 66
+          Width = 456
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Precocity'
+          TabOrder = 2
+        end
+        object CBAffEntretien: TCheckBox
+          Left = 8
+          Top = 90
+          Width = 456
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Maintenance'
+          TabOrder = 3
+        end
+      end
+      object GBAliMat: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 472
+        Height = 96
+        Align = alTop
+        Caption = 'Feed ingredients and feeds'
+        TabOrder = 0
+        DesignSize = (
+          472
+          96)
+        object CBAffCorrCUD: TCheckBox
+          Left = 8
+          Top = 18
+          Width = 456
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Digestibility correction'
+          TabOrder = 0
+        end
+        object CBAffCalcAli: TCheckBox
+          Left = 8
+          Top = 42
+          Width = 456
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 
+            'Contribution of feed ingredients to the chemical composition of ' +
+            'the feed'
+          TabOrder = 1
+        end
+        object CBAffGraphAli: TCheckBox
+          Left = 8
+          Top = 66
+          Width = 456
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Calculation of feed composition'
+          TabOrder = 2
+        end
+      end
+      object GBSimulT: TGroupBox
+        Left = 0
+        Top = 216
+        Width = 472
+        Height = 72
+        Align = alTop
+        Caption = 'Simulation for sows'
+        TabOrder = 2
+        DesignSize = (
+          472
+          72)
+        object CBAffOptInit: TCheckBox
+          Left = 8
+          Top = 18
+          Width = 456
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 
+            'Initialisation of parameters (only at the beginning of the simul' +
+            'ation)'
+          TabOrder = 0
+        end
+        object CBAffSimulT: TCheckBox
+          Left = 8
+          Top = 42
+          Width = 456
+          Height = 17
+          Anchors = [akLeft, akTop, akRight]
+          Caption = 'Results of the sow simulation'
+          TabOrder = 1
+        end
+      end
+    end
+  end
+  object PBoutons: TPanel
+    Left = 0
+    Top = 396
+    Width = 480
+    Height = 40
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    DesignSize = (
+      480
+      40)
+    object BBOk: TBitBtn
+      Left = 304
+      Top = 8
+      Width = 80
+      Height = 25
+      Anchors = [akTop, akRight]
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      NumGlyphs = 2
+      TabOrder = 0
+    end
+    object BBCancel: TBitBtn
+      Left = 392
+      Top = 8
+      Width = 80
+      Height = 25
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      NumGlyphs = 2
+      TabOrder = 1
+    end
+  end
+  object OPDLogo: TOpenPictureDialog
+    Options = [ofHideReadOnly, ofNoChangeDir, ofPathMustExist, ofFileMustExist, ofEnableSizing]
+    Left = 40
+    Top = 464
+  end
+  object ODExcelFile: TOpenDialog
+    Filter = 'Microsoft Excel files (*.xls)|*.xls'
+    Options = [ofHideReadOnly, ofNoChangeDir, ofNoValidate, ofEnableSizing]
+    Left = 8
+    Top = 464
+  end
+end
Index: UFObservProfilP.pas
===================================================================
--- UFObservProfilP.pas	(révision 0)
+++ UFObservProfilP.pas	(révision 3)
@@ -0,0 +1,354 @@
+unit UFObservProfilP;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Messages, Dialogs, StdCtrls, Buttons,
+  DB, Grids, DBGrids, JvEnterTab, JvExControls, JvCsvData;
+
+type
+  TFObservProfilP = class(TForm)
+    BBOk: TBitBtn;
+    BBCancel: TBitBtn;
+    DataSourceObservProfilP: TDataSource;
+    DBGridObserv: TDBGrid;
+    SBAddLine: TSpeedButton;
+    SBDelLine: TSpeedButton;
+    SBImport: TSpeedButton;
+    JvEnterAsTab1: TJvEnterAsTab;
+    MErrors: TMemo;
+    JvCsvDataSetImport: TJvCsvDataSet;
+    OpenDialogImport: TOpenDialog;
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure SBAddLineClick(Sender: TObject);
+    procedure SBDelLineClick(Sender: TObject);
+    procedure SBImportClick(Sender: TObject);
+    procedure DBGridObservKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormDestroy(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    DBGridOldWndProc: TWndMethod;
+    Procedure DBGridNewWndProc(var Mess: TMessage);
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FObservProfilP: TFObservProfilP;
+
+implementation
+
+uses
+  SysUtils, gnugettext, UVariables, UFProfilP;
+
+{$R *.dfm}
+
+{ TFObservProfilP }
+
+procedure TFObservProfilP.DBGridNewWndProc(var Mess: TMessage);
+begin
+  if Mess.Msg = WM_MOUSEWHEEL
+  then // Interception de l'�v�nement WM_MOUSEWHEEL
+    with FProfilP.ASQLite3TableObservProfilP do
+      if SmallInt(Mess.WParamHi) < 0
+      then
+        Next
+      else
+        Prior
+  else // Traitement des autres messages
+    DBGridOldWndProc(Mess);
+end;
+
+procedure TFObservProfilP.DBGridObservKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+  if DBGridObserv.DataSource.DataSet.CanModify
+  then
+    case Key of
+      VK_DOWN:
+        with FProfilP.ASQLite3TableObservProfilP do
+          if FieldByName('Line').AsInteger = RecordCount
+          then
+            Key := 0;
+      VK_TAB:
+        with FProfilP.ASQLite3TableObservProfilP do
+          if (FieldByName('Line').AsInteger = RecordCount)
+          and (DBGridObserv.SelectedField = FieldByName('Lean'))
+          then
+            Key := 0;
+      VK_INSERT:
+        Key := 0;
+      VK_DELETE:
+        if Shift = [ssCtrl]
+        then
+          Key := 0;
+    end;
+end;
+
+procedure TFObservProfilP.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  AgePrec: Integer;
+  FeedPrec: Double;
+  FeedCount, WeightCount: Integer;
+begin
+  if ModalResult = mrOk
+  then // V�rifier la coh�rence des donn�es
+    with FProfilP.ASQLite3TableObservProfilP do
+    begin
+      MErrors.Lines.Clear;
+      First;
+      if (FieldByName('Age').AsInteger <= FProfilP.PBAgeInit.MinValue) or (FieldByName('Age').AsInteger >= FProfilP.PBAgeInit.MaxValue)
+      then
+        MErrors.Lines.Add(Format(_('Line %d: '), [FieldByName('Line').AsInteger])
+          + Format(_('The initial age should be between %d and %d days.'), [FProfilP.PBAgeInit.MinValue, FProfilP.PBAgeInit.MaxValue]));
+      if FieldByName('Feed').AsFloat <> 0
+      then
+        MErrors.Lines.Add(Format(_('Line %d: '), [FieldByName('Line').AsInteger])
+          + _('The initial cumulative feed usage should be equal to zero.'));
+      if (FieldByName('Weight').AsFloat <= FProfilP.PBPVInit.MinValue) or (FieldByName('Weight').AsFloat >= FProfilP.PBPVInit.MaxValue)
+      then
+        MErrors.Lines.Add(Format(_('Line %d: '), [FieldByName('Line').AsInteger])
+          + Format(_('The initial body weight should be between %1.1f and %1.1f kg.'), [FProfilP.PBPVInit.MinValue, FProfilP.PBPVInit.MaxValue]));
+      FeedCount := 1;
+      WeightCount :=1;
+      AgePrec := FieldByName('Age').AsInteger;
+      FeedPrec := FieldByName('Feed').AsFloat;
+      Next;
+      while not Eof do
+      begin
+        if FieldByName('Age').IsNull
+        then
+          MErrors.Lines.Add(Format(_('Line %d: '), [FieldByName('Line').AsInteger])
+            + ('The age should be given for each line.'))
+        else
+        begin
+          if FieldByName('Age').AsInteger <= AgePrec
+          then
+            MErrors.Lines.Add(Format(_('Line %d: '), [FieldByName('Line').AsInteger])
+              + _('The age should be given in ascending order.'));
+          AgePrec := FieldByName('Age').AsInteger;
+        end;
+        if not FieldByName('Feed').IsNull
+        then
+        begin
+          if FieldByName('Feed').AsFloat < FeedPrec
+          then
+            MErrors.Lines.Add(Format(_('Line %d: '), [FieldByName('Line').AsInteger])
+              + _('The cumulative feed usage cannot decrease.'));
+          Inc(FeedCount);
+          FeedPrec := FieldByName('Feed').AsFloat;
+        end;
+        if not FieldByName('Weight').IsNull
+        then
+          Inc(WeightCount);
+        Next;
+      end;
+      if FeedCount < 3
+      then
+        MErrors.Lines.Add(_('At least three measurements of cumulative feed usage should be given.'));
+      if WeightCount < 3
+      then
+        MErrors.Lines.Add(_('At least three measurements of body weight should be given.'));
+      if MErrors.Lines.Count > 0
+      then
+        Action := caNone;
+    end;
+end;
+
+procedure TFObservProfilP.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  DBGridOldWndProc := DBGridObserv.WindowProc;
+  DBGridObserv.WindowProc := DBGridNewWndProc;
+end;
+
+procedure TFObservProfilP.FormDestroy(Sender: TObject);
+begin
+  DBGridObserv.WindowProc := DBGridOldWndProc;
+end;
+
+procedure TFObservProfilP.FormShow(Sender : TObject);
+begin
+  with FProfilP.ASQLite3TableObservProfilP do
+    if IsEmpty
+    then // Initialisation avec �tat initial et �tat final
+    begin
+      Append;
+      FieldByName('Profile').AsInteger := PProfilP.Num;
+      FieldByName('Line').AsInteger := 1;
+      FieldByName('Age').AsInteger := PProfilP.AgeInit;
+      FieldByName('Feed').AsFloat := 0;
+      FieldByName('Weight').AsFloat := PProfilP.PVInit;
+      Post;
+      Append;
+      FieldByName('Profile').AsInteger := PProfilP.Num;
+      FieldByName('Line').AsInteger := 3;
+      if PProfilP.ModeFin = 0
+      then // Dur�e
+        FieldByName('Age').AsInteger := PProfilP.AgeInit + PProfilP.Duree
+      else // poids vif
+        FieldByName('Weight').AsFloat := PProfilP.PVFin;
+      Post;
+      Insert;
+      FieldByName('Profile').AsInteger := PProfilP.Num;
+      FieldByName('Line').AsInteger := 2;
+      Post;
+    end;
+end;
+
+procedure TFObservProfilP.SBAddLineClick(Sender: TObject);
+var
+  i: integer;
+begin
+  with FProfilP.ASQLite3TableObservProfilP do
+    if FieldByName('Line').AsInteger > 1
+    then
+    begin
+      i := FieldByName('Line').AsInteger;
+      DisableControls;
+      try
+        Last;
+        repeat
+          Edit;
+          FieldByName('Line').AsInteger := FieldByName('Line').AsInteger + 1;
+          Post;
+          Prior;
+        until FieldByName('Line').AsInteger < i;
+        Next;
+        Insert;
+        FieldByName('Profile').AsInteger := PProfilP.Num;
+        FieldByName('Line').AsInteger := i;
+        Post;
+      finally
+        EnableControls;
+        ActiveControl := DBGridObserv;
+        DBGridObserv.SelectedField := FieldByName('Age');
+      end;
+    end
+    else
+      Beep;
+end;
+
+procedure TFObservProfilP.SBDelLineClick(Sender: TObject);
+var
+  i: integer;
+begin
+  with FProfilP.ASQLite3TableObservProfilP do
+    if (FieldByName('Line').AsInteger > 1) and (FieldByName('Line').AsInteger < RecordCount)
+    then
+    begin
+      i := FieldByName('Line').AsInteger;
+      DisableControls;
+      try
+        Last;
+        while FieldByName('Line').AsInteger > i do
+        begin
+          Edit;
+          FieldByName('Line').AsInteger := FieldByName('Line').AsInteger - 1;
+          Post;
+          Prior;
+        end;
+        Delete;
+      finally
+        EnableControls;
+        ActiveControl := DBGridObserv;
+        DBGridObserv.SelectedField := FieldByName('Age');
+      end;
+    end
+    else
+      Beep;
+end;
+
+procedure TFObservProfilP.SBImportClick(Sender: TObject);
+var
+  CurrentFormatSettings: TFormatSettings;
+begin
+  OpenDialogImport.InitialDir := GetCurrentDir;
+  if not OpenDialogImport.Execute
+  then // Annulation
+    Exit;
+  GetLocaleFormatSettings(GetUserDefaultLCID, CurrentFormatSettings);
+  JvCsvDataSetImport.Separator := CurrentFormatSettings.ListSeparator;
+  JvCsvDataSetImport.FileName := OpenDialogImport.FileName;
+  try
+    JvCsvDataSetImport.Active := True;
+    try
+      if JvCsvDataSetImport.FieldCount < 3
+      then
+      begin
+        MessageDlg(_('File must contain at least 3 columns'), mtError, [mbOK], 0);
+        Exit;
+      end;
+      // Suppression des lignes vides
+      JvCsvDataSetImport.First;
+      while not JvCsvDataSetImport.Eof do
+      begin
+        if JvCsvDataSetImport.Fields[0].IsNull
+        and JvCsvDataSetImport.Fields[1].IsNull
+        and JvCsvDataSetImport.Fields[2].IsNull
+        and ((JvCsvDataSetImport.FieldCount < 4) or JvCsvDataSetImport.Fields[3].IsNull)
+        and ((JvCsvDataSetImport.FieldCount < 4) or JvCsvDataSetImport.Fields[4].IsNull)
+        then
+          JvCsvDataSetImport.Delete
+        else
+          JvCsvDataSetImport.Next;
+      end;
+      if JvCsvDataSetImport.RecordCount < 2
+      then
+      begin
+        MessageDlg(_('File must contain at least 2 lines'), mtError, [mbOK], 0);
+        Exit;
+      end;
+      with FProfilP.ASQLite3TableObservProfilP do
+      begin
+        DisableControls;
+        try
+          First;
+          while not Eof do
+            Delete;
+          JvCsvDataSetImport.First;
+          while not JvCsvDataSetImport.Eof do
+          begin
+            Append;
+            FieldByName('Profile').AsInteger := PProfilP.Num;
+            FieldByName('Line').AsInteger := JvCsvDataSetImport.RecNo + 1;
+            if not JvCsvDataSetImport.Fields[0].IsNull
+            then
+              FieldByName('Age').AsInteger := JvCsvDataSetImport.Fields[0].AsInteger;
+            if not JvCsvDataSetImport.Fields[1].IsNull
+            then
+              FieldByName('Feed').AsFloat := JvCsvDataSetImport.Fields[1].AsFloat;
+            if not JvCsvDataSetImport.Fields[2].IsNull
+            then
+              FieldByName('Weight').AsFloat := JvCsvDataSetImport.Fields[2].AsFloat;
+            if (JvCsvDataSetImport.FieldCount > 3) and not JvCsvDataSetImport.Fields[3].IsNull
+            then
+              FieldByName('Backfat').AsFloat := JvCsvDataSetImport.Fields[3].AsFloat;
+            if (JvCsvDataSetImport.FieldCount > 4) and not JvCsvDataSetImport.Fields[4].IsNull
+            then
+              FieldByName('Lean').AsFloat := JvCsvDataSetImport.Fields[4].AsFloat;
+            Post;
+            JvCsvDataSetImport.Next;
+          end;
+        finally
+          EnableControls;
+          ActiveControl := DBGridObserv;
+          DBGridObserv.SelectedField := FieldByName('Age');
+        end;
+      end;
+    finally
+      JvCsvDataSetImport.Active := False;
+    end;
+  except
+    MessageDlg(_('Invalid file format'), mtError, [mbOK], 0);
+//    HtmlHelp(Handle, PChar(Application.CurrentHelpFile), HH_HELP_CONTEXT, 5350);
+    Application.HelpContext(5350);
+  end;
+end;
+
+end.
Index: UFProfilP.dfm
===================================================================
--- UFProfilP.dfm	(révision 0)
+++ UFProfilP.dfm	(révision 3)
@@ -0,0 +1,1707 @@
+object FProfilP: TFProfilP
+  Left = 167
+  Top = 155
+  HelpContext = 5300
+  ActiveControl = CBProfil
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Growing pig profile'
+  ClientHeight = 464
+  ClientWidth = 776
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBProfil: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 776
+    Height = 48
+    Align = alTop
+    Caption = 'Animal profile'
+    TabOrder = 0
+    object SBAddProfil: TSpeedButton
+      Left = 264
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Add an animal profile'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000800000800000800000800000800000
+        8000008000008000008000008000008000008000008000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBAddProfilClick
+    end
+    object SBDelProfil: TSpeedButton
+      Left = 296
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Delete the current animal profile'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF0000000000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBDelProfilClick
+    end
+    object SBRename: TSpeedButton
+      Left = 328
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Rename the current animal profile'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FF80808080808080
+        8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFF800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFF0000FFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFF0000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FF808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFF800000FFFFFFFFFFFF800000FF
+        FFFFFFFFFF800000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FF80808080808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFF800000800000800000800000800000800000800000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBRenameClick
+    end
+    object SBComment: TSpeedButton
+      Left = 360
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 
+        'Add additional information to the current animal profile (commen' +
+        't)'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        00000000000000000000000000000000000000FF0000FFFF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000080000080FF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF
+        FF0000FF0000FF0000FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00080
+        80000080000080000080FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF0000FF000080FFFF0000FF0000FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080
+        80808080808080808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0800000800000008080000080000080FF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00
+        00FF000080FFFFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000
+        00800000008080FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0800000800000800000800000800000FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF00
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FF808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000008000008000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+        0000800000800000800000800000000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0800000800000800000800000800000C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFF4080FFFF0000FF
+        0000FF0000FF0000FFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FF808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C000408080000080
+        0000800000800000C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFF4080FF4080FFFF0000FF0000FFFFFFFFFFFFFFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80808080808080
+        8080808080FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0004080004080800000800000C0C0C0C0C0C0C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF0000004080FF4080FF40
+        80FFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C000000000408000408000
+        4080C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080FF00FFFF
+        00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0000000000000C0C0C0C0C0C0C0C0C00000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBCommentClick
+    end
+    object SBSave: TSpeedButton
+      Left = 392
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Save the current animal profil'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000C0C0C0C0C0C0000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000808080808080000000800000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF8080808080808080808080808080808080808080808080808080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000000000800000000000FF00FFFF00FF000000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF000000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000FF0000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080808080808080FF00
+        FFFF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000800000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00000000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00000000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080000000FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBSaveClick
+    end
+    object SBPrint: TSpeedButton
+      Left = 424
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'View the report for the current animal profile'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+        808080808080808080808080808080808080808080808080808080FF00FFFF00
+        FF808080808080FF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+        00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+        00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+        C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+        FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+        C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+        8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+        808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBPrintClick
+    end
+    object JvEnterAsTab: TJvEnterAsTab
+      Left = 456
+      Top = 16
+      Width = 28
+      Height = 28
+    end
+    object CBProfil: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBProfilChange
+    end
+  end
+  object PC: TPageControl
+    Left = 0
+    Top = 48
+    Width = 776
+    Height = 416
+    ActivePage = TSConso
+    Align = alClient
+    HotTrack = True
+    MultiLine = True
+    TabOrder = 1
+    TabStop = False
+    Visible = False
+    OnChange = PCChange
+    object TSConso: TTabSheet
+      HelpContext = 5310
+      Caption = 'Farm conditions'
+      ImageIndex = 2
+      object LSexe: TLabel
+        Left = 8
+        Top = 12
+        Width = 35
+        Height = 13
+        Caption = 'Gender'
+      end
+      object GBInit: TGroupBox
+        Left = 0
+        Top = 40
+        Width = 216
+        Height = 128
+        Caption = 'Initial state'
+        TabOrder = 0
+        object LPV: TLabel
+          Left = 8
+          Top = 44
+          Width = 79
+          Height = 13
+          Hint = 'Initial body weight (kg)'
+          Caption = 'Body weight (kg)'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LAge: TLabel
+          Left = 8
+          Top = 20
+          Width = 34
+          Height = 13
+          Hint = 'Initial age (d)'
+          Caption = 'Age (d)'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object RBProt: TRadioButton
+          Left = 8
+          Top = 74
+          Width = 120
+          Height = 17
+          Hint = 'Initial body protein weight (kg)'
+          Caption = 'Protein (kg)'
+          Checked = True
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          TabStop = True
+          OnClick = RBProtLipClick
+        end
+        object RBLip: TRadioButton
+          Left = 8
+          Top = 98
+          Width = 120
+          Height = 17
+          Hint = 'Initial body lipid weight (kg)'
+          Caption = 'Lipid (kg)'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 3
+          OnClick = RBProtLipClick
+        end
+        object PBAgeInit: TPBSuperSpin
+          Left = 144
+          Top = 16
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 'Initial age (d)'
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 200.000000000000000000
+          MinValue = 30.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBAgeInitChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBPVInit: TPBSuperSpin
+          Left = 144
+          Top = 40
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 'Initial body weight (kg)'
+          Alignment = taRightJustify
+          Decimals = 1
+          MaxValue = 100.000000000000000000
+          MinValue = 15.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBPVInitChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          Increment = 0.100000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBProtInit: TPBSuperSpin
+          Left = 144
+          Top = 72
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 'Initial body protein weight (kg)'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBProtInitChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 4
+          EditorEnabled = False
+          Increment = 0.010000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBLipInit: TPBSuperSpin
+          Left = 144
+          Top = 96
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 'Initial body lipid weight (kg)'
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBLipInitChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 5
+          EditorEnabled = False
+          Increment = 0.010000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+      end
+      object GBFin: TGroupBox
+        Left = 0
+        Top = 168
+        Width = 216
+        Height = 104
+        Caption = 'Final state'
+        TabOrder = 1
+        object LCarcasse: TLabel
+          Left = 8
+          Top = 76
+          Width = 52
+          Height = 13
+          Hint = 'Dressing percentage (% of body weight)'
+          Caption = 'Dressing-%'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object RBFinDuree: TRadioButton
+          Left = 8
+          Top = 18
+          Width = 120
+          Height = 17
+          Hint = 'Growth duration (d)'
+          BiDiMode = bdLeftToRight
+          Caption = 'Duration (d)'
+          ParentBiDiMode = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = RBFinClick
+        end
+        object RBFinPoids: TRadioButton
+          Left = 8
+          Top = 42
+          Width = 120
+          Height = 17
+          Hint = 'Final body weight (kg)'
+          BiDiMode = bdLeftToRight
+          Caption = 'Body weight (kg)'
+          ParentBiDiMode = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = RBFinClick
+        end
+        object PBDuree: TPBSuperSpin
+          Left = 144
+          Top = 16
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 'Growth duration (d)'
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBDureeChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBPVFin: TPBSuperSpin
+          Left = 144
+          Top = 40
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 'Final body weight (kg)'
+          Alignment = taRightJustify
+          Decimals = 1
+          MaxValue = 160.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBPVFinChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 3
+          Increment = 0.100000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBCarcasse: TPBSuperSpin
+          Left = 144
+          Top = 72
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 'Dressing percentage (% of body weight)'
+          Alignment = taRightJustify
+          Decimals = 1
+          MaxValue = 100.000000000000000000
+          MinValue = 60.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBCarcasseChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 4
+          Increment = 0.100000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+      end
+      object CBSexe: TComboBox
+        Left = 88
+        Top = 8
+        Width = 120
+        Height = 21
+        Style = csDropDownList
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        OnChange = CBSexeChange
+        Items.Strings = (
+          'Female'
+          'Barrow'
+          'Male'
+          'Mixed')
+      end
+    end
+    object TSPerf: TTabSheet
+      HelpContext = 5320
+      Caption = 'Ad libitum feed intake and growth'
+      object PPerfLeft: TPanel
+        Left = 0
+        Top = 0
+        Width = 240
+        Height = 388
+        Align = alLeft
+        BevelOuter = bvNone
+        TabOrder = 0
+        object GBParameters: TGroupBox
+          Left = 0
+          Top = 0
+          Width = 232
+          Height = 388
+          Align = alLeft
+          Caption = 'Model parameters'
+          TabOrder = 0
+          object SBGraph3D: TSpeedButton
+            Left = 56
+            Top = 304
+            Width = 120
+            Height = 32
+            Hint = 'Energy response curve'
+            Caption = 'Response curve'
+            Glyph.Data = {
+              42010000424D4201000000000000760000002800000011000000110000000100
+              040000000000CC00000000000000000000001000000010000000000000000000
+              BF0000BF000000BFBF00BF000000BF00BF00BFBF0000C0C0C000808080000000
+              FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00777777777777
+              77777000000070000000000777777000000070FFFFFFFF0777777000000070FF
+              FFFFFF0777777000000070F000000F0777777000000070F0FBFB000777777000
+              000070F0BFBF0F0007777000000070F000000F0770077000000070FF0FF44444
+              44444000000070FF0FF4FBFBFBFB4000000070FFF0F4BFBFBFBF4000000070FF
+              F0F4FBFBFBFB4000000070000004BFBFBFBF4000000077777704444444444000
+              000077777774F444444440000000777777744444444440000000777777777777
+              777770000000}
+            ParentShowHint = False
+            ShowHint = True
+            OnClick = SBGraph3DClick
+          end
+          object GBAdLib: TGroupBox
+            Left = 8
+            Top = 16
+            Width = 216
+            Height = 152
+            Caption = 'Ad libitum intake'
+            TabOrder = 0
+            object LUnite: TLabel
+              Left = 8
+              Top = 20
+              Width = 19
+              Height = 13
+              Caption = 'Unit'
+            end
+            object LEquation: TLabel
+              Left = 8
+              Top = 44
+              Width = 42
+              Height = 13
+              Caption = 'Equation'
+            end
+            object RBCoef: TRadioButton
+              Left = 8
+              Top = 74
+              Width = 80
+              Height = 17
+              Hint = 'Adjust the equation through the parameters a and b'
+              Caption = 'Parameters'
+              Checked = True
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 2
+              TabStop = True
+              OnClick = RBCoefClick
+            end
+            object RBIngere: TRadioButton
+              Left = 112
+              Top = 74
+              Width = 96
+              Height = 17
+              Hint = 
+                'Adjust the equation from the feed intake at 50 and 100 kg body w' +
+                'eight'
+              Caption = 'Feed intake'
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 3
+              OnClick = RBCoefClick
+            end
+            object CBUnite: TComboBox
+              Left = 72
+              Top = 16
+              Width = 136
+              Height = 21
+              Style = csDropDownList
+              ItemHeight = 13
+              TabOrder = 0
+              OnChange = CBUniteChange
+              Items.Strings = (
+                'Quantity (kg/d)'
+                'DE (MJ/d)'
+                'ME (MJ/d)'
+                'NE (MJ/d)'
+                'DM (kg/d)')
+            end
+            object CBEquation: TComboBox
+              Left = 72
+              Top = 40
+              Width = 136
+              Height = 21
+              Style = csDropDownList
+              ItemHeight = 13
+              TabOrder = 1
+              OnChange = CBEquationChange
+              Items.Strings = (
+                'a+b*BW'
+                'a*BW^b'
+                'a*(1-exp(-b*BW))'
+                'Gamma (maintenance)')
+            end
+            object PCoef: TPanel
+              Left = 8
+              Top = 96
+              Width = 80
+              Height = 48
+              BevelOuter = bvNone
+              TabOrder = 4
+              object LCoefA: TLabel
+                Left = 0
+                Top = 4
+                Width = 8
+                Height = 13
+                Hint = 'Parameter a of the equation'
+                Alignment = taRightJustify
+                AutoSize = False
+                Caption = 'a'
+                ParentShowHint = False
+                ShowHint = True
+              end
+              object LCoefB: TLabel
+                Left = 0
+                Top = 28
+                Width = 8
+                Height = 13
+                Hint = 'Parameter b of the equation'
+                Alignment = taRightJustify
+                AutoSize = False
+                Caption = 'b'
+                ParentShowHint = False
+                ShowHint = True
+              end
+              object PBCoefA: TPBSuperSpin
+                Left = 16
+                Top = 0
+                Width = 64
+                Height = 22
+                Cursor = crDefault
+                Hint = 'Parameter a of the equation'
+                Alignment = taRightJustify
+                Decimals = 0
+                NumberFormat = Standard
+                OnChange = PBCoefAChange
+                ParentShowHint = False
+                ShowHint = True
+                TabOrder = 0
+                Increment = 1.000000000000000000
+                RoundValues = False
+                Wrap = False
+              end
+              object PBCoefB: TPBSuperSpin
+                Left = 16
+                Top = 24
+                Width = 64
+                Height = 22
+                Cursor = crDefault
+                Hint = 'Parameter b of the equation'
+                Alignment = taRightJustify
+                Decimals = 0
+                NumberFormat = Standard
+                OnChange = PBCoefBChange
+                ParentShowHint = False
+                ShowHint = True
+                TabOrder = 1
+                Increment = 1.000000000000000000
+                RoundValues = False
+                Wrap = False
+              end
+            end
+            object PIngere: TPanel
+              Left = 96
+              Top = 96
+              Width = 112
+              Height = 48
+              BevelOuter = bvNone
+              Enabled = False
+              TabOrder = 5
+              object LIng100: TLabel
+                Left = 0
+                Top = 28
+                Width = 40
+                Height = 13
+                Hint = 'Feed intake at 100 kg of body weight'
+                Alignment = taRightJustify
+                AutoSize = False
+                Caption = '100 kg'
+                ParentShowHint = False
+                ShowHint = True
+              end
+              object LIng50: TLabel
+                Left = 0
+                Top = 4
+                Width = 40
+                Height = 13
+                Hint = 'Feed intake at 50 kg of body weight'
+                Alignment = taRightJustify
+                AutoSize = False
+                Caption = '50 kg'
+                ParentShowHint = False
+                ShowHint = True
+              end
+              object PBIng100: TPBSuperSpin
+                Left = 48
+                Top = 24
+                Width = 64
+                Height = 22
+                Cursor = crDefault
+                Hint = 'Feed intake at 100 kg of body weight'
+                Alignment = taRightJustify
+                Enabled = False
+                Decimals = 0
+                NumberFormat = Standard
+                OnChange = PBIng100Change
+                ParentShowHint = False
+                ShowHint = True
+                TabOrder = 1
+                Increment = 1.000000000000000000
+                RoundValues = False
+                Wrap = False
+              end
+              object PBIng50: TPBSuperSpin
+                Left = 48
+                Top = 0
+                Width = 64
+                Height = 22
+                Cursor = crDefault
+                Hint = 'Feed intake at 50 kg of body weight'
+                Alignment = taRightJustify
+                Enabled = False
+                Decimals = 0
+                NumberFormat = Standard
+                OnChange = PBIng50Change
+                ParentShowHint = False
+                ShowHint = True
+                TabOrder = 0
+                Increment = 1.000000000000000000
+                RoundValues = False
+                Wrap = False
+              end
+            end
+          end
+          object GBPotential: TGroupBox
+            Left = 8
+            Top = 168
+            Width = 216
+            Height = 120
+            Caption = 'Growth potential'
+            TabOrder = 1
+            object LEntretien: TLabel
+              Left = 8
+              Top = 68
+              Width = 62
+              Height = 13
+              Hint = 'Maintenance correction factor'
+              Caption = 'Maintenance'
+              ParentShowHint = False
+              ShowHint = True
+            end
+            object LComport: TLabel
+              Left = 8
+              Top = 44
+              Width = 64
+              Height = 13
+              Hint = 
+                'Maturation coefficient (shape parameter of the Gompertz function' +
+                ')'
+              Caption = 'Precocity (/d)'
+              ParentShowHint = False
+              ShowHint = True
+            end
+            object LPDMoy: TLabel
+              Left = 8
+              Top = 20
+              Width = 71
+              Height = 13
+              Hint = 'Average protein deposition (g/d)'
+              Caption = 'Mean PD (g/d)'
+              ParentShowHint = False
+              ShowHint = True
+            end
+            object LPVmr2: TLabel
+              Left = 8
+              Top = 92
+              Width = 76
+              Height = 13
+              Hint = 'Body weight (kg) to reach PDmax'
+              Caption = 'BW PDmax (kg)'
+              ParentShowHint = False
+              ShowHint = True
+            end
+            object PBPDMoy: TPBSuperSpin
+              Left = 144
+              Top = 16
+              Width = 64
+              Height = 22
+              Cursor = crDefault
+              Hint = 'Average protein deposition (g/d)'
+              Alignment = taRightJustify
+              Decimals = 2
+              MaxValue = 260.000000000000000000
+              MinValue = 50.000000000000000000
+              NumberFormat = Standard
+              OnChange = PBPDMoyChange
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 0
+              Increment = 0.100000000000000000
+              RoundValues = False
+              Wrap = False
+            end
+            object PBComport: TPBSuperSpin
+              Left = 144
+              Top = 40
+              Width = 64
+              Height = 22
+              Cursor = crDefault
+              Hint = 
+                'Maturation coefficient (shape parameter of the Gompertz function' +
+                ')'
+              Alignment = taRightJustify
+              Decimals = 5
+              MaxValue = 0.040000000000000000
+              MinValue = 0.001000000000000000
+              NumberFormat = Standard
+              OnChange = PBComportChange
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 1
+              Increment = 0.000100000000000000
+              RoundValues = False
+              Wrap = False
+            end
+            object PBEntretien: TPBSuperSpin
+              Left = 144
+              Top = 64
+              Width = 64
+              Height = 22
+              Cursor = crDefault
+              Hint = 'Maintenance correction factor'
+              Alignment = taRightJustify
+              Decimals = 3
+              MaxValue = 1.300000000000000000
+              MinValue = 0.700000000000000000
+              NumberFormat = Standard
+              OnChange = PBEntretienChange
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 2
+              Increment = 0.010000000000000000
+              RoundValues = False
+              Wrap = False
+            end
+            object PBPVmr2: TPBSuperSpin
+              Left = 144
+              Top = 88
+              Width = 64
+              Height = 22
+              Cursor = crDefault
+              Hint = 'Body weight (kg) to reach PDmax'
+              Alignment = taRightJustify
+              Decimals = 0
+              MaxValue = 5000.000000000000000000
+              MinValue = 20.000000000000000000
+              NumberFormat = Standard
+              OnChange = PBPVmr2Change
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 3
+              Increment = 1.000000000000000000
+              RoundValues = False
+              Wrap = False
+            end
+          end
+        end
+      end
+      object PPerfRight: TPanel
+        Left = 240
+        Top = 0
+        Width = 528
+        Height = 388
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 1
+        object GBResults: TGroupBox
+          Left = 0
+          Top = 72
+          Width = 528
+          Height = 316
+          Align = alClient
+          Caption = 'Simulation results'
+          TabOrder = 1
+          object PGraphTop: TPanel
+            Left = 2
+            Top = 15
+            Width = 168
+            Height = 238
+            Align = alLeft
+            BevelOuter = bvNone
+            TabOrder = 0
+            object GBGraphX: TGroupBox
+              Left = 6
+              Top = 121
+              Width = 160
+              Height = 48
+              Caption = 'X-axis'
+              TabOrder = 2
+              object CBGraphXD: TComboBox
+                Left = 8
+                Top = 16
+                Width = 144
+                Height = 21
+                Style = csDropDownList
+                ItemHeight = 13
+                ItemIndex = 0
+                TabOrder = 0
+                Text = 'Body weight (kg)'
+                OnChange = CBGraphXDChange
+                Items.Strings = (
+                  'Body weight (kg)'
+                  'Age (d)'
+                  'Duration (d)'
+                  'Duration (week)')
+              end
+              object CBGraphXP: TComboBox
+                Left = 8
+                Top = 16
+                Width = 144
+                Height = 21
+                Style = csDropDownList
+                ItemHeight = 13
+                ItemIndex = 0
+                TabOrder = 1
+                Text = 'Week'
+                Visible = False
+                OnChange = CBGraphXPChange
+                Items.Strings = (
+                  'Week'
+                  'Feed sequence rule')
+              end
+            end
+            object GBGraphY: TGroupBox
+              Left = 6
+              Top = 49
+              Width = 160
+              Height = 72
+              Caption = 'Y-axis'
+              TabOrder = 1
+              object CBGraphYD: TComboBox
+                Left = 8
+                Top = 16
+                Width = 144
+                Height = 21
+                Style = csDropDownList
+                ItemHeight = 13
+                ItemIndex = 0
+                TabOrder = 0
+                Text = 'Body weight'
+                OnChange = CBGraphYDChange
+                Items.Strings = (
+                  'Body weight'
+                  'Time'
+                  'Feed usage'
+                  'Feed wastage'
+                  'Feed intake'
+                  'Feed:Gain'
+                  'Gain:Feed'
+                  'Protein'
+                  'Lipid'
+                  'Carcass')
+              end
+              object CBGraphYP: TComboBox
+                Left = 8
+                Top = 16
+                Width = 144
+                Height = 21
+                Style = csDropDownList
+                ItemHeight = 13
+                ItemIndex = 0
+                TabOrder = 1
+                Text = 'Body weight'
+                Visible = False
+                OnChange = CBGraphYPChange
+                Items.Strings = (
+                  'Body weight'
+                  'Time'
+                  'Feed usage'
+                  'Feed wastage'
+                  'Feed intake'
+                  'Feed:Gain'
+                  'Gain:Feed'
+                  'Protein'
+                  'Lipid')
+              end
+              object CBGraphYU: TComboBox
+                Left = 8
+                Top = 40
+                Width = 144
+                Height = 21
+                Style = csDropDownList
+                ItemHeight = 13
+                TabOrder = 2
+                OnChange = CBGraphYUChange
+              end
+            end
+            object GBGraphT: TGroupBox
+              Left = 6
+              Top = 1
+              Width = 160
+              Height = 48
+              Caption = 'Graph type'
+              TabOrder = 0
+              object CBGraphT: TComboBox
+                Left = 8
+                Top = 16
+                Width = 144
+                Height = 21
+                Style = csDropDownList
+                ItemHeight = 13
+                ItemIndex = 0
+                TabOrder = 0
+                Text = 'Dynamic view'
+                OnChange = CBGraphTChange
+                Items.Strings = (
+                  'Dynamic view'
+                  'View per period')
+              end
+            end
+          end
+          object Graph: TChart
+            Left = 170
+            Top = 15
+            Width = 356
+            Height = 238
+            AllowPanning = pmNone
+            BackWall.Brush.Color = clWhite
+            BackWall.Brush.Style = bsClear
+            BackWall.Color = clWhite
+            LeftWall.Color = clWhite
+            Legend.Alignment = laBottom
+            Legend.ColorWidth = 10
+            Legend.DividingLines.Color = clSilver
+            Legend.LegendStyle = lsSeries
+            Legend.Shadow.Color = clGray
+            Legend.Shadow.HorizSize = 0
+            Legend.Shadow.VertSize = 0
+            Legend.Symbol.Width = 10
+            Legend.TopPos = 0
+            MarginBottom = 0
+            MarginLeft = 5
+            MarginTop = 3
+            Title.Text.Strings = (
+              'TChart')
+            Title.Visible = False
+            BottomAxis.ExactDateTime = False
+            BottomAxis.Increment = 10.000000000000000000
+            BottomAxis.Title.Font.Style = [fsBold]
+            LeftAxis.Automatic = False
+            LeftAxis.AutomaticMaximum = False
+            LeftAxis.AutomaticMinimum = False
+            LeftAxis.ExactDateTime = False
+            LeftAxis.Increment = 100.000000000000000000
+            LeftAxis.Maximum = 600.000000000000000000
+            LeftAxis.MinorTickLength = 1
+            LeftAxis.Title.Font.Style = [fsBold]
+            RightAxis.ExactDateTime = False
+            RightAxis.Grid.Visible = False
+            RightAxis.Title.Angle = 90
+            RightAxis.Title.Font.Style = [fsBold]
+            View3D = False
+            Zoom.Allow = False
+            Align = alClient
+            BevelOuter = bvNone
+            TabOrder = 1
+            object LigneAdLib: TLineSeries
+              Marks.Arrow.Visible = True
+              Marks.Callout.Brush.Color = clBlack
+              Marks.Callout.Arrow.Visible = True
+              Marks.Visible = False
+              SeriesColor = clBlack
+              Title = 'Ad libitum'
+              Dark3D = False
+              LinePen.Width = 2
+              Pointer.InflateMargins = True
+              Pointer.Style = psRectangle
+              Pointer.Visible = False
+              XValues.Name = 'X'
+              XValues.Order = loAscending
+              YValues.Name = 'Y'
+              YValues.Order = loNone
+            end
+            object LigneRation: TLineSeries
+              Marks.Arrow.Visible = True
+              Marks.Callout.Brush.Color = clBlack
+              Marks.Callout.Arrow.Visible = True
+              Marks.Visible = False
+              Title = 'Feed rationing plan'
+              Dark3D = False
+              LinePen.Width = 2
+              Pointer.InflateMargins = True
+              Pointer.Style = psRectangle
+              Pointer.Visible = False
+              XValues.Name = 'X'
+              XValues.Order = loAscending
+              YValues.Name = 'Y'
+              YValues.Order = loNone
+            end
+            object BarreAdLib: TBarSeries
+              Active = False
+              Marks.Arrow.Visible = False
+              Marks.Callout.Brush.Color = clBlack
+              Marks.Callout.Arrow.Visible = False
+              Marks.Callout.Length = -16
+              Marks.Font.Color = clWhite
+              Marks.Style = smsValue
+              Marks.Transparent = True
+              Marks.Visible = True
+              SeriesColor = clBlack
+              Title = 'Ad libitum'
+              Gradient.Direction = gdTopBottom
+              Shadow.Color = 8618883
+              XValues.Name = 'X'
+              XValues.Order = loAscending
+              YValues.Name = 'Barre'
+              YValues.Order = loNone
+            end
+            object BarreRation: TBarSeries
+              Active = False
+              BarPen.Color = clRed
+              Marks.Arrow.Visible = False
+              Marks.Callout.Brush.Color = clBlack
+              Marks.Callout.Arrow.Visible = False
+              Marks.Callout.Length = -16
+              Marks.Font.Color = clWhite
+              Marks.Style = smsValue
+              Marks.Transparent = True
+              Marks.Visible = True
+              SeriesColor = clRed
+              Title = 'Feed rationing plan'
+              Gradient.Direction = gdTopBottom
+              Shadow.Color = 8553090
+              XValues.Name = 'X'
+              XValues.Order = loAscending
+              YValues.Name = 'Barre'
+              YValues.Order = loNone
+            end
+          end
+          object PResults: TPanel
+            Left = 2
+            Top = 253
+            Width = 524
+            Height = 61
+            Align = alBottom
+            BevelOuter = bvNone
+            TabOrder = 2
+            object SGResult: TStringGrid
+              Left = 6
+              Top = 0
+              Width = 513
+              Height = 55
+              ColCount = 7
+              Ctl3D = False
+              DefaultRowHeight = 17
+              FixedCols = 0
+              RowCount = 3
+              FixedRows = 0
+              Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine]
+              ParentCtl3D = False
+              ParentShowHint = False
+              ScrollBars = ssNone
+              ShowHint = True
+              TabOrder = 0
+              OnDrawCell = SGResultDrawCell
+              OnMouseMove = SGResultMouseMove
+              ColWidths = (
+                64
+                121
+                64
+                64
+                64
+                64
+                64)
+            end
+          end
+        end
+        object GBSimul: TGroupBox
+          Left = 0
+          Top = 0
+          Width = 528
+          Height = 72
+          Align = alTop
+          Caption = 'Reference simulation'
+          TabOrder = 0
+          object LSeqAli: TLabel
+            Left = 8
+            Top = 20
+            Width = 97
+            Height = 13
+            Caption = 'Feed sequence plan'
+          end
+          object LRation: TLabel
+            Left = 8
+            Top = 44
+            Width = 90
+            Height = 13
+            Caption = 'Feed rationing plan'
+          end
+          object SBCalibrage: TSpeedButton
+            Left = 400
+            Top = 23
+            Width = 120
+            Height = 32
+            Hint = 'Calibrate model parameters'
+            Caption = 'Calibration'
+            Glyph.Data = {
+              76010000424D7601000000000000760000002800000020000000100000000100
+              04000000000000010000C40E0000C40E00001000000000000000000000000000
+              800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+              FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DD7000000000
+              7DDDDDD777777777DFDDDD08888888880DDDDD7FDFDFDFFF7FDDDD0808089998
+              0DDDDD7F7D7D777D7FDDDD08888888880DDDDD7FDFDFDFDF7FDDDD0808080808
+              0DDDDD7F7D7D7D7D7FDDDD08888888880DDDDD7FDFDFDFDF7FDDDD0808080808
+              0DDDDD7F7D7D7D7D7FDDDD08888888880DDDDD7FDFDFDFDF7FDDDD0808080808
+              0DDDDD7F7D7D7D7D7FDDDD08888888880DDDDD7FDFFFFFFF7FDDDD0800000008
+              0DDDDD7F7777777F7FDDDD08000E0E080DDDDD7F7FFFFF7F7FDDDD0800000008
+              0DDDDD7F7777777D7FDDDD08888888880DDDDD7FDDDDDDDD7FDDDD0888888888
+              0DDDDD7DFFFFFFFF7DDDDD70000000007DDDDDD777777777DDDD}
+            NumGlyphs = 2
+            ParentShowHint = False
+            ShowHint = True
+            OnClick = SBCalibrageClick
+          end
+          object CBSeqAli: TComboBox
+            Left = 128
+            Top = 16
+            Width = 240
+            Height = 21
+            AutoCompleteDelay = 1500
+            Style = csDropDownList
+            ItemHeight = 13
+            ParentShowHint = False
+            ShowHint = True
+            Sorted = True
+            TabOrder = 0
+            OnChange = CBSeqAliChange
+          end
+          object CBRation: TComboBox
+            Left = 128
+            Top = 40
+            Width = 240
+            Height = 21
+            AutoCompleteDelay = 1500
+            Style = csDropDownList
+            ItemHeight = 13
+            ParentShowHint = False
+            ShowHint = True
+            Sorted = True
+            TabOrder = 1
+            OnChange = CBRationChange
+          end
+        end
+      end
+    end
+  end
+  object ASQLite3DBInraPorc: TASQLite3DB
+    TimeOut = 0
+    CharacterEncoding = 'UTF8'
+    DefaultExt = '.sqb'
+    DriverDLL = 'SQLite3.dll'
+    Connected = False
+    MustExist = False
+    ExecuteInlineSQL = False
+    Left = 488
+    Top = 16
+  end
+  object ASQLite3TableObservProfilP: TASQLite3Table
+    AutoCommit = False
+    SQLiteDateFormat = True
+    Connection = ASQLite3DBInraPorc
+    MaxResults = 0
+    StartResult = 0
+    TypeLess = False
+    SQLCursor = True
+    ReadOnly = False
+    UniDirectional = False
+    TableName = 'ObservProfilP'
+    PrimaryAutoInc = False
+    OrderBy = 'Line'
+    Left = 552
+    Top = 16
+    object ASQLite3TableObservProfilPProfile: TIntegerField
+      FieldName = 'Profile'
+    end
+    object ASQLite3TableObservProfilPLine: TIntegerField
+      FieldName = 'Line'
+    end
+    object ASQLite3TableObservProfilPAge: TIntegerField
+      DisplayLabel = 'Age (d)'
+      FieldName = 'Age'
+    end
+    object ASQLite3TableObservProfilPFeed: TFloatField
+      DisplayLabel = 'Cumulative feed usage (kg)'
+      FieldName = 'Feed'
+      DisplayFormat = '#,##0.0'
+    end
+    object ASQLite3TableObservProfilPWeight: TFloatField
+      DisplayLabel = 'Body weight (kg)'
+      FieldName = 'Weight'
+      DisplayFormat = '##0.0'
+    end
+    object ASQLite3TableObservProfilPBackfat: TFloatField
+      DisplayLabel = 'Backfat thickness (mm)'
+      FieldName = 'Backfat'
+      DisplayFormat = '#0.0'
+    end
+    object ASQLite3TableObservProfilPLean: TFloatField
+      DisplayLabel = 'Lean meat (%)'
+      FieldName = 'Lean'
+      DisplayFormat = '#0.0'
+    end
+  end
+  object ASQLite3QueryCreate: TASQLite3Query
+    AutoCommit = False
+    SQLiteDateFormat = True
+    Connection = ASQLite3DBInraPorc
+    MaxResults = 0
+    StartResult = 0
+    TypeLess = False
+    SQLCursor = True
+    ReadOnly = False
+    UniDirectional = False
+    RawSQL = False
+    Left = 520
+    Top = 16
+  end
+end
Index: UFPrevGraph.pas
===================================================================
--- UFPrevGraph.pas	(révision 0)
+++ UFPrevGraph.pas	(révision 3)
@@ -0,0 +1,72 @@
+unit UFPrevGraph;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Messages, StdCtrls, Buttons, ExtCtrls,
+  TeeProcs, TeePreviewPanel;
+
+type
+  TFPrevGraph = class(TForm)
+    LBas: TPanel;
+    BBPrint: TBitBtn;
+    TPPGraph: TTeePreviewPanel;
+    LPrinter: TLabel;
+    CBPrinter: TComboBox;
+    procedure FormShow(Sender: TObject);
+    procedure BBPrintClick(Sender: TObject);
+    procedure CBPrinterChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure WMSysCommand(var Mess: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FPrevGraph: TFPrevGraph;
+
+implementation
+
+uses
+  Printers, SysUtils, gnugettext, UUtil;
+
+{$R *.dfm}
+
+procedure TFPrevGraph.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+end;
+
+procedure TFPrevGraph.FormShow(Sender: TObject);
+begin
+  BBPrint.Enabled := IsComplete or IsEducation ;
+  BBPrint.Enabled := IsComplete or IsEducation ;
+  CBPrinter.Items.Assign(Printer.Printers);
+  CBPrinter.ItemIndex := Printer.PrinterIndex;
+end;
+
+procedure TFPrevGraph.BBPrintClick(Sender: TObject);
+begin
+  TPPGraph.Print;
+end;
+
+procedure TFPrevGraph.CBPrinterChange(Sender: TObject);
+begin
+  Printer.PrinterIndex := CBPrinter.ItemIndex;
+end;
+
+procedure TFPrevGraph.WMSysCommand(var Mess: TWMSysCommand);
+begin
+  if Mess.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFBesGestE.pas
===================================================================
--- UFBesGestE.pas	(révision 0)
+++ UFBesGestE.pas	(révision 3)
@@ -0,0 +1,583 @@
+unit UFBesGestE ;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons, UVariables;
+
+type
+  TFBesGestE = class(TForm)
+    GBProfil: TGroupBox;
+    GBResult: TGroupBox;
+    GBLoge: TGroupBox;
+    CBProfil: TComboBox;
+    CBLoge: TComboBox;
+    ChkLoge: TCheckBox;
+    BBRapGest: TBitBtn;
+    BBResGest: TBitBtn;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormActivate(Sender: TObject);
+    procedure CBProfilChange(Sender: TObject);
+    procedure CBLogeChange(Sender: TObject);
+    procedure ChkLogeClick(Sender: TObject);
+    procedure BBResGestClick(Sender: TObject);
+    procedure BBRapGestClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modal: boolean;
+    procedure CalcApport;
+    procedure CalcResult;
+  public
+    { D�clarations publiques }
+    AppAliTot, AppEDTot, AppEMTot, AppENTot: array[1..NB_CYCLES] of double;
+    BesEMTot, BesEMEntTot, BesEMActTot, BesEMTheTot, BesEMPortTot, BesEMResTot: array[1..NB_CYCLES] of double;
+    AppAli, AppED, AppEM, AppEN: array [1..NB_CYCLES, 1..DureeGest] of double;
+    BesEMEnt, BesEMAct, BesEMThe, BesEMPort, BesP, BesCa: array [1..NB_CYCLES, 1..DureeGest] of double;
+    AppAA, BesAA, BesAAEnt, BesAAPort, BesAARes: array[1..NB_CYCLES, 1..14, 1..DureeGest] of double;
+  end;
+
+var
+  FBesGestE: TFBesGestE;
+
+implementation
+
+uses
+  Math, gnugettext, UInit, UFindRec, UCalcul, UFResBesGestE, UFRapBesGestE;
+
+{$R *.dfm}
+
+{ TFBesGestE }
+
+procedure TFBesGestE.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 296 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MaxWidth := Constraints.MinWidth;
+  Constraints.MinHeight := 160 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  Constraints.MaxHeight := Constraints.MinHeight;
+end;
+
+procedure TFBesGestE.FormShow(Sender: TObject);
+begin
+  Modal := False;
+end;
+
+procedure TFBesGestE.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  Action := caFree ;
+  NumWinBesGestE := -1;
+end;
+
+procedure TFBesGestE.FormActivate(Sender: TObject);
+begin
+  if not Modal
+  then
+  begin
+    StringsProfilT(CBProfil.Items, False);
+    StringsLogeT(CBLoge.Items, False);
+  end;
+end;
+
+procedure TFBesGestE.CBProfilChange(Sender: TObject);
+begin
+  if CBProfil.ItemIndex = -1
+  then
+    CBProfil.Hint := ''
+  else
+  begin
+    PProfilT := ListProfilT[FindIdxProfilT (CBProfil.Text)] ;
+    CBProfil.Hint := PProfilT.Memo ;
+    Update := TRUE ;
+    if ChkLoge.Checked
+    then
+      ChkLogeClick (nil)
+    else
+      ChkLoge.Checked := TRUE ;
+    CalcApport ;
+    CalcResult ;
+    Update := FALSE ;
+    BBResGest.Enabled := TRUE ;
+    BBRapGest.Enabled := TRUE ;
+  end ;
+end;
+
+procedure TFBesGestE.CBLogeChange(Sender: TObject);
+begin
+  if CBLoge.ItemIndex = -1
+  then
+    CBLoge.Hint := ''
+  else
+  begin
+    PLogeT := ListLogeT[FindIdxLogeT (CBLoge.Text)] ;
+    CBLoge.Hint := PLogeT.Memo ;
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CalcResult ;
+      Update := FALSE ;
+    end ;
+  end ;
+end;
+
+procedure TFBesGestE.ChkLogeClick(Sender: TObject);
+begin
+  if ChkLoge.Checked
+  then
+  begin
+    CBLoge.Enabled := FALSE ;
+    if CBProfil.ItemIndex <> -1
+    then
+      if not Update
+      then
+      begin
+        Update := TRUE ;
+        CBLoge.ItemIndex := CBLoge.Items.IndexOf (FindNomLogeT (PProfilT.Loge)) ;
+        CBLogeChange (nil) ;
+        CalcResult ;
+        Update := FALSE ;
+      end
+      else
+      begin
+        CBLoge.ItemIndex := CBLoge.Items.IndexOf (FindNomLogeT (PProfilT.Loge)) ;
+        CBLogeChange (nil) ;
+      end ;
+  end
+  else
+    CBLoge.Enabled := TRUE ;
+end;
+
+procedure TFBesGestE.CalcApport ;
+var
+  i, Cycle, Jour, AA, Unite : integer ;
+  PctAli1, PctAli2, Quantite, Ingere, IngSec1, IngSec2 : double ;
+  NumRuleSeqAli, NumRuleRation : integer ;
+  RuleSeqAli : array[1..MAX_RULE] of RecRuleSeqAliT ;
+  RuleRation : array[1..MAX_RULE] of RecRuleRationT ;
+  RuleSeqAliInit, RuleRationInit, Ecart : integer ;
+  RecCC1, RecCC2 : CompositionChimique ;
+  TabAAtotal1, TabAAtotal2, TabCUDAA1, TabCUDAA2 : array[0..12] of double ;
+  ok : boolean ;
+begin
+  for Cycle := 1 to NB_CYCLES do
+  begin
+    PSeqAliT := ListSeqAliT[FindIdxSeqAliT (FindNomSeqAliT (PProfilT.SeqAli))] ;
+    for i := 1 to PSeqAliT.NbRuleGest do
+      RuleSeqAli[i] := PSeqAliT.RuleGest[i] ;
+    NumRuleSeqAli := 1 ;
+    RuleSeqAliInit := 1 ;
+    with RuleRation[1] do
+    begin
+      ModeFin := -1 ;
+      Equation := 0 ; // Constant
+      a := PProfilT.Gest[Cycle] ;
+    end ;
+    Unite := PProfilT.Unite ;
+    NumRuleRation := 1 ;
+    RuleRationInit := 1 ;
+    // Boucle des jours
+    for Jour := 1 to DureeGest do
+    begin
+      // Aliment(s) distribu�(s)
+      repeat
+        ok := TRUE ;
+        with RuleSeqAli[NumRuleSeqAli] do
+          if ModeFin = 0
+          then // Dur�e
+            if (Jour - RuleSeqAliInit + 1 > ValFin) then ok := FALSE ;
+        if not (ok)
+        then // Changement de r�gle
+        begin
+          Inc (NumRuleSeqAli) ;
+          RuleSeqAliInit := Jour ;
+        end ;
+      until ok ;
+      with RuleSeqAli[NumRuleSeqAli] do
+      begin
+        // Composition aliment 1
+        if NumAli1 = -1
+        then
+        begin
+          RecCC1 := CCVide ;
+          for i := 0 to 12 do
+            TabAAtotal1[i] := 0 ;
+          for i := 0 to 12 do
+            TabCUDAA1[i] := 0 ;
+        end
+        else
+        begin
+          PAliment := ListAliment[FindIdxAliment (FindNomAliment (NumAli1))] ;
+          RecCC1 := PAliment.CC ;
+          for i := 0 to 12 do
+            TabAAtotal1[i] := PAliment.AAtotal[i] ;
+          for i := 0 to 12 do
+            TabCUDAA1[i] := PAliment.CUDAA[i] ;
+        end ;
+        // Composition aliment 2
+        if NumAli2 = -1
+        then
+        begin
+          RecCC2 := CCVide ;
+          for i := 0 to 12 do
+            TabAAtotal2[i] := 0 ;
+          for i := 0 to 12 do
+            TabCUDAA2[i] := 0 ;
+        end
+        else
+        begin
+          PAliment := ListAliment[FindIdxAliment (FindNomAliment (NumAli2))] ;
+          RecCC2 := PAliment.CC ;
+          for i := 0 to 12 do
+            TabAAtotal2[i] := PAliment.AAtotal[i] ;
+          for i := 0 to 12 do
+            TabCUDAA2[i] := PAliment.CUDAA[i] ;
+        end ;
+        // Calcul des % aliments
+        if PctAli1Init = PctAli1Fin
+        then
+          PctAli1 := PctAli1Init
+        else // Transition
+        begin
+          Ecart := PctAli1Fin - PctAli1Init ;
+          if ModeFin = 0
+          then // Dur�e
+            PctAli1 := PctAli1Init + (Jour - RuleSeqAliInit) * Ecart / ValFin
+          else // Fin
+            PctAli1 := PctAli1Init + (Jour - RuleSeqAliInit) * Ecart / (DureeGest - RuleSeqAliInit) ;
+        end ;
+      end ;
+      PctAli2 := 100 - PctAli1 ;
+      // Quantit�(s) distribu�e(s)
+      repeat
+        ok := TRUE ;
+        with RuleRation[NumRuleRation] do
+          if ModeFin = 0
+          then // Dur�e
+            if Jour - RuleRationInit + 1 > ValFin then ok := FALSE ;
+        if not (ok)
+        then // Changement de r�gle
+        begin
+          Inc (NumRuleRation) ;
+          RuleRationInit := Jour ;
+        end ;
+      until ok ;
+      with RuleRation[NumRuleRation] do
+      begin
+        // Calcul des quantit�s
+        case Equation of
+          0 : // Constant
+            Quantite := a ;
+          1 : // Lin�aire
+            Quantite := a + b * (Jour - RuleRationInit) ;
+          2 : // Lin�aire-plateau
+            Quantite := LPvaleur (a, b, c, Jour - RuleRationInit + 1, d) ;
+          3 : // Curvilin�aire
+            Quantite := CLvaleur (a, c, Jour - RuleRationInit + 1, d) ;
+          else
+            Quantite := 0 ;
+        end ;
+        // Convertion de ED, EM, EN en quantit� si besoin
+        case Unite of
+          1 : // ED (MJ/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.ED_T * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.ED_T * RecCC2.MS / 1000) ;
+          2 : // EM (MJ/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.EM_T * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.EM_T * RecCC2.MS / 1000) ;
+          3 : // EN (MJ/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.EN_T * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.EN_T * RecCC2.MS / 1000) ;
+          4 : // MS (kg/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.MS / 1000) ;
+          else // QI (kg/j)
+            Ingere := Quantite ;
+        end ;
+      end ;
+      // Aliment ing�r�
+      AppAli[Cycle, Jour] := Ingere ;
+      IngSec1 := Ingere * PctAli1 / 100 * RecCC1.MS / 1000 ;
+      IngSec2 := Ingere * PctAli2 / 100 * RecCC2.MS / 1000 ;
+      // Energie ing�r�e
+      AppED[Cycle, Jour] := IngSec1 * RecCC1.ED_T + IngSec2 * RecCC2.ED_T ;
+      AppEM[Cycle, Jour] := IngSec1 * RecCC1.EM_T + IngSec2 * RecCC2.EM_T ;
+      AppEN[Cycle, Jour] := IngSec1 * RecCC1.EN_T + IngSec2 * RecCC2.EN_T ;
+      // Acides amin�s digestibles
+      for AA := 1 to 12 do
+        AppAA[Cycle, AA, Jour] := IngSec1 * TabAAtotal1[AA] * TabCUDAA1[AA] / 100
+          + IngSec2 * TabAAtotal2[AA] * TabCUDAA2[AA] / 100 ;
+      // met+cys
+      AppAA[Cycle, 13, Jour] := AppAA[Cycle, 2, Jour] + AppAA[Cycle, 3, Jour] ;
+      // phe+tyr
+      AppAA[Cycle, 14, Jour] := AppAA[Cycle, 6, Jour] + AppAA[Cycle, 7, Jour] ;
+    end ;
+    // Totaux
+    AppAliTot[Cycle] := Sum (AppAli[Cycle]) ;
+    AppEDTot[Cycle] := Sum (AppED[Cycle]) ;
+    AppEMTot[Cycle] := Sum (AppEM[Cycle]) ;
+    AppENTot[Cycle] := Sum (AppEN[Cycle]) ;
+  end ;
+end ;
+
+procedure TFBesGestE.CalcResult ;
+{
+const
+  DELTA = 0.3 ;
+  SEUIL = 0.001 ;
+  MAX_TOURS = 1000 ;
+}
+var
+  i, j, {tour, mini,} Cycle, Jour, AA, AgeSail : integer ;
+  NumRuleLoge, RuleLogeInit, Ecart, Temperature : integer ;
+//  delta_pmax, delta_a, delta_b : double ;
+//  tab_pmax, tab_a, tab_b, tab_ecart : array[0..NB_CYCLES] of double ;
+  PdsPort, PdsSail, PdsApMB, PdsAvMB, P2Sail, P2MB, NesTotaux : double ;
+  EMSail, EMApMB, GMQ, PV, PFoetus, PPlacenta : double ;
+  BesEMBaseTot, EMEntSail, CorrJ, CorrNR, NRUterus, NR, LysRet, LysEnt : double ;
+  BesEMBase : array [1..DureeGest] of double ;
+  EMPortCum : array [0..DureeGest] of double ;
+  RuleLoge : array[1..MAX_RULE] of RecRuleLogeT ;
+  ok : boolean ;
+//  pmax, a, b : double ;
+begin
+{
+  // Recherche des param�tres pour la courbe de poids apr�s mise-bas
+  tab_pmax[0] := 0 ;
+  for i := 1 to NB_CYCLES do
+    with PProfilT.Truies[i] do
+      if PdsApMB > tab_pmax[0]
+      then
+        tab_pmax[0] := PdsApMB ;
+  tab_a[0] := 1.5 ;
+  tab_b[0] := 1.1 ;
+  delta_pmax := tab_pmax[0] * DELTA ;
+  delta_a := tab_a[0] * DELTA ;
+  delta_b := tab_b[0] * DELTA ;
+  tour := 0 ;
+  repeat
+    // �value les points
+    for i := 1 to NB_CYCLES do
+      tab_pmax[i] := tab_pmax[0] + Power (-1, i) * delta_pmax ;
+    for i := 1 to NB_CYCLES do
+      tab_a[i] := tab_a[0] + Power (-1, i) * delta_a ;
+    for i := 1 to NB_CYCLES do
+      tab_b[i] := tab_b[0] + Power (-1, (i + 1) div 2) * delta_b ;
+    for j := 0 to NB_CYCLES do
+    begin
+      tab_ecart[j] := 0 ;
+      for i := 1 to NB_CYCLES do
+        with PProfilT.Truies[i] do
+          tab_ecart[j] := tab_ecart[j] + Power (tab_pmax[j] * (1 - Exp ((- tab_a[j] / 1000) * Power (AgeSail + 114, tab_b[j]))) - PdsApMB, 2) ;
+    end ;
+    // recherche le meilleur point
+    mini := 0 ;
+    for i := 1 to NB_CYCLES do
+      if tab_ecart[i] < tab_ecart[mini]
+      then
+        mini := i ;
+    // d�termine le point central
+    if mini = 0
+    then
+    begin
+      delta_pmax := delta_pmax * 0.8 ;
+      delta_a := delta_a * 0.8 ;
+      delta_b := delta_b * 0.8 ;
+    end
+    else
+    begin
+      tab_pmax[0] := tab_pmax[mini] ;
+      tab_a[0] := tab_a[mini] ;
+      tab_b[0] := tab_b[mini] ;
+    end ;
+   // �value si les crit�res de sortie sont satisfaits
+    ok := (delta_pmax < Abs (tab_pmax [mini] * SEUIL))
+      and (delta_a < Abs (tab_a [mini] * SEUIL))
+      and (delta_b < Abs (tab_b [mini] * SEUIL)) ;
+    Inc (tour) ;
+  until ok or (tour > MAX_TOURS) ;
+  if ok
+  then
+  begin
+    pmax := tab_pmax[0] ;
+    a := tab_a[0] ;
+    b := tab_b[0] ;
+  end ;
+}
+  for Cycle := 1 to NB_CYCLES do
+  begin
+    for i := 1 to PLogeT.NbRuleGest do
+      RuleLoge[i] := PLogeT.RuleGest[i] ;
+    NumRuleLoge := 1 ;
+    RuleLogeInit := 1 ;
+    AgeSail := PProfilT.Truies[Cycle].AgeSail ;
+    NesTotaux := PProfilT.Porcelets[Cycle].NesTotaux ;
+    PdsSail := PProfilT.Truies[Cycle].PdsSail ;
+    P2Sail := PProfilT.Truies[Cycle].P2Sail ;
+    P2MB := PProfilT.Truies[Cycle].P2MB ;
+    // Poids port�e
+    PdsPort := NesTotaux * PProfilT.Porcelets[Cycle].PdsNais ;
+    // Poids apr�s mise-bas (selon �quation)
+    PdsApMB := PProfilT.pmax * (1 - Exp ((- PProfilT.a / 1000) * Power (AgeSail + DureeGest, PProfilT.b))) ;
+    PdsApMB := RoundTo (PdsApMB, -1) ;
+    // Poids avant mise-bas
+    PdsAvMB := PdsApMB + 0.3 + 1.329 * PdsPort ;
+    // Gain de poids (lin�aire)
+    GMQ := (PdsAvMB - PdsSail) / DureeGest ;
+    //
+    // Besoins �n�rg�tiques
+    //
+    // Energie pour la constitution de r�serves
+    EMSail := (-256.8 + 3.2672 * PdsSail * PV2PVV + 10.992 * P2Sail) * 4.18 ;
+    EMApMB := (-256.8 + 3.2672 * PdsApMB * PV2PVV + 10.992 * P2MB) * 4.18 ;
+    BesEMResTot[Cycle] := (EMApMB - EMSail) / DureeGest / 0.77 ;
+    EMPortCum[0] := 0 ;
+    for Jour := 1 to DureeGest do
+    begin
+      repeat
+        ok := TRUE ;
+        with RuleLoge[NumRuleLoge] do
+          if ModeFin = 0
+          then // Dur�e
+            if Jour - RuleLogeInit + 1 > ValFin then ok := FALSE ;
+        if not (ok)
+        then // Changement de r�gle
+        begin
+          Inc (NumRuleLoge) ;
+          RuleLogeInit := Jour ;
+        end ;
+      until ok ;
+      PV := PdsSail + GMQ * Jour ;
+      BesEMEnt[Cycle, Jour] := Power (PV, 0.75) * EEGest
+        - 0.3 * Power (PV, 0.75) * 240 / 1000 ;
+      EMPortCum[Jour] := Exp (11.72 - 8.62 * Exp (-0.01382 * Jour) + 0.0932 * NesTotaux) / 1000
+        * (PdsPort * 1.3 * 4.18) / (Exp (11.72 - 8.62 * Exp (-0.01382 * DureeGest) + 0.0932 * NesTotaux) / 1000) ;
+      BesEMPort[Cycle, Jour] := (EMPortCum[Jour] - EMPortCum[Jour - 1]) / 0.48 ;
+      BesEMBase[Jour] := BesEMEnt[Cycle, Jour] + BesEMPort[Cycle, Jour] + BesEMResTot[Cycle]
+        + 0.3 * Power (PV, 0.75) * 240 / 1000 ; // Activit� de base
+      BesEMAct[Cycle, Jour] := 0.3 * Power (PV, 0.75) * RuleLoge[NumRuleLoge].Act / 1000 ;
+      if (RuleLoge[NumRuleLoge].Sol = 1)
+      then // Paill�
+        Temperature := RuleLoge[NumRuleLoge].Temp + 3
+      else
+        Temperature := RuleLoge[NumRuleLoge].Temp ;
+      if (RuleLoge[NumRuleLoge].Typ = 1)
+      then // Collectif
+        if Temperature < TCICol
+        then
+          BesEMThe[Cycle, Jour] := (TCICol - Temperature) * Power (PV, 0.75) * EThCol / 1000
+        else
+          BesEMThe[Cycle, Jour] := 0
+      else
+        if Temperature < TCIInd
+        then
+          BesEMThe[Cycle, Jour] := (TCIInd - Temperature) * Power (PV, 0.75) * EThInd / 1000
+        else
+          BesEMThe[Cycle, Jour] := 0 ;
+    end ;
+    BesEMEntTot[Cycle] := Mean (BesEMEnt[Cycle]) ;
+    BesEMPortTot[Cycle] := Mean (BesEMPort[Cycle]) ;
+    BesEMBaseTot := Mean (BesEMBase) ;
+    BesEMActTot[Cycle] := Mean (BesEMAct[Cycle]) ;
+    BesEMTheTot[Cycle] := Mean (BesEMThe[Cycle]) ;
+    // Besoin total en �nergie
+    BesEMTot[Cycle] := BesEMEntTot[Cycle] + BesEMActTot[Cycle] + BesEMResTot[Cycle] + BesEMPortTot[Cycle] + BesEMTheTot[Cycle] ;
+    //
+    // Besoins en acides amin�s
+    //
+    EMEntSail := Power (PdsSail, 0.75) * EEGest ;
+    for Jour := 1 to DureeGest do
+    begin
+      PV := PdsSail + GMQ * Jour ;
+      NRUterus := Exp (8.09 - 8.71 * Exp (-0.01494 * Jour) + 0.0872 * NesTotaux) / 6.25
+        - Exp (8.09 - 8.71 * Exp (-0.01494 * (Jour - 1)) + 0.0872 * NesTotaux) / 6.25 ;
+      if (Jour < 98)
+      then
+        CorrJ := Jour
+      else
+        CorrJ := Jour - 6 / 16 * (Jour - 98) ;
+      Case cycle of
+        1 : // Port�e 1
+          CorrNR := 0.5708 ;
+        2 : // Port�e 2
+          CorrNR := 0.4345 ;
+        else
+          CorrNR := 0.3664 ;
+      end ;
+      NR := (-0.43 + 45.92 * CorrJ / 100 - 105.35 * Power (CorrJ / 100, 2) + 64.388 * Power (CorrJ / 100, 3)
+        + CorrNR * (BesEMBaseTot - EMEntSail) + NRUterus) * 0.85 ;
+      LysRet := NR * 6.25 * 0.067 ;
+      LysEnt := power (PV, 0.75) * 0.036 ;
+      // 1) Besoin total
+      BesAA[Cycle, 1, Jour] := (LysRet / 0.65) + LysEnt ;
+      for AA := 2 to 12 do
+        BesAA[Cycle, AA, Jour] := BesAA[Cycle, 1, Jour] * ProtIdGest[AA] / 100 ;
+      // met+cys
+      BesAA[Cycle, 13, Jour] := BesAA[Cycle, 1, Jour] * (ProtIdGest[2] + ProtIdGest[3]) / 100 ;
+      // phe+tyr
+      BesAA[Cycle, 14, Jour] := BesAA[Cycle, 1, Jour] * (ProtIdGest[6] + ProtIdGest[7]) / 100 ;
+      // 2) Besoin d'entretien
+      BesAAEnt[Cycle, 1, Jour] := LysEnt ;
+      for AA := 2 to 12 do
+        BesAAEnt[Cycle, AA, Jour] := BesAAEnt[Cycle, 1, Jour] * ProtIdEnt[AA] / 100 ;
+      // met+cys
+      BesAAEnt[Cycle, 13, Jour] := BesAAEnt[Cycle, 1, Jour] * (ProtIdEnt[2] + ProtIdEnt[3]) / 100 ;
+      // phe+tyr
+      BesAAEnt[Cycle, 14, Jour] := BesAAEnt[Cycle, 1, Jour] * (ProtIdEnt[6] + ProtIdEnt[7]) / 100 ;
+      // 3) Besoin pour la port�e
+      for AA := 1 to 14 do
+        BesAAPort[Cycle, AA, Jour] := (BesAA[Cycle, AA, Jour] - BesAAEnt[Cycle, AA, Jour]) / NR * NRUterus ;
+      // 4) Besoin pour la constitution de r�serves
+      for AA := 1 to 14 do
+        BesAARes[Cycle, AA, Jour] := BesAA[Cycle, AA, Jour] - BesAAEnt[Cycle, AA, Jour] - BesAAPort[Cycle, AA, Jour] ;
+    end ;
+    //
+    // Besoin en min�raux
+    //
+    for Jour := 1 to DureeGest do
+    begin
+      PV := PdsSail + GMQ * Jour ;
+      PFoetus := (Exp (4.591 - 6.389 * Exp (0.02398 * (45 - Jour)) + 0.0897 * NesTotaux)
+          - Exp (4.591 - 6.389 * Exp (0.02398 * (45 - (Jour - 1))) + 0.0897 * NesTotaux))
+        * PdsPort * 6.25 / Exp (4.591 - 6.389 * Exp (0.02398 * (45 - DureeGest)) + 0.0897 * NesTotaux) ;
+      PPlacenta := Exp (7.34264 - 1.40598 * Exp (0.0625 * (45 - Jour)) + 0.00759 * Jour + 0.06339 * NesTotaux) * 0.0096 / 23.8
+        - Exp (7.34264 - 1.40598 * Exp (0.0625 * (45 - (Jour - 1))) + 0.00759 * (Jour - 1) + 0.06339 * NesTotaux) * 0.0096 / 23.8 ;
+      // Phosphore digestible
+      BesP[Cycle, Jour] := 10 * PV / 1000
+        + (5.42 - 0.002857 * 2 * PV) * (PdsApMB - PdsSail) / DureeGest
+        + PFoetus + PPlacenta ;
+      // Calcium total
+      BesCa[Cycle, Jour] := BesP[Cycle, Jour] * 3.6 ;
+    end ;
+  end ;
+end ;
+
+procedure TFBesGestE.BBResGestClick(Sender: TObject);
+begin
+  Modal := True;
+  FResBesGestE := TFResBesGestE.Create (Self) ;
+  FResBesGestE.ShowModal ;
+  FResBesGestE.Release ;
+  Modal := False;
+end;
+
+procedure TFBesGestE.BBRapGestClick(Sender: TObject);
+begin
+  Modal := True;
+  FRapBesGestE := TFRapBesGestE.Create(Self);
+  FRapBesGestE.QRRapport.PreviewModal ;
+  FRapBesGestE.Release;
+  Modal := False;
+end;
+
+end.
Index: UFBesLactT.pas
===================================================================
--- UFBesLactT.pas	(révision 0)
+++ UFBesLactT.pas	(révision 3)
@@ -0,0 +1,1096 @@
+unit UFBesLactT ;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons, PBNumEdit, PBSuperSpin;
+
+type
+  TFBesLactT = class(TForm)
+    GBProfil: TGroupBox;
+    LPortee: TLabel;
+    CBProfil: TComboBox;
+    PBPortee: TPBSuperSpin;
+    GBSevrage: TGroupBox;
+    LSevres: TLabel;
+    LPdsNais: TLabel;
+    PBSevres: TPBNumEdit;
+    PBPdsNais: TPBNumEdit;
+    ChkSevres: TCheckBox;
+    ChkPdsNais: TCheckBox;
+    GBMiseBas: TGroupBox;
+    GBAliment: TGroupBox;
+    LRation: TLabel;
+    LSeqAli: TLabel;
+    LAppAli: TLabel;
+    LEMAli: TLabel;
+    CBRation: TComboBox;
+    CBSeqAli: TComboBox;
+    PBAppAli: TPBNumEdit;
+    PBEMAli: TPBNumEdit;
+    ChkSeqAli: TCheckBox;
+    ChkRation: TCheckBox;
+    ChkAppAli: TCheckBox;
+    ChkEMAli: TCheckBox;
+    GBResult: TGroupBox;
+    LAliment: TLabel;
+    LBesoins: TLabel;
+    LdLys: TLabel;
+    LEN: TLabel;
+    LEM: TLabel;
+    PBBesdLys: TPBNumEdit;
+    PBBesEN: TPBNumEdit;
+    PBBesEM: TPBNumEdit;
+    PBBesAli: TPBNumEdit;
+    BBRapLact: TBitBtn;
+    BBResLact: TBitBtn;
+    LP2MB: TLabel;
+    LPdsApMB: TLabel;
+    PBPdsApMB: TPBNumEdit;
+    PBP2MB: TPBNumEdit;
+    ChkPdsApMB: TCheckBox;
+    ChkP2MB: TCheckBox;
+    LDureeLact: TLabel;
+    PBDureeLact: TPBSuperSpin;
+    LPdsSev: TLabel;
+    PBPdsSev: TPBNumEdit;
+    ChkPdsSev: TCheckBox;
+    LGMQ: TLabel;
+    PBGMQ: TPBNumEdit;
+    Label2: TLabel;
+    PBDefEN: TPBNumEdit;
+    PBDefEM: TPBNumEdit;
+    PBDefAli: TPBNumEdit;
+    CBRationProfil: TComboBox;
+    ChkDureeLact: TCheckBox;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormActivate(Sender: TObject);
+    procedure CBProfilChange(Sender: TObject);
+    procedure PBPorteeChange(Sender: TObject);
+    procedure PBPdsApMBChange(Sender: TObject);
+    procedure ChkPdsApMBClick(Sender: TObject);
+    procedure PBP2MBChange(Sender: TObject);
+    procedure ChkP2MBClick(Sender: TObject);
+    procedure PBDureeLactChange(Sender: TObject);
+    procedure PBSevresChange(Sender: TObject);
+    procedure ChkSevresClick(Sender: TObject);
+    procedure PBPdsNaisChange(Sender: TObject);
+    procedure ChkPdsNaisClick(Sender: TObject);
+    procedure PBPdsSevChange(Sender: TObject);
+    procedure ChkPdsSevClick(Sender: TObject);
+    procedure CBSeqAliChange(Sender: TObject);
+    procedure ChkSeqAliClick(Sender: TObject);
+    procedure CBRationChange(Sender: TObject);
+    procedure ChkRationClick(Sender: TObject);
+    procedure PBAppAliChange(Sender: TObject);
+    procedure ChkAppAliClick(Sender: TObject);
+    procedure PBEMAliChange(Sender: TObject);
+    procedure ChkEMAliClick(Sender: TObject);
+    procedure BBResLactClick(Sender: TObject);
+    procedure BBRapLactClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure ChkDureeLactClick(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modal: boolean;
+    cycle: integer;
+    PdsSev, GMQPort: double;
+    procedure CalcApport;
+    procedure CalcGMQ;
+    procedure CalcResult;
+    procedure AjustEnabled;
+  public
+    { D�clarations publiques }
+    DureeLact: integer;
+    AppAliTot, AppEDTot, AppEMTot, AppENTot: double;
+    BesEMTot, BesEMEntTot, BesEMLaitTot: double;
+    AppAli, AppED, AppEM, AppEN: array [1..28] of double;
+    BesEMEnt, BesEMLait, BesP, BesCa: array [1..28] of double;
+    AppAA, BesAA, BesAAEnt, BesAALait: array[1..14, 1..28] of double;
+  end;
+
+var
+  FBesLactT: TFBesLactT;
+
+implementation
+
+uses
+  Math, gnugettext, UVariables, UInit, UFindRec, UCalcul, UFResBesLactT,
+  UFRapBesLactT;
+
+{$R *.dfm}
+
+{ TFBesLactT }
+
+procedure TFBesLactT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 624 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MaxWidth := Constraints.MinWidth;
+  Constraints.MinHeight := 464 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  Constraints.MaxHeight := Constraints.MinHeight;
+  CBRationProfil.ItemIndex := 0;
+end;
+
+procedure TFBesLactT.FormShow(Sender: TObject);
+begin
+  Modal := False;
+  Update := True;
+  PBPortee.AsInteger := 1;
+  PBDureeLact.AsInteger := 28;
+  Update := False;
+end;
+
+procedure TFBesLactT.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  Action := caFree;
+  NumWinBesLactT := -1;
+end;
+
+procedure TFBesLactT.FormActivate(Sender: TObject);
+begin
+  if not Modal
+  then
+  begin
+    StringsProfilT(CBProfil.Items, False);
+    StringsSeqAliT(CBSeqAli.Items, False);
+    StringsRationT(CBRation.Items, False);
+    CBProfilChange(nil);
+  end;
+end;
+
+procedure TFBesLactT.CBProfilChange(Sender: TObject);
+begin
+  if CBProfil.ItemIndex = -1
+  then
+  begin
+    CBProfil.Hint := '' ;
+    Update := TRUE ;
+    ChkPdsApMB.Checked := FALSE ;
+    ChkP2MB.Checked := FALSE ;
+    ChkSevres.Checked := FALSE ;
+    ChkPdsNais.Checked := FALSE ;
+    ChkPdsSev.Checked := FALSE ;
+    ChkSeqAli.Checked := FALSE ;
+    ChkRation.Checked := FALSE ;
+    ChkAppAli.Checked := FALSE ;
+    ChkEMAli.Checked := FALSE ; 
+    CalcApport ; // L'apport est recalcul� avec des teneurs standards
+    CalcResult ;
+    Update := FALSE ;
+  end
+  else
+  begin
+    PProfilT := ListProfilT[FindIdxProfilT (CBProfil.Text)] ;
+    CBProfil.Hint := PProfilT.Memo ;
+    // Remplissage des champs avec les valeurs du profil
+    Update := TRUE ;
+    if ChkDureeLact.Checked
+    then
+      ChkDureeLactClick (nil)
+    else
+      ChkDureeLact.Checked := TRUE ;
+    if ChkPdsApMB.Checked
+    then
+      ChkPdsApMBClick (nil)
+    else
+      ChkPdsApMB.Checked := TRUE ;
+    if ChkP2MB.Checked
+    then
+      ChkP2MBClick (nil)
+    else
+      ChkP2MB.Checked := TRUE ;
+    if ChkSevres.Checked
+    then
+      ChkSevresClick (nil)
+    else
+      ChkSevres.Checked := TRUE ;
+    if ChkPdsNais.Checked
+    then
+      ChkPdsNaisClick (nil)
+    else
+      ChkPdsNais.Checked := TRUE ;
+    if ChkPdsSev.Checked
+    then
+      ChkPdsSevClick (nil)
+    else
+      ChkPdsSev.Checked := TRUE ;
+    if ChkSeqAli.Checked
+    then
+      ChkSeqAliClick (nil)
+    else
+      ChkSeqAli.Checked := TRUE ;
+    if ChkRation.Checked
+    then
+      ChkRationClick (nil)
+    else
+      ChkRation.Checked := TRUE ;
+    ChkAppAli.Checked := TRUE ;
+    ChkEMAli.Checked := TRUE ;
+    CalcApport ;
+    ChkAppAliClick (nil) ;
+    ChkEMAliClick (nil) ;
+    CalcGMQ ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+  AjustEnabled ;
+end;
+
+procedure TFBesLactT.PBPorteeChange(Sender: TObject);
+begin
+  cycle := PBPortee.AsInteger ;
+  if CBProfil.ItemIndex <> -1
+  then
+  begin
+    // Remplissage des champs avec les valeurs du profil
+    Update := TRUE ;
+    if ChkPdsApMB.Checked
+    then
+      ChkPdsApMBClick (nil)
+    else
+      ChkPdsApMB.Checked := TRUE ;
+    if ChkP2MB.Checked
+    then
+      ChkP2MBClick (nil)
+    else
+      ChkP2MB.Checked := TRUE ;
+    if ChkSevres.Checked
+    then
+      ChkSevresClick (nil)
+    else
+      ChkSevres.Checked := TRUE ;
+    if ChkPdsNais.Checked
+    then
+      ChkPdsNaisClick (nil)
+    else
+      ChkPdsNais.Checked := TRUE ;
+    if ChkPdsSev.Checked
+    then
+      ChkPdsSevClick (nil)
+    else
+      ChkPdsSev.Checked := TRUE ;
+    if ChkRation.Checked
+    then
+      ChkRationClick (nil)
+    else
+      ChkRation.Checked := TRUE ;
+    ChkAppAli.Checked := TRUE ;
+    ChkEMAli.Checked := TRUE ;
+    CalcApport ;
+    ChkAppAliClick (nil) ;
+    ChkEMAliClick (nil) ;
+    CalcGMQ ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesLactT.PBPdsApMBChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesLactT.ChkPdsApMBClick(Sender: TObject);
+begin
+  PBPdsApMB.Enabled := not ChkPdsApMB.Checked ;
+  if ChkPdsApMB.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      PBPdsApMB.AsFloat := PProfilT.Truies[cycle].PdsApMB ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBPdsApMB.AsFloat := PProfilT.Truies[cycle].PdsApMB ;
+end;
+
+procedure TFBesLactT.PBP2MBChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesLactT.ChkP2MBClick(Sender: TObject);
+begin
+  PBP2MB.Enabled := not ChkP2MB.Checked ;
+  if ChkP2MB.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      PBP2MB.AsFloat := PProfilT.Truies[cycle].P2MB ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBP2MB.AsFloat := PProfilT.Truies[cycle].P2MB ;
+end;
+
+procedure TFBesLactT.PBDureeLactChange(Sender: TObject);
+begin
+  DureeLact := PBDureeLact.AsInteger ;
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    ChkPdsSevClick (nil) ;
+    CalcApport ;
+    ChkAppAliClick (nil) ;
+    ChkEMAliClick (nil) ;
+    CalcGMQ ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesLactT.ChkDureeLactClick(Sender: TObject);
+begin
+  PBDureeLact.Enabled := not ChkDureeLact.Checked ;
+  if ChkDureeLact.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      PBDureeLact.AsInteger := PProfilT.DureeLact ;
+      ChkPdsSevClick (nil) ;
+      CalcApport ;
+      ChkAppAliClick (nil) ;
+      ChkEMAliClick (nil) ;
+      CalcGMQ ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBDureeLact.AsInteger := PProfilT.DureeLact ;
+end;
+
+procedure TFBesLactT.PBSevresChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcGMQ ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesLactT.ChkSevresClick(Sender: TObject);
+begin
+  PBSevres.Enabled := not ChkSevres.Checked ;
+  if ChkSevres.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      PBSevres.AsFloat := PProfilT.Porcelets[cycle].Sevres ;
+      CalcGMQ ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBSevres.AsFloat := PProfilT.Porcelets[cycle].Sevres ;
+end;
+
+procedure TFBesLactT.PBPdsNaisChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcGMQ ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesLactT.ChkPdsNaisClick(Sender: TObject);
+begin
+  PBPdsNais.Enabled := not ChkPdsNais.Checked ;
+  if ChkPdsNais.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      PBPdsNais.AsFloat := PProfilT.Porcelets[cycle].PdsNais ;
+      CalcGMQ ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBPdsNais.AsFloat := PProfilT.Porcelets[cycle].PdsNais ;
+end;
+
+procedure TFBesLactT.PBPdsSevChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcGMQ ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesLactT.ChkPdsSevClick(Sender: TObject);
+var
+  GainProfil, GainSimul : double ;
+begin
+  PBPdsSev.Enabled := not ChkPdsSev.Checked ;
+  if ChkPdsSev.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      // Ajustement du poids de sevrage � la dur�e de lactation
+      GainProfil := (273 * PProfilT.DureeLact + (289 / 0.38) * Exp (-0.38 * PProfilT.DureeLact) - 289 / 0.38) / 1000 ;
+      GainSimul := (273 * DureeLact + (289 / 0.38) * Exp (-0.38 * DureeLact) - 289 / 0.38) / 1000 ;
+      PdsSev := PProfilT.Porcelets[cycle].PdsNais + GainSimul * (PProfilT.Porcelets[cycle].PdsSev - PProfilT.Porcelets[cycle].PdsNais) / GainProfil ;
+      PBPdsSev.AsFloat := PdsSev ;
+      CalcGMQ ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+    begin
+      // Ajustement du poids de sevrage � la dur�e de lactation
+      GainProfil := (273 * PProfilT.DureeLact + (289 / 0.38) * Exp (-0.38 * PProfilT.DureeLact) - 289 / 0.38) / 1000 ;
+      GainSimul := (273 * DureeLact + (289 / 0.38) * Exp (-0.38 * DureeLact) - 289 / 0.38) / 1000 ;
+      PdsSev := PProfilT.Porcelets[cycle].PdsNais + GainSimul * (PProfilT.Porcelets[cycle].PdsSev - PProfilT.Porcelets[cycle].PdsNais) / GainProfil ;
+      PBPdsSev.AsFloat := PdsSev ;
+    end ;
+end;
+
+procedure TFBesLactT.CBSeqAliChange(Sender: TObject);
+begin
+  if CBSeqAli.ItemIndex = -1
+  then
+    CBSeqAli.Hint := ''
+  else
+  begin
+    PSeqAliT := ListSeqAliT[FindIdxSeqAliT (CBSeqAli.Text)] ;
+    CBSeqAli.Hint := PSeqAliT.Memo ;
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      ChkEMAli.Checked := TRUE ;
+      CalcApport ;
+      ChkAppAliClick (nil) ;
+      ChkEMAliClick (nil) ;
+      CalcResult ;
+      Update := FALSE ;
+    end ;
+  end ;
+  AjustEnabled ;
+end;
+
+procedure TFBesLactT.ChkSeqAliClick(Sender: TObject);
+begin
+  CBSeqAli.Enabled := not ChkSeqAli.Checked ;
+  if ChkSeqAli.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliT (PProfilT.SeqAli)) ;
+      CBSeqAliChange (nil) ;
+      ChkEMAli.Checked := TRUE ;
+      CalcApport ;
+      ChkAppAliClick (nil) ;
+      ChkEMAliClick (nil) ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+    begin
+      CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliT (PProfilT.SeqAli)) ;
+      CBSeqAliChange (nil) ;
+    end ;
+end;
+
+procedure TFBesLactT.CBRationChange(Sender: TObject);
+begin
+  if CBRation.ItemIndex = -1
+  then
+    CBRation.Hint := ''
+  else
+  begin
+    PRationT := ListRationT[FindIdxRationT (CBRation.Text)] ;
+    CBRation.Hint := PRationT.Memo ;
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      ChkAppAli.Checked := TRUE ;
+      CalcApport ;
+      ChkAppAliClick (nil) ;
+      if ChkEMAli.Checked
+      then
+        ChkEMAliClick (nil) ;
+      CalcResult ;
+      Update := FALSE ;
+    end ;
+  end ;
+  AjustEnabled ;
+end;
+
+procedure TFBesLactT.ChkRationClick(Sender: TObject);
+begin
+  CBRation.Visible := not ChkRation.Checked ;
+  CBRationProfil.Visible := ChkRation.Checked ;
+  if ChkRation.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CBRation.ItemIndex := -1 ;
+      CBRationChange (nil) ;
+      ChkAppAli.Checked := TRUE ;
+      CalcApport ;
+      ChkAppAliClick (nil) ;
+      if ChkEMAli.Checked
+      then
+        ChkEMAliClick (nil) ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+    begin
+      CBRation.ItemIndex := -1 ;
+      CBRationChange (nil) ;
+    end ;
+end;
+
+procedure TFBesLactT.PBAppAliChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcApport ;
+    if ChkEMAli.Checked
+    then
+      ChkEMAliClick (nil) ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesLactT.ChkAppAliClick(Sender: TObject);
+begin
+  PBAppAli.Enabled := not ChkAppAli.Checked ;
+  if ChkAppAli.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CalcApport ;
+      PBAppAli.AsFloat := AppAliTot / DureeLact ;
+      if ChkEMAli.Checked
+      then
+        ChkEMAliClick (nil) ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBAppAli.AsFloat := AppAliTot / DureeLact ;
+end;
+
+procedure TFBesLactT.PBEMAliChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcApport ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesLactT.ChkEMAliClick(Sender: TObject);
+begin
+  PBEMAli.Enabled := not ChkEMAli.Checked ;
+  if ChkEMAli.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CalcApport ;
+      if AppAliTot = 0
+      then
+        PBEMAli.Text := ''
+      else
+        PBEMAli.AsFloat := AppEMTot / AppAliTot ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      if AppAliTot = 0
+      then
+        PBEMAli.Text := ''
+      else
+        PBEMAli.AsFloat := AppEMTot / AppAliTot
+  else
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CalcApport ; // L'apport est recalcul� avec des teneurs standards
+      CalcResult ;
+      Update := FALSE ;
+    end ;
+end;
+
+procedure TFBesLactT.CalcApport ;
+var
+  i, Jour, AA, Unite : integer ;
+  PctAli1, PctAli2, Quantite, Ingere, IngSec1, IngSec2 : double ;
+  NumRuleSeqAli, NumRuleRation : integer ;
+  RuleSeqAli : array[1..MAX_RULE] of RecRuleSeqAliT ;
+  RuleRation : array[1..MAX_RULE] of RecRuleRationT ;
+  RuleSeqAliInit, RuleRationInit, Ecart : integer ;
+  RecCC1, RecCC2 : CompositionChimique ;
+  TabAAtotal1, TabAAtotal2, TabCUDAA1, TabCUDAA2 : array[0..12] of double ;
+  ok : boolean ;
+begin
+  // Initialisation
+  AppAliTot := 0 ;
+  AppEDTot := 0 ;
+  AppEMTot := 0 ;
+  AppENTot := 0 ;
+  for Jour := 1 to DureeLact do
+  begin
+    AppAli[Jour] := 0 ;
+    AppED[Jour] := 0 ;
+    AppEM[Jour] := 0 ;
+    AppEN[Jour] := 0 ;
+    for AA := 1 to 14 do
+      AppAA[AA, Jour] := 0 ;
+  end ;
+  if ChkEMAli.Checked
+  then // S�quence alimentaire
+    if CBSeqAli.ItemIndex = -1
+    then
+      Exit
+    else // Chargement des r�gles
+      for i := 1 to PSeqAliT.NbRuleLact do
+        RuleSeqAli[i] := PSeqAliT.RuleLact[i]
+  else // Teneur en EM
+    if PBEMAli.AsFloat = 0
+    then
+      Exit
+    else
+      if CBSeqAli.ItemIndex = -1
+      then // Cr�ation d'une r�gle sans aliment
+        with RuleSeqAli[1] do
+        begin
+          ModeFin := -1 ;
+          NumAli1 := -1 ;
+          NumAli2 := -1 ;
+          PctAli1Init := 100 ;
+          PctAli1Fin := 100 ;
+        end
+      else // Chargement des r�gles
+        for i := 1 to PSeqAliT.NbRuleGest do
+          RuleSeqAli[i] := PSeqAliT.RuleGest[i] ;
+  NumRuleSeqAli := 1 ;
+  RuleSeqAliInit := 1 ;
+  if ChkAppAli.Checked
+  then
+    if ChkRation.Checked
+    then // Profil animal
+      if CBProfil.ItemIndex = -1
+      then
+        Exit
+      else // Cr�ation d'une r�gle � partir du profil animal
+      begin
+        with RuleRation[1] do
+        begin
+          ModeFin := -1 ;
+          Equation := 3 ; // Curvilin�aire
+          a := PProfilT.Lact[Cycle] / 2 ; // Initial
+          c := PProfilT.Lact[Cycle] ; // Moyenne
+          d := DureeLact ; // Dur�e
+        end ;
+        Unite := PProfilT.Unite ;
+      end
+    else // Plan de rationnement
+      if CBRation.ItemIndex = -1
+      then
+        Exit
+      else // Chargement des r�gles
+      begin
+        for i := 1 to PRationT.NbRuleLact do
+          RuleRation[i] := PRationT.RuleLact[i] ;
+        Unite := PRationT.UniteLact ;
+      end
+  else // Consommation moyenne
+    if PBAppAli.AsFloat = 0
+    then
+      Exit
+    else // Cr�ation d'une r�gle � partir de la consommation moyenne
+    begin
+      with RuleRation[1] do
+      begin
+        ModeFin := -1 ;
+        Equation := 3 ; // Curvilin�aire
+        a := PBAppAli.AsFloat / 2 ; // Initial
+        c := PBAppAli.AsFloat ; // Moyenne
+        d := DureeLact ; // Dur�e
+      end ;
+      Unite := 0 ; // Quantit�
+    end ;
+  NumRuleRation := 1 ;
+  RuleRationInit := 1 ;
+  // Boucle des jours
+  for Jour := 1 to DureeLact do
+  begin
+    // Aliment(s) distribu�(s)
+    repeat
+      ok := TRUE ;
+      with RuleSeqAli[NumRuleSeqAli] do
+        if ModeFin = 0
+        then // Dur�e
+          if (Jour - RuleSeqAliInit + 1 > ValFin) then ok := FALSE ;
+      if not (ok)
+      then // Changement de r�gle
+      begin
+        Inc (NumRuleSeqAli) ;
+        RuleSeqAliInit := Jour ;
+      end ;
+    until ok ;
+    with RuleSeqAli[NumRuleSeqAli] do
+    begin
+      // Composition aliment 1
+      if NumAli1 = -1
+      then
+      begin
+        RecCC1 := CCVide ;
+        for i := 0 to 12 do
+          TabAAtotal1[i] := 0 ;
+        for i := 0 to 12 do
+          TabCUDAA1[i] := 0 ;
+      end
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (NumAli1))] ;
+        RecCC1 := PAliment.CC ;
+        for i := 0 to 12 do
+          TabAAtotal1[i] := PAliment.AAtotal[i] ;
+        for i := 0 to 12 do
+          TabCUDAA1[i] := PAliment.CUDAA[i] ;
+      end ;
+      if not ChkEMAli.Checked
+      then // Teneur en EM
+        with RecCC1 do
+        begin
+          ED_T := (PBEMAli.AsFloat / 0.96) / MS * 1000 ;
+          EM_T := (PBEMAli.AsFloat) / MS * 1000 ;
+          EN_T := (PBEMAli.AsFloat * 0.74) / MS * 1000 ;
+        end ;
+      // Composition aliment 2
+      if NumAli2 = -1
+      then
+      begin
+        RecCC2 := CCVide ;
+        for i := 0 to 12 do
+          TabAAtotal2[i] := 0 ;
+        for i := 0 to 12 do
+          TabCUDAA2[i] := 0 ;
+      end
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (NumAli2))] ;
+        RecCC2 := PAliment.CC ;
+        for i := 0 to 12 do
+          TabAAtotal2[i] := PAliment.AAtotal[i] ;
+        for i := 0 to 12 do
+          TabCUDAA2[i] := PAliment.CUDAA[i] ;
+      end ;
+      if not ChkEMAli.Checked
+      then // Teneur en EM
+        with RecCC2 do
+        begin
+          ED_T := (PBEMAli.AsFloat / 0.96) / MS * 1000 ;
+          EM_T := (PBEMAli.AsFloat) / MS * 1000 ;
+          EN_T := (PBEMAli.AsFloat * 0.74) / MS * 1000 ;
+        end ;
+      // Calcul des % aliments
+      if PctAli1Init = PctAli1Fin
+      then
+        PctAli1 := PctAli1Init
+      else // Transition
+      begin
+        Ecart := PctAli1Fin - PctAli1Init ;
+        if ModeFin = 0
+        then // Dur�e
+          PctAli1 := PctAli1Init + (Jour - RuleSeqAliInit) * Ecart / ValFin
+        else // Fin
+          PctAli1 := PctAli1Init + (Jour - RuleSeqAliInit) * Ecart / (DureeLact - RuleSeqAliInit) ;
+      end ;
+    end ;
+    PctAli2 := 100 - PctAli1 ;
+    // Quantit�(s) distribu�e(s)
+    repeat
+      ok := TRUE ;
+      with RuleRation[NumRuleRation] do
+        if ModeFin = 0
+        then // Dur�e
+          if Jour - RuleRationInit + 1 > ValFin then ok := FALSE ;
+      if not (ok)
+      then // Changement de r�gle
+      begin
+        Inc (NumRuleRation) ;
+        RuleRationInit := Jour ;
+      end ;
+    until ok ;
+    with RuleRation[NumRuleRation] do
+    begin
+      // Calcul des quantit�s
+      case Equation of
+        0 : // Constant
+          Quantite := a ;
+        1 : // Lin�aire
+          Quantite := a + b * (Jour - RuleRationInit) ;
+        2 : // Lin�aire-plateau
+          Quantite := LPvaleur (a, b, c, Jour - RuleRationInit + 1, d) ;
+        3 : // Curvilin�aire
+          Quantite := CLvaleur (a, c, Jour - RuleRationInit + 1, d) ;
+        else
+          Quantite := 0 ;
+      end ;
+      // Convertion de ED, EM, EN en quantit� si besoin
+      case Unite of
+        1 : // ED (MJ/j)
+          Ingere := Quantite
+            / (PctAli1 / 100 * RecCC1.ED_T * RecCC1.MS / 1000
+              + PctAli2 / 100 * RecCC2.ED_T * RecCC2.MS / 1000) ;
+        2 : // EM (MJ/j)
+          Ingere := Quantite
+            / (PctAli1 / 100 * RecCC1.EM_T * RecCC1.MS / 1000
+              + PctAli2 / 100 * RecCC2.EM_T * RecCC2.MS / 1000) ;
+        3 : // EN (MJ/j)
+          Ingere := Quantite
+            / (PctAli1 / 100 * RecCC1.EN_T * RecCC1.MS / 1000
+              + PctAli2 / 100 * RecCC2.EN_T * RecCC2.MS / 1000) ;
+        4 : // MS (kg/j)
+          Ingere := Quantite
+            / (PctAli1 / 100 * RecCC1.MS / 1000
+              + PctAli2 / 100 * RecCC2.MS / 1000) ;
+        else // QI (kg/j)
+          Ingere := Quantite ;
+      end ;
+    end ;
+    // Aliment ing�r�
+    AppAli[Jour] := Ingere ;
+    IngSec1 := Ingere * PctAli1 / 100 * RecCC1.MS / 1000 ;
+    IngSec2 := Ingere * PctAli2 / 100 * RecCC2.MS / 1000 ;
+    // Energie ing�r�e
+    AppED[Jour] := IngSec1 * RecCC1.ED_T + IngSec2 * RecCC2.ED_T ;
+    AppEM[Jour] := IngSec1 * RecCC1.EM_T + IngSec2 * RecCC2.EM_T ;
+    AppEN[Jour] := IngSec1 * RecCC1.EN_T + IngSec2 * RecCC2.EN_T ;
+    // Acides amin�s digestibles
+    for AA := 1 to 12 do
+      AppAA[AA, Jour] := IngSec1 * TabAAtotal1[AA] * TabCUDAA1[AA] / 100
+        + IngSec2 * TabAAtotal2[AA] * TabCUDAA2[AA] / 100 ;
+    // met+cys
+    AppAA[13, Jour] := AppAA[2, Jour] + AppAA[3, Jour] ;
+    // phe+tyr
+    AppAA[14, Jour] := AppAA[6, Jour] + AppAA[7, Jour] ;
+  end ;
+  // Totaux
+  AppAliTot := Sum (Slice (AppAli, DureeLact)) ;
+  AppEDTot := Sum (Slice (AppED, DureeLact)) ;
+  AppEMTot := Sum (Slice (AppEM, DureeLact)) ;
+  AppENTot := Sum (Slice (AppEN, DureeLact)) ;
+end;
+
+procedure TFBesLactT.CalcGMQ ;
+begin
+  GMQPort := (PBPdsSev.AsFloat - PBPdsNais.AsFloat) * PBSevres.AsFloat / DureeLact ;
+  PBGMQ.AsFloat := GMQPort ;
+end ;
+
+procedure TFBesLactT.CalcResult ;
+var
+  Jour, AA : integer ;
+  RA, NRLait : double ;
+begin
+  if (PBPdsApMB.AsFloat > 0)
+    and (PBP2MB.AsFloat > 0)
+    and (PBSevres.AsFloat > 0)
+    and (PBPdsNais.AsFloat > 0)
+    and (PBPdsSev.AsFloat > PBPdsNais.AsFloat)
+    and (PBAppAli.AsFloat > 0)
+    and (PBEMAli.AsFloat > 0)
+  then
+  begin
+    //
+    // Besoins �n�rg�tiques
+    //
+    // Energie pour l'entretien
+    BesEMEntTot := Power (PProfilT.Truies[Cycle].PdsApMB, 0.75) * EELact ;
+    for Jour := 1 to DureeLact do
+      BesEMEnt[Jour] := BesEMEntTot ;
+    // Energie pour la production de lait
+    RA := 0.0000023096 * Power (DureeLact, 4) - 0.00027619 * Power (DureeLact, 3) + 0.012889 * Power (DureeLact, 2) - 0.28116 * DureeLact + 4.799 ;
+    for Jour := 1 to DureeLact do
+      BesEMLait[Jour] := (20.6 * GMQPort * 1000 - 376 * PProfilT.Porcelets[cycle].Sevres) * RA * Exp (-0.025 * Jour) * Exp (-Exp (0.5 - 0.1 * Jour)) / 1000 / KL ;
+    BesEMLaitTot := Mean (Slice (BesEMLait, DureeLact)) ;
+    // Besoin total en �nergie
+    BesEMTot := BesEMEntTot + BesEMLaitTot ;
+    //
+    // Besoins en acides amin�s
+    //
+    for Jour := 1 to DureeLact do
+    begin
+      // Production d'azote dans le lait
+      NRLait := (0.0257 * GMQPort * 1000 + 0.42 * PProfilT.Porcelets[cycle].Sevres) * RA * Exp (-0.025 * Jour) * Exp (- Exp (0.5 - 0.1 * Jour)) ;
+      // 1) Besoin total
+      BesAA[1, Jour] := (14.2 + 0.629 * NRLait) / 1.335 ;
+      for AA := 2 to 12 do
+        BesAA[AA, Jour] := BesAA[1, Jour] * ProtIdLact[AA] / 100 ;
+      // met+cys
+      BesAA[13, Jour] := BesAA[1, Jour] * (ProtIdLact[2] + ProtIdLact[3]) / 100 ;
+      // phe+tyr
+      BesAA[14, Jour] := BesAA[1, Jour] * (ProtIdLact[6] + ProtIdLact[7]) / 100 ;
+      // 2) Besoin d'entretien
+      BesAAEnt[1, Jour] := Power (PProfilT.Truies[Cycle].PdsApMB, 0.75) * 0.036 ;
+      for AA := 2 to 12 do
+        BesAAEnt[AA, Jour] := BesAAEnt[1, Jour] * ProtIdEnt[AA] / 100 ;
+      // met+cys
+      BesAAEnt[13, Jour] := BesAAEnt[1, Jour] * (ProtIdEnt[2] + ProtIdEnt[3]) / 100 ;
+      // phe+tyr
+      BesAAEnt[14, Jour] := BesAAEnt[1, Jour] * (ProtIdEnt[6] + ProtIdEnt[7]) / 100 ;
+      // 3) Besoin pour la port�e
+      for AA := 1 to 14 do
+        BesAALait[AA, Jour] := BesAA[AA, Jour] - BesAAEnt[AA, Jour] ;
+    end ;
+    //
+    // Besoins en min�raux
+    //
+    for Jour := 1 to DureeLact do
+    begin
+      // Production d'azote dans le lait
+      NRLait := (0.0257 * GMQPort * 1000 + 0.42 * PProfilT.Porcelets[cycle].Sevres) * RA * Exp (-0.025 * Jour) * Exp (- Exp (0.5 - 0.1 * Jour)) ;
+      // Phosphore digestible
+      BesP[Jour] := 10 * PProfilT.Truies[Cycle].PdsApMB / 1000
+        + NRLait * 6.38 / 0.050 / 1000 * 1.55 ;
+      // Calcium total
+      BesCa[Jour] := BesP[Jour] * 3.2 ;
+    end ;
+    //
+    // Affichage des r�sultats
+    //
+    if (AppEMTot = 0)
+    then
+      PBBesAli.AsFloat := 0
+    else
+      PBBesAli.AsFloat := BesEMTot * AppAliTot / AppEMTot ;
+    PBBesEM.AsFloat := BesEMTot ;
+    if (AppEMTot = 0)
+    then
+      PBBesEN.AsFloat := 0
+    else
+      PBBesEN.AsFloat := BesEMTot * AppENTot / AppEMTot ;
+    if (PBAppAli.AsFloat = 0)
+    then
+      PBBesdLys.AsFloat := 0
+    else
+      PBBesdLys.AsFloat := Mean (Slice (BesAA[1], DureeLact)) ;
+    if (BesEMTot > AppEMTot / DureeLact)
+    then // D�ficit
+    begin
+      PBDefAli.AsFloat := PBBesAli.AsFloat - PBAppAli.AsFloat ;
+      PBDefEM.AsFloat := PBBesEM.AsFloat - AppEMTot / DureeLact ;
+      PBDefEN.AsFloat := PBBesEN.AsFloat - AppENTot / DureeLact ;
+    end
+    else // Exc�s
+    begin
+      PBDefAli.AsFloat := 0 ;
+      PBDefEM.AsFloat := 0 ;
+      PBDefEN.AsFloat := 0 ;
+    end ;
+    BBResLact.Enabled := TRUE ;
+    BBRapLact.Enabled := TRUE ;
+  end
+  else
+  begin
+    PBBesAli.Text := '' ;
+    PBBesEM.Text := '' ;
+    PBBesEN.Text := '' ;
+    PBBesdLys.Text := '' ;
+    PBDefAli.Text := '' ;
+    PBDefEM.Text := '' ;
+    PBDefEN.Text := '' ;
+    BBResLact.Enabled := FALSE ;
+    BBRapLact.Enabled := FALSE ;
+  end ;
+end;
+
+procedure TFBesLactT.BBResLactClick(Sender: TObject);
+begin
+  Modal := True;
+  FResBesLactT := TFResBesLactT.Create (Self) ;
+  FResBesLactT.ShowModal ;
+  FResBesLactT.Release ;
+  Modal := False;
+end;
+
+procedure TFBesLactT.BBRapLactClick(Sender: TObject);
+begin
+  Modal := True;
+  FRapBesLactT := TFRapBesLactT.Create(Self);
+  FRapBesLactT.QRRapport.PreviewModal ;
+  FRapBesLactT.Release;
+  Modal := False;
+end;
+
+procedure TFBesLactT.AjustEnabled;
+begin
+  ChkPdsApMB.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkP2MB.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkSevres.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkPdsNais.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkPdsSev.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkSeqAli.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkRation.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkAppAli.Visible := (CBProfil.ItemIndex <> -1) or (CBRation.ItemIndex <> -1) ;
+  ChkEMAli.Visible := (CBProfil.ItemIndex <> -1) or (CBSeqAli.ItemIndex <> -1) ;
+end;
+
+end.
Index: UFProfilT.dfm
===================================================================
--- UFProfilT.dfm	(révision 0)
+++ UFProfilT.dfm	(révision 3)
@@ -0,0 +1,3903 @@
+object FProfilT: TFProfilT
+  Left = 166
+  Top = 154
+  HelpContext = 4300
+  ActiveControl = CBProfil
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Sow profile'
+  ClientHeight = 412
+  ClientWidth = 648
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBProfil: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 648
+    Height = 48
+    Align = alTop
+    Caption = 'Animal profile'
+    TabOrder = 0
+    object SBAddProfil: TSpeedButton
+      Left = 264
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Add an animal profile'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000800000800000800000800000800000
+        8000008000008000008000008000008000008000008000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBAddProfilClick
+    end
+    object SBDelProfil: TSpeedButton
+      Left = 296
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Delete the current animal profile'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF0000000000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBDelProfilClick
+    end
+    object SBRename: TSpeedButton
+      Left = 328
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Rename the current animal profile'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FF80808080808080
+        8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFF800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFF0000FFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFF0000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FF808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFF800000FFFFFFFFFFFF800000FF
+        FFFFFFFFFF800000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FF80808080808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFF800000800000800000800000800000800000800000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBRenameClick
+    end
+    object SBComment: TSpeedButton
+      Left = 360
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 
+        'Add additional information to the current animal profile (commen' +
+        't)'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        00000000000000000000000000000000000000FF0000FFFF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000080000080FF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF
+        FF0000FF0000FF0000FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00080
+        80000080000080000080FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF0000FF000080FFFF0000FF0000FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080
+        80808080808080808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0800000800000008080000080000080FF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00
+        00FF000080FFFFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000
+        00800000008080FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0800000800000800000800000800000FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF00
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FF808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000008000008000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+        0000800000800000800000800000000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0800000800000800000800000800000C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFF4080FFFF0000FF
+        0000FF0000FF0000FFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FF808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C000408080000080
+        0000800000800000C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFF4080FF4080FFFF0000FF0000FFFFFFFFFFFFFFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80808080808080
+        8080808080FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0004080004080800000800000C0C0C0C0C0C0C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF0000004080FF4080FF40
+        80FFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C000000000408000408000
+        4080C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080FF00FFFF
+        00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0000000000000C0C0C0C0C0C0C0C0C00000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBCommentClick
+    end
+    object SBSave: TSpeedButton
+      Left = 392
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Save the current animal profil'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000C0C0C0C0C0C0000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000808080808080000000800000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF8080808080808080808080808080808080808080808080808080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000000000800000000000FF00FFFF00FF000000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF000000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000FF0000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080808080808080FF00
+        FFFF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000800000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00000000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00000000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080000000FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBSaveClick
+    end
+    object SBPrint: TSpeedButton
+      Left = 424
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'View the report for the current animal profile'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+        808080808080808080808080808080808080808080808080808080FF00FFFF00
+        FF808080808080FF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+        00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+        00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+        C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+        FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+        C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+        8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+        808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBPrintClick
+    end
+    object JvEnterAsTab: TJvEnterAsTab
+      Left = 456
+      Top = 16
+      Width = 28
+      Height = 28
+    end
+    object CBProfil: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBProfilChange
+    end
+  end
+  object PC: TPageControl
+    Left = 0
+    Top = 48
+    Width = 648
+    Height = 364
+    ActivePage = TSTruie
+    Align = alClient
+    HotTrack = True
+    MultiLine = True
+    TabOrder = 1
+    TabStop = False
+    Visible = False
+    OnChange = PCChange
+    object TSTruie: TTabSheet
+      Caption = 'Sows'
+      ImageIndex = 3
+      object GBMiseBas: TGroupBox
+        Left = 0
+        Top = 216
+        Width = 640
+        Height = 96
+        Align = alTop
+        Caption = 'Farrowing'
+        TabOrder = 3
+        object LPdsAvMB: TLabel
+          Left = 8
+          Top = 20
+          Width = 88
+          Height = 13
+          Caption = 'Weight before (kg)'
+        end
+        object LP2MB: TLabel
+          Left = 8
+          Top = 68
+          Width = 110
+          Height = 13
+          Caption = 'Backfat thickness (mm)'
+        end
+        object LPdsApMB: TLabel
+          Left = 8
+          Top = 44
+          Width = 79
+          Height = 13
+          Hint = 'Automatic calculation from litter data'
+          Caption = 'Weight after (kg)'
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = LPdsApMBClick
+        end
+        object PBPdsAvMBPt1: TPBNumEdit
+          Left = 136
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsAvMBPt1Change
+          TabOrder = 0
+        end
+        object PBPdsApMBPt1: TPBNumEdit
+          Left = 136
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsApMBPt1Change
+          TabOrder = 10
+        end
+        object PBPdsAvMBPt2: TPBNumEdit
+          Left = 192
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsAvMBPt2Change
+          TabOrder = 1
+        end
+        object PBPdsAvMBPt3: TPBNumEdit
+          Left = 248
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsAvMBPt3Change
+          TabOrder = 2
+        end
+        object PBPdsAvMBPt4: TPBNumEdit
+          Left = 304
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsAvMBPt4Change
+          TabOrder = 3
+        end
+        object PBPdsAvMBPt5: TPBNumEdit
+          Left = 360
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsAvMBPt5Change
+          TabOrder = 4
+        end
+        object PBPdsAvMBPt6: TPBNumEdit
+          Left = 416
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsAvMBPt6Change
+          TabOrder = 5
+        end
+        object PBPdsAvMBPt7: TPBNumEdit
+          Left = 472
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsAvMBPt7Change
+          TabOrder = 6
+        end
+        object PBPdsAvMBPt8: TPBNumEdit
+          Left = 528
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsAvMBPt8Change
+          TabOrder = 7
+        end
+        object PBPdsAvMBTot: TPBNumEdit
+          Left = 584
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 1
+          NumberFormat = Standard
+          TabOrder = 8
+        end
+        object PBPdsApMBPt2: TPBNumEdit
+          Left = 192
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsApMBPt2Change
+          TabOrder = 11
+        end
+        object PBPdsApMBPt3: TPBNumEdit
+          Left = 248
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsApMBPt3Change
+          TabOrder = 12
+        end
+        object PBPdsApMBPt4: TPBNumEdit
+          Left = 304
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsApMBPt4Change
+          TabOrder = 13
+        end
+        object PBPdsApMBPt5: TPBNumEdit
+          Left = 360
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsApMBPt5Change
+          TabOrder = 14
+        end
+        object PBPdsApMBPt6: TPBNumEdit
+          Left = 416
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsApMBPt6Change
+          TabOrder = 15
+        end
+        object PBPdsApMBPt7: TPBNumEdit
+          Left = 472
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsApMBPt7Change
+          TabOrder = 16
+        end
+        object PBPdsApMBPt8: TPBNumEdit
+          Left = 528
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsApMBPt8Change
+          TabOrder = 17
+        end
+        object PBPdsApMBTot: TPBNumEdit
+          Left = 584
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 1
+          NumberFormat = Standard
+          TabOrder = 18
+        end
+        object PBP2MBPt1: TPBNumEdit
+          Left = 136
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2MBPt1Change
+          TabOrder = 19
+        end
+        object PBP2MBPt2: TPBNumEdit
+          Left = 192
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2MBPt2Change
+          TabOrder = 20
+        end
+        object PBP2MBPt3: TPBNumEdit
+          Left = 248
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2MBPt3Change
+          TabOrder = 21
+        end
+        object PBP2MBPt4: TPBNumEdit
+          Left = 304
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2MBPt4Change
+          TabOrder = 22
+        end
+        object PBP2MBPt5: TPBNumEdit
+          Left = 360
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2MBPt5Change
+          TabOrder = 23
+        end
+        object PBP2MBPt6: TPBNumEdit
+          Left = 416
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2MBPt6Change
+          TabOrder = 24
+        end
+        object PBP2MBPt7: TPBNumEdit
+          Left = 472
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2MBPt7Change
+          TabOrder = 25
+        end
+        object PBP2MBPt8: TPBNumEdit
+          Left = 528
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2MBPt8Change
+          TabOrder = 26
+        end
+        object PBP2MBTot: TPBNumEdit
+          Left = 584
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 1
+          NumberFormat = Standard
+          TabOrder = 27
+        end
+        object ChkPdsApMB: TCheckBox
+          Left = 112
+          Top = 42
+          Width = 17
+          Height = 17
+          Hint = 'Automatic calculation from litter data'
+          TabStop = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 9
+          OnClick = ChkPdsApMBClick
+        end
+      end
+      object PTopTruie: TPanel
+        Left = 0
+        Top = 0
+        Width = 640
+        Height = 24
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        object LTruiePt1: TLabel
+          Left = 136
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 1'
+        end
+        object LTruiePt2: TLabel
+          Left = 192
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 2'
+        end
+        object LTruiePt3: TLabel
+          Left = 248
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 3'
+        end
+        object LTruiePt4: TLabel
+          Left = 304
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 4'
+        end
+        object LTruiePt5: TLabel
+          Left = 360
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 5'
+        end
+        object LTruiePt6: TLabel
+          Left = 416
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 6'
+        end
+        object LTruiePt7: TLabel
+          Left = 472
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 7'
+        end
+        object LTruiePt8: TLabel
+          Left = 528
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 8'
+        end
+        object LTruieTot: TLabel
+          Left = 584
+          Top = 4
+          Width = 23
+          Height = 13
+          Caption = 'Herd'
+        end
+      end
+      object GBEffectif: TGroupBox
+        Left = 0
+        Top = 24
+        Width = 640
+        Height = 72
+        Align = alTop
+        Caption = 'Herd composition'
+        TabOrder = 1
+        object RBNbrEff: TRadioButton
+          Left = 8
+          Top = 18
+          Width = 120
+          Height = 17
+          Caption = 'Number'
+          Checked = True
+          TabOrder = 0
+          TabStop = True
+          OnClick = RBEffectifClick
+        end
+        object RBPctEff: TRadioButton
+          Left = 8
+          Top = 42
+          Width = 120
+          Height = 17
+          Caption = 'Distribution (%)'
+          TabOrder = 1
+          OnClick = RBEffectifClick
+        end
+        object PBNbrPt1: TPBNumEdit
+          Left = 136
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBNbrPt1Change
+          TabOrder = 2
+        end
+        object PBPctPt1: TPBNumEdit
+          Left = 136
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPctChange
+          TabOrder = 11
+        end
+        object PBNbrPt2: TPBNumEdit
+          Left = 192
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBNbrPt2Change
+          TabOrder = 3
+        end
+        object PBNbrPt3: TPBNumEdit
+          Left = 248
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBNbrPt3Change
+          TabOrder = 4
+        end
+        object PBNbrPt4: TPBNumEdit
+          Left = 304
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBNbrPt4Change
+          TabOrder = 5
+        end
+        object PBNbrPt5: TPBNumEdit
+          Left = 360
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBNbrPt5Change
+          TabOrder = 6
+        end
+        object PBNbrPt6: TPBNumEdit
+          Left = 416
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBNbrPt6Change
+          TabOrder = 7
+        end
+        object PBNbrPt7: TPBNumEdit
+          Left = 472
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBNbrPt7Change
+          TabOrder = 8
+        end
+        object PBNbrPt8: TPBNumEdit
+          Left = 528
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBNbrPt8Change
+          TabOrder = 9
+        end
+        object PBNbrTot: TPBNumEdit
+          Left = 584
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBNbrTotChange
+          TabOrder = 10
+        end
+        object PBPctPt2: TPBNumEdit
+          Left = 192
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPctChange
+          TabOrder = 12
+        end
+        object PBPctPt3: TPBNumEdit
+          Left = 248
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPctChange
+          TabOrder = 13
+        end
+        object PBPctPt4: TPBNumEdit
+          Left = 304
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPctChange
+          TabOrder = 14
+        end
+        object PBPctPt5: TPBNumEdit
+          Left = 360
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPctChange
+          TabOrder = 15
+        end
+        object PBPctPt6: TPBNumEdit
+          Left = 416
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPctChange
+          TabOrder = 16
+        end
+        object PBPctPt7: TPBNumEdit
+          Left = 472
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPctChange
+          TabOrder = 17
+        end
+        object PBPctPt8: TPBNumEdit
+          Left = 528
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPctChange
+          TabOrder = 18
+        end
+        object PBPctTot: TPBNumEdit
+          Left = 584
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 1
+          NumberFormat = Standard
+          TabOrder = 19
+        end
+      end
+      object GBSaillie: TGroupBox
+        Left = 0
+        Top = 96
+        Width = 640
+        Height = 120
+        Align = alTop
+        Caption = 'Service'
+        TabOrder = 2
+        object LAgeSail: TLabel
+          Left = 8
+          Top = 44
+          Width = 34
+          Height = 13
+          Caption = 'Age (d)'
+        end
+        object LPdsSail: TLabel
+          Left = 8
+          Top = 68
+          Width = 79
+          Height = 13
+          Caption = 'Body weight (kg)'
+        end
+        object LP2Sail: TLabel
+          Left = 8
+          Top = 92
+          Width = 110
+          Height = 13
+          Caption = 'Backfat thickness (mm)'
+        end
+        object LISO: TLabel
+          Left = 8
+          Top = 20
+          Width = 36
+          Height = 13
+          Caption = 'WEI (d)'
+        end
+        object PBAgeSailPt1: TPBNumEdit
+          Left = 136
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBAgeSailPt1Change
+          TabOrder = 8
+        end
+        object PBPdsSailPt1: TPBNumEdit
+          Left = 136
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsSailPt1Change
+          TabOrder = 17
+        end
+        object PBAgeSailPt2: TPBNumEdit
+          Left = 192
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 9
+        end
+        object PBAgeSailPt3: TPBNumEdit
+          Left = 248
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 10
+        end
+        object PBAgeSailPt4: TPBNumEdit
+          Left = 304
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 11
+        end
+        object PBAgeSailPt5: TPBNumEdit
+          Left = 360
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 12
+        end
+        object PBAgeSailPt6: TPBNumEdit
+          Left = 416
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 13
+        end
+        object PBAgeSailPt7: TPBNumEdit
+          Left = 472
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 14
+        end
+        object PBAgeSailPt8: TPBNumEdit
+          Left = 528
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 15
+        end
+        object PBAgeSailTot: TPBNumEdit
+          Left = 584
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 16
+        end
+        object PBPdsSailPt2: TPBNumEdit
+          Left = 192
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsSailPt2Change
+          TabOrder = 18
+        end
+        object PBPdsSailPt3: TPBNumEdit
+          Left = 248
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsSailPt3Change
+          TabOrder = 19
+        end
+        object PBPdsSailPt4: TPBNumEdit
+          Left = 304
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsSailPt4Change
+          TabOrder = 20
+        end
+        object PBPdsSailPt5: TPBNumEdit
+          Left = 360
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsSailPt5Change
+          TabOrder = 21
+        end
+        object PBPdsSailPt6: TPBNumEdit
+          Left = 416
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsSailPt6Change
+          TabOrder = 22
+        end
+        object PBPdsSailPt7: TPBNumEdit
+          Left = 472
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsSailPt7Change
+          TabOrder = 23
+        end
+        object PBPdsSailPt8: TPBNumEdit
+          Left = 528
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPdsSailPt8Change
+          TabOrder = 24
+        end
+        object PBPdsSailTot: TPBNumEdit
+          Left = 584
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 1
+          NumberFormat = Standard
+          TabOrder = 25
+        end
+        object PBP2SailPt1: TPBNumEdit
+          Left = 136
+          Top = 88
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2SailPt1Change
+          TabOrder = 26
+        end
+        object PBP2SailPt2: TPBNumEdit
+          Left = 192
+          Top = 88
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2SailPt2Change
+          TabOrder = 27
+        end
+        object PBP2SailPt3: TPBNumEdit
+          Left = 248
+          Top = 88
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2SailPt3Change
+          TabOrder = 28
+        end
+        object PBP2SailPt4: TPBNumEdit
+          Left = 304
+          Top = 88
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2SailPt4Change
+          TabOrder = 29
+        end
+        object PBP2SailPt5: TPBNumEdit
+          Left = 360
+          Top = 88
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2SailPt5Change
+          TabOrder = 30
+        end
+        object PBP2SailPt6: TPBNumEdit
+          Left = 416
+          Top = 88
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2SailPt6Change
+          TabOrder = 31
+        end
+        object PBP2SailPt7: TPBNumEdit
+          Left = 472
+          Top = 88
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2SailPt7Change
+          TabOrder = 32
+        end
+        object PBP2SailPt8: TPBNumEdit
+          Left = 528
+          Top = 88
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2SailPt8Change
+          TabOrder = 33
+        end
+        object PBP2SailTot: TPBNumEdit
+          Left = 584
+          Top = 88
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 1
+          NumberFormat = Standard
+          TabOrder = 34
+        end
+        object PBISOPt2: TPBNumEdit
+          Left = 192
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 35.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBISOPt2Change
+          TabOrder = 0
+        end
+        object PBISOPt3: TPBNumEdit
+          Left = 248
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 35.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBISOPt3Change
+          TabOrder = 1
+        end
+        object PBISOPt4: TPBNumEdit
+          Left = 304
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 35.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBISOPt4Change
+          TabOrder = 2
+        end
+        object PBISOPt5: TPBNumEdit
+          Left = 360
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 35.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBISOPt5Change
+          TabOrder = 3
+        end
+        object PBISOPt6: TPBNumEdit
+          Left = 416
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 35.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBISOPt6Change
+          TabOrder = 4
+        end
+        object PBISOPt7: TPBNumEdit
+          Left = 472
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 35.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBISOPt7Change
+          TabOrder = 5
+        end
+        object PBISOPt8: TPBNumEdit
+          Left = 528
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 35.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBISOPt8Change
+          TabOrder = 6
+        end
+        object PBISOTot: TPBNumEdit
+          Left = 584
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 7
+        end
+      end
+    end
+    object TSPortee: TTabSheet
+      Caption = 'Piglets'
+      ImageIndex = 2
+      object PTopPortee: TPanel
+        Left = 0
+        Top = 0
+        Width = 640
+        Height = 24
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        object LPorteePt1: TLabel
+          Left = 136
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 1'
+        end
+        object LPorteePt2: TLabel
+          Left = 192
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 2'
+        end
+        object LPorteePt3: TLabel
+          Left = 248
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 3'
+        end
+        object LPorteePt4: TLabel
+          Left = 304
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 4'
+        end
+        object LPorteePt5: TLabel
+          Left = 360
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 5'
+        end
+        object LPorteePt6: TLabel
+          Left = 416
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 6'
+        end
+        object LPorteePt7: TLabel
+          Left = 472
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 7'
+        end
+        object LPorteePt8: TLabel
+          Left = 528
+          Top = 4
+          Width = 32
+          Height = 13
+          Caption = 'Litter 8'
+        end
+        object LPorteeTot: TLabel
+          Left = 584
+          Top = 4
+          Width = 23
+          Height = 13
+          Caption = 'Herd'
+        end
+      end
+      object GBNaissance: TGroupBox
+        Left = 0
+        Top = 24
+        Width = 640
+        Height = 96
+        Align = alTop
+        Caption = 'Birth'
+        TabOrder = 1
+        object LNbTot: TLabel
+          Left = 8
+          Top = 20
+          Width = 48
+          Height = 13
+          Caption = 'Total born'
+        end
+        object LNbVif: TLabel
+          Left = 8
+          Top = 44
+          Width = 47
+          Height = 13
+          Caption = 'Born alive'
+        end
+        object LPVNais: TLabel
+          Left = 8
+          Top = 68
+          Width = 79
+          Height = 13
+          Caption = 'Body weight (kg)'
+        end
+        object PBNbTotPt1: TPBNumEdit
+          Left = 136
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbTotPt1Change
+          TabOrder = 0
+        end
+        object PBNbVifPt1: TPBNumEdit
+          Left = 136
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbVifPt1Change
+          TabOrder = 9
+        end
+        object PBNbTotPt2: TPBNumEdit
+          Left = 192
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbTotPt2Change
+          TabOrder = 1
+        end
+        object PBNbTotPt3: TPBNumEdit
+          Left = 248
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbTotPt3Change
+          TabOrder = 2
+        end
+        object PBNbTotPt4: TPBNumEdit
+          Left = 304
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbTotPt4Change
+          TabOrder = 3
+        end
+        object PBNbTotPt5: TPBNumEdit
+          Left = 360
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbTotPt5Change
+          TabOrder = 4
+        end
+        object PBNbTotPt6: TPBNumEdit
+          Left = 416
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbTotPt6Change
+          TabOrder = 5
+        end
+        object PBNbTotPt7: TPBNumEdit
+          Left = 472
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbTotPt7Change
+          TabOrder = 6
+        end
+        object PBNbTotPt8: TPBNumEdit
+          Left = 528
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbTotPt8Change
+          TabOrder = 7
+        end
+        object PBNbTotTot: TPBNumEdit
+          Left = 584
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 1
+          NumberFormat = Standard
+          TabOrder = 8
+        end
+        object PBNbVifPt2: TPBNumEdit
+          Left = 192
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbVifPt2Change
+          TabOrder = 10
+        end
+        object PBNbVifPt3: TPBNumEdit
+          Left = 248
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbVifPt3Change
+          TabOrder = 11
+        end
+        object PBNbVifPt4: TPBNumEdit
+          Left = 304
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbVifPt4Change
+          TabOrder = 12
+        end
+        object PBNbVifPt5: TPBNumEdit
+          Left = 360
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbVifPt5Change
+          TabOrder = 13
+        end
+        object PBNbVifPt6: TPBNumEdit
+          Left = 416
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbVifPt6Change
+          TabOrder = 14
+        end
+        object PBNbVifPt7: TPBNumEdit
+          Left = 472
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbVifPt7Change
+          TabOrder = 15
+        end
+        object PBNbVifPt8: TPBNumEdit
+          Left = 528
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbVifPt8Change
+          TabOrder = 16
+        end
+        object PBNbVifTot: TPBNumEdit
+          Left = 584
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 1
+          NumberFormat = Standard
+          TabOrder = 17
+        end
+        object PBPVNaisPt1: TPBNumEdit
+          Left = 136
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVNaisPt1Change
+          TabOrder = 18
+        end
+        object PBPVNaisPt2: TPBNumEdit
+          Left = 192
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVNaisPt2Change
+          TabOrder = 19
+        end
+        object PBPVNaisPt3: TPBNumEdit
+          Left = 248
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVNaisPt3Change
+          TabOrder = 20
+        end
+        object PBPVNaisPt4: TPBNumEdit
+          Left = 304
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVNaisPt4Change
+          TabOrder = 21
+        end
+        object PBPVNaisPt5: TPBNumEdit
+          Left = 360
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVNaisPt5Change
+          TabOrder = 22
+        end
+        object PBPVNaisPt7: TPBNumEdit
+          Left = 472
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVNaisPt7Change
+          TabOrder = 24
+        end
+        object PBPVNaisPt8: TPBNumEdit
+          Left = 528
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVNaisPt8Change
+          TabOrder = 25
+        end
+        object PBPVNaisTot: TPBNumEdit
+          Left = 584
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 26
+        end
+        object PBPVNaisPt6: TPBNumEdit
+          Left = 416
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVNaisPt6Change
+          TabOrder = 23
+        end
+      end
+      object GBSevrage: TGroupBox
+        Left = 0
+        Top = 120
+        Width = 640
+        Height = 96
+        Align = alTop
+        Caption = 'Weaning'
+        TabOrder = 2
+        object LPVSev: TLabel
+          Left = 8
+          Top = 68
+          Width = 79
+          Height = 13
+          Caption = 'Body weight (kg)'
+        end
+        object LNbSev: TLabel
+          Left = 8
+          Top = 20
+          Width = 41
+          Height = 13
+          Caption = 'Weaned'
+        end
+        object LAgeSev: TLabel
+          Left = 8
+          Top = 44
+          Width = 34
+          Height = 13
+          Caption = 'Age (d)'
+        end
+        object PBPVSevPt1: TPBNumEdit
+          Left = 136
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVSevPt1Change
+          TabOrder = 18
+        end
+        object PBPVSevPt2: TPBNumEdit
+          Left = 192
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVSevPt2Change
+          TabOrder = 19
+        end
+        object PBPVSevPt3: TPBNumEdit
+          Left = 248
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVSevPt3Change
+          TabOrder = 20
+        end
+        object PBPVSevPt4: TPBNumEdit
+          Left = 304
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVSevPt4Change
+          TabOrder = 21
+        end
+        object PBPVSevPt5: TPBNumEdit
+          Left = 360
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVSevPt5Change
+          TabOrder = 22
+        end
+        object PBPVSevPt6: TPBNumEdit
+          Left = 416
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVSevPt6Change
+          TabOrder = 23
+        end
+        object PBPVSevPt7: TPBNumEdit
+          Left = 472
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVSevPt7Change
+          TabOrder = 24
+        end
+        object PBPVSevPt8: TPBNumEdit
+          Left = 528
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPVSevPt8Change
+          TabOrder = 25
+        end
+        object PBPVSevTot: TPBNumEdit
+          Left = 584
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 26
+        end
+        object PBNbSevPt1: TPBNumEdit
+          Left = 136
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbSevPt1Change
+          TabOrder = 0
+        end
+        object PBNbSevPt2: TPBNumEdit
+          Left = 192
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbSevPt2Change
+          TabOrder = 1
+        end
+        object PBNbSevPt3: TPBNumEdit
+          Left = 248
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbSevPt3Change
+          TabOrder = 2
+        end
+        object PBNbSevPt4: TPBNumEdit
+          Left = 304
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbSevPt4Change
+          TabOrder = 3
+        end
+        object PBNbSevPt5: TPBNumEdit
+          Left = 360
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbSevPt5Change
+          TabOrder = 4
+        end
+        object PBNbSevPt6: TPBNumEdit
+          Left = 416
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbSevPt6Change
+          TabOrder = 5
+        end
+        object PBNbSevPt7: TPBNumEdit
+          Left = 472
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbSevPt7Change
+          TabOrder = 6
+        end
+        object PBNbSevPt8: TPBNumEdit
+          Left = 528
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbSevPt8Change
+          TabOrder = 7
+        end
+        object PBNbSevTot: TPBNumEdit
+          Left = 584
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 1
+          NumberFormat = Standard
+          TabOrder = 8
+        end
+        object PBDureeLact: TPBSuperSpin
+          Left = 584
+          Top = 40
+          Width = 48
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 28.000000000000000000
+          MinValue = 14.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBDureeLactChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 17
+          EditorEnabled = False
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBAgeSevPt1: TPBNumEdit
+          Left = 136
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 9
+        end
+        object PBAgeSevPt2: TPBNumEdit
+          Left = 192
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 10
+        end
+        object PBAgeSevPt3: TPBNumEdit
+          Left = 248
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 11
+        end
+        object PBAgeSevPt4: TPBNumEdit
+          Left = 304
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 12
+        end
+        object PBAgeSevPt5: TPBNumEdit
+          Left = 360
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 13
+        end
+        object PBAgeSevPt6: TPBNumEdit
+          Left = 416
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 14
+        end
+        object PBAgeSevPt7: TPBNumEdit
+          Left = 472
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 15
+        end
+        object PBAgeSevPt8: TPBNumEdit
+          Left = 528
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 16
+        end
+      end
+      object GBGMQ: TGroupBox
+        Left = 0
+        Top = 216
+        Width = 640
+        Height = 48
+        Align = alTop
+        Caption = 'ADG litter (kg/d)'
+        TabOrder = 3
+        object LNaisSev: TLabel
+          Left = 8
+          Top = 20
+          Width = 70
+          Height = 13
+          Caption = 'Birth - weaning'
+        end
+        object PBGMQPt1: TPBNumEdit
+          Left = 136
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 0
+        end
+        object PBGMQPt2: TPBNumEdit
+          Left = 192
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 1
+        end
+        object PBGMQPt3: TPBNumEdit
+          Left = 248
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 2
+        end
+        object PBGMQPt4: TPBNumEdit
+          Left = 304
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 3
+        end
+        object PBGMQPt5: TPBNumEdit
+          Left = 360
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 4
+        end
+        object PBGMQPt7: TPBNumEdit
+          Left = 472
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 6
+        end
+        object PBGMQPt8: TPBNumEdit
+          Left = 528
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 7
+        end
+        object PBGMQTot: TPBNumEdit
+          Left = 584
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 8
+        end
+        object PBGMQPt6: TPBNumEdit
+          Left = 416
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 5
+        end
+      end
+    end
+    object TSAlim: TTabSheet
+      Caption = 'Feeding'
+      ImageIndex = 2
+      object GraphAli: TChart
+        Left = 200
+        Top = 48
+        Width = 440
+        Height = 288
+        Legend.Alignment = laTop
+        Legend.LegendStyle = lsSeries
+        MarginBottom = 0
+        MarginLeft = 0
+        MarginTop = 3
+        Title.Text.Strings = (
+          'TChart')
+        Title.Visible = False
+        BottomAxis.ExactDateTime = False
+        BottomAxis.Increment = 10.000000000000000000
+        BottomAxis.Title.Caption = 'Litter'
+        BottomAxis.Title.Font.Style = [fsBold]
+        LeftAxis.Automatic = False
+        LeftAxis.AutomaticMaximum = False
+        LeftAxis.AutomaticMinimum = False
+        LeftAxis.Title.Caption = 'FI (kg/d)'
+        LeftAxis.Title.Font.Style = [fsBold]
+        View3D = False
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 2
+      end
+      object GBAliRef: TGroupBox
+        Left = 0
+        Top = 48
+        Width = 200
+        Height = 288
+        Align = alLeft
+        Caption = 'Reference ration'
+        TabOrder = 1
+        object LUnite: TLabel
+          Left = 8
+          Top = 20
+          Width = 19
+          Height = 13
+          Caption = 'Unit'
+        end
+        object LAliPt1: TLabel
+          Left = 8
+          Top = 68
+          Width = 32
+          Height = 13
+          Caption = 'Litter 1'
+        end
+        object LAliGest: TLabel
+          Left = 64
+          Top = 44
+          Width = 64
+          Height = 13
+          Alignment = taCenter
+          AutoSize = False
+          Caption = 'Gestation'
+        end
+        object LAliLact: TLabel
+          Left = 128
+          Top = 44
+          Width = 64
+          Height = 13
+          Alignment = taCenter
+          AutoSize = False
+          Caption = 'Lactation'
+        end
+        object LAliPt2: TLabel
+          Left = 8
+          Top = 92
+          Width = 32
+          Height = 13
+          Caption = 'Litter 2'
+        end
+        object LAliPt3: TLabel
+          Left = 8
+          Top = 116
+          Width = 32
+          Height = 13
+          Caption = 'Litter 3'
+        end
+        object LAliPt4: TLabel
+          Left = 8
+          Top = 140
+          Width = 32
+          Height = 13
+          Caption = 'Litter 4'
+        end
+        object LAliPt5: TLabel
+          Left = 8
+          Top = 164
+          Width = 32
+          Height = 13
+          Caption = 'Litter 5'
+        end
+        object LAliPt6: TLabel
+          Left = 8
+          Top = 188
+          Width = 32
+          Height = 13
+          Caption = 'Litter 6'
+        end
+        object LAliPt7: TLabel
+          Left = 8
+          Top = 212
+          Width = 32
+          Height = 13
+          Caption = 'Litter 7'
+        end
+        object LAliPt8: TLabel
+          Left = 8
+          Top = 236
+          Width = 32
+          Height = 13
+          Caption = 'Litter 8'
+        end
+        object LAliTot: TLabel
+          Left = 8
+          Top = 260
+          Width = 23
+          Height = 13
+          Caption = 'Herd'
+        end
+        object CBUnite: TComboBox
+          Left = 72
+          Top = 16
+          Width = 120
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Quantity (kg/d)'
+          OnChange = CBUniteChange
+          Items.Strings = (
+            'Quantity (kg/d)'
+            'DE (MJ/d)'
+            'ME (MJ/d)'
+            'NE (MJ/d)'
+            'DM (kg/d)')
+        end
+        object PBAliGestPt1: TPBNumEdit
+          Left = 72
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliGestPt1Change
+          TabOrder = 1
+        end
+        object PBAliLactPt1: TPBNumEdit
+          Left = 136
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliLactPt1Change
+          TabOrder = 10
+        end
+        object PBAliGestPt2: TPBNumEdit
+          Left = 72
+          Top = 88
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliGestPt2Change
+          TabOrder = 2
+        end
+        object PBAliGestPt3: TPBNumEdit
+          Left = 72
+          Top = 112
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliGestPt3Change
+          TabOrder = 3
+        end
+        object PBAliGestPt4: TPBNumEdit
+          Left = 72
+          Top = 136
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliGestPt4Change
+          TabOrder = 4
+        end
+        object PBAliGestPt5: TPBNumEdit
+          Left = 72
+          Top = 160
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliGestPt5Change
+          TabOrder = 5
+        end
+        object PBAliGestPt6: TPBNumEdit
+          Left = 72
+          Top = 184
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliGestPt6Change
+          TabOrder = 6
+        end
+        object PBAliGestPt7: TPBNumEdit
+          Left = 72
+          Top = 208
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliGestPt7Change
+          TabOrder = 7
+        end
+        object PBAliGestPt8: TPBNumEdit
+          Left = 72
+          Top = 232
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliGestPt8Change
+          TabOrder = 8
+        end
+        object PBAliLactPt2: TPBNumEdit
+          Left = 136
+          Top = 88
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliLactPt2Change
+          TabOrder = 11
+        end
+        object PBAliLactPt3: TPBNumEdit
+          Left = 136
+          Top = 112
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliLactPt3Change
+          TabOrder = 12
+        end
+        object PBAliLactPt4: TPBNumEdit
+          Left = 136
+          Top = 136
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliLactPt4Change
+          TabOrder = 13
+        end
+        object PBAliLactPt5: TPBNumEdit
+          Left = 136
+          Top = 160
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliLactPt5Change
+          TabOrder = 14
+        end
+        object PBAliLactPt6: TPBNumEdit
+          Left = 136
+          Top = 184
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliLactPt6Change
+          TabOrder = 15
+        end
+        object PBAliLactPt7: TPBNumEdit
+          Left = 136
+          Top = 208
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliLactPt7Change
+          TabOrder = 16
+        end
+        object PBAliLactPt8: TPBNumEdit
+          Left = 136
+          Top = 232
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBAliLactPt8Change
+          TabOrder = 17
+        end
+        object PBAliGestTot: TPBNumEdit
+          Left = 72
+          Top = 256
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 9
+        end
+        object PBAliLactTot: TPBNumEdit
+          Left = 136
+          Top = 256
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 3
+          NumberFormat = Standard
+          TabOrder = 18
+        end
+      end
+      object PAlimTop: TPanel
+        Left = 0
+        Top = 0
+        Width = 640
+        Height = 48
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        object GBSeqAli: TGroupBox
+          Left = 0
+          Top = 0
+          Width = 272
+          Height = 48
+          Caption = 'Feed sequence plan'
+          TabOrder = 0
+          object CBSeqAli: TComboBox
+            Left = 16
+            Top = 16
+            Width = 240
+            Height = 21
+            AutoCompleteDelay = 1500
+            Style = csDropDownList
+            ItemHeight = 13
+            ParentShowHint = False
+            ShowHint = True
+            Sorted = True
+            TabOrder = 0
+            OnChange = CBSeqAliChange
+          end
+        end
+        object GBLoge: TGroupBox
+          Left = 280
+          Top = 0
+          Width = 272
+          Height = 48
+          Caption = 'Housing'
+          TabOrder = 1
+          object CBLoge: TComboBox
+            Left = 16
+            Top = 16
+            Width = 240
+            Height = 21
+            AutoCompleteDelay = 1500
+            Style = csDropDownList
+            ItemHeight = 13
+            ParentShowHint = False
+            ShowHint = True
+            Sorted = True
+            TabOrder = 0
+            OnChange = CBLogeChange
+          end
+        end
+      end
+    end
+    object TSGraph: TTabSheet
+      Caption = 'Graphs'
+      object GBConfig: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 640
+        Height = 48
+        Align = alTop
+        Caption = 'Select a graph'
+        TabOrder = 0
+        object CBPortee: TComboBox
+          Left = 272
+          Top = 16
+          Width = 240
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 2
+          Text = 'Number'
+          Visible = False
+          OnChange = CBGraphChange
+          Items.Strings = (
+            'Number'
+            'Weight'
+            'ADG litter')
+        end
+        object CBOnglet: TComboBox
+          Left = 16
+          Top = 16
+          Width = 240
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Sow'
+          OnChange = CBOngletChange
+          Items.Strings = (
+            'Sow'
+            'Piglets')
+        end
+        object CBTruie: TComboBox
+          Left = 272
+          Top = 16
+          Width = 240
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Weight'
+          OnChange = CBGraphChange
+          Items.Strings = (
+            'Weight'
+            'Backfat thickness'
+            'Weight adjustment after farrowing')
+        end
+      end
+      object Graph: TChart
+        Left = 0
+        Top = 48
+        Width = 640
+        Height = 288
+        AllowPanning = pmNone
+        Foot.Alignment = taLeftJustify
+        Foot.Font.Color = clBlack
+        Foot.Font.Style = []
+        LeftWall.Color = clGray
+        Legend.Alignment = laTop
+        Legend.ColorWidth = 10
+        Legend.Font.Charset = ANSI_CHARSET
+        Legend.LegendStyle = lsSeries
+        Legend.Symbol.Width = 10
+        Legend.Visible = False
+        MarginBottom = 1
+        MarginLeft = 1
+        MarginRight = 1
+        MarginTop = 1
+        SubTitle.Font.Color = clBlack
+        SubTitle.Text.Strings = (
+          'Sub-title')
+        Title.Font.Height = -16
+        Title.Font.Style = [fsBold]
+        Title.Text.Strings = (
+          'Title')
+        BottomAxis.Title.Caption = 'X'
+        BottomAxis.Title.Font.Style = [fsBold]
+        DepthAxis.Title.Font.Style = [fsBold]
+        LeftAxis.Automatic = False
+        LeftAxis.AutomaticMaximum = False
+        LeftAxis.AutomaticMinimum = False
+        LeftAxis.Title.Caption = 'Y'
+        LeftAxis.Title.Font.Style = [fsBold]
+        RightAxis.Title.Font.Style = [fsBold]
+        TopAxis.Title.Font.Style = [fsBold]
+        View3D = False
+        View3DOptions.Elevation = 315
+        View3DOptions.Orthogonal = False
+        View3DOptions.Perspective = 0
+        View3DOptions.Rotation = 360
+        View3DWalls = False
+        Zoom.Allow = False
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 1
+        PrintMargins = (
+          15
+          23
+          15
+          23)
+      end
+    end
+    object TSCalibr: TTabSheet
+      Caption = 'Calibration'
+      ImageIndex = 4
+      object PLeft: TPanel
+        Left = 0
+        Top = 0
+        Width = 96
+        Height = 336
+        Align = alLeft
+        BevelOuter = bvNone
+        TabOrder = 0
+        object SBCalibr: TSpeedButton
+          Left = 10
+          Top = 75
+          Width = 80
+          Height = 24
+          Hint = 'Calibrate model parameters'
+          Caption = 'Calibration'
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            04000000000000010000C40E0000C40E00001000000000000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DD7000000000
+            7DDDDDD777777777DFDDDD08888888880DDDDD7FDFDFDFFF7FDDDD0808089998
+            0DDDDD7F7D7D777D7FDDDD08888888880DDDDD7FDFDFDFDF7FDDDD0808080808
+            0DDDDD7F7D7D7D7D7FDDDD08888888880DDDDD7FDFDFDFDF7FDDDD0808080808
+            0DDDDD7F7D7D7D7D7FDDDD08888888880DDDDD7FDFDFDFDF7FDDDD0808080808
+            0DDDDD7F7D7D7D7D7FDDDD08888888880DDDDD7FDFFFFFFF7FDDDD0800000008
+            0DDDDD7F7777777F7FDDDD08000E0E080DDDDD7F7FFFFF7F7FDDDD0800000008
+            0DDDDD7F7777777D7FDDDD08888888880DDDDD7FDDDDDDDD7FDDDD0888888888
+            0DDDDD7DFFFFFFFF7DDDDD70000000007DDDDDD777777777DDDD}
+          NumGlyphs = 2
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBCalibrClick
+        end
+        object SBReset: TSpeedButton
+          Left = 8
+          Top = 8
+          Width = 80
+          Height = 24
+          Hint = 'Re-initialize the coefficients'
+          Caption = 'Reset'
+          Glyph.Data = {
+            36090000424D3609000000000000360000002800000030000000100000000100
+            18000000000000090000C40E0000C40E00000000000000000000FF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            FF00FF8080808080808080808080808080808080808080808080808080808080
+            80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000000000000000000000808080FF00FFFF00FFFF00FFFF00FF
+            8080808080808080808080808080808080808080808080808080808080808080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000000000000000000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+            00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            0000FF0000FFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FF808080808080FF00FFFF00FFFF00FF8080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+            0000800000C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFF0000FFFFFFFF0000FFFFFFFFFFFFFF0000FFFFFFFFFFFF0000
+            00808080FF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FF808080FF
+            00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0800000C0C0C0800000C0C0C0C0C0C0800000C0C0C0C0C0C00000
+            00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFF0000FF0000FFFFFFFF
+            FFFFFFFFFFFFFFFFFF0000FFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+            808080FF00FF808080808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0800000800000C0C0C0C0
+            C0C0C0C0C0C0C0C0800000C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+            00808080FF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080808080FF
+            00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0800000800000800000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+            00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFF0000FF0000FF0000FFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FF8080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0800000800000800000C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FFFFFF0000
+            00808080FF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF
+            00FFFF00FF808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0800000C0C0C0C0C0C0C0C0C0C0C0C0800000800000C0C0C00000
+            00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFF0000FFFFFFFF
+            FFFFFF0000FFFFFFFF0000FFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080FF00FF8080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0800000C0C0C0C0
+            C0C0800000C0C0C0800000C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+            00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+            8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0800000800000C0C0C0C0C0C0C0C0C0C0C0C00000
+            00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+            80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000
+            00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000000000000000000000
+            00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+            C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+            00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+            808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+            0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+          NumGlyphs = 3
+          ParentShowHint = False
+          ShowHint = True
+          OnClick = SBResetClick
+        end
+        object GBCalGest: TGroupBox
+          Left = 0
+          Top = 112
+          Width = 96
+          Height = 80
+          Caption = 'Gestation'
+          TabOrder = 0
+          object LCoefEntGest: TLabel
+            Left = 8
+            Top = 16
+            Width = 80
+            Height = 32
+            Hint = 'Maintenance correction factor (Gestation)'
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Maintenance coefficient'
+            ParentShowHint = False
+            ShowHint = True
+            WordWrap = True
+          end
+          object PBCoefEntGest: TPBSuperSpin
+            Left = 16
+            Top = 48
+            Width = 64
+            Height = 22
+            Cursor = crDefault
+            Hint = 'Maintenance correction factor (Gestation)'
+            Alignment = taRightJustify
+            Decimals = 5
+            MaxValue = 1.200000000000000000
+            MinValue = 0.800000000000000000
+            NumberFormat = Standard
+            OnChange = PBCoefEntGestChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            EditorEnabled = False
+            Increment = 0.010000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+        end
+        object GBCalLact: TGroupBox
+          Left = 0
+          Top = 192
+          Width = 96
+          Height = 144
+          Caption = 'Lactation'
+          TabOrder = 1
+          object LCoefEntLact: TLabel
+            Left = 8
+            Top = 16
+            Width = 80
+            Height = 32
+            Hint = 'Maintenance correction factor (Lactation)'
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Maintenance coefficient'
+            ParentShowHint = False
+            ShowHint = True
+            WordWrap = True
+          end
+          object LRatioLipProt: TLabel
+            Left = 8
+            Top = 80
+            Width = 80
+            Height = 32
+            Hint = 'Minimal fraction of energy mobilized as protein during lactation'
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Protein mobilization'
+            ParentShowHint = False
+            ShowHint = True
+            WordWrap = True
+          end
+          object PBCoefEntLact: TPBSuperSpin
+            Left = 16
+            Top = 48
+            Width = 64
+            Height = 22
+            Cursor = crDefault
+            Hint = 'Maintenance correction factor (Lactation)'
+            Alignment = taRightJustify
+            Decimals = 5
+            MaxValue = 1.200000000000000000
+            MinValue = 0.800000000000000000
+            NumberFormat = Standard
+            OnChange = PBCoefEntLactChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            EditorEnabled = False
+            Increment = 0.010000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+          object PBRatioLipProt: TPBSuperSpin
+            Left = 16
+            Top = 112
+            Width = 64
+            Height = 22
+            Cursor = crDefault
+            Hint = 'Minimal fraction of energy mobilized as protein during lactation'
+            Alignment = taRightJustify
+            Decimals = 5
+            MaxValue = 0.200000000000000000
+            NumberFormat = Standard
+            OnChange = PBRatioLipProtChange
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 1
+            EditorEnabled = False
+            Increment = 0.001000000000000000
+            RoundValues = False
+            Wrap = False
+          end
+        end
+        object CBMethod: TComboBox
+          Left = 0
+          Top = 48
+          Width = 96
+          Height = 21
+          Hint = 'Calibration method'
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 1
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          Text = 'Marquardt'
+          Items.Strings = (
+            'Newton'
+            'Marquardt'
+            'BFGS')
+        end
+      end
+      object GraphCalibr: TChart
+        Left = 96
+        Top = 0
+        Width = 544
+        Height = 336
+        AllowPanning = pmNone
+        Foot.Alignment = taLeftJustify
+        Foot.Font.Color = clBlack
+        Foot.Font.Style = []
+        LeftWall.Color = clGray
+        Legend.Alignment = laTop
+        Legend.ColorWidth = 10
+        Legend.Font.Charset = ANSI_CHARSET
+        Legend.LegendStyle = lsSeries
+        Legend.Symbol.Width = 10
+        Legend.Visible = False
+        MarginBottom = 1
+        MarginLeft = 1
+        MarginRight = 1
+        SubTitle.Font.Color = clBlack
+        SubTitle.Text.Strings = (
+          
+            'This operation may take more or less time depending on the power' +
+            ' of your computer')
+        SubTitle.Visible = False
+        Title.Font.Height = -16
+        Title.Font.Style = [fsBold]
+        Title.Text.Strings = (
+          'Calibrating...')
+        Title.Visible = False
+        BottomAxis.Grid.Visible = False
+        BottomAxis.Title.Caption = 'Age (d)'
+        BottomAxis.Title.Font.Style = [fsBold]
+        DepthAxis.Title.Font.Style = [fsBold]
+        LeftAxis.Automatic = False
+        LeftAxis.AutomaticMaximum = False
+        LeftAxis.AutomaticMinimum = False
+        LeftAxis.Grid.Visible = False
+        LeftAxis.Maximum = 300.000000000000000000
+        LeftAxis.Title.Caption = 'Net weight (kg)'
+        LeftAxis.Title.Font.Color = clRed
+        LeftAxis.Title.Font.Style = [fsBold]
+        RightAxis.Automatic = False
+        RightAxis.AutomaticMaximum = False
+        RightAxis.AutomaticMinimum = False
+        RightAxis.Grid.Visible = False
+        RightAxis.Maximum = 35.000000000000000000
+        RightAxis.Minimum = 5.000000000000000000
+        RightAxis.Title.Caption = 'P2 (mm)'
+        RightAxis.Title.Font.Color = clGreen
+        RightAxis.Title.Font.Style = [fsBold]
+        TopAxis.Title.Font.Style = [fsBold]
+        View3D = False
+        View3DOptions.Elevation = 315
+        View3DOptions.Orthogonal = False
+        View3DOptions.Perspective = 0
+        View3DOptions.Rotation = 360
+        View3DWalls = False
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 1
+        PrintMargins = (
+          15
+          30
+          15
+          30)
+        object GaugeCalibr: TGauge
+          Left = 200
+          Top = 80
+          Width = 96
+          Height = 96
+          BorderStyle = bsNone
+          Kind = gkPie
+          MaxValue = 60
+          Progress = 0
+          ShowText = False
+          Visible = False
+        end
+        object LignePds: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          Title = 'LinePds'
+          LinePen.Color = clRed
+          LinePen.Width = 2
+          Pointer.InflateMargins = True
+          Pointer.Style = psRectangle
+          Pointer.Visible = False
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+        object LigneP2: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          Title = 'LineP2'
+          VertAxis = aRightAxis
+          LinePen.Color = clGreen
+          LinePen.Width = 2
+          Pointer.InflateMargins = True
+          Pointer.Style = psRectangle
+          Pointer.Visible = False
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+        object PointPds: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          SeriesColor = clRed
+          Title = 'PointPds'
+          Brush.Color = clWhite
+          Brush.Style = bsClear
+          LineBrush = bsClear
+          LinePen.Color = clRed
+          LinePen.Width = 2
+          LinePen.Visible = False
+          Pointer.Brush.Color = clWhite
+          Pointer.Brush.Style = bsClear
+          Pointer.HorizSize = 3
+          Pointer.InflateMargins = True
+          Pointer.Pen.Color = clRed
+          Pointer.Pen.Width = 2
+          Pointer.Style = psCircle
+          Pointer.VertSize = 3
+          Pointer.Visible = True
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+        object PointP2: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          SeriesColor = clGreen
+          Title = 'PointP2'
+          VertAxis = aRightAxis
+          Brush.Color = clWhite
+          Brush.Style = bsClear
+          LineBrush = bsClear
+          LinePen.Color = clGreen
+          LinePen.Width = 2
+          LinePen.Visible = False
+          Pointer.Brush.Color = clWhite
+          Pointer.Brush.Style = bsClear
+          Pointer.HorizSize = 3
+          Pointer.InflateMargins = True
+          Pointer.Pen.Color = clGreen
+          Pointer.Pen.Width = 2
+          Pointer.Style = psCircle
+          Pointer.VertSize = 3
+          Pointer.Visible = True
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+      end
+    end
+    object TSGTTT: TTabSheet
+      Caption = 'Average performance data'
+      ImageIndex = 5
+      object GBTruies: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 312
+        Height = 280
+        Caption = 'Sows'
+        TabOrder = 0
+        object LNbrTruies: TLabel
+          Left = 8
+          Top = 20
+          Width = 129
+          Height = 13
+          Caption = 'Number of productive sows'
+        end
+        object LAge1ereMB: TLabel
+          Left = 8
+          Top = 44
+          Width = 111
+          Height = 13
+          Caption = 'Age at first farrowing (d)'
+        end
+        object LISO2: TLabel
+          Left = 8
+          Top = 68
+          Width = 138
+          Height = 13
+          Caption = 'Weaning-to-estrus interval (d)'
+        end
+        object LPdsTruies: TLabel
+          Left = 144
+          Top = 96
+          Width = 80
+          Height = 32
+          Alignment = taCenter
+          AutoSize = False
+          Caption = 'Body weight (kg)'
+          WordWrap = True
+        end
+        object L1ereSaillie: TLabel
+          Left = 8
+          Top = 132
+          Width = 56
+          Height = 13
+          Caption = 'First service'
+        end
+        object LAdulte: TLabel
+          Left = 8
+          Top = 156
+          Width = 100
+          Height = 13
+          Caption = 'Adult (after farrowing)'
+        end
+        object LPrimipares: TLabel
+          Left = 24
+          Top = 228
+          Width = 59
+          Height = 13
+          Caption = '- primiparous'
+        end
+        object LMultipares: TLabel
+          Left = 24
+          Top = 252
+          Width = 59
+          Height = 13
+          Caption = '- multiparous'
+        end
+        object LPerteLactation: TLabel
+          Left = 8
+          Top = 208
+          Width = 97
+          Height = 13
+          Caption = 'Loss during lactation'
+        end
+        object LP2Truies: TLabel
+          Left = 224
+          Top = 96
+          Width = 80
+          Height = 32
+          Alignment = taCenter
+          AutoSize = False
+          Caption = 'Backfat thickness (mm)'
+          WordWrap = True
+        end
+        object LObjectif: TLabel
+          Left = 8
+          Top = 180
+          Width = 92
+          Height = 13
+          Caption = 'Farrowing objective'
+        end
+        object PBNbrTruies: TPBNumEdit
+          Left = 200
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBNbrTruiesChange
+          TabOrder = 0
+        end
+        object PBAge1ereMB: TPBNumEdit
+          Left = 200
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBAge1ereMBChange
+          TabOrder = 1
+        end
+        object PBISO: TPBNumEdit
+          Left = 200
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBISOChange
+          TabOrder = 2
+        end
+        object PBPds1ereSaillie: TPBNumEdit
+          Left = 160
+          Top = 128
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBPds1ereSaillieChange
+          TabOrder = 3
+        end
+        object PBPdsAdulte: TPBNumEdit
+          Left = 160
+          Top = 152
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBPdsAdulteChange
+          TabOrder = 4
+        end
+        object PBPertePdsPrim: TPBNumEdit
+          Left = 160
+          Top = 224
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBPertePdsPrimChange
+          TabOrder = 5
+        end
+        object PBPertePdsMult: TPBNumEdit
+          Left = 160
+          Top = 248
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBPertePdsMultChange
+          TabOrder = 6
+        end
+        object PBP21ereSaillie: TPBNumEdit
+          Left = 240
+          Top = 128
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP21ereSaillieChange
+          TabOrder = 7
+        end
+        object PBP2Objectif: TPBNumEdit
+          Left = 240
+          Top = 176
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBP2ObjectifChange
+          TabOrder = 8
+        end
+        object PBPerteP2Prim: TPBNumEdit
+          Left = 240
+          Top = 224
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPerteP2PrimChange
+          TabOrder = 9
+        end
+        object PBPerteP2Mult: TPBNumEdit
+          Left = 240
+          Top = 248
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPerteP2MultChange
+          TabOrder = 10
+        end
+      end
+      object GBPorcelets: TGroupBox
+        Left = 320
+        Top = 0
+        Width = 232
+        Height = 200
+        Caption = 'Piglets'
+        TabOrder = 1
+        object LNbrPorcelets: TLabel
+          Left = 8
+          Top = 16
+          Width = 82
+          Height = 13
+          Caption = 'Number of piglets'
+        end
+        object LNbrVifs: TLabel
+          Left = 24
+          Top = 36
+          Width = 52
+          Height = 13
+          Caption = '- born alive'
+        end
+        object LNbrMorts: TLabel
+          Left = 24
+          Top = 60
+          Width = 41
+          Height = 13
+          Caption = '- stillborn'
+        end
+        object LNbrSevres: TLabel
+          Left = 24
+          Top = 84
+          Width = 44
+          Height = 13
+          Caption = '- weaned'
+        end
+        object LAgePorcelets: TLabel
+          Left = 64
+          Top = 112
+          Width = 80
+          Height = 32
+          Alignment = taCenter
+          AutoSize = False
+          Caption = 'Age (d)'
+          WordWrap = True
+        end
+        object LNaissance: TLabel
+          Left = 8
+          Top = 148
+          Width = 21
+          Height = 13
+          Caption = 'Birth'
+        end
+        object LSevrage: TLabel
+          Left = 8
+          Top = 172
+          Width = 43
+          Height = 13
+          Caption = 'Weaning'
+        end
+        object LPdsPorcelets: TLabel
+          Left = 144
+          Top = 112
+          Width = 80
+          Height = 32
+          Alignment = taCenter
+          AutoSize = False
+          Caption = 'Body weight (kg)'
+          WordWrap = True
+        end
+        object PBNbrVifs: TPBNumEdit
+          Left = 120
+          Top = 32
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbrVifsChange
+          TabOrder = 0
+        end
+        object PBNbrMorts: TPBNumEdit
+          Left = 120
+          Top = 56
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbrMortsChange
+          TabOrder = 1
+        end
+        object PBNbrSevres: TPBNumEdit
+          Left = 120
+          Top = 80
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBNbrSevresChange
+          TabOrder = 2
+        end
+        object PBPdsNais: TPBNumEdit
+          Left = 160
+          Top = 144
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPdsNaisChange
+          TabOrder = 4
+        end
+        object PBPdsSev: TPBNumEdit
+          Left = 160
+          Top = 168
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 3
+          NumberFormat = Standard
+          OnChange = PBPdsSevChange
+          TabOrder = 5
+        end
+        object PBAgeSev: TPBSuperSpin
+          Left = 80
+          Top = 168
+          Width = 48
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 0
+          MaxValue = 28.000000000000000000
+          MinValue = 14.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBAgeSevChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 3
+          EditorEnabled = False
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+      end
+      object BBCalcul: TBitBtn
+        Left = 16
+        Top = 304
+        Width = 80
+        Height = 24
+        Hint = 'Calculate the data for sows, piglets and feeding'
+        Caption = 'Calculate'
+        Glyph.Data = {
+          76010000424D7601000000000000760000002800000020000000100000000100
+          04000000000000010000120B0000120B00001000000000000000000000000000
+          800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00337000000000
+          73333337777777773F333308888888880333337F3F3F3FFF7F33330808089998
+          0333337F737377737F333308888888880333337F3F3F3F3F7F33330808080808
+          0333337F737373737F333308888888880333337F3F3F3F3F7F33330808080808
+          0333337F737373737F333308888888880333337F3F3F3F3F7F33330808080808
+          0333337F737373737F333308888888880333337F3FFFFFFF7F33330800000008
+          0333337F7777777F7F333308000E0E080333337F7FFFFF7F7F33330800000008
+          0333337F777777737F333308888888880333337F333333337F33330888888888
+          03333373FFFFFFFF733333700000000073333337777777773333}
+        NumGlyphs = 2
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+        OnClick = BBCalculClick
+      end
+      object GBAlimentation: TGroupBox
+        Left = 320
+        Top = 200
+        Width = 232
+        Height = 96
+        Caption = 'Feeding'
+        TabOrder = 2
+        object LConsoLact: TLabel
+          Left = 8
+          Top = 20
+          Width = 76
+          Height = 13
+          Caption = 'Lactation (kg/d)'
+        end
+        object LConsoGest: TLabel
+          Left = 8
+          Top = 44
+          Width = 77
+          Height = 13
+          Caption = 'Gestation (kg/d)'
+        end
+        object LConsoAn: TLabel
+          Left = 8
+          Top = 68
+          Width = 70
+          Height = 13
+          Caption = 'Total (kg/year)'
+        end
+        object PBConsoLact: TPBNumEdit
+          Left = 120
+          Top = 16
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBConsoLactChange
+          TabOrder = 0
+        end
+        object PBConsoGest: TPBNumEdit
+          Left = 120
+          Top = 40
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBConsoGestChange
+          TabOrder = 1
+        end
+        object PBConsoAn: TPBNumEdit
+          Left = 120
+          Top = 64
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 0
+          NumberFormat = Standard
+          TabOrder = 2
+        end
+      end
+    end
+  end
+end
Index: UFRapRationP.dfm
===================================================================
--- UFRapRationP.dfm	(révision 0)
+++ UFRapRationP.dfm	(révision 3)
@@ -0,0 +1,1384 @@
+object FRapRationP: TFRapRationP
+  Left = 0
+  Top = 80
+  Caption = 'Report of feed rationing plan for growing pigs'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed rationing plan for growing pigs'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 152
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        402.166666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRLRation: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRation: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ration_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRLRegles: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 45
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          254.000000000000000000
+          119.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Rules'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLNo: TQRLabel
+        Left = 56
+        Top = 128
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          148.166666666666700000
+          338.666666666666700000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '#'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRShape2: TQRShape
+        Left = 40
+        Top = 144
+        Width = 638
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          105.833333333333000000
+          381.000000000000000000
+          1688.041666666670000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLModeFin: TQRLabel
+        Left = 80
+        Top = 128
+        Width = 141
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          338.666666666666700000
+          373.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Termination condition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLConso: TQRLabel
+        Left = 240
+        Top = 128
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          338.666666666666700000
+          198.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed usage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel1: TQRLabel
+        Left = 588
+        Top = 128
+        Width = 90
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1555.750000000000000000
+          338.666666666666700000
+          238.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed wastage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 290
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 27
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          21.166666666666670000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 383
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          63.500000000000000000
+          1013.354166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          1711.854166666667000000
+          63.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+    object QRSDRegles: TQRSubDetail
+      Left = 38
+      Top = 270
+      Width = 718
+      Height = 20
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        52.916666666666670000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      Master = QRRapport
+      DataSet = CDSRegles
+      PrintBefore = False
+      PrintIfEmpty = True
+      object QRDBTConso: TQRDBText
+        Left = 240
+        Top = 0
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          0.000000000000000000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_Conso_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNo: TQRDBText
+        Left = 41
+        Top = 0
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          108.479166666666700000
+          0.000000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_No_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTModeFin: TQRDBText
+        Left = 80
+        Top = 0
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          0.000000000000000000
+          171.979166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_ModeFin_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText1: TQRDBText
+        Left = 602
+        Top = 0
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1592.791666666667000000
+          0.000000000000000000
+          201.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_Gaspillage_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    IndexFieldNames = '_Ration_'
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFRation: TStringField
+      FieldName = '_Ration_'
+      Size = 25
+    end
+  end
+  object DSRelation: TDataSource
+    DataSet = CDSRapport
+    Left = 40
+    Top = 8
+  end
+  object CDSRegles: TClientDataSet
+    Aggregates = <>
+    IndexFieldNames = '_Ration_ ; _No_'
+    MasterFields = '_Ration_'
+    MasterSource = DSRelation
+    PacketRecords = 0
+    Params = <>
+    Left = 72
+    Top = 8
+    object SFIndex: TStringField
+      FieldName = '_Ration_'
+      Size = 25
+    end
+    object IFNo: TIntegerField
+      FieldName = '_No_'
+    end
+    object SFModeFin: TStringField
+      FieldName = '_ModeFin_'
+      Size = 30
+    end
+    object SFConso: TStringField
+      FieldName = '_Conso_'
+      Size = 60
+    end
+    object SFGaspillage: TStringField
+      DisplayWidth = 6
+      FieldName = '_Gaspillage_'
+      Size = 6
+    end
+  end
+end
Index: UFImpExp.pas
===================================================================
--- UFImpExp.pas	(révision 0)
+++ UFImpExp.pas	(révision 3)
@@ -0,0 +1,1518 @@
+unit UFImpExp ;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Dialogs, StdCtrls, Buttons, UVariables;
+
+type
+  TFImpExp = class(TForm)
+    LBMatiere: TListBox;
+    GBMatiere: TGroupBox;
+    GBAliment: TGroupBox;
+    LBAliment: TListBox;
+    GBFichier: TGroupBox;
+    LBFichier: TListBox;
+    SBExpMat: TSpeedButton;
+    SBImpMat: TSpeedButton;
+    SBExpAli: TSpeedButton;
+    SBImpAli: TSpeedButton;
+    EFichier: TEdit;
+    SBFichier: TSpeedButton;
+    SDFichier: TSaveDialog;
+    LTypeMat: TLabel;
+    CBTypeMat: TComboBox;
+    LTypeAli: TLabel;
+    CBTypeAli: TComboBox;
+    GBExpr: TGroupBox;
+    LFibres: TLabel;
+    LGal: TLabel;
+    LCompo: TLabel;
+    LAA: TLabel;
+    LAG: TLabel;
+    LMacro: TLabel;
+    LOligo: TLabel;
+    LTFibres: TLabel;
+    LTOligo: TLabel;
+    LTMacro: TLabel;
+    LTAG: TLabel;
+    LTAA: TLabel;
+    LdAA: TLabel;
+    LTCompo: TLabel;
+    LdCompo: TLabel;
+    LRap: TLabel;
+    LDig: TLabel;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormActivate(Sender: TObject);
+    procedure FormDeactivate(Sender: TObject);
+    procedure SBFichierClick(Sender: TObject);
+    procedure SBExpMatClick(Sender: TObject);
+    procedure SBImpMatClick(Sender: TObject);
+    procedure SBExpAliClick(Sender: TObject);
+    procedure SBImpAliClick(Sender: TObject);
+    procedure CBTypeMatChange(Sender: TObject);
+    procedure CBTypeAliChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    ModifMat, ModifAli: Boolean;
+    F: TextFile;
+    ListCSV: TList;
+    Separator: String;
+    procedure SaveMat;
+    procedure SaveAli;
+    function GetInteger(var I: Integer; var Ch: Char): Boolean;
+    function GetDouble(var D: Double; var Ch: Char): Boolean;
+    function GetString(var S: string; var Ch: Char): Boolean;
+    procedure FormatInToOut(const recIn: PRecCSV; var recOut: PRecCSV);
+    procedure FormatOutToIn(const recOut: PRecCSV; var recIn: PRecCSV);
+    procedure PutCSV(recIn: PRecCSV);
+  public
+    { D�clarations publiques }
+    procedure DisplayConfig;
+  end;
+
+var
+  FImpExp: TFImpExp;
+
+implementation
+
+uses
+  SysUtils, gnugettext, UStrings, UInit, UUtil, UFindRec, UFConfig;
+
+{$R *.dfm}
+
+{ TFImpExp }
+
+procedure TFImpExp.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 792 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 416 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  CBTypeMat.ItemIndex := 0;
+  CBTypeAli.ItemIndex := 0;
+end;
+
+procedure TFImpExp.FormShow (Sender : TObject) ;
+begin
+  ModifMat := FALSE ;
+  ModifAli := FALSE ;
+  ListCSV := TList.Create ;
+  Separator := ListSeparator;
+  // Ajustement du mode d'expression
+  FConfig := TFConfig.Create(Self); // Cr�ation de la configuration
+  DisplayConfig; // Affichage des libell�s
+  FConfig.Release; // Lib�ration de la configuration
+end ;
+
+procedure TFImpExp.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+var
+  i: Integer;
+  recIn: PRecCSV;
+begin
+  if ModifMat then SaveMat ;
+  if ModifAli then SaveAli ;
+  if ListCSV.Count > 0
+  then
+    for i := 0 to ListCSV.Count - 1 do
+    begin
+      recIn := ListCSV[i];
+      Dispose(recIn);
+    end;
+  ListCSV.Free;
+  Action := caFree ;
+  NumWinImpExp := -1 ;
+end ;
+
+procedure TFImpExp.FormActivate (Sender : TObject) ;
+begin
+  CBTypeMatChange (nil) ;
+  CBTypeAliChange (nil) ;
+end ;
+
+procedure TFImpExp.FormDeactivate (Sender : TObject) ;
+begin
+  if ModifMat then SaveMat ;
+  if ModifAli then SaveAli ;
+end ;
+
+procedure TFImpExp.SaveMat ;
+begin
+  ModifMat := FALSE ;
+  if MessageDlg (MsgSaveMat, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+  then
+    SaveMatiere
+  else
+    LoadMatiere ;
+end ;
+
+procedure TFImpExp.SaveAli ;
+begin
+  ModifAli := FALSE ;
+  if MessageDlg (MsgSaveAli, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+  then
+    SaveAliment
+  else
+    LoadAliment ;
+end ;
+
+function TFImpExp.GetInteger (var I : Integer ; var Ch : Char) : Boolean ;
+var
+  S : string ;
+  Fin : boolean ;
+begin
+  S := '' ;
+  Read (F, Ch) ;
+  Fin := (Ch = Separator) or (Ch = Chr (13)) or (Ch = Chr (26)) ;
+  while not Fin do
+  begin
+    S := S + Ch ;
+    Read (F, Ch) ;
+    Fin := (Ch = Separator) or (Ch = Chr (13)) or (Ch = Chr (26)) ;
+  end ;
+  S := Trim (S) ;
+  result := TRUE ;
+  if Length (S) = 0
+  then
+    I := 0
+  else
+    try
+      I := StrToInt (S) ;
+    except
+      result := FALSE ;
+    end ;
+end ;
+
+function TFImpExp.GetDouble (var D : Double ; var Ch : Char) : Boolean ;
+var
+  S : string ;
+  Fin : boolean ;
+begin
+  S := '' ;
+  Read (F, Ch) ;
+  Fin := (Ch = Separator) or (Ch = Chr (13)) or (Ch = Chr (26)) ;
+  while not Fin do
+  begin
+    S := S + Ch ;
+    Read (F, Ch) ;
+    Fin := (Ch = Separator) or (Ch = Chr (13)) or (Ch = Chr (26)) ;
+  end ;
+  S := Trim (S) ;
+  result := TRUE ;
+  if Length (S) = 0
+  then
+    D := 0
+  else
+    try
+      D := StrToFloat (S) ;
+    except
+      result := FALSE ;
+    end ;
+end ;
+
+function TFImpExp.GetString (var S : string ; var Ch : Char) : Boolean ;
+var
+  Fin, Quoted : boolean ;
+begin
+  S := '' ;
+  Read (F, Ch) ;
+  Fin := (Ch = Separator) or (Ch = Chr (13)) or (Ch = Chr (26)) ;
+  Quoted := (Ch = '"') ;
+  if Quoted
+  then
+  begin
+    Read (F, Ch) ;
+    Fin := (Ch = Chr (26)) ;
+    while not Fin do
+    begin
+      if (Ch = '"')
+      then
+      begin
+        Read (F, Ch) ;
+        Fin := (Ch <> '"') ;
+        Quoted := not ((Ch = Separator) or (Ch = Chr (13)) or (Ch = Chr (26))) ;
+      end ;
+      if not Fin
+      then
+      begin
+        S := S + Ch ;
+        Read (F, Ch) ;
+        Fin := (Ch = Chr (26)) ;
+      end ;
+    end ;
+  end
+  else
+    while not Fin do
+    begin
+      S := S + Ch ;
+      Read (F, Ch) ;
+      Fin := (Ch = Separator) or (Ch = Chr (13)) or (Ch = Chr (26)) ;
+    end ;
+  result := not Quoted ;
+end ;
+
+procedure TFImpExp.FormatInToOut(const recIn: PRecCSV; var recOut: PRecCSV);
+var
+  i: Integer;
+  RapMS, RapTcompo, RapTAA, RapTAG, RapTMacro, RapTOligo, RapTFibres, RapDCompo, RapDAA: Double;
+begin
+  recOut.Nom := recIn.Nom;
+  recOut.Memo := recIn.Memo;
+  recOut.Typ := recIn.Typ;
+  if ConfTCompo = 0
+  then // g/kg
+    recOut.CC.MS := recIn.CC.MS
+  else // %
+    recOut.CC.MS := recIn.CC.MS / 1000 * 100;
+  if ConfRap = 0
+  then // sur frais
+    RapMS := recIn.CC.MS / 1000
+  else // sur mati�re s�che
+    RapMS := 1;
+  if ConfTCompo = 0
+  then // g/kg
+    RapTCompo := RapMS
+  else // %
+    RapTCompo := 100 / 1000 * RapMS;
+  recOut.CC.MM := recIn.CC.MM * RapTCompo;
+  recOut.CC.MO := recIn.CC.MO * RapTCompo;
+  recOut.CC.Lip := recIn.CC.Lip * RapTCompo;
+  recOut.CC.MAT := recIn.CC.MAT * RapTCompo;
+  recOut.CC.Amidon := recIn.CC.Amidon * RapTCompo;
+  recOut.CC.Sucres := recIn.CC.Sucres * RapTCompo;
+  if ConfDig = 0
+  then // CUD
+    RapDCompo := 1
+  else // Teneur digestible
+    if ConfdCompo = 0
+    then // g/kg
+      RapDCompo := 1 / 100 * RapMS
+    else // %
+      RapDCompo := 1 / 1000 * RapMS;
+  if ConfDig = 0
+  then // CUD
+  begin
+    recOut.CC.dMO_T := recIn.CC.dMO_T * RapDCompo;
+    recOut.CC.dMO_C := recIn.CC.dMO_C * RapDCompo;
+    recOut.CC.dLip_T := recIn.CC.dLip_T * RapDCompo;
+    recOut.CC.dLip_C := recIn.CC.dLip_C * RapDCompo;
+    recOut.CC.dMAT_T := recIn.CC.dMAT_T * RapDCompo;
+    recOut.CC.dMAT_C := recIn.CC.dMAT_C * RapDCompo;
+  end
+  else // Teneur digestible
+  begin
+    recOut.CC.dMO_T := recIn.CC.dMO_T * recIn.CC.MO * RapDCompo;
+    recOut.CC.dMO_C := recIn.CC.dMO_C * recIn.CC.MO * RapDCompo;
+    recOut.CC.dLip_T := recIn.CC.dLip_T * recIn.CC.Lip * RapDCompo;
+    recOut.CC.dLip_C := recIn.CC.dLip_C * recIn.CC.Lip * RapDCompo;
+    recOut.CC.dMAT_T := recIn.CC.dMAT_T * recIn.CC.MAT * RapDCompo;
+    recOut.CC.dMAT_C := recIn.CC.dMAT_C * recIn.CC.MAT * RapDCompo;
+  end;
+  recOut.CC.EB := recIn.CC.EB * RapMS;
+  recOut.CC.ED_T := recIn.CC.ED_T * RapMS;
+  recOut.CC.ED_C := recIn.CC.ED_C * RapMS;
+  recOut.CC.EM_T := recIn.CC.EM_T * RapMS;
+  recOut.CC.EM_C := recIn.CC.EM_C * RapMS;
+  recOut.CC.EN_T := recIn.CC.EN_T * RapMS;
+  recOut.CC.EN_C := recIn.CC.EN_C * RapMS;
+  if ConfTMacro = 0
+  then // g/kg
+    RapTMacro := RapMS
+  else // %
+    RapTMacro := 100 / 1000 * RapMS;
+  recOut.CC.Ca := recIn.CC.Ca * RapTMacro;
+  recOut.CC.P := recIn.CC.P * RapTMacro;
+  recOut.CC.Na := recIn.CC.Na * RapTMacro;
+  recOut.CC.K := recIn.CC.K * RapTMacro;
+  recOut.CC.Mg := recIn.CC.Mg * RapTMacro;
+  recOut.CC.Cl := recIn.CC.Cl * RapTMacro;
+  recOut.CC.S := recIn.CC.S * RapTMacro;
+  if ConfTOligo = 0
+  then // mg/kg
+    RapTOligo := RapMS
+  else // %
+    RapTOligo := 100 / 1000000 * RapMS;
+  recOut.CC.Cu := recIn.CC.Cu * RapTOligo;
+  recOut.CC.Zn := recIn.CC.Zn * RapTOligo;
+  recOut.CC.Mn := recIn.CC.Mn * RapTOligo;
+  recOut.CC.Fe := recIn.CC.Fe * RapTOligo;
+  recOut.CC.Se := recIn.CC.Se * RapTOligo;
+  recOut.CC.Co := recIn.CC.Co * RapTOligo;
+  recOut.CC.Mb := recIn.CC.Mb * RapTOligo;
+  recOut.CC.I := recIn.CC.I * RapTOligo;
+  recOut.CC.PdigG := recIn.CC.PdigG * RapMS;
+  recOut.CC.PdigF := recIn.CC.PdigF * RapMS;
+  recOut.CC.Phytase := recIn.CC.Phytase;
+  recOut.CC.ActPhytE := recIn.CC.ActPhytE * RapMS;
+  recOut.CC.ActPhytM := recIn.CC.ActPhytM * RapMS;
+  recOut.CC.AGsLip := recIn.CC.AGsLip;
+  case ConfTAG of
+    0 : // g/kg
+      RapTAG := 1000 / 100 * recIn.CC.AGsLip / 100 * recIn.CC.Lip / 1000 * RapMS;
+    1 : // %
+      RapTAG := recIn.CC.AGsLip / 100 * recIn.CC.Lip / 1000 * RapMS;
+    else // % acides gras
+      RapTAG := 1;
+  end;
+  recOut.CC.C6C8C10 := recIn.CC.C6C8C10 * RapTAG;
+  recOut.CC.C12_0 := recIn.CC.C12_0 * RapTAG;
+  recOut.CC.C14_0 := recIn.CC.C14_0 * RapTAG;
+  recOut.CC.C16_0 := recIn.CC.C16_0 * RapTAG;
+  recOut.CC.C16_1 := recIn.CC.C16_1 * RapTAG;
+  recOut.CC.C18_0 := recIn.CC.C18_0 * RapTAG;
+  recOut.CC.C18_1 := recIn.CC.C18_1 * RapTAG;
+  recOut.CC.C18_2 := recIn.CC.C18_2 * RapTAG;
+  recOut.CC.C18_3 := recIn.CC.C18_3 * RapTAG;
+  recOut.CC.C18_4 := recIn.CC.C18_4 * RapTAG;
+  recOut.CC.C20_0 := recIn.CC.C20_0 * RapTAG;
+  recOut.CC.C20_1 := recIn.CC.C20_1 * RapTAG;
+  recOut.CC.C20_4 := recIn.CC.C20_4 * RapTAG;
+  recOut.CC.C20_5 := recIn.CC.C20_5 * RapTAG;
+  recOut.CC.C22_0 := recIn.CC.C22_0 * RapTAG;
+  recOut.CC.C22_1 := recIn.CC.C22_1 * RapTAG;
+  recOut.CC.C22_5 := recIn.CC.C22_5 * RapTAG;
+  recOut.CC.C22_6 := recIn.CC.C22_6 * RapTAG;
+  recOut.CC.C24_0 := recIn.CC.C24_0 * RapTAG;
+  if ConfTFibres = 0
+  then // g/kg
+    RapTFibres := RapMS
+  else // %
+    RapTFibres := 100 / 1000 * RapMS;
+  recOut.CC.CB := recIn.CC.CB * RapTFibres;
+  if ConfDig = 0
+  then // CUD
+  begin
+    recOut.CC.dCB_T := recIn.CC.dCB_T * RapDCompo;
+    recOut.CC.dCB_C := recIn.CC.dCB_C * RapDCompo;
+  end
+  else // Teneur digestible
+  begin
+    recOut.CC.dCB_T := recIn.CC.dCB_T * recIn.CC.CB * RapDCompo;
+    recOut.CC.dCB_C := recIn.CC.dCB_C * recIn.CC.CB * RapDCompo;
+  end;
+  recOut.CC.Residu := recIn.CC.Residu * RapTCompo;
+  if ConfDig = 0
+  then // CUD
+  begin
+    recOut.CC.dResidu_T := recIn.CC.dResidu_T * RapDCompo;
+    recOut.CC.dResidu_C := recIn.CC.dResidu_C * RapDCompo;
+  end
+  else // Teneur digestible
+  begin
+    recOut.CC.dResidu_T := recIn.CC.dResidu_T * recIn.CC.Residu * RapDCompo;
+    recOut.CC.dResidu_C := recIn.CC.dResidu_C * recIn.CC.Residu * RapDCompo;
+  end;
+  recOut.CC.NDF := recIn.CC.NDF * RapTFibres;
+  recOut.CC.ADF := recIn.CC.ADF * RapTFibres;
+  recOut.CC.ADL := recIn.CC.ADL * RapTFibres;
+  recOut.CC.Parois := recIn.CC.Parois * RapTFibres;
+  case ConfTAA of
+    1 : // %
+      RapTAA := 100 / 1000 * RapMS;
+    2 : // % MAT
+      if recIn.CC.MAT = 0
+      then
+        RapTAA := 0
+      else
+        RapTAA := 100 / recIn.CC.MAT;
+    else // g/kg
+      RapTAA := RapMS;
+  end;
+  for i := 1 to 12 do
+    recOut.AAtotal[i] := recIn.AAtotal[i] * RapTAA;
+  if ConfDig = 0
+  then // CUD
+    RapDAA := 1
+  else // Teneur digestible
+    if ConfdAA = 0
+    then // g/kg
+      RapDAA := 1 / 100 * RapMS
+    else // %
+      RapDAA := 1 / 1000 * RapMS;
+  for i := 0 to 12 do
+    if ConfDig = 0
+    then // CUD
+      recOut.CUDAA[i] := recIn.CUDAA[i] * RapDAA
+    else // Teneur digestible
+      recOut.CUDAA[i] := recIn.CUDAA[i] * recIn.AAtotal[i] * RapDAA;
+end;
+
+procedure TFImpExp.FormatOutToIn(const recOut: PRecCSV; var recIn: PRecCSV);
+var
+  i: Integer;
+  RapMS, RapTcompo, RapTAA, RapTAG, RapTMacro, RapTOligo, RapTFibres, RapDCompo, RapDAA: Double;
+begin
+  recIn.Nom := recOut.Nom;
+  recIn.Memo := recOut.Memo;
+  recIn.Typ := recOut.Typ;
+  if ConfTCompo = 0
+  then // g/kg
+    recIn.CC.MS := recOut.CC.MS
+  else // %
+    recIn.CC.MS := recOut.CC.MS / 100 * 1000;
+  if ConfRap = 0
+  then // sur frais
+    if recIn.CC.MS = 0
+    then
+      RapMS := 0
+    else
+      RapMS := 1000 / recIn.CC.MS
+  else // sur mati�re s�che
+    RapMS := 1;
+  if ConfTCompo = 0
+  then // g/kg
+    RapTCompo := RapMS
+  else // %
+    RapTCompo := 1000 / 100 * RapMS;
+  recIn.CC.MM := recOut.CC.MM * RapTCompo;
+  recIn.CC.MO := recOut.CC.MO * RapTCompo;
+  recIn.CC.Lip := recOut.CC.Lip * RapTCompo;
+  recIn.CC.MAT := recOut.CC.MAT * RapTCompo;
+  recIn.CC.Amidon := recOut.CC.Amidon * RapTCompo;
+  recIn.CC.Sucres := recOut.CC.Sucres * RapTCompo;
+  if ConfDig = 0
+  then // CUD
+    RapDCompo := 1
+  else // Teneur digestible
+    if ConfdCompo = 0
+    then // g/kg
+      RapDCompo := 100 * RapMS
+    else // %
+      RapDCompo := 1000 * RapMS;
+  if ConfDig = 0
+  then // CUD
+  begin
+    recIn.CC.dMO_T := recOut.CC.dMO_T * RapDCompo;
+    recIn.CC.dMO_C := recOut.CC.dMO_C * RapDCompo;
+    recIn.CC.dLip_T := recOut.CC.dLip_T * RapDCompo;
+    recIn.CC.dLip_C := recOut.CC.dLip_C * RapDCompo;
+    recIn.CC.dMAT_T := recOut.CC.dMAT_T * RapDCompo;
+    recIn.CC.dMAT_C := recOut.CC.dMAT_C * RapDCompo;
+  end
+  else // Teneur digestible
+  begin
+    if recIn.CC.MO = 0
+    then
+    begin
+      recIn.CC.dMO_T := 0;
+      recIn.CC.dMO_C := 0;
+    end
+    else
+    begin
+      recIn.CC.dMO_T := recOut.CC.dMO_T / recIn.CC.MO * RapDCompo;
+      recIn.CC.dMO_C := recOut.CC.dMO_C / recIn.CC.MO * RapDCompo;
+    end;
+    if recIn.CC.Lip = 0
+    then
+    begin
+      recIn.CC.dLip_T := 0;
+      recIn.CC.dLip_C := 0;
+    end
+    else
+    begin
+      recIn.CC.dLip_T := recOut.CC.dLip_T / recIn.CC.Lip * RapDCompo;
+      recIn.CC.dLip_C := recOut.CC.dLip_C / recIn.CC.Lip * RapDCompo;
+    end;
+    if recIn.CC.MAT = 0
+    then
+    begin
+      recIn.CC.dMAT_T := 0;
+      recIn.CC.dMAT_C := 0;
+    end
+    else
+    begin
+      recIn.CC.dMAT_T := recOut.CC.dMAT_T / recIn.CC.MAT * RapDCompo;
+      recIn.CC.dMAT_C := recOut.CC.dMAT_C / recIn.CC.MAT * RapDCompo;
+    end;
+  end;
+  recIn.CC.EB := recOut.CC.EB * RapMS;
+  recIn.CC.ED_T := recOut.CC.ED_T * RapMS;
+  recIn.CC.ED_C := recOut.CC.ED_C * RapMS;
+  recIn.CC.EM_T := recOut.CC.EM_T * RapMS;
+  recIn.CC.EM_C := recOut.CC.EM_C * RapMS;
+  recIn.CC.EN_T := recOut.CC.EN_T * RapMS;
+  recIn.CC.EN_C := recOut.CC.EN_C * RapMS;
+  if ConfTMacro = 0
+  then // g/kg
+    RapTMacro := RapMS
+  else // %
+    RapTMacro := 1000 / 100 * RapMS;
+  recIn.CC.Ca := recOut.CC.Ca * RapTMacro;
+  recIn.CC.P := recOut.CC.P * RapTMacro;
+  recIn.CC.Na := recOut.CC.Na * RapTMacro;
+  recIn.CC.K := recOut.CC.K * RapTMacro;
+  recIn.CC.Mg := recOut.CC.Mg * RapTMacro;
+  recIn.CC.Cl := recOut.CC.Cl * RapTMacro;
+  recIn.CC.S := recOut.CC.S * RapTMacro;
+  if ConfTOligo = 0
+  then // mg/kg
+    RapTOligo := RapMS
+  else // %
+    RapTOligo := 1000000 / 100 * RapMS;
+  recIn.CC.Cu := recOut.CC.Cu * RapTOligo;
+  recIn.CC.Zn := recOut.CC.Zn * RapTOligo;
+  recIn.CC.Mn := recOut.CC.Mn * RapTOligo;
+  recIn.CC.Fe := recOut.CC.Fe * RapTOligo;
+  recIn.CC.Se := recOut.CC.Se * RapTOligo;
+  recIn.CC.Co := recOut.CC.Co * RapTOligo;
+  recIn.CC.Mb := recOut.CC.Mb * RapTOligo;
+  recIn.CC.I := recOut.CC.I * RapTOligo;
+  recIn.CC.PdigG := recOut.CC.PdigG * RapMS;
+  recIn.CC.PdigF := recOut.CC.PdigF * RapMS;
+  recIn.CC.Phytase := recOut.CC.Phytase;
+  recIn.CC.ActPhytE := recOut.CC.ActPhytE * RapMS;
+  recIn.CC.ActPhytM := recOut.CC.ActPhytM * RapMS;
+  recIn.CC.AGsLip := recOut.CC.AGsLip;
+  case ConfTAG of
+    0 : // g/kg
+      if (recIn.CC.AGsLip = 0) or (recIn.CC.Lip = 0)
+      then
+        RapTAG := 0
+      else
+        RapTAG := 100 / 1000 / recIn.CC.AGsLip * 100 / recIn.CC.Lip * 1000 * RapMS;
+    1 : // %
+      if (recIn.CC.AGsLip = 0) or (recIn.CC.Lip = 0)
+      then
+        RapTAG := 0
+      else
+        RapTAG := 1 / recIn.CC.AGsLip * 100 / recIn.CC.Lip * 1000 * RapMS;
+    else // % acides gras
+      RapTAG := 1;
+  end;
+  recIn.CC.C6C8C10 := recOut.CC.C6C8C10 * RapTAG;
+  recIn.CC.C12_0 := recOut.CC.C12_0 * RapTAG;
+  recIn.CC.C14_0 := recOut.CC.C14_0 * RapTAG;
+  recIn.CC.C16_0 := recOut.CC.C16_0 * RapTAG;
+  recIn.CC.C16_1 := recOut.CC.C16_1 * RapTAG;
+  recIn.CC.C18_0 := recOut.CC.C18_0 * RapTAG;
+  recIn.CC.C18_1 := recOut.CC.C18_1 * RapTAG;
+  recIn.CC.C18_2 := recOut.CC.C18_2 * RapTAG;
+  recIn.CC.C18_3 := recOut.CC.C18_3 * RapTAG;
+  recIn.CC.C18_4 := recOut.CC.C18_4 * RapTAG;
+  recIn.CC.C20_0 := recOut.CC.C20_0 * RapTAG;
+  recIn.CC.C20_1 := recOut.CC.C20_1 * RapTAG;
+  recIn.CC.C20_4 := recOut.CC.C20_4 * RapTAG;
+  recIn.CC.C20_5 := recOut.CC.C20_5 * RapTAG;
+  recIn.CC.C22_0 := recOut.CC.C22_0 * RapTAG;
+  recIn.CC.C22_1 := recOut.CC.C22_1 * RapTAG;
+  recIn.CC.C22_5 := recOut.CC.C22_5 * RapTAG;
+  recIn.CC.C22_6 := recOut.CC.C22_6 * RapTAG;
+  recIn.CC.C24_0 := recOut.CC.C24_0 * RapTAG;
+  if ConfTFibres = 0
+  then // g/kg
+    RapTFibres := RapMS
+  else // %
+    RapTFibres := 1000 / 100 * RapMS;
+  recIn.CC.CB := recOut.CC.CB * RapTFibres;
+  if ConfDig = 0
+  then // CUD
+  begin
+    recIn.CC.dCB_T := recOut.CC.dCB_T * RapDCompo;
+    recIn.CC.dCB_C := recOut.CC.dCB_C * RapDCompo;
+  end
+  else // Teneur digestible
+    if recIn.CC.CB = 0
+    then
+    begin
+      recIn.CC.dCB_T := 0;
+      recIn.CC.dCB_C := 0;
+    end
+    else
+    begin
+      recIn.CC.dCB_T := recOut.CC.dCB_T / recIn.CC.CB * RapDCompo;
+      recIn.CC.dCB_C := recOut.CC.dCB_C / recIn.CC.CB * RapDCompo;
+    end;
+  recIn.CC.Residu := recOut.CC.Residu * RapTCompo;
+  if ConfDig = 0
+  then // CUD
+  begin
+    recIn.CC.dResidu_T := recOut.CC.dResidu_T * RapDCompo;
+    recIn.CC.dResidu_C := recOut.CC.dResidu_C * RapDCompo;
+  end
+  else // Teneur digestible
+    if recIn.CC.Residu = 0
+    then
+    begin
+      recIn.CC.dResidu_T := 0;
+      recIn.CC.dResidu_C := 0;
+    end
+    else
+    begin
+      recIn.CC.dResidu_T := recOut.CC.dResidu_T / recIn.CC.Residu * RapDCompo;
+      recIn.CC.dResidu_C := recOut.CC.dResidu_C / recIn.CC.Residu * RapDCompo;
+    end;
+  recIn.CC.NDF := recOut.CC.NDF * RapTFibres;
+  recIn.CC.ADF := recOut.CC.ADF * RapTFibres;
+  recIn.CC.ADL := recOut.CC.ADL * RapTFibres;
+  recIn.CC.Parois := recOut.CC.Parois * RapTFibres;
+  case ConfTAA of
+    1 : // %
+      RapTAA := 1000 / 100 * RapMS;
+    2 : // % MAT
+      RapTAA := recIn.CC.MAT / 100;
+    else // g/kg
+      RapTAA := RapMS;
+  end;
+  recIn.AAtotal[0] := recIn.CC.MAT;
+  for i := 1 to 12 do
+    recIn.AAtotal[i] := recOut.AAtotal[i] * RapTAA;
+  if ConfDig = 0
+  then // CUD
+    RapDAA := 1
+  else // Teneur digestible
+    if ConfdAA = 0
+    then // g/kg
+      RapDAA := 100 * RapMS
+    else // %
+      RapDAA := 1000 * RapMS;
+  for i := 0 to 12 do
+    if ConfDig = 0
+    then // CUD
+      recIn.CUDAA[i] := recOut.CUDAA[i] * RapDAA
+    else // Teneur digestible
+      if recIn.AAtotal[i] = 0
+      then
+        recIn.CUDAA[i] := 0
+      else
+        recIn.CUDAA[i] := recOut.CUDAA[i] / recIn.AAtotal[i] * RapDAA;
+end;
+
+procedure TFImpExp.PutCSV(recIn: PRecCSV);
+var
+  i: Integer;
+  recOut: PRecCSV;
+begin
+  New(recOut);
+  FormatInToOut(recIn, recOut);
+  Append(f);
+  with recOut^ do
+  begin
+    Write(f, AnsiQuotedStr(Nom, '"'));
+    Write(f, Separator, AnsiQuotedStr(Memo, '"'));
+    Write(f, Separator, Format('%d', [Typ]));
+    // Composition �l�mentaire
+    if ConfTCompo = 0
+    then // g/kg
+    begin
+      Write(f, Separator, Format('%1.1f', [CC.MS]));
+      Write(f, Separator, Format('%1.1f', [CC.MM]));
+      Write(f, Separator, Format('%1.1f', [CC.MO]));
+      Write(f, Separator, Format('%1.1f', [CC.Lip]));
+      Write(f, Separator, Format('%1.1f', [CC.MAT]));
+      Write(f, Separator, Format('%1.1f', [CC.Amidon]));
+      Write(f, Separator, Format('%1.1f', [CC.Sucres]));
+    end
+    else // %
+    begin
+      Write(f, Separator, Format('%1.2f', [CC.MS]));
+      Write(f, Separator, Format('%1.2f', [CC.MM]));
+      Write(f, Separator, Format('%1.2f', [CC.MO]));
+      Write(f, Separator, Format('%1.2f', [CC.Lip]));
+      Write(f, Separator, Format('%1.2f', [CC.MAT]));
+      Write(f, Separator, Format('%1.2f', [CC.Amidon]));
+      Write(f, Separator, Format('%1.2f', [CC.Sucres]));
+    end;
+    if (ConfDig = 0)
+    then // CUD
+    begin
+      Write(f, Separator, Format('%1.1f', [CC.dMO_T]));
+      Write(f, Separator, Format('%1.1f', [CC.dMO_C]));
+      Write(f, Separator, Format('%1.1f', [CC.dLip_T]));
+      Write(f, Separator, Format('%1.1f', [CC.dLip_C]));
+      Write(f, Separator, Format('%1.1f', [CC.dMAT_T]));
+      Write(f, Separator, Format('%1.1f', [CC.dMAT_C]));
+    end
+    else // Teneur digestible
+      if ConfdCompo = 0
+      then // g/kg
+      begin
+        Write(f, Separator, Format('%1.1f', [CC.dMO_T]));
+        Write(f, Separator, Format('%1.1f', [CC.dMO_C]));
+        Write(f, Separator, Format('%1.1f', [CC.dLip_T]));
+        Write(f, Separator, Format('%1.1f', [CC.dLip_C]));
+        Write(f, Separator, Format('%1.1f', [CC.dMAT_T]));
+        Write(f, Separator, Format('%1.1f', [CC.dMAT_C]));
+      end
+      else // %
+      begin
+        Write(f, Separator, Format('%1.2f', [CC.dMO_T]));
+        Write(f, Separator, Format('%1.2f', [CC.dMO_C]));
+        Write(f, Separator, Format('%1.2f', [CC.dLip_T]));
+        Write(f, Separator, Format('%1.2f', [CC.dLip_C]));
+        Write(f, Separator, Format('%1.2f', [CC.dMAT_T]));
+        Write(f, Separator, Format('%1.2f', [CC.dMAT_C]));
+      end;
+    Write(f, Separator, Format('%1.2f', [CC.EB]));
+    Write(f, Separator, Format('%1.2f', [CC.ED_T]));
+    Write(f, Separator, Format('%1.2f', [CC.ED_C]));
+    Write(f, Separator, Format('%1.2f', [CC.EM_T]));
+    Write(f, Separator, Format('%1.2f', [CC.EM_C]));
+    Write(f, Separator, Format('%1.2f', [CC.EN_T]));
+    Write(f, Separator, Format('%1.2f', [CC.EN_C]));
+    // Min�raux
+    if ConfTMacro = 0
+    then // g/kg
+    begin
+      Write(f, Separator, Format('%1.2f', [CC.Ca]));
+      Write(f, Separator, Format('%1.2f', [CC.P]));
+      Write(f, Separator, Format('%1.2f', [CC.Na]));
+      Write(f, Separator, Format('%1.2f', [CC.K]));
+      Write(f, Separator, Format('%1.2f', [CC.Mg]));
+      Write(f, Separator, Format('%1.2f', [CC.Cl]));
+      Write(f, Separator, Format('%1.2f', [CC.S]));
+    end
+    else // %
+    begin
+      Write(f, Separator, Format('%1.3f', [CC.Ca]));
+      Write(f, Separator, Format('%1.3f', [CC.P]));
+      Write(f, Separator, Format('%1.3f', [CC.Na]));
+      Write(f, Separator, Format('%1.3f', [CC.K]));
+      Write(f, Separator, Format('%1.3f', [CC.Mg]));
+      Write(f, Separator, Format('%1.3f', [CC.Cl]));
+      Write(f, Separator, Format('%1.3f', [CC.S]));
+    end;
+    if ConfTOligo = 0
+    then // mg/kg
+    begin
+      Write(f, Separator, Format('%1.2f', [CC.Cu]));
+      Write(f, Separator, Format('%1.2f', [CC.Zn]));
+      Write(f, Separator, Format('%1.2f', [CC.Mn]));
+      Write(f, Separator, Format('%1.2f', [CC.Fe]));
+      Write(f, Separator, Format('%1.2f', [CC.Se]));
+      Write(f, Separator, Format('%1.2f', [CC.Co]));
+      Write(f, Separator, Format('%1.2f', [CC.Mb]));
+      Write(f, Separator, Format('%1.2f', [CC.I]));
+    end
+    else // %
+    begin
+      Write(f, Separator, Format('%1.6f', [CC.Cu]));
+      Write(f, Separator, Format('%1.6f', [CC.Zn]));
+      Write(f, Separator, Format('%1.6f', [CC.Mn]));
+      Write(f, Separator, Format('%1.6f', [CC.Fe]));
+      Write(f, Separator, Format('%1.6f', [CC.Se]));
+      Write(f, Separator, Format('%1.6f', [CC.Co]));
+      Write(f, Separator, Format('%1.6f', [CC.Mb]));
+      Write(f, Separator, Format('%1.6f', [CC.I]));
+    end;
+    Write(f, Separator, Format('%1.2f', [CC.PdigG]));
+    Write(f, Separator, Format('%1.2f', [CC.PdigF]));
+    Write(f, Separator, Format('%1.1f', [CC.Phytase]));
+    Write(f, Separator, Format('%1.0f', [CC.ActPhytE]));
+    Write(f, Separator, Format('%1.0f', [CC.ActPhytM]));
+    // Acides gras
+    case ConfTAG of
+      0 : // g/kg
+      begin
+        Write(f, Separator, Format('%1.2f', [CC.C6C8C10]));
+        Write(f, Separator, Format('%1.2f', [CC.C12_0]));
+        Write(f, Separator, Format('%1.2f', [CC.C14_0]));
+        Write(f, Separator, Format('%1.2f', [CC.C16_0]));
+        Write(f, Separator, Format('%1.2f', [CC.C16_1]));
+        Write(f, Separator, Format('%1.2f', [CC.C18_0]));
+        Write(f, Separator, Format('%1.2f', [CC.C18_1]));
+        Write(f, Separator, Format('%1.2f', [CC.C18_2]));
+        Write(f, Separator, Format('%1.2f', [CC.C18_3]));
+        Write(f, Separator, Format('%1.2f', [CC.C18_4]));
+        Write(f, Separator, Format('%1.2f', [CC.C20_0]));
+        Write(f, Separator, Format('%1.2f', [CC.C20_1]));
+        Write(f, Separator, Format('%1.2f', [CC.C20_4]));
+        Write(f, Separator, Format('%1.2f', [CC.C20_5]));
+        Write(f, Separator, Format('%1.2f', [CC.C22_0]));
+        Write(f, Separator, Format('%1.2f', [CC.C22_1]));
+        Write(f, Separator, Format('%1.2f', [CC.C22_5]));
+        Write(f, Separator, Format('%1.2f', [CC.C22_6]));
+        Write(f, Separator, Format('%1.2f', [CC.C24_0]));
+      end;
+      1 : // %
+      begin
+        Write(f, Separator, Format('%1.3f', [CC.C6C8C10]));
+        Write(f, Separator, Format('%1.3f', [CC.C12_0]));
+        Write(f, Separator, Format('%1.3f', [CC.C14_0]));
+        Write(f, Separator, Format('%1.3f', [CC.C16_0]));
+        Write(f, Separator, Format('%1.3f', [CC.C16_1]));
+        Write(f, Separator, Format('%1.3f', [CC.C18_0]));
+        Write(f, Separator, Format('%1.3f', [CC.C18_1]));
+        Write(f, Separator, Format('%1.3f', [CC.C18_2]));
+        Write(f, Separator, Format('%1.3f', [CC.C18_3]));
+        Write(f, Separator, Format('%1.3f', [CC.C18_4]));
+        Write(f, Separator, Format('%1.3f', [CC.C20_0]));
+        Write(f, Separator, Format('%1.3f', [CC.C20_1]));
+        Write(f, Separator, Format('%1.3f', [CC.C20_4]));
+        Write(f, Separator, Format('%1.3f', [CC.C20_5]));
+        Write(f, Separator, Format('%1.3f', [CC.C22_0]));
+        Write(f, Separator, Format('%1.3f', [CC.C22_1]));
+        Write(f, Separator, Format('%1.3f', [CC.C22_5]));
+        Write(f, Separator, Format('%1.3f', [CC.C22_6]));
+        Write(f, Separator, Format('%1.3f', [CC.C24_0]));
+      end
+      else // % acides gras
+      begin
+        Write(f, Separator, Format('%1.1f', [CC.C6C8C10]));
+        Write(f, Separator, Format('%1.1f', [CC.C12_0]));
+        Write(f, Separator, Format('%1.1f', [CC.C14_0]));
+        Write(f, Separator, Format('%1.1f', [CC.C16_0]));
+        Write(f, Separator, Format('%1.1f', [CC.C16_1]));
+        Write(f, Separator, Format('%1.1f', [CC.C18_0]));
+        Write(f, Separator, Format('%1.1f', [CC.C18_1]));
+        Write(f, Separator, Format('%1.1f', [CC.C18_2]));
+        Write(f, Separator, Format('%1.1f', [CC.C18_3]));
+        Write(f, Separator, Format('%1.1f', [CC.C18_4]));
+        Write(f, Separator, Format('%1.1f', [CC.C20_0]));
+        Write(f, Separator, Format('%1.1f', [CC.C20_1]));
+        Write(f, Separator, Format('%1.1f', [CC.C20_4]));
+        Write(f, Separator, Format('%1.1f', [CC.C20_5]));
+        Write(f, Separator, Format('%1.1f', [CC.C22_0]));
+        Write(f, Separator, Format('%1.1f', [CC.C22_1]));
+        Write(f, Separator, Format('%1.1f', [CC.C22_5]));
+        Write(f, Separator, Format('%1.1f', [CC.C22_6]));
+        Write(f, Separator, Format('%1.1f', [CC.C24_0]));
+      end;
+    end ;
+    Write(f, Separator, Format('%1.1f', [CC.AGsLip])) ;
+    // Fibres
+    if ConfTFibres = 0
+    then // g/kg
+      Write(f, Separator, Format('%1.1f', [CC.CB]))
+    else // %
+      Write(f, Separator, Format('%1.2f', [CC.CB]));
+    if (ConfDig = 0)
+    then // CUD
+    begin
+      Write(f, Separator, Format('%1.1f', [CC.dCB_T]));
+      Write(f, Separator, Format('%1.1f', [CC.dCB_C]));
+    end
+    else // Teneur digestible
+      if ConfdCompo = 0
+      then // g/kg
+      begin
+        Write(f, Separator, Format('%1.1f', [CC.dCB_T]));
+        Write(f, Separator, Format('%1.1f', [CC.dCB_C]));
+      end
+      else // %
+      begin
+        Write(f, Separator, Format('%1.2f', [CC.dCB_T]));
+        Write(f, Separator, Format('%1.2f', [CC.dCB_C]));
+      end;
+    if ConfTCompo = 0
+    then // g/kg
+      Write(f, Separator, Format('%1.1f', [CC.Residu]))
+    else // %
+      Write(f, Separator, Format('%1.2f', [CC.Residu]));
+    if (ConfDig = 0)
+    then // CUD
+    begin
+      Write(f, Separator, Format('%1.1f', [CC.dResidu_T]));
+      Write(f, Separator, Format('%1.1f', [CC.dResidu_C]));
+    end
+    else // Teneur digestible
+      if ConfdCompo = 0
+      then // g/kg
+      begin
+        Write(f, Separator, Format('%1.1f', [CC.dResidu_T]));
+        Write(f, Separator, Format('%1.1f', [CC.dResidu_C]));
+      end
+      else // %
+      begin
+        Write(f, Separator, Format('%1.2f', [CC.dResidu_T]));
+        Write(f, Separator, Format('%1.2f', [CC.dResidu_C]));
+      end;
+    if ConfTFibres = 0
+    then // g/kg
+    begin
+      Write(f, Separator, Format('%1.1f', [CC.NDF]));
+      Write(f, Separator, Format('%1.1f', [CC.ADF]));
+      Write(f, Separator, Format('%1.1f', [CC.ADL]));
+      Write(f, Separator, Format('%1.1f', [CC.Parois]));
+    end
+    else // %
+    begin
+      Write(f, Separator, Format('%1.2f', [CC.NDF]));
+      Write(f, Separator, Format('%1.2f', [CC.ADF]));
+      Write(f, Separator, Format('%1.2f', [CC.ADL]));
+      Write(f, Separator, Format('%1.2f', [CC.Parois]));
+    end;
+    // Acides amin�s
+    if ConfTAA = 1
+    then // %
+      for i := 1 to 12 do
+        Write(f, Separator, Format('%1.3f', [AAtotal[i]]))
+    else // %MAT ou g/kg
+      for i := 1 to 12 do
+        Write(f, Separator, Format('%1.2f', [AAtotal[i]]));
+    if ConfDig = 0
+    then // CUD
+      for i := 0 to 12 do
+        Write(f, Separator, Format('%1.1f', [CUDAA[i]]))
+    else // Teneur digestible
+      if ConfdAA = 0
+      then // g/kg
+        for i := 0 to 12 do
+          Write(f, Separator, Format('%1.2f', [CUDAA[i]]))
+      else // %
+        for i := 0 to 12 do
+          Write(f, Separator, Format('%1.3f', [CUDAA[i]]));
+    WriteLn(f);
+  end;
+  CloseFile(f);
+  Dispose(recOut);
+end;
+
+procedure TFImpExp.DisplayConfig;
+begin
+  LRap.Caption := FConfig.CBRap.Items[ConfRap];
+  LDig.Caption := FConfig.CBDig.Items[ConfDig];
+  LTCompo.Caption := FConfig.CBTCompo.Items[ConfTCompo];
+  LdCompo.Caption := FConfig.CBdCompo.Items[ConfDCompo];
+  LTAA.Caption := FConfig.CBTAA.Items[ConfTAA];
+  LdAA.Caption := FConfig.CBdAA.Items[ConfDAA];
+  LTAG.Caption := FConfig.CBTAG.Items[ConfTAG];
+  LTMacro.Caption := FConfig.CBTMacro.Items[ConfTMacro];
+  LTOligo.Caption := FConfig.CBTOligo.Items[ConfTOligo];
+  LTFibres.Caption := FConfig.CBTFibres.Items[ConfTFibres];
+end;
+
+procedure TFImpExp.CBTypeMatChange (Sender : TObject) ;
+begin
+  StringsMatiere (LBMatiere.Items, CBTypeMat.ItemIndex, FALSE, FALSE) ;
+end ;
+
+procedure TFImpExp.CBTypeAliChange (Sender : TObject) ;
+begin
+  StringsAliment (LBAliment.Items, CBTypeAli.ItemIndex, FALSE) ;
+end ;
+
+procedure TFImpExp.SBFichierClick (Sender : TObject) ;
+var
+  i, lig, col: Integer;
+  recOut, recIn: PRecCSV;
+  Titre: String;
+  ok: Boolean;
+  s: string;
+  v: Double;
+  sep: Char;
+begin
+  SDFichier.InitialDir := GetCurrentDir;
+  if not SDFichier.Execute
+  then // Annulation
+    Exit;
+  // effacement de la liste avant chargement
+  LBFichier.Clear;
+  if ListCSV.Count > 0
+  then
+    for i := 0 to ListCSV.Count - 1 do
+    begin
+      recIn := ListCSV[i];
+      Dispose(recIn);
+    end;
+  ListCSV.Clear;
+  EFichier.Text := SDFichier.FileName;
+  AssignFile(F, SDFichier.FileName);
+  LBFichier.Clear;
+  // Composition du titre (avec remplacement du ';' par ListSeparator)
+  Titre := StringReplace(StrTitreCSV1, ';', Separator, [rfReplaceAll])
+    + StringReplace(StrTitreCSV2, ';', Separator, [rfReplaceAll])
+    + StringReplace(StrTitreCSV3, ';', Separator, [rfReplaceAll])
+    + StringReplace(StrTitreCSV4, ';', Separator, [rfReplaceAll])
+    + StringReplace(StrTitreCSV5, ';', Separator, [rfReplaceAll])
+    + StringReplace(StrTitreCSV6, ';', Separator, [rfReplaceAll])
+    + StringReplace(StrTitreCSV7, ';', Separator, [rfReplaceAll]);
+  if not FileExists(SDFichier.FileName)
+  then // Le fichier n'existe pas : cr�ation avec titre
+  begin
+    Rewrite(F);
+    Writeln(F, Titre);
+    CloseFile(F);
+    Exit;
+  end;
+  Reset(F);
+  if Eof(F)
+  then // Le fichier est vide : insertion du titre
+  begin
+    Writeln(F, Titre);
+    CloseFile(F);
+    Exit;
+  end;
+  Readln(F, s); // Lecture de la ligne de titre
+  if Eof(F)
+  then // Il n'y a pas d'enregistrement
+  begin
+    CloseFile(F);
+    Exit;
+  end;
+  lig := 1;
+  col := 1;
+  New(recOut);
+  with recOut^ do
+    repeat
+      ok := TRUE;
+      case col of
+        1: // Nom
+        begin
+          ok := GetString(s, sep);
+          if ok then Nom := Trim(s);
+        end;
+        2: // Commentaire
+        begin
+          ok := GetString(s, sep);
+          if ok then Memo := s;
+        end;
+        3: // Type
+          ok := GetInteger(Typ, sep);
+        4..98: // Valeurs
+        begin
+          ok := GetDouble(v, sep);
+          if ok
+          then
+            case col of
+              4: CC.MS := v;
+              5: CC.MM := v;
+              6: CC.MO := v;
+              7: CC.Lip := v;
+              8: CC.MAT := v;
+              9: CC.Amidon := v;
+              10: CC.Sucres := v;
+              11: CC.dMO_T := v;
+              12: CC.dMO_C := v;
+              13: CC.dLip_T := v;
+              14: CC.dLip_C := v;
+              15: CC.dMAT_T := v;
+              16: CC.dMAT_C := v;
+              17: CC.EB := v;
+              18: CC.ED_T := v;
+              19: CC.ED_C := v;
+              20: CC.EM_T := v;
+              21: CC.EM_C := v;
+              22: CC.EN_T := v;
+              23: CC.EN_C := v;
+              24: CC.Ca := v;
+              25: CC.P := v;
+              26: CC.Na := v;
+              27: CC.K := v;
+              28: CC.Mg := v;
+              29: CC.Cl := v;
+              30: CC.S := v;
+              31: CC.Cu := v;
+              32: CC.Zn := v;
+              33: CC.Mn := v;
+              34: CC.Fe := v;
+              35: CC.Se := v;
+              36: CC.Co := v;
+              37: CC.Mb := v;
+              38: CC.I := v;
+              39: CC.PdigG := v;
+              40: CC.PdigF := v;
+              41: CC.Phytase := v;
+              42: CC.ActPhytE := v;
+              43: CC.ActPhytM := v;
+              44: CC.C6C8C10 := v;
+              45: CC.C12_0 := v;
+              46: CC.C14_0 := v;
+              47: CC.C16_0 := v;
+              48: CC.C16_1 := v;
+              49: CC.C18_0 := v;
+              50: CC.C18_1 := v;
+              51: CC.C18_2 := v;
+              52: CC.C18_3 := v;
+              53: CC.C18_4 := v;
+              54: CC.C20_0 := v;
+              55: CC.C20_1 := v;
+              56: CC.C20_4 := v;
+              57: CC.C20_5 := v;
+              58: CC.C22_0 := v;
+              59: CC.C22_1 := v;
+              60: CC.C22_5 := v;
+              61: CC.C22_6 := v;
+              62: CC.C24_0 := v;
+              63: CC.AGsLip := v;
+              64: CC.CB := v;
+              65: CC.dCB_T := v;
+              66: CC.dCB_C := v;
+              67: CC.Residu := v;
+              68: CC.dResidu_T := v;
+              69: CC.dResidu_C := v;
+              70: CC.NDF := v;
+              71: CC.ADF := v;
+              72: CC.ADL := v;
+              73: CC.Parois := v;
+              74..85: AAtotal[col - 73] := v;
+              86..98: CUDAA[col - 86] := v;
+            end;
+        end;
+      end ;
+      if not ok then Break;
+      if (col = 98) or ((col = 1) and (Length(Nom) = 0))
+      then // Dernier champs ou ligne vide
+        ok := (sep = Chr(13)) or (sep = Chr(26))
+      else
+        ok := (sep = Separator);
+      if not ok then Break;
+      if sep = Chr(13) then Read(F, sep); // Chr(10)
+      if col = 98
+      then // Passage � la ligne suivante
+      begin
+        New(recIn);
+        FormatOutToIn(recOut, recIn);
+        recIn.AAtotal[0] := recIn.CC.MAT;
+        ListCSV.Add(recIn);
+        LBFichier.Items.Add(Nom);
+        Dispose(recOut);
+        Inc(lig);
+        col := 1;
+        New(recOut);
+      end
+      else
+        if (col > 1) or (Length(Nom) > 0)
+        then // Passage au champs suivant
+          Inc(col);
+    until sep = Chr(26); // Eof(f)
+  Dispose(recOut);
+  CloseFile(F);
+  if not ok
+  then // erreur de lecture
+  begin
+    MessageDlg(Format(MsgCSVError, [lig, col]), mtError, [mbOk], 0);
+    // effacement de la liste suite � une erreur de lecture
+    LBFichier.Clear;
+    if ListCSV.Count > 0
+    then
+      for i := 0 to ListCSV.Count - 1 do
+      begin
+        recIn := ListCSV[i];
+        Dispose(recIn);
+      end;
+    ListCSV.Clear;
+    EFichier.Text := '';
+  end;
+end;
+
+procedure TFImpExp.SBExpMatClick (Sender : TObject) ;
+var
+  i, j : integer ;
+  rec : PRecCSV ;
+begin
+  if EFichier.Text = ''
+  then
+  begin
+    MessageDlg (MsgNoCSV, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  if LBMatiere.Count = 0
+  then
+  begin
+    MessageDlg (MsgNoMat, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  if LBMatiere.SelCount = 0
+  then
+  begin
+    MessageDlg (MsgNoMatSel, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  for i := 0 to LBMatiere.Count - 1 do
+    if LBMatiere.Selected[i]
+    then
+    begin
+      PMatiere := ListMatiere[FindIdxMatiere (LBMatiere.Items[i])] ;
+      with PMatiere^ do
+      begin
+        New (rec) ;
+        rec.Nom := Nom ;
+        rec.Memo := Memo ;
+        rec.Typ := Typ ;
+        rec.CC := CC ;
+        for j := 0 to 12 do
+          rec.AAtotal[j] := AAtotal[j] ;
+        for j := 0 to 12 do
+          rec.CUDAA[j] := CUDAA[j] ;
+        ListCSV.Add (rec) ;
+        PutCSV (rec) ;
+        LBFichier.Items.Add (Nom) ;
+      end ;
+    end ;
+end ;
+
+procedure TFImpExp.SBImpMatClick (Sender : TObject) ;
+var
+  i, j, n : integer ;
+  ok : Boolean ;
+  rec : PRecCSV ;
+begin
+  if EFichier.Text = ''
+  then
+  begin
+    MessageDlg (MsgNoCSV, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  if LBFichier.Count = 0
+  then
+  begin
+    MessageDlg (MsgNoImp, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  if LBFichier.SelCount = 0
+  then
+  begin
+    MessageDlg (MsgNoImpSel, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  n := 0 ;
+  for i := 0 to LBFichier.Count - 1 do
+    if LBFichier.Selected[i]
+    then
+    begin
+      rec := ListCSV[i] ;
+      repeat // V�rification du nom
+        if Length (rec.Nom) > 35
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [35]), mtWarning, [mbOk], 0) ;
+          rec.Nom := Copy (rec.Nom, 1, 35) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          j := 0 ;
+          while ok and (j < ListMatiere.Count) do
+          begin
+            PMatiere := ListMatiere[j] ;
+            if PMatiere.Nom = rec.Nom
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (j) ;
+          end ;
+        end ;
+        if not ok
+        then // Saisie du nom
+          if not InputQuery (FImpExp.Caption, MsgName, rec.Nom)
+          then // Annulation
+          begin
+            ok := TRUE ;
+            LBFichier.Selected[i] := FALSE ;
+          end ;
+      until ok ;
+      if LBFichier.Selected[i]
+      then
+      begin
+        repeat // Recherche du premier num�ro libre
+          Inc (n) ;
+          ok := TRUE ;
+          j := 0 ;
+          while ok and (j < ListMatiere.Count) do
+          begin
+            PMatiere := ListMatiere[j] ;
+            if PMatiere.Num = n
+            then
+              ok := FALSE
+            else
+              Inc (j) ;
+          end ;
+        until ok ;
+        ModifMat := TRUE ;
+        New (PMatiere) ;
+        with PMatiere^ do
+        begin
+          Num := n ;
+          Nom := rec.Nom ;
+          Memo := rec.Memo ;
+          if rec.Typ < 10
+          then // Mati�re premi�re
+            Typ := rec.Typ
+          else // Aliment
+          begin
+            MessageDlg (Format (MsgAli2Mat, [Nom]), mtWarning, [mbOk], 0) ;
+            Typ := 0 ;
+          end ;
+          CC := rec.CC ;
+          for j := 0 to 12 do
+            AAtotal[j] := rec.AAtotal[j] ;
+          for j := 0 to 12 do
+            CUDAA[j] := rec.CUDAA[j] ;
+        end ;
+        ListMatiere.Add (PMatiere) ;
+        if (CBTypeMat.ItemIndex = 0) or (PMatiere.Typ = CBTypeMat.ItemIndex)
+        then
+          LBMatiere.Items.Add (PMatiere.Nom) ;
+      end ;
+    end ;
+end ;
+
+procedure TFImpExp.SBExpAliClick (Sender : TObject) ;
+var
+  i, j : integer ;
+  rec : PRecCSV ;
+begin
+  if EFichier.Text = ''
+  then
+  begin
+    MessageDlg (MsgNoCSV, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  if LBAliment.Count = 0
+  then
+  begin
+    MessageDlg (MsgNoAli, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  if LBAliment.SelCount = 0
+  then
+  begin
+    MessageDlg (MsgNoAliSel, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  for i := 0 to LBAliment.Count - 1 do
+    if LBAliment.Selected[i]
+    then
+    begin
+      PAliment := ListAliment[FindIdxAliment (LBAliment.Items[i])] ;
+      with PAliment^ do
+      begin
+        New (rec) ;
+        rec.Nom := Nom ;
+        rec.Memo := Memo ;
+        rec.Typ := Typ * (Presentation + 1) + 10 ;
+        rec.CC := CC ;
+        for j := 0 to 12 do
+          rec.AAtotal[j] := AAtotal[j] ;
+        for j := 0 to 12 do
+          rec.CUDAA[j] := CUDAA[j] ;
+        ListCSV.Add (rec) ;
+        PutCSV (rec) ;
+        LBFichier.Items.Add (Nom) ;
+      end ;
+    end ;
+end ;
+
+procedure TFImpExp.SBImpAliClick (Sender : TObject) ;
+var
+  i, j, k, n : integer ;
+  ok : Boolean ;
+  rec : PRecCSV ;
+begin
+  if EFichier.Text = ''
+  then
+  begin
+    MessageDlg (MsgNoCSV, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  if LBFichier.Count = 0
+  then
+  begin
+    MessageDlg (MsgNoImp, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  if LBFichier.SelCount = 0
+  then
+  begin
+    MessageDlg (MsgNoImpSel, mtError, [mbOk], 0) ;
+    Exit ;
+  end ;
+  n := 0 ;
+  for i := 0 to LBFichier.Count - 1 do
+    if LBFichier.Selected[i]
+    then
+    begin
+      rec := ListCSV[i] ;
+      repeat // V�rification du nom
+        if Length (rec.Nom) > 35
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [35]), mtWarning, [mbOk], 0) ;
+          rec.Nom := Copy (rec.Nom, 1, 35) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          j := 0 ;
+          while ok and (j < ListAliment.Count) do
+          begin
+            PAliment := ListAliment[j] ;
+            if PAliment.Nom = rec.Nom
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (j) ;
+          end ;
+        end ;
+        if not ok
+        then // Saisie du nom
+          if not InputQuery (FImpExp.Caption, MsgName, rec.Nom)
+          then // Annulation
+          begin
+            ok := TRUE ;
+            LBFichier.Selected[i] := FALSE ;
+          end ;
+      until ok ;
+      if LBFichier.Selected[i]
+      then
+      begin
+        repeat // Recherche du premier num�ro libre
+          Inc (n) ;
+          ok := TRUE ;
+          j := 0 ;
+          while ok and (j < ListAliment.Count) do
+          begin
+            PAliment := ListAliment[j] ;
+            if PAliment.Num = n
+            then
+              ok := FALSE
+            else
+              Inc (j) ;
+          end ;
+        until ok ;
+        ModifAli := TRUE ;
+        New (PAliment) ;
+        with PAliment^ do
+        begin
+          Num := n ;
+          Nom := rec.Nom ;
+          Memo := rec.Memo ;
+          if rec.Typ < 10
+          then // Mati�re premi�re
+          begin
+            MessageDlg (Format (MsgMat2Ali, [Nom]), mtWarning, [mbOk], 0) ;
+            Typ := 0 ;
+            Presentation := 0 ;
+          end
+          else // Aliment
+          begin
+            Typ := (rec.Typ - 10) mod 3 ;
+            Presentation := (rec.Typ - 10) div 3 ;
+          end ;
+          Prix := 0 ;
+          MP.NbMat := 0 ;
+          for k := 0 to MAX_MP do
+          begin
+            MP.NumMat[k] := 0 ;
+            MP.MS[k] := 0 ;
+            MP.Qte[k] := 0 ;
+          end ;
+          CC := rec.CC ;
+          for j := 0 to 12 do
+            AAtotal[j] := rec.AAtotal[j] ;
+          for j := 0 to 12 do
+            CUDAA[j] := rec.CUDAA[j] ;
+        end ;
+        ListAliment.Add (PAliment) ;
+        if (CBTypeAli.ItemIndex = 0) or (PAliment.Typ = CBTypeAli.ItemIndex)
+        then
+          LBAliment.Items.Add (PAliment.Nom) ;
+      end ;
+    end ;
+end ;
+
+end.
Index: UFRapSensSimulP.pas
===================================================================
--- UFRapSensSimulP.pas	(révision 0)
+++ UFRapSensSimulP.pas	(révision 3)
@@ -0,0 +1,373 @@
+unit UFRapSensSimulP ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapSensSimulP = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    CDSRapport: TClientDataSet;
+    IFAgeDeb_1: TIntegerField;
+    IFAgeFin_1: TIntegerField;
+    FFPoidsDeb_1: TFloatField;
+    FFPoidsFin_1: TFloatField;
+    FFConso_1: TFloatField;
+    FFIngere_1: TFloatField;
+    FFTMP_1: TFloatField;
+    FFP2_1: TFloatField;
+    FFRC_1: TFloatField;
+    IFAgeDeb_2: TIntegerField;
+    IFAgeFin_2: TIntegerField;
+    FFPoidsDeb_2: TFloatField;
+    FFPoidsFin_2: TFloatField;
+    FFConso_2: TFloatField;
+    FFIngere_2: TFloatField;
+    FFTMP_2: TFloatField;
+    FFP2_2: TFloatField;
+    FFRC_2: TFloatField;
+    IFAgeDeb_3: TIntegerField;
+    IFAgeFin_3: TIntegerField;
+    FFPoidsDeb_3: TFloatField;
+    FFPoidsFin_3: TFloatField;
+    FFConso_3: TFloatField;
+    FFIngere_3: TFloatField;
+    FFTMP_3: TFloatField;
+    FFP2_3: TFloatField;
+    FFRC_3: TFloatField;
+    IFAgeDeb_4: TIntegerField;
+    IFAgeFin_4: TIntegerField;
+    FFPoidsDeb_4: TFloatField;
+    FFPoidsFin_4: TFloatField;
+    FFConso_4: TFloatField;
+    FFIngere_4: TFloatField;
+    FFTMP_4: TFloatField;
+    FFP2_4: TFloatField;
+    FFRC_4: TFloatField;
+    IFAgeDeb_5: TIntegerField;
+    IFAgeFin_5: TIntegerField;
+    FFPoidsDeb_5: TFloatField;
+    FFPoidsFin_5: TFloatField;
+    FFConso_5: TFloatField;
+    FFIngere_5: TFloatField;
+    FFTMP_5: TFloatField;
+    FFP2_5: TFloatField;
+    FFRC_5: TFloatField;
+    CDSSimul: TClientDataSet;
+    SFSimul: TStringField;
+    DBRapport: TQRBand;
+    QRDBTRC_5: TQRDBText;
+    QRDBTP2_5: TQRDBText;
+    QRDBTTMP_5: TQRDBText;
+    QRDBTAliTot_5: TQRDBText;
+    QRDBTAgeFin_5: TQRDBText;
+    QRDBTAgeDeb_5: TQRDBText;
+    QRDBTPoidsFin_5: TQRDBText;
+    QRDBTPoidsDeb_5: TQRDBText;
+    QREDuree_5: TQRExpr;
+    QREGMQ_5: TQRExpr;
+    QREAliMoy_5: TQRExpr;
+    QREPD_5: TQRExpr;
+    QRELD_5: TQRExpr;
+    QREWastage_5: TQRExpr;
+    QRDBTRC_4: TQRDBText;
+    QRDBTP2_4: TQRDBText;
+    QRDBTTMP_4: TQRDBText;
+    QRDBTAliTot_4: TQRDBText;
+    QRDBTAgeFin_4: TQRDBText;
+    QRDBTAgeDeb_4: TQRDBText;
+    QRDBTPoidsFin_4: TQRDBText;
+    QRDBTPoidsDeb_4: TQRDBText;
+    QREDuree_4: TQRExpr;
+    QREGMQ_4: TQRExpr;
+    QREAliMoy_4: TQRExpr;
+    QREPD_4: TQRExpr;
+    QRELD_4: TQRExpr;
+    QREWastage_4: TQRExpr;
+    QRDBTRC_3: TQRDBText;
+    QRDBTP2_3: TQRDBText;
+    QRDBTTMP_3: TQRDBText;
+    QRDBTAliTot_3: TQRDBText;
+    QRDBTAgeFin_3: TQRDBText;
+    QRDBTAgeDeb_3: TQRDBText;
+    QRDBTPoidsFin_3: TQRDBText;
+    QRDBTPoidsDeb_3: TQRDBText;
+    QREDuree_3: TQRExpr;
+    QREGMQ_3: TQRExpr;
+    QREAliMoy_3: TQRExpr;
+    QREPD_3: TQRExpr;
+    QRELD_3: TQRExpr;
+    QREWastage_3: TQRExpr;
+    QRDBTRC_2: TQRDBText;
+    QRDBTP2_2: TQRDBText;
+    QRDBTTMP_2: TQRDBText;
+    QRDBTAliTot_2: TQRDBText;
+    QRDBTAgeFin_2: TQRDBText;
+    QRDBTAgeDeb_2: TQRDBText;
+    QRDBTPoidsFin_2: TQRDBText;
+    QRDBTPoidsDeb_2: TQRDBText;
+    QREDuree_2: TQRExpr;
+    QREGMQ_2: TQRExpr;
+    QREAliMoy_2: TQRExpr;
+    QREPD_2: TQRExpr;
+    QRELD_2: TQRExpr;
+    QREWastage_2: TQRExpr;
+    QREWastage_1: TQRExpr;
+    QRELD_1: TQRExpr;
+    QREPD_1: TQRExpr;
+    QREAliMoy_1: TQRExpr;
+    QREGMQ_1: TQRExpr;
+    QREDuree_1: TQRExpr;
+    QRLPerf: TQRLabel;
+    QRLPoidsDeb: TQRLabel;
+    QRLPoidsFin: TQRLabel;
+    QRDBTPoidsDeb_1: TQRDBText;
+    QRDBTPoidsFin_1: TQRDBText;
+    QRLAgeDeb: TQRLabel;
+    QRLAgeFin: TQRLabel;
+    QRDBTAgeDeb_1: TQRDBText;
+    QRDBTAgeFin_1: TQRDBText;
+    QRLDuree: TQRLabel;
+    QRLGMQ: TQRLabel;
+    QRLPD: TQRLabel;
+    QRLLD: TQRLabel;
+    QRLAliTot: TQRLabel;
+    QRLAliMoy: TQRLabel;
+    QRDBTAliTot_1: TQRDBText;
+    QRLWastage: TQRLabel;
+    QRLFeed: TQRLabel;
+    QRLTMP: TQRLabel;
+    QRDBTTMP_1: TQRDBText;
+    QRLP2: TQRLabel;
+    QRDBTP2_1: TQRDBText;
+    QRLRC: TQRLabel;
+    QRDBTRC_1: TQRDBText;
+    QRLCaract: TQRLabel;
+    QRLSimulNo: TQRLabel;
+    QRLNo1: TQRLabel;
+    QRLabel1: TQRLabel;
+    QRLabel2: TQRLabel;
+    QRLabel3: TQRLabel;
+    QRLabel4: TQRLabel;
+    QRSDRapport: TQRSubDetail;
+    QRDBTProfil: TQRDBText;
+    QRLProfil: TQRLabel;
+    QRLSeqAli: TQRLabel;
+    QRLRation: TQRLabel;
+    QRDBTSeqAli: TQRDBText;
+    QRDBTRation: TQRDBText;
+    QRDBTSimulNo: TQRDBText;
+    QRDBTVariation: TQRDBText;
+    QRLVariation: TQRLabel;
+    SFProfil: TStringField;
+    SFSeqAli: TStringField;
+    SFRation: TStringField;
+    SFVariation: TStringField;
+    CDSRapport_Simul_: TStringField;
+    QRLSimul: TQRLabel;
+    QRDBTSimul: TQRDBText;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    FFpDeb_1: TFloatField;
+    FFpFin_1: TFloatField;
+    FFlDeb_1: TFloatField;
+    FFlFin_1: TFloatField;
+    FFpDeb_2: TFloatField;
+    FFpFin_2: TFloatField;
+    FFlDeb_2: TFloatField;
+    FFlFin_2: TFloatField;
+    FFpDeb_3: TFloatField;
+    FFpFin_3: TFloatField;
+    FFlDeb_3: TFloatField;
+    FFlFin_3: TFloatField;
+    FFpDeb_4: TFloatField;
+    FFpFin_4: TFloatField;
+    FFlDeb_4: TFloatField;
+    FFlFin_4: TFloatField;
+    FFpDeb_5: TFloatField;
+    FFpFin_5: TFloatField;
+    FFlDeb_5: TFloatField;
+    FFlFin_5: TFloatField;
+    QREFeed_5: TQRExpr;
+    QREFeed_4: TQRExpr;
+    QREFeed_3: TQRExpr;
+    QREFeed_2: TQRExpr;
+    QREFeed_1: TQRExpr;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapSensSimulP: TFRapSensSimulP;
+
+implementation
+
+uses
+  UStrings, UFindRec, UCalcul, UUtil, UFSimulP, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapSimulP }
+
+procedure TFRapSensSimulP.FormCreate(Sender: TObject);
+var
+  i, k, t: integer;
+  c: double;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSSimul do
+  begin
+    CreateDataSet;
+    for k := 1 to 5 do
+    begin
+      Append;
+      FieldValues['_Simul_'] := Format (StrSimulNo, [k]);
+      FieldValues['_Variation_'] := Format (StrVariation, [FSimulP.CBVariable.Items[FSimulP.CBVariable.ItemIndex], TabSimulP[k].Variation * 100]);
+      Post;
+    end;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    for k := 1 to 5 do
+    begin
+      t := TabSimulP[k].Result.NbJSim;
+      PSimulP := ListSimulP[FindIdxSimulP (FSimulP.CBSensSimul.Text)];
+      PProfilP := ListProfilP[FindIdxProfilP (FindNomProfilP (PSimulP.Profil))];
+      FieldValues['_Simul_'] := PSimulP.Nom;
+      FieldValues['_Profil_'] := FindNomProfilP (PSimulP.Profil);
+      FieldValues['_SeqAli_'] := FindNomSeqAliP (PSimulP.SeqAli);
+      FieldValues['_Ration_'] := FindNomRationP (PSimulP.Ration);
+      FieldValues[Format('_AgeDeb_%d_', [k])] := TabSimulP[k].Result.TabResult[1, 1];
+      FieldValues[Format('_AgeFin_%d_', [k])] := TabSimulP[k].Result.TabResult[1, t] + 1;
+      FieldValues[Format('_PoidsDeb_%d_', [k])] := TabSimulP[k].Result.TabResult[2, 1];
+      FieldValues[Format('_PoidsFin_%d_', [k])] := TabSimulP[k].Result.TabResult[2, t] + TabSimulP[k].Result.TabResult[84, t];
+      FieldValues[Format('_pDeb_%d_', [k])] := TabSimulP[k].Result.TabResult[49, 1];
+      FieldValues[Format('_pFin_%d_', [k])] := TabSimulP[k].Result.TabResult[49, t] + TabSimulP[k].Result.TabResult[79, t] / 1000;
+      FieldValues[Format('_lDeb_%d_', [k])] := TabSimulP[k].Result.TabResult[50, 1];
+      FieldValues[Format('_lFin_%d_', [k])] := TabSimulP[k].Result.TabResult[50, t] + TabSimulP[k].Result.TabResult[80, t] / 1000;
+      c := 0;
+      for i := 1 to t do
+        c := c + TabSimulP[k].Result.TabResult[113, i];
+      FieldValues[Format('_Conso_%d_', [k])] := c;
+      c := 0;
+      for i := 1 to t do
+        c := c + TabSimulP[k].Result.TabResult[11, i];
+      FieldValues[Format('_Ingere_%d_', [k])] := c;
+      if FatInfo = 0
+      then // P2
+        FieldValues[Format('_P2_%d_', [k])] := CalcP2(FieldValues[Format('_lFin_%d_', [k])])
+      else // User defined
+        FieldValues[Format('_P2_%d_', [k])] := CalcUserFat(CalcPVV(FieldValues[Format('_PoidsFin_%d_', [k])]), FieldValues[Format('_pFin_%d_', [k])], FieldValues[Format('_lFin_%d_', [k])]);
+      if LeanInfo = 0
+      then // TMP
+        FieldValues[Format('_TMP_%d_', [k])] := CalcTMP(CalcPVV(FieldValues[Format('_PoidsFin_%d_', [k])]), FieldValues[Format('_pFin_%d_', [k])], FieldValues[Format('_lFin_%d_', [k])])
+      else // User defined
+        FieldValues[Format('_TMP_%d_', [k])] := CalcUserLean(CalcPVV(FieldValues[Format('_PoidsFin_%d_', [k])]), FieldValues[Format('_pFin_%d_', [k])], FieldValues[Format('_lFin_%d_', [k])]);
+      FieldValues[Format('_RC_%d_', [k])] := CalcRC(FieldValues[Format('_PoidsFin_%d_', [k])], CalcRCStd(PProfilP.PVFin, PProfilP.Carcasse), FieldValues[Format('_PoidsFin_%d_', [k])]) * 100;
+    end;
+    Post;
+  end;
+  QRMMemo.Lines.Add(FSimulP.CBSensSimul.Hint);
+  if FeedInfo = 0
+  then // Indice de consommation
+    QREFeed_1.Expression := 'IF(CDSRapport._PoidsDeb_1_ = CDSRapport._PoidsFin_1_, 0, CDSRapport._Conso_1_ / (CDSRapport._PoidsFin_1_ - CDSRapport._PoidsDeb_1_))'
+  else // Efficacit� alimentaire
+    QREFeed_1.Expression := 'IF(CDSRapport._Conso_1_ = 0, 0, (CDSRapport._PoidsFin_1_ - CDSRapport._PoidsDeb_1_) / CDSRapport._Conso_1_)';
+  if FeedInfo = 0
+  then // Indice de consommation
+    QREFeed_2.Expression := 'IF(CDSRapport._PoidsDeb_2_ = CDSRapport._PoidsFin_2_, 0, CDSRapport._Conso_2_ / (CDSRapport._PoidsFin_2_ - CDSRapport._PoidsDeb_2_))'
+  else // Efficacit� alimentaire
+    QREFeed_2.Expression := 'IF(CDSRapport._Conso_2_ = 0, 0, (CDSRapport._PoidsFin_2_ - CDSRapport._PoidsDeb_2_) / CDSRapport._Conso_2_)';
+  if FeedInfo = 0
+  then // Indice de consommation
+    QREFeed_3.Expression := 'IF(CDSRapport._PoidsDeb_3_ = CDSRapport._PoidsFin_3_, 0, CDSRapport._Conso_3_ / (CDSRapport._PoidsFin_3_ - CDSRapport._PoidsDeb_3_))'
+  else // Efficacit� alimentaire
+    QREFeed_3.Expression := 'IF(CDSRapport._Conso_3_ = 0, 0, (CDSRapport._PoidsFin_3_ - CDSRapport._PoidsDeb_3_) / CDSRapport._Conso_3_)';
+  if FeedInfo = 0
+  then // Indice de consommation
+    QREFeed_4.Expression := 'IF(CDSRapport._PoidsDeb_4_ = CDSRapport._PoidsFin_4_, 0, CDSRapport._Conso_4_ / (CDSRapport._PoidsFin_4_ - CDSRapport._PoidsDeb_4_))'
+  else // Efficacit� alimentaire
+    QREFeed_4.Expression := 'IF(CDSRapport._Conso_4_ = 0, 0, (CDSRapport._PoidsFin_4_ - CDSRapport._PoidsDeb_4_) / CDSRapport._Conso_4_)';
+  if FeedInfo = 0
+  then // Indice de consommation
+    QREFeed_5.Expression := 'IF(CDSRapport._PoidsDeb_5_ = CDSRapport._PoidsFin_5_, 0, CDSRapport._Conso_5_ / (CDSRapport._PoidsFin_5_ - CDSRapport._PoidsDeb_5_))'
+  else // Efficacit� alimentaire
+    QREFeed_5.Expression := 'IF(CDSRapport._Conso_5_ = 0, 0, (CDSRapport._PoidsFin_5_ - CDSRapport._PoidsDeb_5_) / CDSRapport._Conso_5_)';
+  QRLAgeDeb.Caption := Format('%s (%s)', [QRLAgeDeb.Caption, _('d')]);
+  QRLAgeFin.Caption := Format('%s (%s)', [QRLAgeFin.Caption, _('d')]);
+  QRLDuree.Caption := Format('%s (%s)', [QRLDuree.Caption, _('d')]);
+  QRLPoidsDeb.Caption := Format('%s (%s)', [QRLPoidsDeb.Caption, _('kg')]);
+  QRLPoidsFin.Caption := Format('%s (%s)', [QRLPoidsFin.Caption, _('kg')]);
+  QRLGMQ.Caption := Format('%s (%s/%s)', [QRLGMQ.Caption, _('g'), _('d')]);
+  QRLPD.Caption := Format('%s (%s/%s)', [QRLPD.Caption, _('g'), _('d')]);
+  QRLLD.Caption := Format('%s (%s/%s)', [QRLLD.Caption, _('g'), _('d')]);
+  QRLAliTot.Caption := Format('%s (%s)', [QRLAliTot.Caption, _('kg')]);
+  QRLAliMoy.Caption := Format('%s (%s/%s)', [QRLAliMoy.Caption, _('g'), _('d')]);
+  QRLWastage.Caption := Format('%s (%%)', [QRLWastage.Caption]);
+  if FeedInfo = 0
+  then // Indice de consommation
+    QRLFeed.Caption := Format('%s (%s/%s)', [_('Average feed-to-gain ratio'), _('kg feed'), _('kg gain')])
+  else // Efficacit� alimentaire
+    QRLFeed.Caption := Format('%s (%s/%s)', [_('Average gain-to-feed ratio'), _('kg gain'), _('kg feed')]);
+  if FatInfo = 0
+  then // P2
+    QRLP2.Caption := Format('%s (%s)', [_('Backfat thickness at slaughter'), _('mm')])
+  else // User defined
+    if Length(UserFatLongName) = 0
+    then
+      QRLP2.Caption := Format('%s (%s)', [_('User-defined backfat thickness'), _('mm')])
+    else
+      QRLP2.Caption := Format('%s (%s)', [UserFatLongName, _('mm')]);
+  if LeanInfo = 0
+  then // TMP
+    QRLTMP.Caption := Format('%s (%%)', [_('Lean meat at slaughter')])
+  else // User defined
+    if Length(UserLeanLongName) = 0
+    then
+      QRLTMP.Caption := Format('%s (%%)', [_('User-defined lean meat')])
+    else
+      QRLTMP.Caption := Format('%s (%%)', [UserLeanLongName]);
+  QRLRC.Caption := Format('%s (%%)', [QRLRC.Caption]);
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFBesLactE.dfm
===================================================================
--- UFBesLactE.dfm	(révision 0)
+++ UFBesLactE.dfm	(révision 3)
@@ -0,0 +1,112 @@
+object FBesLactE: TFBesLactE
+  Left = 25
+  Top = 167
+  HelpContext = 4950
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Requirements during lactation (herd)'
+  ClientHeight = 112
+  ClientWidth = 296
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBProfil: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 296
+    Height = 48
+    Caption = 'Animal profile'
+    TabOrder = 0
+    object CBProfil: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBProfilChange
+    end
+  end
+  object GBResult: TGroupBox
+    Left = 0
+    Top = 48
+    Width = 296
+    Height = 64
+    Caption = 'Results'
+    Color = clMoneyGreen
+    ParentBackground = False
+    ParentColor = False
+    TabOrder = 1
+    object BBRapLact: TBitBtn
+      Left = 128
+      Top = 24
+      Width = 80
+      Height = 24
+      Hint = 'Show the simulation results as a report'
+      Caption = 'Report'
+      Enabled = False
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        333333333333333333333333333333333333333333FFFFF3333333333CCCCC33
+        33333FFFF77777FFFFFFCCCCCC808CCCCCC377777737F777777F008888070888
+        8003773FFF7773FFF77F0F0770F7F0770F037F777737F777737F70FFFFF7FFFF
+        F07373F3FFF7F3FFF37F70F000F7F000F07337F77737F777373330FFFFF7FFFF
+        F03337FF3FF7F3FF37F3370F00F7F00F0733373F7737F77337F3370FFFF7FFFF
+        0733337F33373F337333330FFF030FFF03333373FF7373FF7333333000333000
+        3333333777333777333333333333333333333333333333333333333333333333
+        3333333333333333333333333333333333333333333333333333}
+      NumGlyphs = 2
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      OnClick = BBRapLactClick
+    end
+    object BBResLact: TBitBtn
+      Left = 32
+      Top = 24
+      Width = 80
+      Height = 24
+      Hint = 'Show the simulation results as graphs'
+      Caption = 'Graphs'
+      Enabled = False
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
+        000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
+        033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
+        B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
+        C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
+        033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
+        3000773373FFFF73377733333700073333333333377777333333333333333333
+        3333333333333333333333333333333333333333333333333333}
+      NumGlyphs = 2
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      OnClick = BBResLactClick
+    end
+  end
+end
Index: UFRapRationT.dfm
===================================================================
--- UFRapRationT.dfm	(révision 0)
+++ UFRapRationT.dfm	(révision 3)
@@ -0,0 +1,1379 @@
+object FRapRationT: TFRapRationT
+  Left = 0
+  Top = 80
+  Caption = 'Report of feed rationing plan for sows'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed rationing plan for sows'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 206
+      Width = 718
+      Height = 64
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        169.333333333333300000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRLNo: TQRLabel
+        Left = 56
+        Top = 40
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          148.166666666666700000
+          105.833333333333300000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '#'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRShape2: TQRShape
+        Left = 40
+        Top = 56
+        Width = 638
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          105.833333333333000000
+          148.166666666667000000
+          1688.041666666670000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLModeFin: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 141
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          105.833333333333300000
+          373.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Termination condition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLConso: TQRLabel
+        Left = 240
+        Top = 40
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          105.833333333333300000
+          201.083333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed intake'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLRegles: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 45
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          21.166666666666670000
+          119.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Rules'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRDBTEtat: TQRDBText
+        Left = 120
+        Top = 8
+        Width = 71
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          317.500000000000000000
+          21.166666666666670000
+          187.854166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_StrEtat_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 290
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 27
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          21.166666666666670000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 383
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          63.500000000000000000
+          1013.354166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          1711.854166666667000000
+          63.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+    object QRSDRegles: TQRSubDetail
+      Left = 38
+      Top = 270
+      Width = 718
+      Height = 20
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        52.916666666666670000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      Master = QRRapport
+      DataSet = CDSRegles
+      PrintBefore = False
+      PrintIfEmpty = True
+      object QRDBTConso: TQRDBText
+        Left = 240
+        Top = 0
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          0.000000000000000000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_Conso_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNo: TQRDBText
+        Left = 41
+        Top = 0
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          108.479166666666700000
+          0.000000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_No_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTModeFin: TQRDBText
+        Left = 80
+        Top = 0
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          0.000000000000000000
+          171.979166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_ModeFin_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object TBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 88
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        232.833333333333300000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbTitle
+      object QRDBTRation: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ration_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLRation: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    IndexFieldNames = '_Ration_ ; _Etat_'
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFRation: TStringField
+      FieldName = '_Ration_'
+      Size = 25
+    end
+    object CDSRapport_Etat_: TIntegerField
+      FieldName = '_Etat_'
+    end
+    object CDSRapport_StrEtat_: TStringField
+      DisplayWidth = 16
+      FieldName = '_StrEtat_'
+      Size = 10
+    end
+  end
+  object DSRelation: TDataSource
+    DataSet = CDSRapport
+    Left = 40
+    Top = 8
+  end
+  object CDSRegles: TClientDataSet
+    Aggregates = <>
+    IndexFieldNames = '_Ration_ ; _Etat_ ; _No_'
+    MasterFields = '_Ration_ ; _Etat_'
+    MasterSource = DSRelation
+    PacketRecords = 0
+    Params = <>
+    Left = 72
+    Top = 8
+    object SFIndex: TStringField
+      FieldName = '_Ration_'
+      Size = 25
+    end
+    object CDSRegles_Etat_: TIntegerField
+      FieldName = '_Etat_'
+    end
+    object IFNo: TIntegerField
+      FieldName = '_No_'
+    end
+    object SFModeFin: TStringField
+      FieldName = '_ModeFin_'
+      Size = 30
+    end
+    object SFConso: TStringField
+      FieldName = '_Conso_'
+      Size = 60
+    end
+  end
+end
Index: UFMatiere.dfm
===================================================================
--- UFMatiere.dfm	(révision 0)
+++ UFMatiere.dfm	(révision 3)
@@ -0,0 +1,3757 @@
+object FMatiere: TFMatiere
+  Left = 166
+  Top = 153
+  HelpContext = 1000
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Feed ingredient composition'
+  ClientHeight = 463
+  ClientWidth = 744
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBMatiere: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 744
+    Height = 48
+    Align = alTop
+    Caption = 'Feed ingredient'
+    TabOrder = 0
+    object SBAdd: TSpeedButton
+      Left = 264
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Add a feed ingredient'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000800000800000800000800000800000
+        8000008000008000008000008000008000008000008000000000FF00FF000000
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF00000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0080000080000080000080000080000080000080000080000080000080000080
+        00008000008000000000FF00FF00000000000000000000000000000000000000
+        FF0000FF0000FF00000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        8000008000008000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF00000000FF0000FF0000FF00000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000008000008000008000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        FF0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
+        8000008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBAddClick
+    end
+    object SBDel: TSpeedButton
+      Left = 296
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Delete the current feed ingredient'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF0000000000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000000FF00FF000000
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF000000FF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080808080FF00FF000000
+        0000800000800000800000800000800000800000800000800000800000800000
+        80000080000080000000FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FF808080
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080808080FF00FF00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBDelClick
+    end
+    object SBRename: TSpeedButton
+      Left = 328
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Rename the current feed ingredient'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FF80808080808080
+        8080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFF800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFF800000FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFF0000FFFFFFFFFFFFFF0000FF
+        FFFFFFFFFFFF0000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FF00FF808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FFFF00FF8080
+        80FF00FFFF00FF808080FF00FF808080FFFFFF800000FFFFFFFFFFFF800000FF
+        FFFFFFFFFF800000FFFFFFFFFFFF000000FFFFFFFFFFFF808080FF00FF808080
+        FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FF00FF80808080808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FFFF00FF808080FF00FF808080
+        FFFFFF800000800000800000800000800000800000800000FFFFFFFFFFFF0000
+        00FFFFFFFFFFFF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00
+        FF808080FF00FF808080FF00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFF808080FF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF80808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBRenameClick
+    end
+    object SBComment: TSpeedButton
+      Left = 360
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 
+        'Add additional information to the current feed ingredient (comme' +
+        'nt, type)'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000120B0000120B00000000000000000000FF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FF8080808080808080808080808080808080808080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        00000000000000000000000000000000000000FF0000FFFF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000080000080FF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF
+        FF0000FF0000FF0000FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00080
+        80000080000080000080FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF0000FF000080FFFF0000FF0000FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080
+        80808080808080808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0800000800000008080000080000080FF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00
+        00FF000080FFFFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080808080808080808080808080FF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000
+        00800000008080FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080
+        80808080FF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0800000800000800000800000800000FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF00
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FF808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C08000008000008000008000008000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C080
+        0000800000800000800000800000000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF80808080
+        8080808080808080808080FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0800000800000800000800000800000C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFF4080FFFF0000FF
+        0000FF0000FF0000FFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FF808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C000408080000080
+        0000800000800000C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFF4080FF4080FFFF0000FF0000FFFFFFFFFFFFFFFFFF0000
+        00808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80808080808080
+        8080808080FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0004080004080800000800000C0C0C0C0C0C0C0C0C00000
+        00808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF0000004080FF4080FF40
+        80FFFFFFFFFFFFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF
+        808080FF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FF8080
+        80FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C000000000408000408000
+        4080C0C0C0C0C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF
+        000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080808080FF00FFFF
+        00FFFF00FF808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0000000000000C0C0C0C0C0C0C0C0C00000000000000000000000
+        00FF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFF000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0000000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FF808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        808080808080808080808080808080808080808080808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBCommentClick
+    end
+    object SBSave: TSpeedButton
+      Left = 392
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'Save the current feed ingredient'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
+        8080808080808080808080808080808080808080808080808080808080808080
+        80808080808080FF00FFFF00FFFF00FF00000000000000000000000000000000
+        0000000000000000000000000000000000000000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000C0C0C0C0C0C0000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080FF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000808080808080000000800000000000FF00FFFF00FF000000
+        FF0000FF0000000000000000000000000000000000000000C0C0C0C0C0C00000
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FF80808080808080808080
+        8080808080808080FF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        8000008000000000000000000000000000000000000000008080808080800000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000000000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF8080808080808080808080808080808080808080808080808080
+        80FF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000000000800000000000FF00FFFF00FF000000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000000000FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF000000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000000000FF00FFFF00FF000000FF0000FF000000000000000000000000
+        0000000000000000000000000000FF0000FF0000000000FF00FFFF00FF808080
+        FF00FFFF00FF808080808080808080808080808080808080808080808080FF00
+        FFFF00FF808080FF00FFFF00FF00000080000080000000000000000000000000
+        0000000000000000000000000000800000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00FF0000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00800000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000800000000000FF00FFFF00FF000000
+        FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+        00000000000000FF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FF808080808080808080FF00FFFF00FF000000
+        800000000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000
+        00000000000000FF00FFFF00FF000000FF0000000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0000000FF00FFFF00FF808080
+        FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+        80FF00FF808080FF00FFFF00FF000000800000000000C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000808080000000FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FF80808080808080808080808080808080808080
+        8080808080808080808080808080808080808080808080FF00FFFF00FF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBSaveClick
+    end
+    object SBPrint: TSpeedButton
+      Left = 424
+      Top = 16
+      Width = 24
+      Height = 24
+      Hint = 'View the report for the current feed ingredient'
+      Glyph.Data = {
+        36090000424D3609000000000000360000002800000030000000100000000100
+        18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+        808080808080808080808080808080808080808080808080808080808080FF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+        808080808080808080808080808080808080808080808080808080FF00FFFF00
+        FF808080808080FF00FF00000000000000000000000000000000000000000000
+        0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+        00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+        00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+        80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+        00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+        C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+        FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+        80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+        8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+        00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+        00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+        00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+        C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+        8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+        FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+        FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+        0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+        8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+        808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+        FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+        0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+      NumGlyphs = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBPrintClick
+    end
+    object JvEnterAsTab: TJvEnterAsTab
+      Left = 456
+      Top = 16
+      Width = 28
+      Height = 28
+    end
+    object CBMatiere: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBMatiereChange
+    end
+  end
+  object PC: TPageControl
+    Left = 0
+    Top = 48
+    Width = 744
+    Height = 415
+    ActivePage = TSElem
+    Align = alClient
+    HotTrack = True
+    TabOrder = 1
+    Visible = False
+    object TSElem: TTabSheet
+      HelpContext = 1100
+      Caption = 'Elementary composition'
+      object GBEnergie: TGroupBox
+        Left = 408
+        Top = 0
+        Width = 320
+        Height = 288
+        Caption = 'Energy'
+        TabOrder = 1
+        object GBEVal: TGroupBox
+          Left = 8
+          Top = 16
+          Width = 304
+          Height = 168
+          Caption = 'Energy values (MJ/kg)'
+          TabOrder = 0
+          object LEVal_C: TLabel
+            Left = 140
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Growing pig'
+          end
+          object LEN: TLabel
+            Left = 24
+            Top = 116
+            Width = 52
+            Height = 13
+            Caption = 'Net energy'
+            OnClick = LENClick
+          end
+          object LEM: TLabel
+            Left = 24
+            Top = 92
+            Width = 100
+            Height = 13
+            Caption = 'Metabolizable energy'
+            OnClick = LEMClick
+          end
+          object LED: TLabel
+            Left = 24
+            Top = 68
+            Width = 81
+            Height = 13
+            Caption = 'Digestible energy'
+            OnClick = LEDClick
+          end
+          object LEB: TLabel
+            Left = 24
+            Top = 44
+            Width = 62
+            Height = 13
+            Caption = 'Gross energy'
+          end
+          object LEVal_T: TLabel
+            Left = 220
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Sow'
+          end
+          object LCorrCUD: TLabel
+            Left = 24
+            Top = 140
+            Width = 102
+            Height = 13
+            Hint = 
+              'Check the checkbox to use an energy value that will correct the ' +
+              'fecal digestibility'
+            Caption = 'Digestibility correction'
+            ParentShowHint = False
+            ShowHint = True
+            OnClick = LCorrCUDClick
+          end
+          object CBCorrCUD: TCheckBox
+            Left = 8
+            Top = 138
+            Width = 16
+            Height = 17
+            Hint = 
+              'Check the checkbox to use an energy value that will correct the ' +
+              'fecal digestibility'
+            TabStop = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 8
+            OnClick = CBCorrCUDClick
+          end
+          object RBEN: TRadioButton
+            Left = 8
+            Top = 114
+            Width = 16
+            Height = 17
+            Enabled = False
+            TabOrder = 11
+            OnClick = RBENClick
+          end
+          object RBEM: TRadioButton
+            Left = 8
+            Top = 90
+            Width = 16
+            Height = 17
+            Enabled = False
+            TabOrder = 10
+            OnClick = RBEMClick
+          end
+          object RBED: TRadioButton
+            Left = 8
+            Top = 66
+            Width = 16
+            Height = 17
+            Enabled = False
+            TabOrder = 9
+            OnClick = RBEDClick
+          end
+          object PBEB_T: TPBNumEdit
+            Left = 240
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 4
+          end
+          object PBEB_C: TPBNumEdit
+            Left = 160
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBED_C: TPBNumEdit
+            Left = 160
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBED_CChange
+            OnExit = PBED_CExit
+            TabOrder = 1
+          end
+          object PBED_T: TPBNumEdit
+            Left = 240
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBED_TChange
+            OnExit = PBED_TExit
+            TabOrder = 5
+          end
+          object PBEM_C: TPBNumEdit
+            Left = 160
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBEM_CChange
+            OnExit = PBEM_CExit
+            TabOrder = 2
+          end
+          object PBEM_T: TPBNumEdit
+            Left = 240
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBEM_TChange
+            OnExit = PBEM_TExit
+            TabOrder = 6
+          end
+          object PBEN_C: TPBNumEdit
+            Left = 160
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBEN_CChange
+            OnExit = PBEN_CExit
+            TabOrder = 3
+          end
+          object PBEN_T: TPBNumEdit
+            Left = 240
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBEN_TChange
+            OnExit = PBEN_TExit
+            TabOrder = 7
+          end
+        end
+        object BGERap: TGroupBox
+          Left = 8
+          Top = 184
+          Width = 304
+          Height = 96
+          Caption = 'Energy ratios (%)'
+          TabOrder = 1
+          object LEDsEB: TLabel
+            Left = 24
+            Top = 44
+            Width = 57
+            Height = 13
+            Caption = 'DE/GE (dE)'
+          end
+          object LENsEM: TLabel
+            Left = 24
+            Top = 68
+            Width = 36
+            Height = 13
+            Caption = 'NE/ME'
+          end
+          object LERap_C: TLabel
+            Left = 140
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Growing pig'
+          end
+          object LERap_T: TLabel
+            Left = 220
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Sow'
+          end
+          object PBEDsEB_C: TPBNumEdit
+            Left = 160
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBENsEM_C: TPBNumEdit
+            Left = 160
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBEDsEB_T: TPBNumEdit
+            Left = 240
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 2
+          end
+          object PBENsEM_T: TPBNumEdit
+            Left = 240
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 3
+          end
+        end
+      end
+      object GBFecale: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 400
+        Height = 264
+        Caption = 'Content and fecal digestibility'
+        TabOrder = 0
+        object LMS: TLabel
+          Left = 8
+          Top = 60
+          Width = 48
+          Height = 13
+          Caption = 'Dry matter'
+        end
+        object LMM: TLabel
+          Left = 8
+          Top = 84
+          Width = 18
+          Height = 13
+          Caption = 'Ash'
+        end
+        object LMO: TLabel
+          Left = 8
+          Top = 108
+          Width = 69
+          Height = 13
+          Caption = 'Organic matter'
+        end
+        object LLip: TLabel
+          Left = 8
+          Top = 132
+          Width = 43
+          Height = 13
+          Caption = 'Crude fat'
+        end
+        object LMAT: TLabel
+          Left = 8
+          Top = 156
+          Width = 63
+          Height = 13
+          Caption = 'Crude protein'
+        end
+        object LAmidon: TLabel
+          Left = 8
+          Top = 180
+          Width = 31
+          Height = 13
+          Caption = 'Starch'
+        end
+        object LSucres: TLabel
+          Left = 8
+          Top = 204
+          Width = 33
+          Height = 13
+          Caption = 'Sugars'
+        end
+        object LResidu: TLabel
+          Left = 8
+          Top = 228
+          Width = 39
+          Height = 13
+          Caption = 'Residue'
+        end
+        object GBdFecale: TGroupBox
+          Left = 224
+          Top = 16
+          Width = 168
+          Height = 240
+          Caption = 'Digestibility'
+          TabOrder = 1
+          object LdFecale_C: TLabel
+            Left = 4
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Growing pig'
+          end
+          object LdFecale_T: TLabel
+            Left = 84
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Sow'
+          end
+          object PBdMO_C: TPBNumEdit
+            Left = 24
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMO_CChange
+            TabOrder = 0
+          end
+          object PBdLip_C: TPBNumEdit
+            Left = 24
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdLip_CChange
+            TabOrder = 1
+          end
+          object PBdMAT_C: TPBNumEdit
+            Left = 24
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMAT_CChange
+            TabOrder = 2
+          end
+          object PBdSucres_C: TPBNumEdit
+            Left = 24
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 4
+          end
+          object PBdLip_T: TPBNumEdit
+            Left = 104
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdLip_TChange
+            TabOrder = 6
+          end
+          object PBdMAT_T: TPBNumEdit
+            Left = 104
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMAT_TChange
+            TabOrder = 7
+          end
+          object PBdAmidon_T: TPBNumEdit
+            Left = 104
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 8
+          end
+          object PBdSucres_T: TPBNumEdit
+            Left = 104
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 9
+          end
+          object PBdMO_T: TPBNumEdit
+            Left = 104
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMO_TChange
+            TabOrder = 5
+          end
+          object PBdAmidon_C: TPBNumEdit
+            Left = 24
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 3
+          end
+          object PBdResidu_C: TPBNumEdit
+            Left = 24
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 10
+          end
+          object PBdResidu_T: TPBNumEdit
+            Left = 104
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 11
+          end
+        end
+        object GBTFecale: TGroupBox
+          Left = 120
+          Top = 16
+          Width = 96
+          Height = 240
+          Caption = 'Content'
+          TabOrder = 0
+          object PBTMS: TPBNumEdit
+            Left = 24
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTMSChange
+            OnExit = PBTMSExit
+            TabOrder = 0
+          end
+          object PBTMM: TPBNumEdit
+            Left = 24
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTMMChange
+            OnExit = PBTMMExit
+            TabOrder = 1
+          end
+          object PBTMO: TPBNumEdit
+            Left = 24
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 2
+          end
+          object PBTLip: TPBNumEdit
+            Left = 24
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTLipChange
+            TabOrder = 3
+          end
+          object PBTMAT: TPBNumEdit
+            Left = 24
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTMATChange
+            OnExit = PBTMATExit
+            TabOrder = 4
+          end
+          object PBTAmidon: TPBNumEdit
+            Left = 24
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTAmidonChange
+            TabOrder = 6
+          end
+          object PBTSucres: TPBNumEdit
+            Left = 24
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTSucresChange
+            TabOrder = 7
+          end
+          object CBAAsMAT: TCheckBox
+            Left = 72
+            Top = 138
+            Width = 17
+            Height = 17
+            Hint = 
+              'Check the checkbox to maintain a constant ratio between crude pr' +
+              'otein and the amino acids'
+            TabStop = False
+            Checked = True
+            ParentShowHint = False
+            ShowHint = True
+            State = cbChecked
+            TabOrder = 5
+          end
+          object PBTResidu: TPBNumEdit
+            Left = 24
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            OnChange = PBTSucresChange
+            TabOrder = 8
+          end
+        end
+      end
+    end
+    object TSAA: TTabSheet
+      HelpContext = 1200
+      Caption = 'Amino acids'
+      ImageIndex = 1
+      object GBAA: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 560
+        Height = 384
+        Caption = 'Content, ileal digestibility and ideal protein'
+        TabOrder = 0
+        object LMAT2: TLabel
+          Left = 8
+          Top = 60
+          Width = 63
+          Height = 13
+          Caption = 'Crude protein'
+        end
+        object LLys: TLabel
+          Left = 8
+          Top = 84
+          Width = 30
+          Height = 13
+          Caption = 'Lysine'
+        end
+        object LMet: TLabel
+          Left = 8
+          Top = 108
+          Width = 52
+          Height = 13
+          Caption = 'Methionine'
+        end
+        object LCys: TLabel
+          Left = 8
+          Top = 132
+          Width = 34
+          Height = 13
+          Caption = 'Cystine'
+        end
+        object LTrp: TLabel
+          Left = 8
+          Top = 156
+          Width = 54
+          Height = 13
+          Caption = 'Tryptophan'
+        end
+        object LThr: TLabel
+          Left = 8
+          Top = 180
+          Width = 48
+          Height = 13
+          Caption = 'Threonine'
+        end
+        object LPhe: TLabel
+          Left = 8
+          Top = 204
+          Width = 66
+          Height = 13
+          Caption = 'Phenylalanine'
+        end
+        object LTyr: TLabel
+          Left = 8
+          Top = 228
+          Width = 40
+          Height = 13
+          Caption = 'Tyrosine'
+        end
+        object LLeu: TLabel
+          Left = 8
+          Top = 252
+          Width = 38
+          Height = 13
+          Caption = 'Leucine'
+        end
+        object LIle: TLabel
+          Left = 8
+          Top = 276
+          Width = 48
+          Height = 13
+          Caption = 'Isoleucine'
+        end
+        object LVal: TLabel
+          Left = 8
+          Top = 300
+          Width = 29
+          Height = 13
+          Caption = 'Valine'
+        end
+        object LHis: TLabel
+          Left = 8
+          Top = 324
+          Width = 40
+          Height = 13
+          Caption = 'Histidine'
+        end
+        object LArg: TLabel
+          Left = 8
+          Top = 348
+          Width = 38
+          Height = 13
+          Caption = 'Arginine'
+        end
+        object GBTAA: TGroupBox
+          Left = 88
+          Top = 16
+          Width = 96
+          Height = 360
+          Caption = 'Content'
+          TabOrder = 0
+          object PBTVal: TPBNumEdit
+            Left = 24
+            Top = 280
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTValChange
+            TabOrder = 11
+          end
+          object PBTMAT2: TPBNumEdit
+            Left = 24
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBTLys: TPBNumEdit
+            Left = 24
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTLysChange
+            OnExit = PBTLysExit
+            TabOrder = 1
+          end
+          object PBTMet: TPBNumEdit
+            Left = 24
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTMetChange
+            TabOrder = 3
+          end
+          object PBTCys: TPBNumEdit
+            Left = 24
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTCysChange
+            TabOrder = 4
+          end
+          object PBTTrp: TPBNumEdit
+            Left = 24
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTTrpChange
+            TabOrder = 5
+          end
+          object PBTThr: TPBNumEdit
+            Left = 24
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTThrChange
+            TabOrder = 6
+          end
+          object PBTPhe: TPBNumEdit
+            Left = 24
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTPheChange
+            TabOrder = 7
+          end
+          object PBTTyr: TPBNumEdit
+            Left = 24
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTTyrChange
+            TabOrder = 8
+          end
+          object PBTLeu: TPBNumEdit
+            Left = 24
+            Top = 232
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTLeuChange
+            TabOrder = 9
+          end
+          object PBTIle: TPBNumEdit
+            Left = 24
+            Top = 256
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTIleChange
+            TabOrder = 10
+          end
+          object PBTArg: TPBNumEdit
+            Left = 24
+            Top = 328
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTArgChange
+            TabOrder = 13
+          end
+          object PBTHis: TPBNumEdit
+            Left = 24
+            Top = 304
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBTHisChange
+            TabOrder = 12
+          end
+          object CBAAsLys: TCheckBox
+            Left = 72
+            Top = 66
+            Width = 17
+            Height = 17
+            Hint = 
+              'Check the checkbox to maintain a constant ratio between lysine a' +
+              'nd the other amino acids (ideal protein)'
+            TabStop = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 2
+            OnClick = CBAAsLysClick
+          end
+        end
+        object GBdAA: TGroupBox
+          Left = 192
+          Top = 16
+          Width = 176
+          Height = 360
+          Caption = 'Digestibility'
+          TabOrder = 1
+          object LdAAStd: TLabel
+            Left = 4
+            Top = 20
+            Width = 88
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Standardized'
+          end
+          object LdAAApp: TLabel
+            Left = 92
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Apparent'
+          end
+          object PBdArgStd: TPBNumEdit
+            Left = 28
+            Top = 328
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdArgStdChange
+            TabOrder = 12
+          end
+          object PBdMATStd: TPBNumEdit
+            Left = 28
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMATStdChange
+            TabOrder = 0
+          end
+          object PBdLysStd: TPBNumEdit
+            Left = 28
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdLysStdChange
+            TabOrder = 1
+          end
+          object PBdMetStd: TPBNumEdit
+            Left = 28
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdMetStdChange
+            TabOrder = 2
+          end
+          object PBdCysStd: TPBNumEdit
+            Left = 28
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdCysStdChange
+            TabOrder = 3
+          end
+          object PBdTrpStd: TPBNumEdit
+            Left = 28
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdTrpStdChange
+            TabOrder = 4
+          end
+          object PBdThrStd: TPBNumEdit
+            Left = 28
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdThrStdChange
+            TabOrder = 5
+          end
+          object PBdPheStd: TPBNumEdit
+            Left = 28
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdPheStdChange
+            TabOrder = 6
+          end
+          object PBdTyrStd: TPBNumEdit
+            Left = 28
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdTyrStdChange
+            TabOrder = 7
+          end
+          object PBdLeuStd: TPBNumEdit
+            Left = 28
+            Top = 232
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdLeuStdChange
+            TabOrder = 8
+          end
+          object PBdIleStd: TPBNumEdit
+            Left = 28
+            Top = 256
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdIleStdChange
+            TabOrder = 9
+          end
+          object PBdValStd: TPBNumEdit
+            Left = 28
+            Top = 280
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdValStdChange
+            TabOrder = 10
+          end
+          object PBdHisStd: TPBNumEdit
+            Left = 28
+            Top = 304
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBdHisStdChange
+            TabOrder = 11
+          end
+          object PBdMATApp: TPBNumEdit
+            Left = 112
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 13
+          end
+          object PBdLysApp: TPBNumEdit
+            Left = 112
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 14
+          end
+          object PBdMetApp: TPBNumEdit
+            Left = 112
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 15
+          end
+          object PBdCysApp: TPBNumEdit
+            Left = 112
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 16
+          end
+          object PBdTrpApp: TPBNumEdit
+            Left = 112
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 17
+          end
+          object PBdThrApp: TPBNumEdit
+            Left = 112
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 18
+          end
+          object PBdPheApp: TPBNumEdit
+            Left = 112
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 19
+          end
+          object PBdTyrApp: TPBNumEdit
+            Left = 112
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 20
+          end
+          object PBdLeuApp: TPBNumEdit
+            Left = 112
+            Top = 232
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 21
+          end
+          object PBdIleApp: TPBNumEdit
+            Left = 112
+            Top = 256
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 22
+          end
+          object PBdValApp: TPBNumEdit
+            Left = 112
+            Top = 280
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 23
+          end
+          object PBdHisApp: TPBNumEdit
+            Left = 112
+            Top = 304
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 24
+          end
+          object PBdArgApp: TPBNumEdit
+            Left = 112
+            Top = 328
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 2
+            NumberFormat = Standard
+            TabOrder = 25
+          end
+        end
+        object GBProt: TGroupBox
+          Left = 376
+          Top = 16
+          Width = 176
+          Height = 360
+          Caption = 'Ideal protein (% Lys)'
+          TabOrder = 2
+          object LProtStd: TLabel
+            Left = 4
+            Top = 20
+            Width = 88
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Standardized'
+          end
+          object LProtTot: TLabel
+            Left = 92
+            Top = 20
+            Width = 80
+            Height = 13
+            Alignment = taCenter
+            AutoSize = False
+            Caption = 'Total'
+          end
+          object PBProtTrpStd: TPBNumEdit
+            Left = 28
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 3
+          end
+          object PBProtLysStd: TPBNumEdit
+            Left = 28
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBProtMetStd: TPBNumEdit
+            Left = 28
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBProtCysStd: TPBNumEdit
+            Left = 28
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 2
+          end
+          object PBProtThrStd: TPBNumEdit
+            Left = 28
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 4
+          end
+          object PBProtPheStd: TPBNumEdit
+            Left = 28
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 5
+          end
+          object PBProtTyrStd: TPBNumEdit
+            Left = 28
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 6
+          end
+          object PBProtLeuStd: TPBNumEdit
+            Left = 28
+            Top = 232
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 7
+          end
+          object PBProtIleStd: TPBNumEdit
+            Left = 28
+            Top = 256
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 8
+          end
+          object PBProtValStd: TPBNumEdit
+            Left = 28
+            Top = 280
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 9
+          end
+          object PBProtHisStd: TPBNumEdit
+            Left = 28
+            Top = 304
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 10
+          end
+          object PBProtArgStd: TPBNumEdit
+            Left = 28
+            Top = 328
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 11
+          end
+          object PBProtLysTot: TPBNumEdit
+            Left = 112
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 12
+          end
+          object PBProtMetTot: TPBNumEdit
+            Left = 112
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 13
+          end
+          object PBProtCysTot: TPBNumEdit
+            Left = 112
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 14
+          end
+          object PBProtTrpTot: TPBNumEdit
+            Left = 112
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 15
+          end
+          object PBProtThrTot: TPBNumEdit
+            Left = 112
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 16
+          end
+          object PBProtPheTot: TPBNumEdit
+            Left = 112
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 17
+          end
+          object PBProtTyrTot: TPBNumEdit
+            Left = 112
+            Top = 208
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 18
+          end
+          object PBProtLeuTot: TPBNumEdit
+            Left = 112
+            Top = 232
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 19
+          end
+          object PBProtIleTot: TPBNumEdit
+            Left = 112
+            Top = 256
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 20
+          end
+          object PBProtValTot: TPBNumEdit
+            Left = 112
+            Top = 280
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 21
+          end
+          object PBProtHisTot: TPBNumEdit
+            Left = 112
+            Top = 304
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 22
+          end
+          object PBProtArgTot: TPBNumEdit
+            Left = 112
+            Top = 328
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 23
+          end
+        end
+      end
+      object GBCompAA: TGroupBox
+        Left = 568
+        Top = 0
+        Width = 168
+        Height = 384
+        Caption = 'Additional information'
+        TabOrder = 1
+        object GBMetCys: TGroupBox
+          Left = 8
+          Top = 16
+          Width = 152
+          Height = 96
+          Hint = 'Total methionine and cystine'
+          Caption = 'Met + Cys'
+          TabOrder = 0
+          object LTMetCys: TLabel
+            Left = 8
+            Top = 20
+            Width = 37
+            Height = 13
+            Caption = 'Content'
+          end
+          object LdMetCys: TLabel
+            Left = 8
+            Top = 44
+            Width = 72
+            Height = 13
+            Caption = 'Std. digestibility'
+          end
+          object LProtMetCys: TLabel
+            Left = 8
+            Top = 68
+            Width = 79
+            Height = 13
+            Caption = 'Std. ideal protein'
+          end
+          object PBdMetCysApp: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 4
+            Visible = False
+          end
+          object PBProtMetCysTot: TPBNumEdit
+            Left = 104
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 3
+            Visible = False
+          end
+          object PBTMetCys: TPBNumEdit
+            Left = 104
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBdMetCysStd: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBProtMetCysStd: TPBNumEdit
+            Left = 104
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 2
+          end
+        end
+        object GBTrp: TGroupBox
+          Left = 8
+          Top = 208
+          Width = 152
+          Height = 72
+          Hint = 
+            'Ratio between tryptophan et neutral amino acids (Phe+Tyr+Ile+Leu' +
+            '+Val)'
+          Caption = 'Trp / neutral AA (%)'
+          TabOrder = 1
+          object LTrpTot: TLabel
+            Left = 8
+            Top = 44
+            Width = 24
+            Height = 13
+            Caption = 'Total'
+          end
+          object LTrpStd: TLabel
+            Left = 8
+            Top = 20
+            Width = 62
+            Height = 13
+            Caption = 'Standardized'
+          end
+          object PBTrpTot: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBTrpStd: TPBNumEdit
+            Left = 104
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+        end
+        object GBPheTyr: TGroupBox
+          Left = 8
+          Top = 112
+          Width = 152
+          Height = 96
+          Hint = 'Total phenylalanine and tyrosine'
+          Caption = 'Phe + Tyr'
+          TabOrder = 2
+          object LTPheTyr: TLabel
+            Left = 8
+            Top = 20
+            Width = 37
+            Height = 13
+            Caption = 'Content'
+          end
+          object LdPheTyr: TLabel
+            Left = 8
+            Top = 44
+            Width = 72
+            Height = 13
+            Caption = 'Std. digestibility'
+          end
+          object LProtPheTyr: TLabel
+            Left = 8
+            Top = 68
+            Width = 79
+            Height = 13
+            Caption = 'Std. ideal protein'
+          end
+          object PBdPheTyrApp: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 4
+          end
+          object PBProtPheTyrTot: TPBNumEdit
+            Left = 104
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 3
+          end
+          object PBTPheTyr: TPBNumEdit
+            Left = 104
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+          object PBdPheTyrStd: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBProtPheTyrStd: TPBNumEdit
+            Left = 104
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 2
+          end
+        end
+        object GBEAA: TGroupBox
+          Left = 8
+          Top = 280
+          Width = 152
+          Height = 72
+          Hint = 'Ratio between essential amino acid nitrogen and total nitrogen'
+          Caption = 'EAA-N / N (%)'
+          TabOrder = 3
+          object LEAATot: TLabel
+            Left = 8
+            Top = 44
+            Width = 24
+            Height = 13
+            Caption = 'Total'
+          end
+          object LEAAStd: TLabel
+            Left = 8
+            Top = 20
+            Width = 62
+            Height = 13
+            Caption = 'Standardized'
+          end
+          object PBEAATot: TPBNumEdit
+            Left = 104
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 1
+          end
+          object PBEAAStd: TPBNumEdit
+            Left = 104
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Enabled = False
+            Decimals = 1
+            NumberFormat = Standard
+            TabOrder = 0
+          end
+        end
+      end
+    end
+    object TSAG: TTabSheet
+      HelpContext = 1300
+      Caption = 'Fatty acids'
+      ImageIndex = 2
+      object LAG: TLabel
+        Left = 8
+        Top = 308
+        Width = 101
+        Height = 13
+        Caption = 'Fatty acids (% of lipid)'
+      end
+      object LLip2: TLabel
+        Left = 8
+        Top = 284
+        Width = 75
+        Height = 13
+        Caption = 'Crude fat (g/kg)'
+      end
+      object LSatur: TLabel
+        Left = 328
+        Top = 284
+        Width = 114
+        Height = 13
+        Caption = 'Saturated fatty acids (%)'
+      end
+      object LMono: TLabel
+        Left = 328
+        Top = 308
+        Width = 154
+        Height = 13
+        Caption = 'Mono-unsaturated fatty acids (%)'
+      end
+      object LPoly: TLabel
+        Left = 328
+        Top = 332
+        Width = 147
+        Height = 13
+        Caption = 'Poly-unsaturated fatty acids (%)'
+      end
+      object LO6sO3: TLabel
+        Left = 328
+        Top = 356
+        Width = 97
+        Height = 13
+        Caption = 'Omega-6 / Omega-3'
+      end
+      object GBTAG: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 616
+        Height = 264
+        Caption = 'Content'
+        TabOrder = 0
+        object LC6C8C10: TLabel
+          Left = 8
+          Top = 36
+          Width = 80
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C6 + C8 + C10'
+        end
+        object LC24: TLabel
+          Left = 48
+          Top = 204
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C24'
+        end
+        object LC22: TLabel
+          Left = 48
+          Top = 180
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C22'
+        end
+        object LC20: TLabel
+          Left = 48
+          Top = 156
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C20'
+        end
+        object LC18: TLabel
+          Left = 48
+          Top = 132
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C18'
+        end
+        object LC14: TLabel
+          Left = 48
+          Top = 84
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C14'
+        end
+        object LC16: TLabel
+          Left = 48
+          Top = 108
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C16'
+        end
+        object LC12: TLabel
+          Left = 48
+          Top = 60
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'C12'
+        end
+        object LCtot: TLabel
+          Left = 48
+          Top = 228
+          Width = 40
+          Height = 13
+          Alignment = taRightJustify
+          AutoSize = False
+          Caption = 'Total'
+        end
+        object GBAGtot: TGroupBox
+          Left = 104
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:m)'
+          TabOrder = 35
+        end
+        object GBAG0: TGroupBox
+          Left = 168
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:0)'
+          TabOrder = 36
+        end
+        object GBAG1: TGroupBox
+          Left = 232
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:1)'
+          TabOrder = 37
+        end
+        object GBAG2: TGroupBox
+          Left = 296
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:2)'
+          TabOrder = 38
+        end
+        object GBAG3: TGroupBox
+          Left = 360
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:3)'
+          TabOrder = 39
+        end
+        object GBAG4: TGroupBox
+          Left = 424
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:4)'
+          TabOrder = 40
+        end
+        object GBAG5: TGroupBox
+          Left = 488
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:5)'
+          TabOrder = 41
+        end
+        object GBAG6: TGroupBox
+          Left = 552
+          Top = 16
+          Width = 56
+          Height = 240
+          Caption = 'C(n:6)'
+          TabOrder = 42
+        end
+        object PBC12_tot: TPBNumEdit
+          Left = 112
+          Top = 56
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 2
+        end
+        object PBCtot_tot: TPBNumEdit
+          Left = 112
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 27
+        end
+        object PBC6C8C10_tot: TPBNumEdit
+          Left = 112
+          Top = 32
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 0
+        end
+        object PBC24_tot: TPBNumEdit
+          Left = 112
+          Top = 200
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 25
+        end
+        object PBC22_tot: TPBNumEdit
+          Left = 112
+          Top = 176
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 20
+        end
+        object PBC20_tot: TPBNumEdit
+          Left = 112
+          Top = 152
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 15
+        end
+        object PBC18_tot: TPBNumEdit
+          Left = 112
+          Top = 128
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 9
+        end
+        object PBC16_tot: TPBNumEdit
+          Left = 112
+          Top = 104
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 6
+        end
+        object PBC14_tot: TPBNumEdit
+          Left = 112
+          Top = 80
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 4
+        end
+        object PBC12_0: TPBNumEdit
+          Left = 176
+          Top = 56
+          Width = 40
+          Height = 21
+          Hint = 'Lauric acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC12_0Change
+          TabOrder = 3
+        end
+        object PBCtot_0: TPBNumEdit
+          Left = 176
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 28
+        end
+        object PBC6C8C10_0: TPBNumEdit
+          Left = 176
+          Top = 32
+          Width = 40
+          Height = 21
+          Hint = 'Caproic, caprylic and capric acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC6C8C10_0Change
+          TabOrder = 1
+        end
+        object PBC24_0: TPBNumEdit
+          Left = 176
+          Top = 200
+          Width = 40
+          Height = 21
+          Hint = 'Lignoceric acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC24_0Change
+          TabOrder = 26
+        end
+        object PBC22_0: TPBNumEdit
+          Left = 176
+          Top = 176
+          Width = 40
+          Height = 21
+          Hint = 'Behenic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC22_0Change
+          TabOrder = 21
+        end
+        object PBC20_0: TPBNumEdit
+          Left = 176
+          Top = 152
+          Width = 40
+          Height = 21
+          Hint = 'Arachidic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC20_0Change
+          TabOrder = 16
+        end
+        object PBC18_0: TPBNumEdit
+          Left = 176
+          Top = 128
+          Width = 40
+          Height = 21
+          Hint = 'Stearic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC18_0Change
+          TabOrder = 10
+        end
+        object PBC16_0: TPBNumEdit
+          Left = 176
+          Top = 104
+          Width = 40
+          Height = 21
+          Hint = 'Palmitic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC16_0Change
+          TabOrder = 7
+        end
+        object PBC14_0: TPBNumEdit
+          Left = 176
+          Top = 80
+          Width = 40
+          Height = 21
+          Hint = 'Myristic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC14_0Change
+          TabOrder = 5
+        end
+        object PBC16_1: TPBNumEdit
+          Left = 240
+          Top = 104
+          Width = 40
+          Height = 21
+          Hint = 'Palmitoleic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC16_1Change
+          TabOrder = 8
+        end
+        object PBCtot_1: TPBNumEdit
+          Left = 240
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 29
+        end
+        object PBC22_1: TPBNumEdit
+          Left = 240
+          Top = 176
+          Width = 40
+          Height = 21
+          Hint = 'Erucic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC22_1Change
+          TabOrder = 22
+        end
+        object PBC20_1: TPBNumEdit
+          Left = 240
+          Top = 152
+          Width = 40
+          Height = 21
+          Hint = 'Gadoleic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC20_1Change
+          TabOrder = 17
+        end
+        object PBC18_1: TPBNumEdit
+          Left = 240
+          Top = 128
+          Width = 40
+          Height = 21
+          Hint = 'Oleic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC18_1Change
+          TabOrder = 11
+        end
+        object PBC18_2: TPBNumEdit
+          Left = 304
+          Top = 128
+          Width = 40
+          Height = 21
+          Hint = 'Linoleic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC18_2Change
+          TabOrder = 12
+        end
+        object PBCtot_2: TPBNumEdit
+          Left = 304
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 30
+        end
+        object PBC18_3: TPBNumEdit
+          Left = 368
+          Top = 128
+          Width = 40
+          Height = 21
+          Hint = 'Linolenic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC18_3Change
+          TabOrder = 13
+        end
+        object PBCtot_3: TPBNumEdit
+          Left = 368
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 31
+        end
+        object PBC18_4: TPBNumEdit
+          Left = 432
+          Top = 128
+          Width = 40
+          Height = 21
+          Hint = 'Parinaric acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC18_4Change
+          TabOrder = 14
+        end
+        object PBCtot_4: TPBNumEdit
+          Left = 432
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 32
+        end
+        object PBC20_4: TPBNumEdit
+          Left = 432
+          Top = 152
+          Width = 40
+          Height = 21
+          Hint = 'Arachidonic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC20_4Change
+          TabOrder = 18
+        end
+        object PBC20_5: TPBNumEdit
+          Left = 496
+          Top = 152
+          Width = 40
+          Height = 21
+          Hint = 'Timnodonic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC20_5Change
+          TabOrder = 19
+        end
+        object PBCtot_5: TPBNumEdit
+          Left = 496
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 33
+        end
+        object PBC22_5: TPBNumEdit
+          Left = 496
+          Top = 176
+          Width = 40
+          Height = 21
+          Hint = 'Clupanodonic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC22_5Change
+          TabOrder = 23
+        end
+        object PBC22_6: TPBNumEdit
+          Left = 560
+          Top = 176
+          Width = 40
+          Height = 21
+          Hint = 'Docosa hexaenoic acid'
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBC22_6Change
+          TabOrder = 24
+        end
+        object PBCtot_6: TPBNumEdit
+          Left = 560
+          Top = 224
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 34
+        end
+      end
+      object PBAG: TPBNumEdit
+        Left = 208
+        Top = 304
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 1
+        NumberFormat = Standard
+        OnChange = PBAGChange
+        TabOrder = 2
+      end
+      object PBLip2: TPBNumEdit
+        Left = 208
+        Top = 280
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 1
+        NumberFormat = Standard
+        TabOrder = 1
+      end
+      object PBSatur: TPBNumEdit
+        Left = 528
+        Top = 280
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 1
+        NumberFormat = Standard
+        TabOrder = 3
+      end
+      object PBMono: TPBNumEdit
+        Left = 528
+        Top = 304
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 1
+        NumberFormat = Standard
+        TabOrder = 4
+      end
+      object PBPoly: TPBNumEdit
+        Left = 528
+        Top = 328
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 1
+        NumberFormat = Standard
+        TabOrder = 5
+      end
+      object PBO6sO3: TPBNumEdit
+        Left = 528
+        Top = 352
+        Width = 40
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 1
+        NumberFormat = Standard
+        TabOrder = 6
+      end
+    end
+    object TSMineraux: TTabSheet
+      HelpContext = 1400
+      Caption = 'Minerals'
+      ImageIndex = 3
+      object LBilanCA: TLabel
+        Left = 8
+        Top = 260
+        Width = 147
+        Height = 13
+        Caption = 'Cation-anion balance (mEq/kg)'
+      end
+      object LBilanE: TLabel
+        Left = 8
+        Top = 284
+        Width = 137
+        Height = 13
+        Caption = 'Electrolyte balance (mEq/kg)'
+      end
+      object GBP: TGroupBox
+        Left = 416
+        Top = 0
+        Width = 216
+        Height = 240
+        Caption = 'Phosphorus digestion and metabolism'
+        TabOrder = 2
+        object LPdig: TLabel
+          Left = 8
+          Top = 44
+          Width = 104
+          Height = 13
+          Caption = 'Digestible phosphorus'
+        end
+        object LPhytase: TLabel
+          Left = 8
+          Top = 116
+          Width = 137
+          Height = 13
+          Caption = 'Phytic acid phosphorus (% P)'
+        end
+        object LActPhyt: TLabel
+          Left = 8
+          Top = 140
+          Width = 74
+          Height = 13
+          Caption = 'Phytase activity'
+        end
+        object LCasP: TLabel
+          Left = 8
+          Top = 212
+          Width = 31
+          Height = 13
+          Caption = 'Ca / P'
+        end
+        object LPtot: TLabel
+          Left = 8
+          Top = 20
+          Width = 82
+          Height = 13
+          Caption = 'Total phosphorus'
+        end
+        object LPdigF: TLabel
+          Left = 32
+          Top = 92
+          Width = 31
+          Height = 13
+          Caption = '- mash'
+        end
+        object LActPhytM: TLabel
+          Left = 32
+          Top = 188
+          Width = 84
+          Height = 13
+          Caption = '- microbial (IU/kg)'
+        end
+        object LActPhytE: TLabel
+          Left = 32
+          Top = 164
+          Width = 102
+          Height = 13
+          Caption = '- endogenous (IU/kg)'
+        end
+        object LPdigG: TLabel
+          Left = 32
+          Top = 68
+          Width = 36
+          Height = 13
+          Caption = '- pellets'
+        end
+        object PBPhytase: TPBNumEdit
+          Left = 168
+          Top = 112
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 1
+          NumberFormat = Standard
+          OnChange = PBPhytaseChange
+          TabOrder = 3
+        end
+        object PBPdigG: TPBNumEdit
+          Left = 168
+          Top = 64
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBPdigGChange
+          TabOrder = 1
+        end
+        object PBActPhytE: TPBNumEdit
+          Left = 168
+          Top = 160
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBActPhytEChange
+          TabOrder = 4
+        end
+        object PBCasP: TPBNumEdit
+          Left = 168
+          Top = 208
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 6
+        end
+        object PBPtot: TPBNumEdit
+          Left = 168
+          Top = 16
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Enabled = False
+          Decimals = 2
+          NumberFormat = Standard
+          TabOrder = 0
+        end
+        object PBPdigF: TPBNumEdit
+          Left = 168
+          Top = 88
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBPdigFChange
+          TabOrder = 2
+        end
+        object PBActPhytM: TPBNumEdit
+          Left = 160
+          Top = 184
+          Width = 48
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBActPhytMChange
+          TabOrder = 5
+        end
+      end
+      object GBMacro: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 200
+        Height = 216
+        Caption = 'Macro-elements'
+        TabOrder = 0
+        object LCa: TLabel
+          Left = 8
+          Top = 36
+          Width = 59
+          Height = 13
+          Caption = 'Calcium (Ca)'
+        end
+        object LP: TLabel
+          Left = 8
+          Top = 60
+          Width = 72
+          Height = 13
+          Caption = 'Phosphorus (P)'
+        end
+        object LMg: TLabel
+          Left = 8
+          Top = 132
+          Width = 78
+          Height = 13
+          Caption = 'Magnesium (Mg)'
+        end
+        object LCl: TLabel
+          Left = 8
+          Top = 156
+          Width = 56
+          Height = 13
+          Caption = 'Chlorine (Cl)'
+        end
+        object LK: TLabel
+          Left = 8
+          Top = 108
+          Width = 64
+          Height = 13
+          Caption = 'Potassium (K)'
+        end
+        object LNa: TLabel
+          Left = 8
+          Top = 84
+          Width = 58
+          Height = 13
+          Caption = 'Sodium (Na)'
+        end
+        object LS: TLabel
+          Left = 8
+          Top = 180
+          Width = 43
+          Height = 13
+          Caption = 'Sulfur (S)'
+        end
+        object GBTMacro: TGroupBox
+          Left = 104
+          Top = 16
+          Width = 88
+          Height = 192
+          Caption = 'Content'
+          TabOrder = 0
+          object PBCa: TPBNumEdit
+            Left = 24
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBCaChange
+            TabOrder = 0
+          end
+          object PBP: TPBNumEdit
+            Left = 24
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBPChange
+            TabOrder = 1
+          end
+          object PBMg: TPBNumEdit
+            Left = 24
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBMgChange
+            TabOrder = 4
+          end
+          object PBCl: TPBNumEdit
+            Left = 24
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBClChange
+            TabOrder = 5
+          end
+          object PBK: TPBNumEdit
+            Left = 24
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBKChange
+            TabOrder = 3
+          end
+          object PBNa: TPBNumEdit
+            Left = 24
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBNaChange
+            TabOrder = 2
+          end
+          object PBS: TPBNumEdit
+            Left = 24
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBSChange
+            TabOrder = 6
+          end
+        end
+      end
+      object GBOligo: TGroupBox
+        Left = 208
+        Top = 0
+        Width = 200
+        Height = 240
+        Caption = 'Trace-elements'
+        TabOrder = 1
+        object LZn: TLabel
+          Left = 8
+          Top = 60
+          Width = 43
+          Height = 13
+          Caption = 'Zinc (Zn)'
+        end
+        object LCu: TLabel
+          Left = 8
+          Top = 36
+          Width = 56
+          Height = 13
+          Caption = 'Copper (Cu)'
+        end
+        object LFe: TLabel
+          Left = 8
+          Top = 108
+          Width = 39
+          Height = 13
+          Caption = 'Iron (Fe)'
+        end
+        object LMn: TLabel
+          Left = 8
+          Top = 84
+          Width = 80
+          Height = 13
+          Caption = 'Manganese (Mn)'
+        end
+        object LCo: TLabel
+          Left = 8
+          Top = 156
+          Width = 52
+          Height = 13
+          Caption = 'Cobalt (Co)'
+        end
+        object LSe: TLabel
+          Left = 8
+          Top = 132
+          Width = 65
+          Height = 13
+          Caption = 'Selenium (Se)'
+        end
+        object LI: TLabel
+          Left = 8
+          Top = 204
+          Width = 41
+          Height = 13
+          Caption = 'Iodine (I)'
+        end
+        object LMb: TLabel
+          Left = 8
+          Top = 180
+          Width = 76
+          Height = 13
+          Caption = 'Molybdene (Mo)'
+        end
+        object GBTOligo: TGroupBox
+          Left = 104
+          Top = 16
+          Width = 88
+          Height = 216
+          Caption = 'Content'
+          TabOrder = 0
+          object PBCu: TPBNumEdit
+            Left = 24
+            Top = 16
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBCuChange
+            TabOrder = 0
+          end
+          object PBFe: TPBNumEdit
+            Left = 24
+            Top = 88
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBFeChange
+            TabOrder = 3
+          end
+          object PBMn: TPBNumEdit
+            Left = 24
+            Top = 64
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBMnChange
+            TabOrder = 2
+          end
+          object PBZn: TPBNumEdit
+            Left = 24
+            Top = 40
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBZnChange
+            TabOrder = 1
+          end
+          object PBSe: TPBNumEdit
+            Left = 24
+            Top = 112
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBSeChange
+            TabOrder = 4
+          end
+          object PBI: TPBNumEdit
+            Left = 24
+            Top = 184
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBIChange
+            TabOrder = 7
+          end
+          object PBMb: TPBNumEdit
+            Left = 24
+            Top = 160
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBMbChange
+            TabOrder = 6
+          end
+          object PBCo: TPBNumEdit
+            Left = 24
+            Top = 136
+            Width = 40
+            Height = 21
+            Alignment = taRightJustify
+            Decimals = 2
+            NumberFormat = Standard
+            OnChange = PBCoChange
+            TabOrder = 5
+          end
+        end
+      end
+      object PBBilanCA: TPBNumEdit
+        Left = 208
+        Top = 256
+        Width = 56
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 0
+        NumberFormat = Standard
+        TabOrder = 3
+      end
+      object PBBilanE: TPBNumEdit
+        Left = 208
+        Top = 280
+        Width = 56
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 0
+        NumberFormat = Standard
+        TabOrder = 4
+      end
+    end
+    object TSFibres: TTabSheet
+      HelpContext = 1500
+      Caption = 'Fiber'
+      ImageIndex = 4
+      object GBFibres: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 144
+        Caption = 'Content'
+        TabOrder = 0
+        object LNDF: TLabel
+          Left = 8
+          Top = 44
+          Width = 22
+          Height = 13
+          Caption = 'NDF'
+        end
+        object LCB: TLabel
+          Left = 8
+          Top = 20
+          Width = 51
+          Height = 13
+          Caption = 'Crude fiber'
+        end
+        object LParois: TLabel
+          Left = 8
+          Top = 116
+          Width = 81
+          Height = 13
+          Caption = 'Total dietary fiber'
+        end
+        object LADL: TLabel
+          Left = 8
+          Top = 92
+          Width = 21
+          Height = 13
+          Caption = 'ADL'
+        end
+        object LADF: TLabel
+          Left = 8
+          Top = 68
+          Width = 21
+          Height = 13
+          Caption = 'ADF'
+        end
+        object PBParois: TPBNumEdit
+          Left = 128
+          Top = 112
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBParoisChange
+          TabOrder = 4
+        end
+        object PBADL: TPBNumEdit
+          Left = 128
+          Top = 88
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBADLChange
+          TabOrder = 3
+        end
+        object PBADF: TPBNumEdit
+          Left = 128
+          Top = 64
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBADFChange
+          TabOrder = 2
+        end
+        object PBNDF: TPBNumEdit
+          Left = 128
+          Top = 40
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBNDFChange
+          TabOrder = 1
+        end
+        object PBCB: TPBNumEdit
+          Left = 128
+          Top = 16
+          Width = 40
+          Height = 21
+          Alignment = taRightJustify
+          Decimals = 2
+          NumberFormat = Standard
+          OnChange = PBCBChange
+          TabOrder = 0
+        end
+      end
+      object LBRap: TListBox
+        Left = 200
+        Top = 8
+        Width = 104
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'as-fed'
+          'DM basis')
+        TabOrder = 1
+        Visible = False
+      end
+      object LBDig: TListBox
+        Left = 320
+        Top = 8
+        Width = 104
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'Digestibility'
+          'Digestible content')
+        TabOrder = 2
+        Visible = False
+      end
+      object LBdCompo: TListBox
+        Left = 320
+        Top = 40
+        Width = 64
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%')
+        TabOrder = 3
+        Visible = False
+      end
+      object LBdAA: TListBox
+        Left = 320
+        Top = 72
+        Width = 64
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%')
+        TabOrder = 4
+        Visible = False
+      end
+      object LBTCompo: TListBox
+        Left = 200
+        Top = 40
+        Width = 104
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%')
+        TabOrder = 5
+        Visible = False
+      end
+      object LBTAA: TListBox
+        Left = 200
+        Top = 72
+        Width = 104
+        Height = 43
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%'
+          '% CP')
+        TabOrder = 6
+        Visible = False
+      end
+      object LBTAG: TListBox
+        Left = 200
+        Top = 120
+        Width = 104
+        Height = 43
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%'
+          '% fatty acids')
+        TabOrder = 7
+        Visible = False
+      end
+      object LBTMacro: TListBox
+        Left = 200
+        Top = 168
+        Width = 104
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%')
+        TabOrder = 8
+        Visible = False
+      end
+      object LBTOligo: TListBox
+        Left = 200
+        Top = 200
+        Width = 104
+        Height = 17
+        ItemHeight = 13
+        Items.Strings = (
+          'mg/kg')
+        TabOrder = 9
+        Visible = False
+      end
+      object LBTFibres: TListBox
+        Left = 200
+        Top = 224
+        Width = 104
+        Height = 30
+        ItemHeight = 13
+        Items.Strings = (
+          'g/kg'
+          '%')
+        TabOrder = 10
+        Visible = False
+      end
+    end
+  end
+end
Index: UFCalibrage.pas
===================================================================
--- UFCalibrage.pas	(révision 0)
+++ UFCalibrage.pas	(révision 3)
@@ -0,0 +1,395 @@
+unit UFCalibrage;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons, dmath;
+
+type
+  TFCalibrage = class(TForm)
+    BBOk: TBitBtn;
+    LTitle: TLabel;
+    LMethod: TLabel;
+    LTime: TLabel;
+    ETime: TEdit;
+    LPV: TLabel;
+    LP2: TLabel;
+    EPVRSD: TEdit;
+    EP2RSD: TEdit;
+    EPVR2: TEdit;
+    LInitial: TLabel;
+    LFinal: TLabel;
+    ECoefEntGestInitial: TEdit;
+    LStDev: TLabel;
+    LCoefEntGest: TLabel;
+    LCoefEntLact: TLabel;
+    LRatioLipProt: TLabel;
+    LInfo: TLabel;
+    ECoefEntLactInitial: TEdit;
+    ERatioLipProtInitial: TEdit;
+    ECoefEntGestFinal: TEdit;
+    ECoefEntLactFinal: TEdit;
+    ERatioLipProtFinal: TEdit;
+    ECoefEntGestStDev: TEdit;
+    ECoefEntLactStDev: TEdit;
+    ERatioLipProtStDev: TEdit;
+    EMethod: TEdit;
+    GBParam: TGroupBox;
+    GBVariables: TGroupBox;
+    EP2R2: TEdit;
+    EPVVar: TEdit;
+    EP2Var: TEdit;
+    LR2: TLabel;
+    LRSD: TLabel;
+    LVar: TLabel;
+    Lw: TLabel;
+    EwP2: TEdit;
+    EwPds: TEdit;
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Pds, P2: TVector;
+    X, G: TVector;
+    H_inv: TMatrix;
+    F_min, Det: Float;
+    Freq, Start, Stop: Int64;
+    MPds, MP2: Extended;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FCalibrage: TFCalibrage;
+
+implementation
+
+uses
+  Graphics, Math, SysUtils, gnugettext, UVariables, UStrings, UFProfilT,
+  UCalcSimulT;
+
+{$R *.dfm}
+
+{ Calibration }
+
+const
+  NVar = 3;
+  NData = NB_CYCLES + NB_CYCLES - 1;
+  MaxIter = 100;
+  Tol = 1.0E-6;
+
+var
+  wPds, wP2: Extended;
+
+function Func(X: TVector): Float;
+var
+  cycle, jour: Integer;
+  GainProt: double;
+  PdsSail, P2Sail, PdsMB, P2MB: array[1..NB_CYCLES] of double;
+begin
+  PProfilT.CoefEntretienGest := X[1];
+  PProfilT.CoefEntretienLact := X[2];
+  PProfilT.RatioLipProt := X[3];
+  // calcul des CoefNR
+  for cycle := 1 to NB_CYCLES do
+    PProfilT.CoefNR[cycle] := 1;
+  CalcSimulT(-1, -1, 1, 1, 8, 0, PResSimulT);
+  GainProt := 0;
+  for jour := 1 to PResSimulT.NbJSim do
+    if PResSimulT.TabResult[3, jour] = 0
+    then // Gestation
+      GainProt := GainProt + PResSimulT.TabResult[63, jour]
+    else
+      if (PResSimulT.TabResult[3, jour] = 1) and (PResSimulT.TabResult[3, jour - 1] = 0)
+      then // Mise bas
+      begin
+        cycle := Round(PResSimulT.TabResult[2, jour]);
+        with PProfilT.Truies[cycle] do
+          PProfilT.CoefNR[cycle] := Math.Max((0.178 * (PdsApMB - PdsSail) - 0.333 * (P2MB - P2Sail)) / (GainProt / 1000), 0);
+        GainProt := 0;
+      end;
+  // �valuation du cas
+  CalcSimulT(-1, -1, 1, 1, 8, 0, PResSimulT);
+  FProfilT.PBCoefEntGest.AsFloat := PProfilT.CoefEntretienGest;
+  FProfilT.PBCoefEntLact.AsFloat := PProfilT.CoefEntretienLact;
+  FProfilT.PBRatioLipProt.AsFloat := 1 - PProfilT.RatioLipProt;
+  FProfilT.AffGraphCal;
+  if FProfilT.GaugeCalibr.Progress < FProfilT.GaugeCalibr.MaxValue
+  then
+    FProfilT.GaugeCalibr.AddProgress(1)
+  else
+    FProfilT.GaugeCalibr.Progress := 1;
+  Application.ProcessMessages;
+  // poids et �paisseur de lard apr�s gestation (mise bas)
+  for jour := 2 to PResSimulT.NbJSim do
+    if (PResSimulT.TabResult[3, jour] = 1) and (PResSimulT.TabResult[3, jour - 1] = 0)
+    then
+    begin
+      cycle := Round(PResSimulT.TabResult[2, jour]);
+      PdsMB[cycle] := PResSimulT.TabResult[60, jour - 1] + PResSimulT.TabResult[61, jour];
+      P2MB[cycle] := PResSimulT.TabResult[67, jour - 1] + PResSimulT.TabResult[68, jour];
+    end ;
+  // poids et �paisseur de lard apr�s lactation (saillie)
+  for jour := 2 to PResSimulT.NbJSim do
+    if (PResSimulT.TabResult[3, jour] = 0) and (PResSimulT.TabResult[3, jour - 1] = 2)
+    then
+      begin
+        cycle := Round(PResSimulT.TabResult[2, jour]);
+        PdsSail[cycle] := PResSimulT.TabResult[60, jour - 1] + PResSimulT.TabResult[61, jour];
+        P2Sail[cycle] := PResSimulT.TabResult[67, jour - 1] + PResSimulT.TabResult[68, jour];
+      end;
+  // �cart par rapport aux valeurs du profil
+  Result := 0;
+  for cycle := 1 to NB_CYCLES do
+    Result := Result + Power(PdsMB[cycle] - PProfilT.Truies[cycle].PdsApMB, 2) * wPds;
+  for cycle := 2 to NB_CYCLES do
+    Result := Result + Power(PdsSail[cycle] - PProfilT.Truies[cycle].PdsSail, 2) * wPds;
+  for cycle := 1 to NB_CYCLES do
+    Result := Result + Power(P2MB[cycle] - PProfilT.Truies[cycle].P2MB, 2) * wP2;
+  for cycle := 2 to NB_CYCLES do
+    Result := Result + Power(P2Sail[cycle] - PProfilT.Truies[cycle].P2Sail, 2) * wP2;
+end;
+
+// Newton-Raphson method
+// procedure HessGrad to compute the gradient G and the hessian H of the function at point X
+{$I numhess.inc}
+
+// Broyden-Fletcher-Goldfarb-Shanno method
+// procedure Gradient to compute the gradient G of the function at point X
+{$I numgrad.inc}
+
+{ TFCalibrage }
+
+procedure TFCalibrage.FormCreate(Sender: TObject);
+var
+  cycle: Integer;
+  ETPds, ETP2: Extended;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Initialisation des structures
+  New(PResSimulT);
+  DimVector(X, NVar);
+  X[1] := PProfilT.CoefEntretienGest;
+  X[2] := PProfilT.CoefEntretienLact;
+  X[3] := PProfilT.RatioLipProt;
+  DimVector(G, NVar);
+  DimMatrix(H_inv, NVar, NVar);
+  // Poids : moyenne et �cart type
+  DimVector(Pds, 2 * NB_CYCLES);
+  for cycle := 2 to NB_CYCLES do
+    Pds[cycle] := PProfilT.Truies[cycle].PdsSail;
+  for cycle := 1 to NB_CYCLES do
+    Pds[NB_CYCLES + cycle] := PProfilT.Truies[cycle].PdsApMB;
+  MPds := dmath.Mean(Pds, 1, NData);
+  ETPds := dmath.StDev(Pds, 1, NData, MPds);
+  // Epaisseurs de lard : moyenne et �cart type
+  DimVector(P2, 2 * NB_CYCLES);
+  for cycle := 2 to NB_CYCLES do
+    P2[cycle] := PProfilT.Truies[cycle].P2Sail;
+  for cycle := 1 to NB_CYCLES do
+    P2[NB_CYCLES + cycle] := PProfilT.Truies[cycle].P2MB;
+  MP2 := dmath.Mean(P2, 1, NData);
+  ETP2 := dmath.StDev(P2, 1, NData, MP2);
+  // Pond�rations
+  wPds := 1 ;
+  wP2 := Power(ETPds, 2) / Power(ETP2, 2);
+//  wP2 := StrToFloat(InputBox('Question', 'Pond�ration relative', FloatToStrF(wP2, ffFixed, 15, 2)));
+end;
+
+procedure TFCalibrage.FormDestroy(Sender: TObject);
+begin
+  Dispose(PResSimulT);
+end;
+
+procedure TFCalibrage.FormShow(Sender: TObject);
+var
+  cycle, jour: Integer;
+  PdsSail, P2Sail, PdsMB, P2MB: array[1..NB_CYCLES] of double;
+  {MPds,} SStPds, SSrPds, {MP2,} SStP2, SSrP2: Float;
+  {wM, wSStPds, wSSePds,} wSSrPds, {wSStP2, wSSeP2,} wSSrP2: Float;
+begin
+  ECoefEntGestInitial.Text := FProfilT.PBCoefEntGest.Text;
+  ECoefEntLactInitial.Text := FProfilT.PBCoefEntLact.Text;
+  ERatioLipProtInitial.Text := FProfilT.PBRatioLipProt.Text;
+//  Screen.Cursor := crHourGlass;
+  FProfilT.GaugeCalibr.Progress := 0;
+  FProfilT.GaugeCalibr.Left := (FProfilT.GraphCalibr.Width - FProfilT.GaugeCalibr.Width) div 2;
+  FProfilT.GaugeCalibr.Visible := True;
+  Application.ProcessMessages;
+  try
+    if not QueryPerformanceFrequency(Freq) then Freq := 1;
+    QueryPerformanceCounter(Start);
+    case FProfilT.CBMethod.ItemIndex of
+      0: Newton(Func, HessGrad, X, 1, NVar, MaxIter, Tol, F_min, G, H_inv, Det);
+      1: Marquardt(Func, HessGrad, X, 1, NVar, MaxIter, Tol, F_min, G, H_inv, Det);
+      2: BFGS(Func, Gradient, X, 1, NVar, MaxIter, Tol, F_min, G, H_inv);
+    end;
+  finally
+    QueryPerformanceCounter(Stop);
+//    Screen.Cursor:= crDefault;
+    FProfilT.GaugeCalibr.Visible := False;
+    Application.ProcessMessages;
+  end;
+  // Affichage du r�sultat obtenu
+  PProfilT.CoefEntretienGest := X[1];
+  PProfilT.CoefEntretienLact := X[2];
+  PProfilT.RatioLipProt := X[3];
+  CalcSimulT(-1, -1, 1, 1, 8, 0, PResSimulT);
+  FProfilT.AffGraphCal ;
+  FProfilT.PBCoefEntGest.AsFloat := PProfilT.CoefEntretienGest;
+  FProfilT.PBCoefEntLact.AsFloat := PProfilT.CoefEntretienLact;
+  FProfilT.PBRatioLipProt.AsFloat := 1 -PProfilT.RatioLipProt ;
+  Application.ProcessMessages;
+  EMethod.Text := FProfilT.CBMethod.Text;
+  ETime.Text := FloatToStrF((Stop - Start) / Freq, ffFixed, 15, 3);
+  ECoefEntGestFinal.Text := FProfilT.PBCoefEntGest.Text;
+  if (FProfilT.PBCoefEntGest.AsFloat < FProfilT.PBCoefEntGest.MinValue)
+  or (FProfilT.PBCoefEntGest.AsFloat > FProfilT.PBCoefEntGest.MaxValue)
+  then
+    ECoefEntGestFinal.Font.Color := clRed;
+  ECoefEntLactFinal.Text := FProfilT.PBCoefEntLact.Text;
+  if (FProfilT.PBCoefEntLact.AsFloat < FProfilT.PBCoefEntLact.MinValue)
+  or (FProfilT.PBCoefEntLact.AsFloat > FProfilT.PBCoefEntLact.MaxValue)
+  then
+    ECoefEntLactFinal.Font.Color := clRed;
+  ERatioLipProtFinal.Text := FProfilT.PBRatioLipProt.Text;
+  if (FProfilT.PBRatioLipProt.AsFloat < FProfilT.PBRatioLipProt.MinValue)
+  or (FProfilT.PBRatioLipProt.AsFloat > FProfilT.PBRatioLipProt.MaxValue)
+  then
+    ERatioLipProtFinal.Font.Color := clRed;
+  // poids et �paisseur de lard apr�s gestation (mise bas)
+  for jour := 2 to PResSimulT.NbJSim do
+    if (PResSimulT.TabResult[3, jour] = 1) and (PResSimulT.TabResult[3, jour - 1] = 0)
+    then
+    begin
+      cycle := Round(PResSimulT.TabResult[2, jour]);
+      PdsMB[cycle] := PResSimulT.TabResult[60, jour - 1] + PResSimulT.TabResult[61, jour];
+      P2MB[cycle] := PResSimulT.TabResult[67, jour - 1] + PResSimulT.TabResult[68, jour];
+    end ;
+  // poids et �paisseur de lard apr�s lactation (saillie)
+  for jour := 2 to PResSimulT.NbJSim do
+    if (PResSimulT.TabResult[3, jour] = 0) and (PResSimulT.TabResult[3, jour - 1] = 2)
+    then
+    begin
+      cycle := Round(PResSimulT.TabResult[2, jour]);
+      PdsSail[cycle] := PResSimulT.TabResult[60, jour - 1] + PResSimulT.TabResult[61, jour];
+      P2Sail[cycle] := PResSimulT.TabResult[67, jour - 1] + PResSimulT.TabResult[68, jour];
+    end;
+{
+  // Moyennes non pond�r�es
+  MPds := 0;
+  for cycle := 1 to NB_CYCLES do
+    MPds := MPds + PProfilT.Truies[cycle].PdsApMB;
+  for cycle := 2 to NB_CYCLES do
+    MPds := MPds + PProfilT.Truies[cycle].PdsSail;
+  MPds := MPds / NData;
+  MP2 := 0;
+  for cycle := 1 to NB_CYCLES do
+    MP2 := MP2 + PProfilT.Truies[cycle].P2MB;
+  for cycle := 2 to NB_CYCLES do
+    MP2 := MP2 + PProfilT.Truies[cycle].P2Sail;
+  MP2 := MP2 / NData;
+}
+  // Somme carr�e des �carts totaux (non pond�r�s)
+  SStPds := 0;
+  for cycle := 1 to NB_CYCLES do
+    SStPds := SStPds + Power(PProfilT.Truies[cycle].PdsApMB - MPds, 2);
+  for cycle := 2 to NB_CYCLES do
+    SStPds := SStPds + Power(PProfilT.Truies[cycle].PdsSail - MPds, 2);
+  SStP2 := 0;
+  for cycle := 1 to NB_CYCLES do
+    SStP2 := SStP2 + Power(PProfilT.Truies[cycle].P2MB - MP2, 2);
+  for cycle := 2 to NB_CYCLES do
+    SStP2 := SStP2 + Power(PProfilT.Truies[cycle].P2Sail - MP2, 2);
+  // Somme carr�e des �carts des r�sidus (non pond�r�s)
+  SSrPds := 0;
+  for cycle := 1 to NB_CYCLES do
+    SSrPds := SSrPds + Power(PProfilT.Truies[cycle].PdsApMB - PdsMB[cycle], 2);
+  for cycle := 2 to NB_CYCLES do
+    SSrPds := SSrPds + Power(PProfilT.Truies[cycle].PdsSail - PdsSail[cycle], 2);
+  SSrP2 := 0;
+  for cycle := 1 to NB_CYCLES do
+    SSrP2 := SSrP2 + Power(PProfilT.Truies[cycle].P2MB - P2MB[cycle], 2);
+  for cycle := 2 to NB_CYCLES do
+    SSrP2 := SSrP2 + Power(PProfilT.Truies[cycle].P2Sail - P2Sail[cycle], 2);
+ {
+  // Moyenne pond�r�e
+  wM := 0;
+  for cycle := 1 to NB_CYCLES do
+    wM := wM + PProfilT.Truies[cycle].PdsApMB * wPds;
+  for cycle := 2 to NB_CYCLES do
+    wM := wM + PProfilT.Truies[cycle].PdsSail * wPds;
+  for cycle := 1 to NB_CYCLES do
+    wM := wM + PProfilT.Truies[cycle].P2MB * wP2;
+  for cycle := 2 to NB_CYCLES do
+    wM := wM + PProfilT.Truies[cycle].P2Sail * wP2;
+  wM := wM / (NData * wPds + NData * wP2);
+  // Somme carr�e des �carts totaux (pond�r�s)
+  wSStPds := 0;
+  for cycle := 1 to NB_CYCLES do
+    wSStPds := wSStPds + Power(PProfilT.Truies[cycle].PdsApMB - wM, 2) * wPds;
+  for cycle := 2 to NB_CYCLES do
+    wSStPds := wSStPds + Power(PProfilT.Truies[cycle].PdsSail - wM, 2) * wPds;
+  wSStP2 := 0;
+  for cycle := 1 to NB_CYCLES do
+    wSStP2 := wSStP2 + Power(PProfilT.Truies[cycle].P2MB - wM, 2) * wP2;
+  for cycle := 2 to NB_CYCLES do
+    wSStP2 := wSStP2 + Power(PProfilT.Truies[cycle].P2Sail - wM, 2) * wP2;
+  // Somme carr�e des �carts de pr�diction (pond�r�s)
+  wSSePds := 0;
+  for cycle := 1 to NB_CYCLES do
+    wSSePds := wSSePds + Power(PdsMB[cycle] - wM, 2) * wPds;
+  for cycle := 2 to NB_CYCLES do
+    wSSePds := wSSePds + Power(PdsSail[cycle] - wM, 2) * wPds;
+  wSSeP2 := 0;
+  for cycle := 1 to NB_CYCLES do
+    wSSeP2 := wSSeP2 + Power(P2MB[cycle] - wM, 2) * wP2;
+  for cycle := 2 to NB_CYCLES do
+    wSSeP2 := wSSeP2 + Power(P2Sail[cycle] - wM, 2) * wP2;
+}
+  // Somme carr�e des �carts des r�sidus (pond�r�s)
+  wSSrPds := 0;
+  for cycle := 1 to NB_CYCLES do
+    wSSrPds := wSSrPds + Power(PProfilT.Truies[cycle].PdsApMB - PdsMB[cycle], 2) * wPds;
+  for cycle := 2 to NB_CYCLES do
+    wSSrPds := wSSrPds + Power(PProfilT.Truies[cycle].PdsSail - PdsSail[cycle], 2) * wPds;
+  wSSrP2 := 0;
+  for cycle := 1 to NB_CYCLES do
+    wSSrP2 := wSSrP2 + Power(PProfilT.Truies[cycle].P2MB - P2MB[cycle], 2) * wP2;
+  for cycle := 2 to NB_CYCLES do
+    wSSrP2 := wSSrP2 + Power(PProfilT.Truies[cycle].P2Sail - P2Sail[cycle], 2) * wP2;
+  // Affichage des statistiques
+  EwPds.Text := FloatToStrF(wPds, ffFixed, 15, 0);
+  EwP2.Text := FloatToStrF(wP2, ffFixed, 15, 0);
+  EPVRSD.Text := Format('%1.1f %s', [Sqrt(SSrPds / (NData - Nvar / 2)), StrKg]);
+  EP2RSD.Text := Format('%1.2f %s', [Sqrt(SSrP2 / (NData - Nvar / 2)), StrMM]);
+  EPVR2.Text := Format('%1.2f %%', [100 - SSrPds / SStPds * 100]);
+  EP2R2.Text := Format('%1.2f %%', [100 - SSrP2 / SStP2 * 100]);
+  EPVVar.Text := Format('%1.2f %%', [wSSrPds / (wSSrPds + wSSrP2) * 100]);
+  EP2Var.Text := Format('%1.2f %%', [wSSrP2 / (wSSrPds + wSSrP2) * 100]);
+  ECoefEntGestStDev.Text := FloatToStrF(Sqrt((wSSrPds + wSSrP2) / (2 * NData - Nvar) * H_inv[1, 1]), ffFixed, 15, 5);
+  ECoefEntLactStDev.Text := FloatToStrF(Sqrt((wSSrPds + wSSrP2) / (2 * NData - Nvar) * H_inv[2, 2]), ffFixed, 15, 5);
+  ERatioLipProtStDev.Text := FloatToStrF(Sqrt((wSSrPds + wSSrP2) / (2 * NData - Nvar) * H_inv[3, 3]), ffFixed, 15, 5);
+  case MathErr of
+    OptNonConv: LInfo.Caption := _('Non-convergence');
+    OptSing: LInfo.Caption := _('Singular Hessian matrix');
+    OptBigLambda: LInfo.Caption := _('Marquardt parameter too high');
+    else
+      if (FProfilT.PBCoefEntGest.AsFloat < FProfilT.PBCoefEntGest.MinValue)
+      or (FProfilT.PBCoefEntGest.AsFloat > FProfilT.PBCoefEntGest.MaxValue)
+      or (FProfilT.PBCoefEntLact.AsFloat < FProfilT.PBCoefEntLact.MinValue)
+      or (FProfilT.PBCoefEntLact.AsFloat > FProfilT.PBCoefEntLact.MaxValue)
+      or (FProfilT.PBRatioLipProt.AsFloat < FProfilT.PBRatioLipProt.MinValue)
+      or (FProfilT.PBRatioLipProt.AsFloat > FProfilT.PBRatioLipProt.MaxValue)
+      then
+        LInfo.Caption := _('Suspicious result')
+      else
+        LInfo.Visible := False;
+  end;
+end;
+
+end.
Index: UFLogeT.pas
===================================================================
--- UFLogeT.pas	(révision 0)
+++ UFLogeT.pas	(révision 3)
@@ -0,0 +1,888 @@
+unit UFLogeT ;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons, ExtCtrls, ComCtrls,
+  PBNumEdit, PBSuperSpin, JvEnterTab, JvExControls, UVariables;
+
+type
+  TFLogeT = class(TForm)
+    GBLogement: TGroupBox;
+    CBLoge: TComboBox;
+    LBRule: TListBox;
+    LNo: TLabel;
+    LModeFin: TLabel;
+    GBLoge: TGroupBox;
+    GBRule: TGroupBox;
+    SBAddRule: TSpeedButton;
+    SBDelRule: TSpeedButton;
+    SBAddLoge: TSpeedButton;
+    SBDelLoge: TSpeedButton;
+    SBRename: TSpeedButton;
+    SBComment: TSpeedButton;
+    GBEnd: TGroupBox;
+    LUnitFin: TLabel;
+    PBValFin: TPBNumEdit;
+    CBModeFin: TComboBox;
+    TC: TTabControl;
+    LTyp: TLabel;
+    CBTyp: TComboBox;
+    LSol: TLabel;
+    CBSol: TComboBox;
+    LTemp: TLabel;
+    PBTemp: TPBSuperSpin;
+    GBComport: TGroupBox;
+    LDebout: TLabel;
+    PBAct: TPBSuperSpin;
+    TBAct: TTrackBar;
+    LCalme: TLabel;
+    LMoyenne: TLabel;
+    LActive: TLabel;
+    SBReset: TSpeedButton;
+    SBSave: TSpeedButton;
+    SBPrint: TSpeedButton;
+    PLoge: TPanel;
+    GBParam: TGroupBox;
+    PAct: TPanel;
+    JvEnterAsTab: TJvEnterAsTab;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure LBRuleDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure CBLogeChange(Sender: TObject);
+    procedure SBAddLogeClick(Sender: TObject);
+    procedure SBDelLogeClick(Sender: TObject);
+    procedure SBAddRuleClick(Sender: TObject);
+    procedure SBDelRuleClick(Sender: TObject);
+    procedure LBRuleClick(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure FormDeactivate(Sender: TObject);
+    procedure SBRenameClick(Sender: TObject);
+    procedure SBCommentClick(Sender: TObject);
+    procedure PBValFinChange(Sender: TObject);
+    procedure TCChange(Sender: TObject);
+    procedure CBTypChange(Sender: TObject);
+    procedure CBSolChange(Sender: TObject);
+    procedure PBTempChange(Sender: TObject);
+    procedure PBActChange(Sender: TObject);
+    procedure TBActChange(Sender: TObject);
+    procedure SBResetClick(Sender: TObject);
+    procedure SBSaveClick(Sender: TObject);
+    procedure SBPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified : boolean ;
+    IdxLogeT, NbRule, NumRule : integer ;
+    Rule : array[1..MAX_RULE] of RecRuleLogeT ;
+    procedure Save ;
+  public
+    { D�clarations publiques }
+    function StrModeFin (etat, regle : integer) : string ;
+  end;
+
+var
+  FLogeT: TFLogeT;
+
+implementation
+
+uses
+  Dialogs, Graphics, SysUtils, gnugettext, UStrings, UInit, UUtil, UFindRec,
+  UFComment, UFRapLogeT ;
+
+{$R *.dfm}
+
+{ TFLogeT }
+
+procedure TFLogeT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 616 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 516 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  CBModeFin.ItemIndex := 0;
+  LTemp.Caption := Format('%s (%s)', [LTemp.Caption, StrDegC]);
+end;
+
+procedure TFLogeT.FormShow (Sender : TObject) ;
+begin
+  Modified := FALSE ;
+  StringsLogeT (CBLoge.Items, TRUE) ;
+  SBAddLoge.Enabled := IsComplete or (ListLogeT.Count < 5) ;
+  SBSave.Enabled := IsComplete or IsEducation ;
+  IdxLogeT := -1 ;
+//  CBLogeChange (nil) ;
+end ;
+
+procedure TFLogeT.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+begin
+  if Modified then Save ;
+  Action := caFree ;
+  NumWinLogeT := -1 ;
+end ;
+
+procedure TFLogeT.FormActivate (Sender : TObject) ;
+begin
+//  if IdxLogeT <> -1
+//  then
+//    PLogeT := ListLogeT[IdxLogeT] ;
+  CBLogeChange (nil) ;
+  GBParam.Enabled := IsComplete or IsEducation or IsEvaluation ;
+  SBAddRule.Visible := GBParam.Enabled ;
+  SBDelRule.Visible := GBParam.Enabled ;
+end ;
+
+procedure TFLogeT.FormDeactivate (Sender : TObject) ;
+begin
+  if Modified then Save ;
+end ;
+
+procedure TFLogeT.Save ;
+var
+  s : string ;
+begin
+  Modified := FALSE ;
+  if IsComplete or IsEducation
+  then
+    if MessageDlg (Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      SaveLogeT ;
+      if not LogeTValid (PLogeT)
+      then
+        MessageDlg(Format (MsgInvalidData, [Caption, PLogeT.Nom]), mtWarning, [mbOK], 0) ;
+    end
+    else
+    begin
+      LoadLogeT ;
+      s := CBLoge.Text ;
+      StringsLogeT (CBLoge.Items, TRUE) ;
+      if FindIdxLogeT (s) = -1
+      then
+      begin
+        IdxLogeT := -1 ;
+        CBLogeChange (nil) ;
+      end
+      else
+        CBLoge.ItemIndex := CBLoge.Items.IndexOf (s) ;
+    end ;
+end ;
+
+procedure TFLogeT.CBLogeChange (Sender : TObject) ;
+begin
+  if (IdxLogeT <> -1) and (CBLoge.Text <> PLogeT.Nom)
+  then
+    if Modified then Save ;
+  IdxLogeT := FindIdxLogeT (CBLoge.Text) ;
+  if IdxLogeT = -1
+  then
+  begin
+    CBLoge.Repaint ;
+    SBDelLoge.Enabled := FALSE ;
+    SBRename.Enabled := FALSE ;
+    SBComment.Enabled := FALSE ;
+    SBSave.Enabled := FALSE ;
+    SBPrint.Enabled := FALSE ;
+    TC.Visible := FALSE ;
+  end
+  else // Affichage de l'enregistrement
+  begin
+    SBDelLoge.Enabled := TRUE ;
+    SBRename.Enabled := TRUE ;
+    SBComment.Enabled := TRUE ;
+    SBSave.Enabled := TRUE ;
+    SBPrint.Enabled := TRUE ;
+    TC.Visible := TRUE ;
+    PLogeT := ListLogeT[IdxLogeT] ;
+    with PLogeT^ do
+      CBLoge.Hint := Memo ;
+    TCChange (nil) ;
+  end ;
+end ;
+
+procedure TFLogeT.SBAddLogeClick (Sender : TObject) ;
+var
+  i, n, q : integer ;
+  s : string ;
+  ok : boolean ;
+  PBackup : PRecLogeT ;
+begin
+  if Modified then Save ;
+  if IdxLogeT = -1
+  then
+    q := mrNo
+  else
+    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
+  // Saisie du nouveau nom
+  s := '' ;
+  repeat
+    if InputQuery (FLogeT.Caption, MsgName, s)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListLogeT.Count) do
+          begin
+            PLogeT := ListLogeT[i] ;
+            if PLogeT.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      if (IdxLogeT <> -1)
+      then
+        PLogeT := ListLogeT[IdxLogeT] ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  if s <> ''
+  then // Cr�ation du nouvel enregistrement
+  begin
+    // Recherche du premier num�ro libre
+    n := 0 ;
+    repeat
+      Inc (n) ;
+      ok := TRUE ;
+      i := 0 ;
+      while ok and (i < ListLogeT.Count) do
+      begin
+        PLogeT := ListLogeT[i] ;
+        if PLogeT.Num = n
+        then
+          ok := FALSE
+        else
+          Inc (i) ;
+      end ;
+    until ok ;
+    New (PLogeT) ;
+    with PLogeT^ do
+    begin
+      Nom := s ;
+      Num := n ;
+      if q = mrYes
+      then
+      begin
+        PBackup := ListLogeT[IdxLogeT] ;
+        Memo := PBackup.Memo ;
+        NbRuleGest := PBackup.NbRuleGest ;
+        RuleGest := PBackup.RuleGest ;
+        NbRuleLact := PBackup.NbRuleLact ;
+        RuleLact := PBackup.RuleLact ;
+        NbRuleISSF := PBackup.NbRuleISSF ;
+        RuleISSF := PBackup.RuleISSF ;
+      end
+      else
+      begin
+        Memo := '' ;
+        NbRuleGest := 1 ;
+        for i := 1 to MAX_RULE do
+          with RuleGest[i] do
+          begin
+            ModeFin := -1 ;
+            ValFin := 0 ;
+            Typ := 0 ;
+            Sol := 0 ;
+            Temp := 20 ;
+            Act := 240 ;
+          end ;
+        NbRuleLact := 1 ;
+        for i := 1 to MAX_RULE do
+          with RuleLact[i] do
+          begin
+            ModeFin := -1 ;
+            ValFin := 0 ;
+            Typ := 0 ;
+            Sol := 0 ;
+            Temp := 20 ;
+            Act := 240 ;
+          end ;
+        NbRuleISSF := 1 ;
+        for i := 1 to MAX_RULE do
+          with RuleISSF[i] do
+          begin
+            ModeFin := -1 ;
+            ValFin := 0 ;
+            Typ := 0 ;
+            Sol := 0 ;
+            Temp := 20 ;
+            Act := 240 ;
+          end ;
+      end ;
+    end ;
+    ListLogeT.Add (PLogeT) ;
+    CBLoge.Items.Add (PLogeT.Nom) ;
+    CBLoge.ItemIndex := CBLoge.Items.IndexOf (PLogeT.Nom) ;
+    CBLogeChange (nil) ;
+    Modified := TRUE ;
+    SBAddLoge.Enabled := IsComplete or (ListLogeT.Count < 5) ;
+    SBCommentClick (nil) ;
+  end ;
+end ;
+
+procedure TFLogeT.SBDelLogeClick (Sender : TObject) ;
+begin
+  if LogeTUsed (PLogeT.Num)
+  then // Enregistrement utilis�
+    MessageDlg (MsgDelErr, mtWarning, [mbOk], 0)
+  else // Suppression de l'enregistrement
+    if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      Dispose (PLogeT) ;
+      ListLogeT.Delete (IdxLogeT) ;
+      SaveLogeT ; // Sauvegarde !
+      Modified := FALSE ;
+      CBLoge.DeleteSelected ;
+      IdxLogeT := -1 ;
+      CBLoge.ItemIndex := -1 ;
+      CBLogeChange (nil) ;
+      SBAddLoge.Enabled := IsComplete or (ListLogeT.Count < 5) ;
+    end ;
+end ;
+
+procedure TFLogeT.SBRenameClick (Sender : TObject) ;
+var
+  i : integer ;
+  s : string ;
+  ok : boolean ;
+begin
+  // Saisie du nouveau nom
+  s := CBLoge.Text ;
+  repeat
+    if InputQuery (FLogeT.Caption, MsgRename, s) and (s <> CBLoge.Text)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListLogeT.Count) do
+          begin
+            PLogeT := ListLogeT[i] ;
+            if PLogeT.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  PLogeT := ListLogeT[IdxLogeT] ;
+  if s <> ''
+  then // Renommer l'enregistrement
+  begin
+    PLogeT.Nom := s ;
+    Modified := TRUE ;
+    StringsLogeT (CBLoge.Items, TRUE) ;
+    CBLoge.ItemIndex := CBLoge.Items.IndexOf (s) ;
+  end ;
+end ;
+
+procedure TFLogeT.SBCommentClick (Sender : TObject) ;
+begin
+  // Saisie du commentaire
+  FComment := TFComment.Create (Self) ;
+  with FComment do
+  begin
+    Memo.Text := PLogeT.Memo ;
+    if ShowModal = mrOk
+    then // Commenter l'enregistrement
+    begin
+      PLogeT.Memo := Memo.Text ;
+      Modified := TRUE ;
+      CBLoge.Hint := PLogeT.Memo ;
+    end ;
+    Release ;
+  end ;
+end ;
+
+procedure TFLogeT.SBSaveClick(Sender: TObject);
+begin
+  SaveLogeT ;
+  if not LogeTValid (PLogeT)
+  then
+    MessageDlg(Format (MsgInvalidData, [Caption, PLogeT.Nom]), mtWarning, [mbOK], 0) ;
+  Modified := FALSE ;
+end;
+
+procedure TFLogeT.SBPrintClick(Sender: TObject);
+begin
+  FRapLogeT := TFRapLogeT.Create (Self) ;
+  FRapLogeT.QRRapport.PreviewModal ;
+  FRapLogeT.Release ;
+end;
+
+procedure TFLogeT.TCChange (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  if TC.TabIndex = 1
+  then // Lactation
+    GBComport.Visible := FALSE
+  else
+    GBComport.Visible := TRUE ;
+  case TC.TabIndex of
+    0 : // Gestation
+      with PLogeT^ do
+      begin
+        NbRule := NbRuleGest ;
+        for i := 1 to MAX_RULE do
+          Rule[i] := RuleGest[i] ;
+      end ;
+    1 : // Lactation
+      with PLogeT^ do
+      begin
+        NbRule := NbRuleLact ;
+        for i := 1 to MAX_RULE do
+          Rule[i] := RuleLact[i] ;
+      end ;
+    2 : // I.S.S.F.
+      with PLogeT^ do
+      begin
+        NbRule := NbRuleISSF ;
+        for i := 1 to MAX_RULE do
+          Rule[i] := RuleISSF[i] ;
+      end ;
+  end ;
+  LBRule.Clear ;
+  with PLogeT^ do
+    for i := 1 to NbRule do
+      LBRule.Items.Add ('') ;
+  LBRule.ItemIndex := 0 ;
+  LBRuleClick (nil) ;
+end ;
+
+procedure TFLogeT.LBRuleClick (Sender : TObject) ;
+begin
+  NumRule := LBRule.ItemIndex + 1 ;
+  if LBRule.Items.Count < MAX_RULE
+  then
+    SBAddRule.Enabled := TRUE
+  else
+    SBAddRule.Enabled := FALSE ;
+  if NumRule = NbRule
+  then // Fin
+    SBDelRule.Enabled := FALSE
+  else
+    SBDelRule.Enabled := TRUE ;
+  GBEnd.Visible := SBDelRule.Enabled ;
+  with Rule[NumRule] do
+  begin
+    Update := TRUE ;
+    PBValFin.AsInteger := ValFin ;
+    CBTyp.ItemIndex := Typ ;
+    CBSol.ItemIndex := Sol ;
+    PBTemp.AsInteger := Temp ;
+    PBAct.AsInteger := Act ;
+    TBAct.Position := Act ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFLogeT.LBRuleDrawItem (Control : TWinControl ; Index : Integer ;
+  Rect : TRect ; State : TOwnerDrawState) ;
+begin
+  with (Control as TListBox).Canvas do
+  begin
+    // Cadre principal
+    FillRect (Rect) ;
+    // Texte
+    SetTextAlign (Handle, TA_LEFT) ;
+    Rect.Left := 22 ;
+    TextRect (Rect, Rect.Left, Rect.Top, StrModeFin (TC.TabIndex, Index + 1)) ;
+    Rect.Left := 0 ;
+    // Num�ro
+    SetTextAlign (Handle, TA_RIGHT) ;
+    Rect.Right := 14 ;
+    TextRect (Rect, Rect.Right, Rect.Top, Format ('%d', [Index + 1])) ;
+  end ;
+end ;
+
+procedure TFLogeT.SBAddRuleClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  for i := NbRule downto NumRule do
+    Rule[i + 1] := Rule[i] ;
+  with Rule[NumRule] do
+  begin
+    ModeFin := 0 ;
+    ValFin := 0 ;
+  end ;
+  Inc (NbRule) ;
+  case TC.TabIndex of
+    0 : // Gestation
+      with PLogeT^ do
+      begin
+        NbRuleGest := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleGest[i] := Rule[i] ;
+      end ;
+    1 : // Lactation
+      with PLogeT^ do
+      begin
+        NbRuleLact := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleLact[i] := Rule[i] ;
+      end ;
+    2 : // I.S.S.F.
+      with PLogeT^ do
+      begin
+        NbRuleISSF := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleISSF[i] := Rule[i] ;
+      end ;
+  end ;
+  LBRule.Items.Add ('') ;
+  LBRule.ItemIndex := NumRule - 1 ;
+  LBRuleClick (nil) ;
+  Modified := TRUE ;
+  ActiveControl := PBValFin ;
+end ;
+
+procedure TFLogeT.SBDelRuleClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  Dec (NbRule) ;
+  for i := NumRule to NbRule do
+    Rule[i] := Rule[i + 1] ;
+  case TC.TabIndex of
+    0 : // Gestation
+      with PLogeT^ do
+      begin
+        NbRuleGest := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleGest[i] := Rule[i] ;
+      end ;
+    1 : // Lactation
+      with PLogeT^ do
+      begin
+        NbRuleLact := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleLact[i] := Rule[i] ;
+      end ;
+    2 : // I.S.S.F.
+      with PLogeT^ do
+      begin
+        NbRuleISSF := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleISSF[i] := Rule[i] ;
+      end ;
+  end ;
+  i := NumRule ; // Position courante
+  LBRule.DeleteSelected ;
+  LBRule.ItemIndex := i - 1 ;
+  LBRuleClick (nil) ;
+  ActiveControl := LBRule ;
+  Modified := TRUE ;
+end ;
+
+procedure TFLogeT.PBValFinChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].ValFin := PBValFin.AsInteger ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PLogeT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PLogeT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PLogeT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFLogeT.CBTypChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].Typ := CBTyp.ItemIndex ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PLogeT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PLogeT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PLogeT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+//    LBRule.Repaint ;
+    Update := TRUE ;
+    if CBTyp.ItemIndex = 2
+    then // Plein-air
+    begin
+      CBSol.ItemIndex := -1 ;
+      CBSol.Enabled := FALSE ;
+    end
+    else
+    begin
+      CBSol.ItemIndex := Rule[NumRule].Sol ;
+      CBSol.Enabled := TRUE ;
+    end ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFLogeT.CBSolChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].Sol := CBSol.ItemIndex ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PLogeT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PLogeT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PLogeT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+//    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFLogeT.PBTempChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].Temp := PBTemp.AsInteger ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PLogeT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PLogeT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PLogeT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+//    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFLogeT.PBActChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].Act := PBAct.AsInteger ;
+    TBAct.Position := PBAct.AsInteger ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PLogeT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PLogeT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PLogeT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+//    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFLogeT.TBActChange (Sender : TObject) ;
+begin
+  if not Update
+    and (TBAct.Position >= TBAct.Min)
+    and (TBAct.Position <= TBAct.Max)
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].Act := TBAct.Position ;
+    PBAct.AsInteger := TBAct.Position ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PLogeT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PLogeT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PLogeT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+//    LBRule.Repaint ;
+  end ;
+  TBAct.SelEnd := TBAct.Position ;
+end ;
+
+procedure TFLogeT.SBResetClick (Sender : TObject) ;
+begin
+  PBAct.AsInteger := Round ((PBAct.MinValue + PBAct.MaxValue) / 2) ;
+end ;
+
+function TFLogeT.StrModeFin (etat, regle : integer) : string ;
+var
+  Nb : integer ;
+  Rec : RecRuleLogeT ;
+begin
+  case etat of
+    0 : // Gestation
+      Nb := PLogeT.NbRuleGest ;
+    1 : // Lactation
+      Nb := PLogeT.NbRuleLact ;
+    else // I.S.S.F.
+      Nb := PLogeT.NbRuleISSF ;
+  end ;
+  if regle = Nb
+  then // Fin
+    case etat of
+      0 : // Gestation
+        result := StrMiseBas ;
+      1 : // Lactation
+        result := StrSevrage ;
+      2 : // I.S.S.F.
+        result := StrSaillie ;
+    end
+  else
+  begin
+    case etat of
+      0 : // Gestation
+        Rec := PLogeT.RuleGest[regle] ;
+      1 : // Lactation
+        Rec := PLogeT.RuleLact[regle] ;
+      2 : // I.S.S.F.
+        Rec := PLogeT.RuleISSF[regle] ;
+    end ;
+    with Rec do
+      case ModeFin of
+        0 : // Dur�e
+          result := Format ('%s = %d %s', [CBModeFin.Items[ModeFin], ValFin, StrJ]) ;
+        else
+          result := '' ;
+      end ;
+  end ;
+end ;
+
+end.
Index: UFCompSimulP.dfm
===================================================================
--- UFCompSimulP.dfm	(révision 0)
+++ UFCompSimulP.dfm	(révision 3)
@@ -0,0 +1,789 @@
+object FCompSimulP: TFCompSimulP
+  Left = 200
+  Top = 157
+  HelpContext = 5600
+  Caption = 'Comparison of growing pig simulations'
+  ClientHeight = 396
+  ClientWidth = 544
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PC: TPageControl
+    Left = 0
+    Top = 0
+    Width = 544
+    Height = 96
+    ActivePage = TabPerf
+    Align = alTop
+    HotTrack = True
+    MultiLine = True
+    TabOrder = 0
+    TabStop = False
+    OnChange = PCChange
+    object TabPerf: TTabSheet
+      HelpContext = 5610
+      Caption = 'Performance'
+      ImageIndex = 1
+      object GBPerfX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBPerf2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          OnChange = CBPerf2Change
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+      end
+      object GBPerfY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBPerf3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight'
+          OnChange = CBPerf3Change
+          Items.Strings = (
+            'Body weight'
+            'Time'
+            'Feed usage'
+            'Feed wastage'
+            'Feed intake'
+            'Feed:Gain'
+            'Gain:Feed'
+            'Protein'
+            'Lipid'
+            'Carcass')
+        end
+        object CBPerf4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 2
+          OnChange = CBPerf4Change
+        end
+        object CBPerf3Global: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Body weight'
+          Visible = False
+          OnChange = CBPerf3Change
+          Items.Strings = (
+            'Body weight'
+            'Time'
+            'Feed usage'
+            'Feed wastage'
+            'Feed intake'
+            'Feed:Gain'
+            'Gain:Feed'
+            'Protein'
+            'Lipid')
+        end
+      end
+      object GBPerfT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBPerf1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Dynamic view'
+          OnChange = CBPerf1Change
+          Items.Strings = (
+            'Dynamic view'
+            'Global view')
+        end
+      end
+    end
+    object TabAli: TTabSheet
+      HelpContext = 5620
+      Caption = 'Feeds'
+      ImageIndex = 2
+      object GBAliY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBAli4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 1
+          OnChange = CBAli4Change
+        end
+        object CBAli3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Feed usage'
+          OnChange = CBAli3Change
+          Items.Strings = (
+            'Feed usage'
+            'Feed cost')
+        end
+      end
+      object GBAliX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+      end
+      object GBAliT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBAli5: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          Sorted = True
+          TabOrder = 0
+          Visible = False
+          OnChange = CBAli5Change
+        end
+        object CBAli1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Feeds'
+          OnChange = CBAli1Change
+          Items.Strings = (
+            'Feeds'
+            'Feed ingredients')
+        end
+      end
+    end
+    object TabAA: TTabSheet
+      HelpContext = 5630
+      Caption = 'Amino acids'
+      ImageIndex = 3
+      object GBAAX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBAA2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          Visible = False
+          OnChange = CBAA2Change
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+      end
+      object GBAAY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBAA3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 1
+          TabOrder = 0
+          Text = 'Lysine'
+          OnChange = CBAA3Change
+          Items.Strings = (
+            'Crude protein'
+            'Lysine'
+            'Methionine'
+            'Methionine + Cystine'
+            'Tryptophan'
+            'Threonine'
+            'Phenylalanine'
+            'Phenylalanine + Tyrosine'
+            'Leucine'
+            'Isoleucine'
+            'Valine'
+            'Histidine'
+            'Arginine')
+        end
+        object CBAA4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 1
+          OnChange = CBAA4Change
+        end
+      end
+      object GBAAT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBAA1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Partitioning'
+          OnChange = CBAA1Change
+          Items.Strings = (
+            'Partitioning'
+            'Supply'
+            'Requirement')
+        end
+        object CBAA5A: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Standardized digestible'
+          OnChange = CBAA5Change
+          Items.Strings = (
+            'Standardized digestible'
+            'Apparently digestible'
+            'Total')
+        end
+        object CBAA5B: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 2
+          Text = 'Standardized digestible'
+          Visible = False
+          OnChange = CBAA5Change
+          Items.Strings = (
+            'Standardized digestible'
+            'Apparently digestible')
+        end
+      end
+    end
+    object TabNRJ: TTabSheet
+      HelpContext = 5640
+      Caption = 'Energy'
+      ImageIndex = 4
+      object GBNRJX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBNRJ2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          Visible = False
+          OnChange = CBNRJ2Change
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+      end
+      object GBNRJY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBNRJ3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Gross energy'
+          OnChange = CBNRJ3Change
+          Items.Strings = (
+            'Gross energy'
+            'Digestible energy'
+            'Metabolizable energy'
+            'Net energy')
+        end
+        object CBNRJ4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 2
+          OnChange = CBNRJ4Change
+        end
+        object CBNRJ3Valeurs: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Digestible energy'
+          Visible = False
+          OnChange = CBNRJ3Change
+          Items.Strings = (
+            'Digestible energy'
+            'Metabolizable energy'
+            'Net energy')
+        end
+      end
+      object GBNRJT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBNRJ5: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Calculated values'
+          Visible = False
+          OnChange = CBNRJ5Change
+          Items.Strings = (
+            'Calculated values'
+            'Simulated values')
+        end
+        object CBNRJ1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Partitioning'
+          OnChange = CBNRJ1Change
+          Items.Strings = (
+            'Partitioning'
+            'Energy values')
+        end
+      end
+    end
+    object TabMin: TTabSheet
+      HelpContext = 5660
+      Caption = 'Minerals'
+      ImageIndex = 5
+      object GBMinY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBMin3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Phosphorus'
+          OnChange = CBMin3Change
+          Items.Strings = (
+            'Phosphorus')
+        end
+        object CBMin4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 1
+          OnChange = CBMin4Change
+        end
+      end
+      object GBMinX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBMin2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Body weight (kg)'
+          Visible = False
+          OnChange = CBMin2Change
+          Items.Strings = (
+            'Body weight (kg)'
+            'Age (d)'
+            'Duration (d)'
+            'Duration (week)')
+        end
+      end
+      object GBMinT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBMin1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Partitioning'
+          OnChange = CBMin1Change
+          Items.Strings = (
+            'Partitioning'
+            'Supply'
+            'Requirement')
+        end
+        object CBMin5B: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 2
+          Text = 'Apparently digestible'
+          Visible = False
+          OnChange = CBMin5Change
+          Items.Strings = (
+            'Apparently digestible')
+        end
+        object CBMin5A: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Apparently digestible'
+          OnChange = CBMin5Change
+          Items.Strings = (
+            'Apparently digestible'
+            'Total')
+        end
+      end
+    end
+    object TabRej: TTabSheet
+      HelpContext = 5650
+      Caption = 'Mineral balance'
+      object GBRejY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBRej3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Nitrogen'
+          OnChange = CBRej3Change
+          Items.Strings = (
+            'Nitrogen'
+            'Phosphorus'
+            'Calcium'
+            'Potassium'
+            'Copper'
+            'Zinc')
+        end
+        object CBRej4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 1
+          OnChange = CBRej4Change
+        end
+      end
+      object GBRejT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+      end
+      object GBRejX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+      end
+    end
+  end
+  object Graph: TChart
+    Left = 0
+    Top = 96
+    Width = 544
+    Height = 300
+    Foot.Alignment = taLeftJustify
+    Foot.Font.Color = clBlack
+    Foot.Font.Style = []
+    Foot.Text.Strings = (
+      'Simulation')
+    Legend.LegendStyle = lsSeries
+    MarginBottom = 1
+    MarginLeft = 1
+    MarginRight = 1
+    MarginTop = 1
+    PrintProportional = False
+    SubTitle.Font.Color = clBlack
+    SubTitle.Text.Strings = (
+      'Total')
+    Title.Font.Height = -16
+    Title.Font.Style = [fsBold]
+    Title.Text.Strings = (
+      'Title')
+    BottomAxis.Title.Caption = 'X'
+    BottomAxis.Title.Font.Style = [fsBold]
+    LeftAxis.Automatic = False
+    LeftAxis.AutomaticMaximum = False
+    LeftAxis.Title.Caption = 'Y'
+    LeftAxis.Title.Font.Style = [fsBold]
+    RightAxis.Title.Font.Style = [fsBold]
+    TopAxis.Title.Font.Style = [fsBold]
+    View3D = False
+    Align = alClient
+    BevelOuter = bvNone
+    PopupMenu = PM
+    TabOrder = 1
+    PrintMargins = (
+      5
+      5
+      5
+      5)
+  end
+  object LBNRJ: TListBox
+    Left = 144
+    Top = 200
+    Width = 120
+    Height = 108
+    ItemHeight = 13
+    Items.Strings = (
+      'Feed wastage'
+      'Indigestible'
+      'Methane and urine'
+      'Maintenance'
+      'Activity'
+      'Heat increment'
+      'Protein'
+      'Lipid')
+    TabOrder = 2
+    Visible = False
+  end
+  object LBRej: TListBox
+    Left = 400
+    Top = 200
+    Width = 120
+    Height = 69
+    ItemHeight = 13
+    Items.Strings = (
+      'Feed wastage'
+      'Fecal'
+      'Urinary'
+      'Excreted'
+      'Retained')
+    TabOrder = 3
+    Visible = False
+  end
+  object LBAA: TListBox
+    Left = 16
+    Top = 200
+    Width = 120
+    Height = 121
+    ItemHeight = 13
+    Items.Strings = (
+      'Feed wastage'
+      'Indigestible'
+      'Basal endogenous'
+      'Maintenance'
+      'Minimum oxidation'
+      'Deposition'
+      'Unbalanced'
+      'Deficiency'
+      'Excess')
+    TabOrder = 4
+    Visible = False
+  end
+  object LBMin: TListBox
+    Left = 272
+    Top = 200
+    Width = 120
+    Height = 82
+    ItemHeight = 13
+    Items.Strings = (
+      'Feed wastage'
+      'Indigestible'
+      'Maintenance'
+      'Retained'
+      'Deficiency'
+      'Excess')
+    TabOrder = 5
+    Visible = False
+  end
+  object PM: TPopupMenu
+    Top = 96
+    object MI3D: TMenuItem
+      Caption = '2D / 3D'
+      OnClick = MI3DClick
+    end
+    object MIPreview: TMenuItem
+      Caption = 'Print preview'
+      OnClick = MIPreviewClick
+    end
+    object MIPrint: TMenuItem
+      Caption = 'Print...'
+      OnClick = MIPrintClick
+    end
+  end
+  object PD: TPrintDialog
+    Left = 32
+    Top = 96
+  end
+end
Index: UFRapMatMin.dfm
===================================================================
--- UFRapMatMin.dfm	(révision 0)
+++ UFRapMatMin.dfm	(révision 3)
@@ -0,0 +1,2774 @@
+object FRapMatMin: TFRapMatMin
+  Left = 0
+  Top = 80
+  Caption = 'Feed ingredients composition report - Minerals'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed ingredient composition: minerals'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRLMatiere: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRDBMatiere: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          153.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Matiere_'
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTMacro: TQRLabel
+        Left = 270
+        Top = 168
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          444.500000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCa: TQRLabel
+        Left = 40
+        Top = 192
+        Width = 82
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          508.000000000000000000
+          216.958333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Calcium (Ca)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCa: TQRDBText
+        Left = 289
+        Top = 192
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          508.000000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ca_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMacro: TQRLabel
+        Left = 40
+        Top = 136
+        Width = 122
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          359.833333333333300000
+          322.791666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Macro-elements'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLCompo: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          254.000000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'StrCompo'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsItalic]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNa: TQRLabel
+        Left = 40
+        Top = 232
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          613.833333333333300000
+          209.020833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sodium (Na)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNa: TQRDBText
+        Left = 289
+        Top = 232
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          613.833333333333300000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Na_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMg: TQRLabel
+        Left = 40
+        Top = 272
+        Width = 105
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          719.666666666666700000
+          277.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Magnesium (Mg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMg: TQRDBText
+        Left = 287
+        Top = 272
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          719.666666666666700000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Mg_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLS: TQRLabel
+        Left = 40
+        Top = 312
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          825.500000000000000000
+          158.750000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sulfur (S)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTS: TQRDBText
+        Left = 296
+        Top = 312
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          783.166666666666700000
+          825.500000000000000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_S_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP: TQRLabel
+        Left = 40
+        Top = 212
+        Width = 96
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          560.916666666666700000
+          254.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phosphorus (P)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP: TQRDBText
+        Left = 296
+        Top = 212
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          783.166666666666700000
+          560.916666666666700000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLK: TQRLabel
+        Left = 40
+        Top = 252
+        Width = 87
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          666.750000000000000000
+          230.187500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Potassium (K)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTK: TQRDBText
+        Left = 296
+        Top = 252
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          783.166666666666700000
+          666.750000000000000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_K_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCl: TQRLabel
+        Left = 40
+        Top = 292
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          772.583333333333300000
+          211.666666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Chlorine (Cl)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCl: TQRDBText
+        Left = 293
+        Top = 292
+        Width = 27
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          775.229166666666700000
+          772.583333333333300000
+          71.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Cl_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTOligo: TQRLabel
+        Left = 270
+        Top = 384
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          1016.000000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCu: TQRLabel
+        Left = 40
+        Top = 408
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1079.500000000000000000
+          201.083333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Copper (Cu)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCu: TQRDBText
+        Left = 289
+        Top = 408
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1079.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Cu_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLOligo: TQRLabel
+        Left = 40
+        Top = 352
+        Width = 118
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          931.333333333333300000
+          312.208333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Trace-elements'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLMn: TQRLabel
+        Left = 40
+        Top = 448
+        Width = 105
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1185.333333333333000000
+          277.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Manganese (Mn)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMn: TQRDBText
+        Left = 287
+        Top = 448
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1185.333333333333000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Mn_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSe: TQRLabel
+        Left = 40
+        Top = 488
+        Width = 91
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1291.166666666667000000
+          240.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Selenium (Se)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSe: TQRDBText
+        Left = 289
+        Top = 488
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1291.166666666667000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Se_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMb: TQRLabel
+        Left = 40
+        Top = 528
+        Width = 102
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1397.000000000000000000
+          269.875000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Molybdene (Mo)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMb: TQRDBText
+        Left = 287
+        Top = 528
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1397.000000000000000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Mb_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLZn: TQRLabel
+        Left = 40
+        Top = 428
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1132.416666666667000000
+          142.875000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Zinc (Zn)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTZn: TQRDBText
+        Left = 291
+        Top = 428
+        Width = 29
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          769.937500000000000000
+          1132.416666666667000000
+          76.729166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Zn_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLFe: TQRLabel
+        Left = 40
+        Top = 468
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1238.250000000000000000
+          142.875000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Iron (Fe)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTFe: TQRDBText
+        Left = 290
+        Top = 468
+        Width = 30
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          767.291666666666700000
+          1238.250000000000000000
+          79.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Fe_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCo: TQRLabel
+        Left = 40
+        Top = 508
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1344.083333333333000000
+          187.854166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Cobalt (Co)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCo: TQRDBText
+        Left = 289
+        Top = 508
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1344.083333333333000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Co_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLI: TQRLabel
+        Left = 40
+        Top = 548
+        Width = 57
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1449.916666666667000000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Iodine (I)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTI: TQRDBText
+        Left = 302
+        Top = 548
+        Width = 18
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          799.041666666666700000
+          1449.916666666667000000
+          47.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_I_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPhosphore: TQRLabel
+        Left = 40
+        Top = 588
+        Width = 296
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          1555.750000000000000000
+          783.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phosphorus digestion and metabolism'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLPTot: TQRLabel
+        Left = 40
+        Top = 620
+        Width = 149
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1640.416666666667000000
+          394.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total phosphorus (g/kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPTot: TQRDBText
+        Left = 278
+        Top = 620
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          735.541666666666700000
+          1640.416666666667000000
+          111.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PTot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPDigG: TQRLabel
+        Left = 80
+        Top = 660
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1746.250000000000000000
+          134.937500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '- pellets'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPDigG: TQRDBText
+        Left = 267
+        Top = 660
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          706.437500000000000000
+          1746.250000000000000000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PDigG_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPhytase: TQRLabel
+        Left = 40
+        Top = 700
+        Width = 163
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1852.083333333330000000
+          431.270833333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phytic acid phosphorus (% P)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPhytase: TQRDBText
+        Left = 257
+        Top = 700
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          679.979166666667000000
+          1852.083333333330000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Phytase_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLActPhytE: TQRLabel
+        Left = 80
+        Top = 740
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          211.666666666667000000
+          1957.916666666670000000
+          193.145833333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '- endogenous'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTActPhytE: TQRDBText
+        Left = 249
+        Top = 740
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          658.812500000000000000
+          1957.916666666670000000
+          187.854166666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ActPhytE_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPDig: TQRLabel
+        Left = 40
+        Top = 640
+        Width = 180
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1693.333333333333000000
+          476.250000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible phosphorus (g/kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPDigF: TQRLabel
+        Left = 80
+        Top = 680
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1799.166666666667000000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '- mash'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPDigF: TQRDBText
+        Left = 269
+        Top = 680
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          711.729166666666700000
+          1799.166666666667000000
+          134.937500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PDigF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLActPhyt: TQRLabel
+        Left = 40
+        Top = 720
+        Width = 165
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1905.000000000000000000
+          436.562500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phytase activity (IU/kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLActPhytM: TQRLabel
+        Left = 80
+        Top = 760
+        Width = 89
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          211.666666666667000000
+          2010.833333333330000000
+          235.479166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '- microbial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTActPhytM: TQRDBText
+        Left = 247
+        Top = 760
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          653.520833333333000000
+          2010.833333333330000000
+          193.145833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ActPhytM_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFMatiere: TStringField
+      DisplayWidth = 35
+      FieldName = '_Matiere_'
+      Size = 35
+    end
+    object SFCa: TStringField
+      FieldName = '_Ca_'
+      Size = 8
+    end
+    object SFP: TStringField
+      FieldName = '_P_'
+      Size = 8
+    end
+    object SFNa: TStringField
+      FieldName = '_Na_'
+      Size = 8
+    end
+    object SFK: TStringField
+      FieldName = '_K_'
+      Size = 8
+    end
+    object SFMg: TStringField
+      FieldName = '_Mg_'
+      Size = 8
+    end
+    object SFCl: TStringField
+      FieldName = '_Cl_'
+      Size = 8
+    end
+    object SFS: TStringField
+      FieldName = '_S_'
+      Size = 8
+    end
+    object SFCu: TStringField
+      FieldName = '_Cu_'
+      Size = 8
+    end
+    object SFZn: TStringField
+      FieldName = '_Zn_'
+      Size = 8
+    end
+    object SFMn: TStringField
+      FieldName = '_Mn_'
+      Size = 8
+    end
+    object SFFe: TStringField
+      FieldName = '_Fe_'
+      Size = 8
+    end
+    object SFSe: TStringField
+      FieldName = '_Se_'
+      Size = 8
+    end
+    object SFCo: TStringField
+      FieldName = '_Co_'
+      Size = 8
+    end
+    object SFMb: TStringField
+      FieldName = '_Mb_'
+      Size = 8
+    end
+    object SFI: TStringField
+      FieldName = '_I_'
+      Size = 8
+    end
+    object SFPTot: TStringField
+      FieldName = '_PTot_'
+      Size = 8
+    end
+    object SFPDigG: TStringField
+      FieldName = '_PDigG_'
+      Size = 8
+    end
+    object SFPDigF: TStringField
+      FieldName = '_PDigF_'
+      Size = 8
+    end
+    object SFPhytase: TStringField
+      FieldName = '_Phytase_'
+      Size = 8
+    end
+    object SFActPhytE: TStringField
+      FieldName = '_ActPhytE_'
+      Size = 8
+    end
+    object SFActPhytM: TStringField
+      FieldName = '_ActPhytM_'
+      Size = 8
+    end
+  end
+end
Index: UFRapSimulP.pas
===================================================================
--- UFRapSimulP.pas	(révision 0)
+++ UFRapSimulP.pas	(révision 3)
@@ -0,0 +1,212 @@
+unit UFRapSimulP ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapSimulP = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLCaract: TQRLabel;
+    QRLPerf: TQRLabel;
+    QRLSimul: TQRLabel;
+    QRLProfil: TQRLabel;
+    QRLSeqAli: TQRLabel;
+    QRLRation: TQRLabel;
+    QRLPoidsDeb: TQRLabel;
+    QRLPoidsFin: TQRLabel;
+    QRDBTSimul: TQRDBText;
+    QRDBTProfil: TQRDBText;
+    QRDBTSeqAli: TQRDBText;
+    QRDBTRation: TQRDBText;
+    QRDBTPoidsDeb: TQRDBText;
+    QRDBTPoidsFin: TQRDBText;
+    QRLAgeDeb: TQRLabel;
+    QRLAgeFin: TQRLabel;
+    QRDBTAgeDeb: TQRDBText;
+    QRDBTAgeFin: TQRDBText;
+    QRLDuree: TQRLabel;
+    QRLGMQ: TQRLabel;
+    QREDuree: TQRExpr;
+    QREGMQ: TQRExpr;
+    QRLPD: TQRLabel;
+    QRLLD: TQRLabel;
+    QRLAliTot: TQRLabel;
+    QRLAliMoy: TQRLabel;
+    QRDBTAliTot: TQRDBText;
+    QREAliMoy: TQRExpr;
+    QREPD: TQRExpr;
+    QRELD: TQRExpr;
+    QRLWastage: TQRLabel;
+    QRLTMP: TQRLabel;
+    QRDBTTMP: TQRDBText;
+    QRLP2: TQRLabel;
+    QRDBTP2: TQRDBText;
+    CDSRapport: TClientDataSet;
+    SFSimul: TStringField;
+    SFProfil: TStringField;
+    SFSeqAli: TStringField;
+    SFRation: TStringField;
+    IFAgeDeb: TIntegerField;
+    IFAgeFin: TIntegerField;
+    FFPoidsDeb: TFloatField;
+    FFPoidsFin: TFloatField;
+    FFpFin: TFloatField;
+    FFlFin: TFloatField;
+    FFConso: TFloatField;
+    FFTMP: TFloatField;
+    FFP2: TFloatField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    QRLRC: TQRLabel;
+    QRDBTRC: TQRDBText;
+    FFRC: TFloatField;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    QRLFeed: TQRLabel;
+    QREFeed: TQRExpr;
+    QREWastage: TQRExpr;
+    FFIngere: TFloatField;
+    FFpDeb: TFloatField;
+    FFlDeb: TFloatField;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapSimulP: TFRapSimulP;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFSimulP, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapSimulP }
+
+procedure TFRapSimulP.FormCreate(Sender: TObject);
+var
+  i, t: integer;
+  c: double;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  t := PResSimulP.NbJSim;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Simul_'] := FSimulP.CBSimul.Text;
+    FieldValues['_Profil_'] := FSimulP.CBProfil.Text;
+    FieldValues['_SeqAli_'] := FSimulP.CBSeqAli.Text;
+    FieldValues['_Ration_'] := FSimulP.CBRation.Text;
+    FieldValues['_AgeDeb_'] := PResSimulP.TabResult[1, 1];
+    FieldValues['_AgeFin_'] := PResSimulP.TabResult[1, t] + 1;
+    FieldValues['_PoidsDeb_'] := PResSimulP.TabResult[2, 1];
+    FieldValues['_PoidsFin_'] := PResSimulP.TabResult[83, t];
+    FieldValues['_pDeb_'] := PResSimulP.TabResult[49, 1];
+    FieldValues['_pFin_'] := PResSimulP.TabResult[49, t] + PResSimulP.TabResult[79, t] / 1000;
+    FieldValues['_lDeb_'] := PResSimulP.TabResult[50, 1];
+    FieldValues['_lFin_'] := PResSimulP.TabResult[50, t] + PResSimulP.TabResult[80, t] / 1000;
+    c := 0;
+    for i := 1 to t do
+      c := c + PResSimulP.TabResult[113, i];
+    FieldValues['_Conso_'] := c;
+    c := 0;
+    for i := 1 to t do
+      c := c + PResSimulP.TabResult[11, i];
+    FieldValues['_Ingere_'] := c;
+    if FatInfo = 0
+    then // P2
+      FieldValues['_P2_'] := CalcP2(FieldValues['_lFin_'])
+    else // User defined
+      FieldValues['_P2_'] := CalcUserFat(CalcPVV(FieldValues['_PoidsFin_']), FieldValues['_pFin_'], FieldValues['_lFin_']);
+    if LeanInfo = 0
+    then // TMP
+      FieldValues['_TMP_'] := CalcTMP(CalcPVV(FieldValues['_PoidsFin_']), FieldValues['_pFin_'], FieldValues['_lFin_'])
+    else // User defined
+      FieldValues['_TMP_'] := CalcUserLean(CalcPVV(FieldValues['_PoidsFin_']), FieldValues['_pFin_'], FieldValues['_lFin_']);
+    FieldValues['_RC_'] := CalcRC(FieldValues['_PoidsFin_'], CalcRCStd(PProfilP.PVFin, PProfilP.Carcasse), FieldValues['_PoidsFin_']) * 100;
+    Post;
+  end;
+  QRMMemo.Lines.Add(FSimulP.CBSimul.Hint);
+  if FeedInfo = 0
+  then // Indice de consommation
+    QREFeed.Expression := 'IF(CDSRapport._PoidsDeb_ = CDSRapport._PoidsFin_, 0, CDSRapport._Conso_ / (CDSRapport._PoidsFin_ - CDSRapport._PoidsDeb_))'
+  else // Efficacit� alimentaire
+    QREFeed.Expression := 'IF(CDSRapport._Conso_ = 0, 0, (CDSRapport._PoidsFin_ - CDSRapport._PoidsDeb_) / CDSRapport._Conso_)';
+  QRLAgeDeb.Caption := Format('%s (%s)', [QRLAgeDeb.Caption, _('d')]);
+  QRLAgeFin.Caption := Format('%s (%s)', [QRLAgeFin.Caption, _('d')]);
+  QRLDuree.Caption := Format('%s (%s)', [QRLDuree.Caption, _('d')]);
+  QRLPoidsDeb.Caption := Format('%s (%s)', [QRLPoidsDeb.Caption, _('kg')]);
+  QRLPoidsFin.Caption := Format('%s (%s)', [QRLPoidsFin.Caption, _('kg')]);
+  QRLGMQ.Caption := Format('%s (%s/%s)', [QRLGMQ.Caption, _('g'), _('d')]);
+  QRLPD.Caption := Format('%s (%s/%s)', [QRLPD.Caption, _('g'), _('d')]);
+  QRLLD.Caption := Format('%s (%s/%s)', [QRLLD.Caption, _('g'), _('d')]);
+  QRLAliTot.Caption := Format('%s (%s)', [QRLAliTot.Caption, _('kg')]);
+  QRLAliMoy.Caption := Format('%s (%s/%s)', [QRLAliMoy.Caption, _('g'), _('d')]);
+  QRLWastage.Caption := Format('%s (%%)', [QRLWastage.Caption]);
+  if FeedInfo = 0
+  then // Indice de consommation
+    QRLFeed.Caption := Format('%s (%s/%s)', [_('Average feed-to-gain ratio'), _('kg feed'), _('kg gain')])
+  else // Efficacit� alimentaire
+    QRLFeed.Caption := Format('%s (%s/%s)', [_('Average gain-to-feed ratio'), _('kg gain'), _('kg feed')]);
+  if FatInfo = 0
+  then // P2
+    QRLP2.Caption := Format('%s (%s)', [_('Backfat thickness at slaughter'), _('mm')])
+  else // User defined
+    if Length(UserFatLongName) = 0
+    then
+      QRLP2.Caption := Format('%s (%s)', [_('User-defined backfat thickness'), _('mm')])
+    else
+      QRLP2.Caption := Format('%s (%s)', [UserFatLongName, _('mm')]);
+  if LeanInfo = 0
+  then // TMP
+    QRLTMP.Caption := Format('%s (%%)', [_('Lean meat at slaughter')])
+  else // User defined
+    if Length(UserLeanLongName) = 0
+    then
+      QRLTMP.Caption := Format('%s (%%)', [_('User-defined lean meat')])
+    else
+      QRLTMP.Caption := Format('%s (%%)', [UserLeanLongName]);
+  QRLRC.Caption := Format('%s (%%)', [QRLRC.Caption]);
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFCompSimulT.dfm
===================================================================
--- UFCompSimulT.dfm	(révision 0)
+++ UFCompSimulT.dfm	(révision 3)
@@ -0,0 +1,763 @@
+object FCompSimulT: TFCompSimulT
+  Left = 200
+  Top = 157
+  HelpContext = 4600
+  Caption = 'Comparison of sow simulations'
+  ClientHeight = 396
+  ClientWidth = 544
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PC: TPageControl
+    Left = 0
+    Top = 0
+    Width = 544
+    Height = 96
+    ActivePage = TabPerf
+    Align = alTop
+    HotTrack = True
+    MultiLine = True
+    TabOrder = 0
+    TabStop = False
+    OnChange = PCChange
+    object TabPerf: TTabSheet
+      HelpContext = 4610
+      Caption = 'Performance'
+      ImageIndex = 1
+      object GBPerfX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBPerf2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          OnChange = CBPerf2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+      end
+      object GBPerfY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBPerf3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Total body weight'
+          OnChange = CBPerf3Change
+          Items.Strings = (
+            'Total body weight'
+            'Total weight gain'
+            'Net body weight'
+            'Net weight gain'
+            'Feed intake'
+            'Feed conversion ratio'
+            'Feed efficiency'
+            'Protein weight'
+            'Protein deposition'
+            'Lipid weight'
+            'Lipid deposition'
+            'Backfat thickness'
+            'Variation in P2'
+            'Milk production')
+        end
+        object CBPerf4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          TabOrder = 2
+          OnChange = CBPerf4Change
+        end
+        object CBPerf3Global: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Total weight gain'
+          Visible = False
+          OnChange = CBPerf3Change
+          Items.Strings = (
+            'Total weight gain'
+            'Net weight gain'
+            'Duration'
+            'Feed intake'
+            'Feed conversion ratio'
+            'Feed efficiency'
+            'Protein deposition'
+            'Lipid deposition'
+            'Variation in P2'
+            'Milk production')
+        end
+      end
+      object GBPerfT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBPerf1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Dynamic view'
+          OnChange = CBPerf1Change
+          Items.Strings = (
+            'Dynamic view'
+            'Global view')
+        end
+      end
+    end
+    object TabAli: TTabSheet
+      HelpContext = 4620
+      Caption = 'Feeds'
+      ImageIndex = 2
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 66
+      object GBAliY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBAli4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBAli4Change
+        end
+        object CBAli3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Quantity'
+          OnChange = CBAli3Change
+          Items.Strings = (
+            'Quantity'
+            'Feed cost')
+        end
+      end
+      object GBAliX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+      end
+      object GBAliT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBAli1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Feeds'
+          OnChange = CBAli1Change
+          Items.Strings = (
+            'Feeds'
+            'Feed ingredients')
+        end
+        object CBAli5: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          Sorted = True
+          TabOrder = 1
+          Visible = False
+          OnChange = CBAli5Change
+        end
+      end
+    end
+    object TabAA: TTabSheet
+      HelpContext = 4630
+      Caption = 'Amino acids'
+      ImageIndex = 3
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 66
+      object GBAAX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBAA2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          Visible = False
+          OnChange = CBAA2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+      end
+      object GBAAY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBAA3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 1
+          TabOrder = 0
+          Text = 'Lysine'
+          OnChange = CBAA3Change
+          Items.Strings = (
+            'Crude protein'
+            'Lysine'
+            'Methionine'
+            'Methionine + Cystine'
+            'Tryptophan'
+            'Threonine'
+            'Phenylalanine'
+            'Phenylalanine + Tyrosine'
+            'Leucine'
+            'Isoleucine'
+            'Valine'
+            'Histidine'
+            'Arginine')
+        end
+        object CBAA4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBAA4Change
+        end
+      end
+      object GBAAT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBAA1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Partitioning'
+          OnChange = CBAA1Change
+          Items.Strings = (
+            'Partitioning'
+            'Supply'
+            'Requirement')
+        end
+        object CBAA5A: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Standardized digestible'
+          OnChange = CBAA5Change
+          Items.Strings = (
+            'Standardized digestible'
+            'Apparently digestible'
+            'Total')
+        end
+        object CBAA5B: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 2
+          Text = 'Standardized digestible'
+          Visible = False
+          OnChange = CBAA5Change
+          Items.Strings = (
+            'Standardized digestible'
+            'Apparently digestible')
+        end
+      end
+    end
+    object TabNRJ: TTabSheet
+      HelpContext = 4660
+      Caption = 'Energy'
+      ImageIndex = 4
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 66
+      object GBNRJT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+      end
+      object GBNRJY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBNRJ3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Gross energy'
+          OnChange = CBNRJ3Change
+          Items.Strings = (
+            'Gross energy'
+            'Digestible energy'
+            'Metabolizable energy'
+            'Net energy')
+        end
+        object CBNRJ4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBNRJ4Change
+        end
+      end
+      object GBNRJX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBNRJ2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          Visible = False
+          OnChange = CBNRJ2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+      end
+    end
+    object TabMin: TTabSheet
+      HelpContext = 4650
+      Caption = 'Minerals'
+      ImageIndex = 5
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 66
+      object GBMinX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBMin2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Age (d)'
+          Visible = False
+          OnChange = CBMin2Change
+          Items.Strings = (
+            'Age (d)'
+            'Duration (d)')
+        end
+      end
+      object GBMinT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBMin1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Partitioning'
+          OnChange = CBMin1Change
+          Items.Strings = (
+            'Partitioning'
+            'Supply'
+            'Requirement')
+        end
+        object CBMin5A: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 1
+          Text = 'Apparently digestible'
+          OnChange = CBMin5Change
+          Items.Strings = (
+            'Apparently digestible'
+            'Total')
+        end
+        object CBMin5B: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 2
+          Text = 'Apparently digestible'
+          Visible = False
+          OnChange = CBMin5Change
+          Items.Strings = (
+            'Apparently digestible')
+        end
+      end
+      object GBMinY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBMin3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Phosphorus'
+          OnChange = CBMin3Change
+          Items.Strings = (
+            'Phosphorus')
+        end
+        object CBMin4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBMin4Change
+        end
+      end
+    end
+    object TabRej: TTabSheet
+      HelpContext = 4640
+      Caption = 'Mineral balance'
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 66
+      object GBRejY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBRej3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Nitrogen'
+          OnChange = CBRej3Change
+          Items.Strings = (
+            'Nitrogen'
+            'Phosphorus'
+            'Calcium'
+            'Potassium'
+            'Copper'
+            'Zinc')
+        end
+        object CBRej4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBRej4Change
+        end
+      end
+      object GBRejT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+      end
+      object GBRejX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+      end
+    end
+  end
+  object Graph: TChart
+    Left = 0
+    Top = 96
+    Width = 544
+    Height = 300
+    Foot.Alignment = taLeftJustify
+    Foot.Font.Color = clBlack
+    Foot.Font.Style = []
+    Foot.Text.Strings = (
+      'Simulation')
+    Legend.LegendStyle = lsSeries
+    MarginBottom = 1
+    MarginLeft = 1
+    MarginRight = 1
+    MarginTop = 1
+    PrintProportional = False
+    SubTitle.Font.Color = clBlack
+    SubTitle.Text.Strings = (
+      'Total')
+    Title.Font.Height = -16
+    Title.Font.Style = [fsBold]
+    Title.Text.Strings = (
+      'Title')
+    BottomAxis.Title.Caption = 'X'
+    BottomAxis.Title.Font.Style = [fsBold]
+    LeftAxis.Automatic = False
+    LeftAxis.AutomaticMaximum = False
+    LeftAxis.AutomaticMinimum = False
+    LeftAxis.Title.Caption = 'Y'
+    LeftAxis.Title.Font.Style = [fsBold]
+    RightAxis.Title.Font.Style = [fsBold]
+    TopAxis.Title.Font.Style = [fsBold]
+    View3D = False
+    Align = alClient
+    BevelOuter = bvNone
+    PopupMenu = PM
+    TabOrder = 1
+    PrintMargins = (
+      5
+      5
+      5
+      5)
+  end
+  object LBRej: TListBox
+    Left = 400
+    Top = 200
+    Width = 120
+    Height = 56
+    ItemHeight = 13
+    Items.Strings = (
+      'Fecal'
+      'Urinary'
+      'Retained or exported'
+      'Excreted')
+    TabOrder = 2
+    Visible = False
+  end
+  object LBNRJ: TListBox
+    Left = 144
+    Top = 200
+    Width = 120
+    Height = 134
+    ItemHeight = 13
+    Items.Strings = (
+      'Indigestible'
+      'Methane and urine'
+      'Maintenance and activity'
+      'Thermoregulation'
+      'Heat increment'
+      'Litter'
+      'Milk'
+      'Protein deposition'
+      'Lipid deposition'
+      'Deficiency (mobilization)')
+    TabOrder = 3
+    Visible = False
+  end
+  object LBMin: TListBox
+    Left = 272
+    Top = 200
+    Width = 120
+    Height = 95
+    ItemHeight = 13
+    Items.Strings = (
+      'Indigestible'
+      'Maintenance'
+      'Litter'
+      'Retained'
+      'Milk'
+      'Deficiency (mobilization)'
+      'Excess')
+    TabOrder = 4
+    Visible = False
+  end
+  object LBAA: TListBox
+    Left = 16
+    Top = 200
+    Width = 120
+    Height = 147
+    ItemHeight = 13
+    Items.Strings = (
+      'Indigestible'
+      'Basal endogenous'
+      'Maintenance'
+      'Litter'
+      'Minimum oxidation'
+      'Deposition'
+      'Milk'
+      'Mobilization'
+      'Unbalanced'
+      'Deficiency'
+      'Excess')
+    TabOrder = 5
+    Visible = False
+  end
+  object PM: TPopupMenu
+    Top = 96
+    object MI3D: TMenuItem
+      Caption = '2D / 3D'
+      OnClick = MI3DClick
+    end
+    object MIPreview: TMenuItem
+      Caption = 'Print preview'
+      OnClick = MIPreviewClick
+    end
+    object MIPrint: TMenuItem
+      Caption = 'Print...'
+      OnClick = MIPrintClick
+    end
+  end
+  object PD: TPrintDialog
+    Left = 32
+    Top = 96
+  end
+end
Index: UFRapSimulT.pas
===================================================================
--- UFRapSimulT.pas	(révision 0)
+++ UFRapSimulT.pas	(révision 3)
@@ -0,0 +1,417 @@
+unit UFRapSimulT ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapSimulT = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLCaract: TQRLabel;
+    QRLSimul: TQRLabel;
+    QRLProfil: TQRLabel;
+    QRDBTSimul: TQRDBText;
+    QRDBTProfil: TQRDBText;
+    QRLabel1: TQRLabel;
+    QRDBTLoge: TQRDBText;
+    CDSRapport: TClientDataSet;
+    SFSimul: TStringField;
+    SFProfil: TStringField;
+    SFSeqAli: TStringField;
+    SFRation: TStringField;
+    IFCycle: TIntegerField;
+    SFLoge: TStringField;
+    QRLInit: TQRLabel;
+    QRDBTInit: TQRDBText;
+    SFInit: TStringField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    CDSRapport_DureeGest_: TIntegerField;
+    CDSRapport_PVGest_: TFloatField;
+    CDSRapport_GainTotGest_: TFloatField;
+    CDSRapport_GainNetGest_: TFloatField;
+    CDSRapport_P2Gest_: TFloatField;
+    CDSRapport_P2VarGest_: TFloatField;
+    CDSRapport_ConsoGest_: TFloatField;
+    CDSRapport_PDGest_: TFloatField;
+    CDSRapport_LDGest_: TFloatField;
+    CDSRapport_DureeLact_: TIntegerField;
+    CDSRapport_PVLact_: TFloatField;
+    CDSRapport_GainTotLact_: TFloatField;
+    CDSRapport_GainNetLact_: TFloatField;
+    CDSRapport_P2Lact_: TFloatField;
+    CDSRapport_P2VarLact_: TFloatField;
+    CDSRapport_ConsoLact_: TFloatField;
+    CDSRapport_PDLact_: TFloatField;
+    CDSRapport_LDLact_: TFloatField;
+    CDSRapport_DureeISSF_: TIntegerField;
+    CDSRapport_PVISSF_: TFloatField;
+    CDSRapport_GainTotISSF_: TFloatField;
+    CDSRapport_GainNetISSF_: TFloatField;
+    CDSRapport_P2ISSF_: TFloatField;
+    CDSRapport_P2VarISSF_: TFloatField;
+    CDSRapport_ConsoISSF_: TFloatField;
+    CDSRapport_PDISSF_: TFloatField;
+    CDSRapport_LDISSF_: TFloatField;
+    CDSRapport_NesTot_: TFloatField;
+    CDSRapport_Sevres_: TFloatField;
+    CDSRapport_PdsNais_: TFloatField;
+    CDSRapport_PdsSev_: TFloatField;
+    CDSRapport_Lait_: TFloatField;
+    FFNesVifs: TFloatField;
+    QRExpr32: TQRExpr;
+    QRExpr33: TQRExpr;
+    QRExpr31: TQRExpr;
+    QRExpr30: TQRExpr;
+    QRExpr29: TQRExpr;
+    QRExpr27: TQRExpr;
+    QRExpr28: TQRExpr;
+    QRExpr26: TQRExpr;
+    QRExpr22: TQRExpr;
+    QRExpr23: TQRExpr;
+    QRExpr19: TQRExpr;
+    QRExpr24: TQRExpr;
+    QRExpr20: TQRExpr;
+    QRExpr25: TQRExpr;
+    QRExpr21: TQRExpr;
+    QRExpr18: TQRExpr;
+    QRExpr16: TQRExpr;
+    QRExpr17: TQRExpr;
+    QRExpr15: TQRExpr;
+    QRExpr14: TQRExpr;
+    QRExpr10: TQRExpr;
+    QRExpr11: TQRExpr;
+    QRExpr12: TQRExpr;
+    QRExpr13: TQRExpr;
+    QRExpr6: TQRExpr;
+    QRExpr9: TQRExpr;
+    QRExpr8: TQRExpr;
+    QRExpr7: TQRExpr;
+    QRExpr5: TQRExpr;
+    QRExpr4: TQRExpr;
+    QRExpr1: TQRExpr;
+    QRExpr3: TQRExpr;
+    QRExpr2: TQRExpr;
+    QREAge: TQRExpr;
+    QRLSeqAli: TQRLabel;
+    QRLRation: TQRLabel;
+    QRDBTSeqAli: TQRDBText;
+    QRDBTRation: TQRDBText;
+    QRLCycle: TQRLabel;
+    QRDBTCycle: TQRDBText;
+    QRLSaillie: TQRLabel;
+    QRLPoids: TQRLabel;
+    QRLMiseBas: TQRLabel;
+    QRLP2: TQRLabel;
+    QRLAge: TQRLabel;
+    QRLVariation: TQRLabel;
+    QRLabel2: TQRLabel;
+    QRLabel3: TQRLabel;
+    QRLabel4: TQRLabel;
+    QRLabel5: TQRLabel;
+    QRLabel6: TQRLabel;
+    QRLabel7: TQRLabel;
+    QRDBTAgeSail: TQRDBText;
+    QRDBText1: TQRDBText;
+    QRDBText2: TQRDBText;
+    QRDBText3: TQRDBText;
+    QRDBText4: TQRDBText;
+    QRDBText5: TQRDBText;
+    QRDBText6: TQRDBText;
+    QRDBText7: TQRDBText;
+    QRDBText8: TQRDBText;
+    QRDBText9: TQRDBText;
+    QRDBText10: TQRDBText;
+    QRDBText11: TQRDBText;
+    QRDBText12: TQRDBText;
+    QRDBText13: TQRDBText;
+    QRDBText14: TQRDBText;
+    QRDBText15: TQRDBText;
+    QRDBText16: TQRDBText;
+    QRDBText17: TQRDBText;
+    QRLIngere: TQRLabel;
+    QRLAliTot: TQRLabel;
+    QRLAliMoy: TQRLabel;
+    QRDBText18: TQRDBText;
+    QRDBText19: TQRDBText;
+    QRDBText20: TQRDBText;
+    QRLabel8: TQRLabel;
+    QRLabel9: TQRLabel;
+    QRLabel10: TQRLabel;
+    QRLabel11: TQRLabel;
+    QRLabel12: TQRLabel;
+    QRLabel14: TQRLabel;
+    QRLabel15: TQRLabel;
+    QRLabel16: TQRLabel;
+    QRLabel17: TQRLabel;
+    QRDBText21: TQRDBText;
+    QRDBText22: TQRDBText;
+    QRDBText23: TQRDBText;
+    QRDBText24: TQRDBText;
+    QRLabel18: TQRLabel;
+    QRLabel19: TQRLabel;
+    QRLabel20: TQRLabel;
+    QRShape2: TQRShape;
+    QRShape1: TQRShape;
+    QRDBText25: TQRDBText;
+    QRDBText26: TQRDBText;
+    QRExpr34: TQRExpr;
+    QRLabel13: TQRLabel;
+    QRLabel21: TQRLabel;
+    QRLabel22: TQRLabel;
+    QRLabel23: TQRLabel;
+    QRLabel24: TQRLabel;
+    QRShape3: TQRShape;
+    QRLabel25: TQRLabel;
+    QRSDDate: TQRSysData;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapSimulT: TFRapSimulT;
+
+implementation
+
+uses
+  UStrings, UFindRec, UUtil, UFSimulT, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapSimulT }
+
+procedure TFRapSimulT.FormCreate(Sender: TObject);
+var
+  Jour, Cycle, Stade, DebutStade, Duree: integer;
+  GainTot, GainNet, P2Var, Ingere, PD, LD, Lait, GainProfil, GainSimul: double;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    // Initialisation
+    Cycle := Trunc(PResSimulT.TabResult[2, 1]);
+    Stade := Trunc(PResSimulT.TabResult[3, 1]);
+    GainTot := PResSimulT.TabResult[59, 1];
+    GainNet := PResSimulT.TabResult[61, 1];
+    P2Var := PResSimulT.TabResult[68, 1];
+    Ingere := PResSimulT.TabResult[11, 1];
+    PD := PResSimulT.TabResult[63, 1];
+    LD := PResSimulT.TabResult[66, 1];
+    Lait := PResSimulT.TabResult[69, 1];
+    DebutStade := 1;
+    Append;
+    FieldValues['_Simul_'] := PSimulT.Nom;
+    FieldValues['_Profil_'] := FSimulT.CBProfil.Text;
+    FieldValues['_Loge_'] := FSimulT.CBLoge.Text;
+    FieldValues['_Init_'] := FSimulT.CBOptInit.Text;
+    FieldValues['_Cycle_'] := Cycle;
+    if PSimulT.SeqAli[Cycle] = -1
+    then // S�quence alimentaire du profil animal
+      FieldValues['_SeqAli_'] := FindNomSeqAliT (PProfilT.SeqAli)
+    else // S�quence alimentaire de la simulation
+      FieldValues['_SeqAli_'] := FindNomSeqAliT (PSimulT.SeqAli[Cycle]);
+    if PSimulT.Ration[Cycle] = -1
+    then // Ration de r�f�rence du profil animal
+      FieldValues['_Ration_'] := FSimulT.CBRationProfil.Text
+    else // Plan de rationnement de la simulation
+      FieldValues['_Ration_'] := FindNomRationT (PSimulT.Ration[Cycle]);
+    if Stade = 1
+    then // Lactation
+    begin
+      // Naissance
+      FieldValues['_NesTot_'] := PProfilT.Porcelets[Cycle].NesTotaux;
+      FieldValues['_NesVifs_'] := PProfilT.Porcelets[Cycle].NesVivants;
+      FieldValues['_PdsNais_'] := PProfilT.Porcelets[Cycle].PdsNais;
+    end ;
+    if PResSimulT.NbJSim > 1
+    then
+      for Jour := 2 to PResSimulT.NbJSim do
+        if (Cycle = Trunc(PResSimulT.TabResult[2, Jour]))
+        and (Stade = Trunc(PResSimulT.TabResult[3, Jour]))
+        then // Incr�menter les compteurs
+        begin
+          GainTot := GainTot + PResSimulT.TabResult[59, Jour];
+          GainNet := GainNet + PResSimulT.TabResult[61, Jour];
+          P2Var := P2Var + PResSimulT.TabResult[68, Jour];
+          Ingere := Ingere + PResSimulT.TabResult[11, Jour];
+          PD := PD + PResSimulT.TabResult[63, Jour];
+          LD := LD + PResSimulT.TabResult[66, Jour];
+          Lait := Lait + PResSimulT.TabResult[69, Jour];
+        end
+        else // Rupture cycle ou stade
+        begin
+          Duree := Jour - DebutStade;
+          case Stade of
+            0 : // Gestation
+            begin
+              FieldValues['_DureeGest_'] := Duree;
+              FieldValues['_PVGest_'] := PResSimulT.TabResult[58, DebutStade];
+              FieldValues['_GainTotGest_'] := GainTot;
+              FieldValues['_GainNetGest_'] := GainNet;
+              FieldValues['_P2Gest_'] := PResSimulT.TabResult[67, DebutStade];
+              FieldValues['_P2VarGest_'] := P2Var;
+              FieldValues['_ConsoGest_'] := Ingere;
+              FieldValues['_PDGest_'] := PD;
+              FieldValues['_LDGest_'] := LD;
+              // Naissance
+              FieldValues['_NesTot_'] := PProfilT.Porcelets[Cycle].NesTotaux;
+              FieldValues['_NesVifs_'] := PProfilT.Porcelets[Cycle].NesVivants;
+              FieldValues['_PdsNais_'] := PProfilT.Porcelets[Cycle].PdsNais;
+            end;
+            1 : // Lactation
+            begin
+              FieldValues['_DureeLact_'] := Duree;
+              FieldValues['_PVLact_'] := PResSimulT.TabResult[58, DebutStade];
+              FieldValues['_GainTotLact_'] := GainTot;
+              FieldValues['_GainNetLact_'] := GainNet;
+              FieldValues['_P2Lact_'] := PResSimulT.TabResult[67, DebutStade];
+              FieldValues['_P2VarLact_'] := P2Var;
+              FieldValues['_ConsoLact_'] := Ingere;
+              FieldValues['_PDLact_'] := PD;
+              FieldValues['_LDLact_'] := LD;
+              // Sevrage
+              FieldValues['_Sevres_'] := PProfilT.Porcelets[Cycle].Sevres;
+              // Ajustement du poids de sevrage � la dur�e de lactation
+              GainProfil := (273 * PProfilT.DureeLact + (289 / 0.38) * Exp (-0.38 * PProfilT.DureeLact) - 289 / 0.38) / 1000;
+              GainSimul := (273 * PSimulT.DureeLact + (289 / 0.38) * Exp (-0.38 * PSimulT.DureeLact) - 289 / 0.38) / 1000;
+              FieldValues['_PdsSev_'] := PProfilT.Porcelets[Cycle].PdsNais + GainSimul * (PProfilT.Porcelets[Cycle].PdsSev - PProfilT.Porcelets[Cycle].PdsNais) / GainProfil;
+              FieldValues['_Lait_'] := Lait;
+            end;
+            else // ISSF
+            begin
+              FieldValues['_DureeISSF_'] := Duree;
+              FieldValues['_PVISSF_'] := PResSimulT.TabResult[58, DebutStade];
+              FieldValues['_GainTotISSF_'] := GainTot;
+              FieldValues['_GainNetISSF_'] := GainNet;
+              FieldValues['_P2ISSF_'] := PResSimulT.TabResult[67, DebutStade];
+              FieldValues['_P2VarISSF_'] := P2Var;
+              FieldValues['_ConsoISSF_'] := Ingere;
+              FieldValues['_PDISSF_'] := PD;
+              FieldValues['_LDISSF_'] := LD;
+            end;
+          end;
+          // R�initialisation
+          Stade := Trunc(PResSimulT.TabResult[3, Jour]);
+          GainTot := PResSimulT.TabResult[59, Jour];
+          GainNet := PResSimulT.TabResult[61, Jour];
+          P2Var := PResSimulT.TabResult[68, Jour];
+          Ingere := PResSimulT.TabResult[11, Jour];
+          PD := PResSimulT.TabResult[63, Jour];
+          LD := PResSimulT.TabResult[66, Jour];
+          Lait := PResSimulT.TabResult[69, Jour];
+          DebutStade := Jour;
+          if Cycle <> Trunc(PResSimulT.TabResult[2, Jour])
+          then // Changement de cycle
+          begin
+            Post;
+            Cycle := Trunc(PResSimulT.TabResult[2, Jour]);
+            Append;
+            FieldValues['_Simul_'] := PSimulT.Nom;
+            FieldValues['_Profil_'] := FSimulT.CBProfil.Text;
+            FieldValues['_Loge_'] := FSimulT.CBLoge.Text;
+            FieldValues['_Init_'] := FSimulT.CBOptInit.Text;
+            FieldValues['_Cycle_'] := Cycle;
+            if PSimulT.SeqAli[Cycle] = -1
+            then // S�quence alimentaire du profil animal
+              FieldValues['_SeqAli_'] := FindNomSeqAliT (PProfilT.SeqAli)
+            else // S�quence alimentaire de la simulation
+              FieldValues['_SeqAli_'] := FindNomSeqAliT (PSimulT.SeqAli[Cycle]);
+            if PSimulT.Ration[Cycle] = -1
+            then // Ration de r�f�rence du profil animal
+              FieldValues['_Ration_'] := FSimulT.CBRationProfil.Text
+            else // Plan de rationnement de la simulation
+              FieldValues['_Ration_'] := FindNomRationT (PSimulT.Ration[Cycle]);
+          end;
+        end;
+    // Fin de simulation
+    Duree := PResSimulT.NbJSim - DebutStade + 1;
+    case Stade of
+      0 : // Gestation
+      begin
+        FieldValues['_DureeGest_'] := Duree;
+        FieldValues['_PVGest_'] := PResSimulT.TabResult[58, DebutStade];
+        FieldValues['_GainTotGest_'] := GainTot;
+        FieldValues['_GainNetGest_'] := GainNet;
+        FieldValues['_P2Gest_'] := PResSimulT.TabResult[67, DebutStade];
+        FieldValues['_P2VarGest_'] := P2Var;
+        FieldValues['_ConsoGest_'] := Ingere;
+        FieldValues['_PDGest_'] := PD;
+        FieldValues['_LDGest_'] := LD;
+        // Naissance
+        FieldValues['_NesTot_'] := PProfilT.Porcelets[Cycle].NesTotaux;
+        FieldValues['_NesVifs_'] := PProfilT.Porcelets[Cycle].NesVivants;
+        FieldValues['_PdsNais_'] := PProfilT.Porcelets[Cycle].PdsNais;
+      end;
+      1 : // Lactation
+      begin
+        FieldValues['_DureeLact_'] := Duree;
+        FieldValues['_PVLact_'] := PResSimulT.TabResult[58, DebutStade];
+        FieldValues['_GainTotLact_'] := GainTot;
+        FieldValues['_GainNetLact_'] := GainNet;
+        FieldValues['_P2Lact_'] := PResSimulT.TabResult[67, DebutStade];
+        FieldValues['_P2VarLact_'] := P2Var;
+        FieldValues['_ConsoLact_'] := Ingere;
+        FieldValues['_PDLact_'] := PD;
+        FieldValues['_LDLact_'] := LD;
+        // Sevrage
+        FieldValues['_Sevres_'] := PProfilT.Porcelets[Cycle].Sevres;
+        // Ajustement du poids de sevrage � la dur�e de lactation
+        GainProfil := (273 * PProfilT.DureeLact + (289 / 0.38) * Exp (-0.38 * PProfilT.DureeLact) - 289 / 0.38) / 1000;
+        GainSimul := (273 * PSimulT.DureeLact + (289 / 0.38) * Exp (-0.38 * PSimulT.DureeLact) - 289 / 0.38) / 1000;
+        FieldValues['_PdsSev_'] := PProfilT.Porcelets[Cycle].PdsNais + GainSimul * (PProfilT.Porcelets[Cycle].PdsSev - PProfilT.Porcelets[Cycle].PdsNais) / GainProfil;
+        FieldValues['_Lait_'] := Lait;
+      end;
+      else // ISSF
+      begin
+        FieldValues['_DureeISSF_'] := Duree;
+        FieldValues['_PVISSF_'] := PResSimulT.TabResult[58, DebutStade];
+        FieldValues['_GainTotISSF_'] := GainTot;
+        FieldValues['_GainNetISSF_'] := GainNet;
+        FieldValues['_P2ISSF_'] := PResSimulT.TabResult[67, DebutStade];
+        FieldValues['_P2VarISSF_'] := P2Var;
+        FieldValues['_ConsoISSF_'] := Ingere;
+        FieldValues['_PDISSF_'] := PD;
+        FieldValues['_LDISSF_'] := LD;
+      end;
+    end;
+    Post;
+  end;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFLicense.pas
===================================================================
--- UFLicense.pas	(révision 0)
+++ UFLicense.pas	(révision 3)
@@ -0,0 +1,535 @@
+unit UFLicense;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Messages, StdCtrls, Buttons, ExtCtrls,
+  ComCtrls, PBNumEdit, IdBaseComponent, IdComponent, IdTCPConnection,
+  IdTCPClient, IdHTTP, Dialogs, WinInet, IdIOHandler, IdIOHandlerSocket,
+  IdIOHandlerStack, IdSSL, IdSSLOpenSSL;
+
+type
+  TFLicense = class(TForm)
+    LLastName: TLabel;
+    LCompany: TLabel;
+    ELastName: TEdit;
+    ECompany: TEdit;
+    LFirstName: TLabel;
+    EFirstName: TEdit;
+    LMail: TLabel;
+    EMail: TEdit;
+    RBEvaluation: TRadioButton;
+    RBEducation: TRadioButton;
+    RBComplete: TRadioButton;
+    GBLicenseType: TGroupBox;
+    GBAddress: TGroupBox;
+    EAddress1: TEdit;
+    EAddress2: TEdit;
+    EPostalCode: TEdit;
+    LPostalCode: TLabel;
+    ECity: TEdit;
+    LCity: TLabel;
+    ECountry: TEdit;
+    LCountry: TLabel;
+    LFax: TLabel;
+    EFax: TEdit;
+    LPhone: TLabel;
+    EPhone: TEdit;
+    PLicense: TPanel;
+    BBOk: TBitBtn;
+    BBCancel: TBitBtn;
+    PInfo: TPanel;
+    LOrganisation: TLabel;
+    LLicenseNumber: TLabel;
+    PBLicenseNumber: TPBNumEdit;
+    PComplete: TPanel;
+    PEducation: TPanel;
+    LCourse: TLabel;
+    ECourse: TEdit;
+    REHelp: TRichEdit;
+    BBHelp: TBitBtn;
+    GBExport: TGroupBox;
+    GBImport: TGroupBox;
+    BBAutomatic: TBitBtn;
+    BBImport: TBitBtn;
+    SaveDialogLicFile: TSaveDialog;
+    OpenDialogLicFile: TOpenDialog;
+    IdHTTPLicense: TIdHTTP;
+    BBManual: TBitBtn;
+    IdSSL: TIdSSLIOHandlerSocketOpenSSL;
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure RBLicenseTypeClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure BBHelpClick(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+    procedure BBAutomaticClick(Sender: TObject);
+    procedure BBImportClick(Sender: TObject);
+    procedure ECourseChange(Sender: TObject);
+    procedure PBLicenseNumberChange(Sender: TObject);
+    procedure EFirstNameChange(Sender: TObject);
+    procedure ELastNameChange(Sender: TObject);
+    procedure ECompanyChange(Sender: TObject);
+    procedure EAddress1Change(Sender: TObject);
+    procedure EAddress2Change(Sender: TObject);
+    procedure EPostalCodeChange(Sender: TObject);
+    procedure ECityChange(Sender: TObject);
+    procedure ECountryChange(Sender: TObject);
+    procedure EPhoneChange(Sender: TObject);
+    procedure EFaxChange(Sender: TObject);
+    procedure EMailChange(Sender: TObject);
+    procedure BBManualClick(Sender: TObject);
+  private
+    { Private declarations }
+    procedure DisplayLicense;
+    function LicenseIsValid: Boolean;
+  public
+    { Public declarations }
+  end;
+
+var
+  FLicense: TFLicense;
+
+implementation
+
+uses
+  ShellAPI, SHFolder, ShlObj, SysUtils, gnugettext, UVariables, UInit, UStrings,
+  UUtil, UFIntro;
+
+{$R *.dfm}
+
+procedure TFLicense.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 816 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 568 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+end;
+
+procedure TFLicense.FormShow(Sender: TObject);
+begin
+  {
+  ResName := UpperCase('License');
+  Stream := TResourceStream.Create(ResInstance, ResName, 'TEXT');
+  try
+    REHelp.Lines.LoadFromStream(Stream);
+  finally
+    Stream.Free;
+  end;
+  }
+  REHelp.Lines.Add(MsgLicense);
+  DisplayLicense;
+end;
+
+procedure TFLicense.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  s: String;
+  Ok: Boolean;
+begin
+  if ModalResult = mrCancel
+  then
+  begin
+    LoadLicense;
+    Exit;
+  end;
+  if not LicenseIsValid
+  then
+  begin
+    Action := caNone;
+    Exit;
+  end;
+  case LicenseType of
+    1: s := 'AcceptEducation';
+    2: s := 'AcceptComplete';
+    else s := 'AcceptEvaluation';
+  end;
+  if not BdRReadBoolean('\Software\InraPorc', s, False)
+  then
+  begin
+    FIntro := TFIntro.Create(Self);
+    Ok := FIntro.ShowModal = mrOk;
+    FIntro.Release;
+    if Ok
+    then // Accepter
+      BdRWriteBoolean('\Software\InraPorc', s, True)
+    else // Refuser
+    begin
+      Action := caNone;
+      Exit;
+    end;
+  end;
+  SaveLicense;
+  if (RBComplete.Checked and not IsComplete)
+  or (RBEducation.Checked and not IsEducation)
+  then // Licence incorrecte
+    MessageDlg (MsgInvalidLicense + sLineBreak + MsgReadOnly, mtWarning, [mbOk], 0)
+  else
+    if (RBEvaluation.Checked or RBEducation.Checked) and TooMuchRecords
+    then // Trop d'enregistrements
+      MessageDlg(MsgTooMuchRecords, mtWarning, [mbOk], 0);
+end;
+
+procedure TFLicense.RBLicenseTypeClick(Sender: TObject);
+begin
+  if RBComplete.Checked
+  then // Compl�te
+    LicenseType := 2
+  else
+    if RBEducation.Checked
+    then // Education
+      LicenseType := 1
+    else // Evaluation
+      LicenseType := 0;
+//  PEducation.Visible := RBEducation.Checked;
+  LCourse.Enabled := RBEducation.Checked;
+  ECourse.Enabled := RBEducation.Checked;
+//  PComplete.Visible := RBComplete.Checked;
+  LLicenseNumber.Enabled := RBComplete.Checked;
+  PBLicenseNumber.Enabled := RBComplete.Checked;
+  PInfo.Enabled := RBComplete.Checked or RBEducation.Checked;
+  EFirstName.Enabled := PInfo.Enabled;
+  ELastName.Enabled := PInfo.Enabled;
+  LOrganisation.Visible := RBEducation.Checked;
+  LCompany.Visible := not LOrganisation.Visible;
+  ECompany.Enabled := PInfo.Enabled;
+  EAddress1.Enabled := PInfo.Enabled;
+  EAddress2.Enabled := PInfo.Enabled;
+  EPostalCode.Enabled := PInfo.Enabled;
+  ECity.Enabled := PInfo.Enabled;
+  ECountry.Enabled := PInfo.Enabled;
+  EPhone.Enabled := PInfo.Enabled;
+  EFax.Enabled := PInfo.Enabled;
+  EMail.Enabled := PInfo.Enabled;
+  GBExport.Enabled := PInfo.Enabled;
+end;
+
+procedure TFLicense.BBAutomaticClick(Sender: TObject);
+{
+const
+  bSSL = True;
+  sServer = 'inraporc.inra.fr';
+  sScript = '/inraporc/SoftwareEnableKey.php';
+  sMethod = 'POST';
+  accept: packed array[0..1] of LPWSTR = (PChar('*/*'), nil);
+  header: string = 'Content-Type: application/x-www-form-urlencoded';
+}
+var
+  ParamList: TStringList;
+  ResultString: string;
+  {
+  rbsParams: RawByteString;
+  hInet, hConnect, hRequest: HINTERNET;
+  port: Word;
+  flag: DWORD;
+  i: Integer;
+  }
+begin
+  if not LicenseIsValid
+  then
+    Exit;
+  BBAutomatic.Enabled := False;
+  Screen.Cursor := crHourGlass;
+  ParamList := TStringList.Create;
+  try
+    ParamList.Add(Format('Language=%s', [UpperCase(Copy(LanguageCode, 1, 2))]));
+    ParamList.Add(Format('LicenseType=%d', [LicenseType]));
+    ParamList.Add(Format('LicenseNumber=%d', [LicenseNumber]));
+    ParamList.Add(Format('Version=%s', [VersionString]));
+    ParamList.Add(Format('FirstName=%s', [FirstName]));
+    ParamList.Add(Format('LastName=%s', [LastName]));
+    ParamList.Add(Format('Company=%s', [Company]));
+    ParamList.Add(Format('Address1=%s', [Address1]));
+    ParamList.Add(Format('Address2=%s', [Address2]));
+    ParamList.Add(Format('PostalCode=%s', [PostalCode]));
+    ParamList.Add(Format('City=%s', [City]));
+    ParamList.Add(Format('Country=%s', [Country]));
+    ParamList.Add(Format('Phone=%s', [Phone]));
+    ParamList.Add(Format('Fax=%s', [Fax]));
+    ParamList.Add(Format('Mail=%s', [Mail]));
+    ParamList.Add(Format('Course=%s', [Course]));
+    ParamList.Add(Format('VolumeSerialNumber=%s', [Volume]));
+    ParamList.Add(Format('FinalDate=%s', [FinalDate]));
+    ParamList.Add(Format('SoftwareEnableKey=%s', [SoftwareEnableKey]));
+    {
+    // M�thode plus propre, mais qui n'enregistre pas les param�tre sans valeur
+    ParamList.Values['Language'] := UpperCase(Copy(LanguageCode, 1, 2));
+    ParamList.Values['LicenseType'] := IntToStr(LicenseType);
+    ParamList.Values['LicenseNumber'] := IntToStr(LicenseNumber);
+    ParamList.Values['Version'] := VersionString;
+    ParamList.Values['FirstName'] := FirstName;
+    ParamList.Values['LastName'] := LastName;
+    ParamList.Values['Company'] := Company;
+    ParamList.Values['Address1'] := Address1;
+    ParamList.Values['Address2'] := Address2;
+    ParamList.Values['PostalCode'] := PostalCode;
+    ParamList.Values['City'] := City;
+    ParamList.Values['Country'] := Country;
+    ParamList.Values['Phone'] := Phone;
+    ParamList.Values['Fax'] := Fax;
+    ParamList.Values['Mail'] := Mail;
+    ParamList.Values['Course'] := Course;
+    ParamList.Values['VolumeSerialNumber'] := Volume;
+    ParamList.Values['FinalDate'] := FinalDate;
+    ParamList.Values['SoftwareEnableKey'] := SoftwareEnableKey;
+    }
+    try
+      IdHTTPLicense.ConnectTimeout := 10000;
+      ResultString := IdHTTPLicense.Post(URL_HTTPS + 'SoftwareEnableKey.php', ParamList);
+      if ResultString <> ''
+      then // Erreur PHP
+        MessageDlg(ResultString, mtError, [mbOk], 0)
+      else // Enregistrement effectu�
+        MessageDlg(MsgLicenseSuccess, mtConfirmation, [mbOk], 0);
+    except
+      // Exception Delphi (Indy HTTP)
+      MessageDlg(MsgServerUnreachable, mtError, [mbOk], 0);
+    end;
+    {
+    for i := 0 to ParamList.Count - 1 do
+      if i = 0 then
+        rbsParams := utf8encode(ParamList[i])
+      else
+        rbsParams := rbsParams + '&' + utf8encode(ParamList[i]);
+    hInet := InternetOpen('InraPorc', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
+    if not Assigned(hInet) then
+      MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOk], 0)
+    else try
+      if bSSL then
+        port := INTERNET_DEFAULT_HTTPS_PORT
+      else
+        port := INTERNET_DEFAULT_HTTP_PORT;
+      flag := INTERNET_SERVICE_HTTP;
+      hConnect := InternetConnect(hInet, PWideChar(sServer), port, nil, nil, flag, 0, 0);
+      if not Assigned(hConnect) then
+        MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOk], 0)
+      else try
+        if bSSL then
+          flag := INTERNET_FLAG_SECURE  or INTERNET_FLAG_KEEP_CONNECTION;
+        hRequest := HttpOpenRequest(hConnect, PWideChar(sMethod), PWideChar(sScript), nil, nil, @accept, flag, 0);
+        if not Assigned(hRequest) then
+          MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOk], 0)
+        else try
+          flag := HTTP_ADDREQ_FLAG_ADD;
+          HttpAddRequestHeaders(hRequest, Pointer(header), ByteLength(header), flag);
+          if not HttpSendRequest(hRequest, nil, 0, Pointer(rbsParams), Length(rbsParams)) then
+            MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOk], 0)
+          else
+            MessageDlg(MsgLicenseSuccess, mtConfirmation, [mbOk], 0);
+        finally
+          InternetCloseHandle(hRequest);
+        end;
+      finally
+        InternetCloseHandle(hConnect);
+      end;
+    finally
+      InternetCloseHandle(hInet);
+    end;
+    }
+  finally
+    ParamList.Free;
+    Screen.Cursor:= crDefault;
+    BBAutomatic.Enabled := True;
+  end;
+end;
+
+procedure TFLicense.BBHelpClick(Sender: TObject);
+begin
+  Application.HelpCommand(HELP_CONTEXT, HelpContext);
+end;
+
+procedure TFLicense.BBImportClick(Sender: TObject);
+var
+  DesktopPath: array[0..MAX_PATH] of Char;
+begin
+  OpenDialogLicFile.FileName := 'InraPorc.lic';
+  SHGetFolderPath(0, CSIDL_DESKTOP, 0, SHGFP_TYPE_CURRENT, DesktopPath);
+  OpenDialogLicFile.InitialDir := DesktopPath;
+  if OpenDialogLicFile.Execute
+  then // Importer les informations
+  begin
+    LoadLicFile(OpenDialogLicFile.FileName);
+    DisplayLicense;
+  end;
+end;
+
+procedure TFLicense.BBManualClick(Sender: TObject);
+var
+  DesktopPath: array[0..MAX_PATH] of Char;
+begin
+  if not LicenseIsValid
+  then
+    Exit;
+  SaveDialogLicFile.FileName := 'InraPorc.lic';
+  SHGetFolderPath(0, CSIDL_DESKTOP, 0, SHGFP_TYPE_CURRENT, DesktopPath);
+  SaveDialogLicFile.InitialDir := DesktopPath;
+  if SaveDialogLicFile.Execute
+  then // Exporter les informations
+  begin
+    SaveLicFile(SaveDialogLicFile.FileName);
+    if Copy(LanguageCode, 1, 2) = 'fr'
+    then
+      ShellExecute(Handle, 'open', PChar(URL_HTTPS + 'key_fr.html'), nil, nil, SW_SHOWNORMAL)
+    else
+      ShellExecute(Handle, 'open', PChar(URL_HTTPS + 'key_en.html'), nil, nil, SW_SHOWNORMAL);
+  end;
+end;
+
+procedure TFLicense.PBLicenseNumberChange(Sender: TObject);
+begin
+  LicenseNumber := PBLicenseNumber.AsInteger;
+end;
+
+procedure TFLicense.DisplayLicense;
+begin
+  case LicenseType of
+    2: // Compl�te
+      RBComplete.Checked := True;
+    1: // Education
+      RBEducation.Checked := True;
+    else // Evaluation
+      RBEvaluation.Checked := True;
+  end;
+  PBLicenseNumber.AsInteger := LicenseNumber;
+  ECourse.Text := Course;
+  EFirstName.Text := FirstName;
+  ELastName.Text := LastName;
+  ECompany.Text := Company;
+  EAddress1.Text := Address1;
+  EAddress2.Text := Address2;
+  EPostalCode.Text := PostalCode;
+  ECity.Text := City;
+  ECountry.Text := Country;
+  EPhone.Text := Phone;
+  EFax.Text := Fax;
+  EMail.Text := Mail;
+end;
+
+function TFLicense.LicenseIsValid: Boolean;
+begin
+  Result := False;
+  if RBComplete.Checked and (DriveType(Drive) <> DRIVE_FIXED)
+  then // La version compl�te doit �tre install�e sur un disque fixe
+  begin
+    MessageDlg(MsgFixedDrive, mtWarning, [mbOk], 0);
+    ActiveControl := RBComplete;
+    Exit;
+  end;
+  if RBComplete.Checked and (LicenseNumber = 0)
+  then // Num�ro de licence non renseign�
+  begin
+    MessageDlg(Format(MsgRequiredField, [LLicenseNumber.Caption]), mtWarning, [mbOk], 0);
+    ActiveControl := PBLicenseNumber;
+    Exit;
+  end;
+  if (RBEducation.Checked or RBComplete.Checked) and (Length(FirstName) = 0)
+  then // Pr�nom non renseign�
+  begin
+    MessageDlg(Format(MsgRequiredField, [LFirstName.Caption]), mtWarning, [mbOk], 0);
+    ActiveControl := EFirstName;
+    Exit;
+  end;
+  if (RBEducation.Checked or RBComplete.Checked) and (Length(LastName) = 0)
+  then // Nom de famille non renseign�
+  begin
+    MessageDlg(Format(MsgRequiredField, [LLastName.Caption]), mtWarning, [mbOk], 0);
+    ActiveControl := ELastName;
+    Exit;
+  end;
+  if RBEducation.Checked and (Length(Company) = 0)
+  then // Etablissement non renseign�
+  begin
+    MessageDlg(Format(MsgRequiredField, [LOrganisation.Caption]), mtWarning, [mbOk], 0);
+    ActiveControl := ECompany;
+    Exit;
+  end;
+  if (RBEducation.Checked or RBComplete.Checked) and (Length(Mail) = 0)
+  then // Mail non renseign�
+  begin
+    MessageDlg(MsgMissingMail, mtWarning, [mbOk], 0);
+    ActiveControl := EMail;
+    Exit;
+  end;
+  if RBComplete.Checked and ((Length(Address1) = 0) or (Length(City) = 0) or (Length(Country) = 0))
+  then // Adresse non renseign�e
+  begin
+    MessageDlg(MsgMissingAddress, mtWarning, [mbOk], 0);
+    ActiveControl := EAddress1;
+    Exit;
+  end;
+  Result := True;
+end;
+
+procedure TFLicense.EAddress1Change(Sender: TObject);
+begin
+  Address1 := EAddress1.Text;
+end;
+
+procedure TFLicense.EAddress2Change(Sender: TObject);
+begin
+  Address2 := EAddress2.Text;
+end;
+
+procedure TFLicense.ECityChange(Sender: TObject);
+begin
+  City := ECity.Text;
+end;
+
+procedure TFLicense.ECompanyChange(Sender: TObject);
+begin
+  Company := ECompany.Text;
+end;
+
+procedure TFLicense.ECountryChange(Sender: TObject);
+begin
+  Country := ECountry.Text;
+end;
+
+procedure TFLicense.ECourseChange(Sender: TObject);
+begin
+  Course :=ECourse.Text;
+end;
+
+procedure TFLicense.EFaxChange(Sender: TObject);
+begin
+  Fax := EFax.Text;
+end;
+
+procedure TFLicense.EFirstNameChange(Sender: TObject);
+begin
+  FirstName := EFirstName.Text;
+end;
+
+procedure TFLicense.ELastNameChange(Sender: TObject);
+begin
+  LastName := ELastName.Text;
+end;
+
+procedure TFLicense.EMailChange(Sender: TObject);
+begin
+  Mail := EMail.Text;
+end;
+
+procedure TFLicense.EPhoneChange(Sender: TObject);
+begin
+  Phone := EPhone.Text;
+end;
+
+procedure TFLicense.EPostalCodeChange(Sender: TObject);
+begin
+  PostalCode := EPostalCode.Text;
+end;
+
+procedure TFLicense.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFRapBesLactE.pas
===================================================================
--- UFRapBesLactE.pas	(révision 0)
+++ UFRapBesLactE.pas	(révision 3)
@@ -0,0 +1,265 @@
+unit UFRapBesLactE ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, Math,
+  QRCtrls, QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapBesLactE = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    CDSRapport: TClientDataSet;
+    IFCycle: TIntegerField;
+    FFGMQPort: TFloatField;
+    FFPdsMB: TFloatField;
+    FFP2MB: TFloatField;
+    IFDureeLact: TIntegerField;
+    FFBesEMEnt: TFloatField;
+    FFBesEMLait: TFloatField;
+    FFBesEMTot: TFloatField;
+    FFAppED: TFloatField;
+    FFAppEM: TFloatField;
+    FFAppEN: TFloatField;
+    FFBesAli: TFloatField;
+    FFLys: TFloatField;
+    FFMet: TFloatField;
+    FFMetCys: TFloatField;
+    FFTrp: TFloatField;
+    FFThr: TFloatField;
+    FFPhe: TFloatField;
+    FFPheTyr: TFloatField;
+    FFLeu: TFloatField;
+    FFIle: TFloatField;
+    FFVal: TFloatField;
+    FFHis: TFloatField;
+    FFArg: TFloatField;
+    QREBesENTot: TQRExpr;
+    QRLBesENTot: TQRLabel;
+    QREPctPort: TQRExpr;
+    QREPctEnt: TQRExpr;
+    QRDBText3: TQRDBText;
+    QRDBText2: TQRDBText;
+    QRLPoids: TQRLabel;
+    QRLCaract: TQRLabel;
+    QRLMiseBas: TQRLabel;
+    QRLP2: TQRLabel;
+    QRLAge: TQRLabel;
+    QRLSevres: TQRLabel;
+    QRLPdsPt: TQRLabel;
+    QRDBTPdsMB: TQRDBText;
+    QRDBTP2MB: TQRDBText;
+    QRDBTAgeMB: TQRDBText;
+    QRLNRJ: TQRLabel;
+    QRLAA: TQRLabel;
+    QRLNRJEnt: TQRLabel;
+    QRLNRJPort: TQRLabel;
+    QRLNRJTot: TQRLabel;
+    QRDBTEMEnt: TQRDBText;
+    QRLEMEnt: TQRLabel;
+    QRLPctEnt: TQRLabel;
+    QRDBTEMPort: TQRDBText;
+    QRLEMPort: TQRLabel;
+    QRLPctPort: TQRLabel;
+    QRDBTBesEMTot: TQRDBText;
+    QRLBesEMTot: TQRLabel;
+    QREArgPctLys: TQRExpr;
+    QREHisPctLys: TQRExpr;
+    QREValPctLys: TQRExpr;
+    QREIlePctLys: TQRExpr;
+    QRELeuPctLys: TQRExpr;
+    QREPheTyrPctLys: TQRExpr;
+    QREPhePctLys: TQRExpr;
+    QREThrPctLys: TQRExpr;
+    QRETrpPctLys: TQRExpr;
+    QREMetCysPctLys: TQRExpr;
+    QREMetPctLys: TQRExpr;
+    QRELysPctLys: TQRExpr;
+    QREArgAli: TQRExpr;
+    QREHisAli: TQRExpr;
+    QREValAli: TQRExpr;
+    QREIleAli: TQRExpr;
+    QRELeuAli: TQRExpr;
+    QREPheTyrAli: TQRExpr;
+    QREPheAli: TQRExpr;
+    QREThrAli: TQRExpr;
+    QRETrpAli: TQRExpr;
+    QREMetCysAli: TQRExpr;
+    QREMetAli: TQRExpr;
+    QRELysAli: TQRExpr;
+    QRLAATot: TQRLabel;
+    QRLAAAli: TQRLabel;
+    QRLPctLys: TQRLabel;
+    QRLLys: TQRLabel;
+    QRLMet: TQRLabel;
+    QRLMetCys: TQRLabel;
+    QRLTrp: TQRLabel;
+    QRLThr: TQRLabel;
+    QRLPhe: TQRLabel;
+    QRLPheTyr: TQRLabel;
+    QRLLeu: TQRLabel;
+    QRLIle: TQRLabel;
+    QRLVal: TQRLabel;
+    QRLHis: TQRLabel;
+    QRLArg: TQRLabel;
+    QRDBTLysTot: TQRDBText;
+    QRDBTMetTot: TQRDBText;
+    QRDBTMetCysTot: TQRDBText;
+    QRDBTTrpTot: TQRDBText;
+    QRDBTThrTot: TQRDBText;
+    QRDBTPheTot: TQRDBText;
+    QRDBTPheTyrTot: TQRDBText;
+    QRDBTLeuTot: TQRDBText;
+    QRDBTIleTot: TQRDBText;
+    QRDBTValTot: TQRDBText;
+    QRDBTHisTot: TQRDBText;
+    QRDBTArgTot: TQRDBText;
+    QRShape1: TQRShape;
+    QRLDeficit: TQRLabel;
+    QRDBTBesAli: TQRDBText;
+    QRLBesAli: TQRLabel;
+    QREDefEN: TQRExpr;
+    QRLDefEN: TQRLabel;
+    QRDBTDefEM: TQRDBText;
+    QRLDefEM: TQRLabel;
+    QRDBTDefAli: TQRDBText;
+    QRLDefAli: TQRLabel;
+    FFDefEM: TFloatField;
+    FFDefAli: TFloatField;
+    QRLMin: TQRLabel;
+    QRECaAli: TQRExpr;
+    QREPAli: TQRExpr;
+    QRLabel2: TQRLabel;
+    QRLabel3: TQRLabel;
+    QRLP: TQRLabel;
+    QRLCa: TQRLabel;
+    QRDBTPTot: TQRDBText;
+    QRDBTCaTot: TQRDBText;
+    FFP: TFloatField;
+    FFCa: TFloatField;
+    FFSevres: TFloatField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLabel1: TQRLabel;
+    QRLabel4: TQRLabel;
+    QRLabel5: TQRLabel;
+    QRLabel6: TQRLabel;
+    QREAppEM: TQRExpr;
+    QREAppEN: TQRExpr;
+    QREAppAli: TQRExpr;
+    SFProfil: TStringField;
+    QRShape6: TQRShape;
+    QRDBTCycle: TQRDBText;
+    QRLCycle: TQRLabel;
+    QRLProfil: TQRLabel;
+    QRDBTProfil: TQRDBText;
+    QRSDDate: TQRSysData;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapBesLactE: TFRapBesLactE;
+
+implementation
+
+uses
+  UStrings, UUtil, UFBesLactE, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapBesLactE }
+
+procedure TFRapBesLactE.FormCreate(Sender: TObject);
+var
+  Cycle: integer;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    for Cycle := 1 to NB_CYCLES do
+    begin
+      Append;
+      FieldValues['_Cycle_'] := Cycle ;
+      FieldValues['_Profil_'] := FBesLactE.CBProfil.Text ;
+      FieldValues['_DureeLact_'] := PPRofilT.DureeLact ;
+      FieldValues['_Sevres_'] := PProfilT.Porcelets[Cycle].Sevres ;
+      FieldValues['_GMQPort_'] := (PProfilT.Porcelets[Cycle].PdsSev - PProfilT.Porcelets[Cycle].PdsNais) * PProfilT.Porcelets[Cycle].Sevres / PPRofilT.DureeLact ;
+      FieldValues['_PdsMB_'] := PProfilT.Truies[Cycle].PdsApMB ;
+      FieldValues['_P2MB_'] := PProfilT.Truies[Cycle].P2MB ;
+      FieldValues['_BesEMEnt_'] := FBesLactE.BesEMEntTot[Cycle] ;
+      FieldValues['_BesEMLait_'] := FBesLactE.BesEMLaitTot[Cycle] ;
+      FieldValues['_BesEMTot_'] := FBesLactE.BesEMTot[Cycle] ;
+      FieldValues['_AppED_'] := FBesLactE.AppEDTot[Cycle] ;
+      FieldValues['_AppEM_'] := FBesLactE.AppEMTot[Cycle] ;
+      FieldValues['_AppEN_'] := FBesLactE.AppENTot[Cycle] ;
+      if (FBesLactE.AppEMTot[Cycle] = 0)
+      then
+        FieldValues['_BesAli_'] := 0
+      else
+        FieldValues['_BesAli_'] := FBesLactE.BesEMTot[Cycle] * FBesLactE.AppAliTot[Cycle] / FBesLactE.AppEMTot[Cycle] ;
+      if (FBesLactE.BesEMTot[Cycle] > FBesLactE.AppEMTot[Cycle] / PProfilT.DureeLact)
+      then // D�ficit
+      begin
+        FieldValues['_DefEM_'] := FBesLactE.BesEMTot[Cycle] - FBesLactE.AppEMTot[Cycle] / PProfilT.DureeLact ;
+        FieldValues['_DefAli_'] := FBesLactE.BesEMTot[Cycle] * FBesLactE.AppAliTot[Cycle] / FBesLactE.AppEMTot[Cycle] - FBesLactE.AppAliTot[Cycle] / PProfilT.DureeLact ;
+      end
+      else // Exc�s
+      begin
+        FieldValues['_DefEM_'] := 0 ;
+        FieldValues['_DefAli_'] := 0 ;
+      end ;
+      FieldValues['_Lys_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 1], PProfilT.DureeLact)) ;
+      FieldValues['_Met_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 2], PProfilT.DureeLact)) ;
+      FieldValues['_MetCys_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 13], PProfilT.DureeLact)) ;
+      FieldValues['_Trp_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 4], PProfilT.DureeLact)) ;
+      FieldValues['_Thr_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 5], PProfilT.DureeLact)) ;
+      FieldValues['_Phe_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 6], PProfilT.DureeLact)) ;
+      FieldValues['_PheTyr_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 14], PProfilT.DureeLact)) ;
+      FieldValues['_Leu_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 8], PProfilT.DureeLact)) ;
+      FieldValues['_Ile_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 9], PProfilT.DureeLact)) ;
+      FieldValues['_Val_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 10], PProfilT.DureeLact)) ;
+      FieldValues['_His_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 11], PProfilT.DureeLact)) ;
+      FieldValues['_Arg_'] := Mean (Slice (FBesLactE.BesAA[Cycle, 12], PProfilT.DureeLact)) ;
+      FieldValues['_P_'] := Mean (Slice (FBesLactE.BesP[Cycle], PProfilT.DureeLact)) ;
+      FieldValues['_Ca_'] := Mean (Slice (FBesLactE.BesCa[Cycle], PProfilT.DureeLact)) ;
+      Post;
+    end ;
+  end ;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFMenu.dfm
===================================================================
--- UFMenu.dfm	(révision 0)
+++ UFMenu.dfm	(révision 3)
@@ -0,0 +1,18998 @@
+object FMenu: TFMenu
+  Left = 0
+  Top = 0
+  HelpType = htKeyword
+  HelpContext = 1
+  Caption = 'InraPorc'
+  ClientHeight = 710
+  ClientWidth = 1008
+  Color = clWhite
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIForm
+  Menu = MainMenu
+  OldCreateOrder = True
+  Position = poDesigned
+  Scaled = False
+  ScreenSnap = True
+  ShowHint = True
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnResize = FormResize
+  OnShow = FormShow
+  DesignSize = (
+    1008
+    710)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object IBackground: TImage
+    Left = 8
+    Top = 8
+    Width = 992
+    Height = 504
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    Center = True
+    Picture.Data = {
+      07544269746D617072220900424D72220900000000003600000028000000F602
+      00000701000001001800000000003C220900120B0000120B0000000000000000
+      00006B8DC6ABB6E5ECECFBBBC2D94760A15C83C47EA5E18DAFE96B96D83773BB
+      80A8E38FB0E97291CB7488C28D9FCE879ECB4E77A64D79B3809ED54E78B55C80
+      B6718AB98797B97285AA5D729A839EB5C4E8E783A0AE37497F283A7713245300
+      002638538291B6EF447ECA04357A143B78457DC491C0F8547DB327529040629B
+      173A734471B2AFDBFF93CBFF5290CC172E4C03031833477E5376C6305EA71041
+      835B84C8BAD5FFA5C7FF4C74BD17408B326DC16193DF668CD04270BA3B6FBC27
+      4684000424496375AAC5C39AB3B16D899E44719C215B88235985517DA94476A1
+      0D406D214F7C366995467BA36595BD2264923368935F94BA3681B0548FBD3242
+      621D3A5A14537C296795538EC05D96CB3E74A7123B654E80A86DAFD9669BC46E
+      9AC26E98C873A2D3396991042A4B315C8119375B0C224239719B4787B63C76A3
+      4379A56190B778A1CB7298C020405C0A2A46395D7E485E765A727CD9E2E1F7FF
+      FF90A9B0282F37181A1F1E1C1C3833333934372B282A2327251B1E1F32383844
+      4B4B2D3533282B2A31312E1F1F1D29282B32323447484F52535F393C41272928
+      1F201F282B2C2E3234212426424445444745363B3F2A2F382025253A3D3B2629
+      241D201E1B1C202A2A302F2F3039393F4B4B594852616078943D4D5B1F251C39
+      413F2F3534333636373939343537151515575A5E99ADB88FA7AC748D965D7A9A
+      3D61874263825C779537516C233E5833526F3D5F7B1A32470F213414334B3058
+      79618BBA5D87B727527C1033563B5A796B8CAC80A4CA789EC53F688D1535551A
+      335436567E3D608522436507233E0021382049683C6A903F6C99396691275072
+      2244644D6C8E728AA7617C9D607A9B46637D021F3F243E56A0B3BCDAE3E6C3D8
+      CF85ACB43B6A9F527DB87FA6D84383BF3377B57CA3D582A7D8618FC54E7FB362
+      8CBC6D8BB75B7CA887A5CDABC0E6AFC6E792B3E1447BC35F8ACB819FD47499CF
+      769CCE5F8CC64674A512396440679B7EA6DFA1C0EFB4CFEDA7C2E6A6C2E6BAD1
+      F0B3CDF25C7EAA4C618A89A1C78EADCF89A3C37493B7566B8D464A6A7684ACAF
+      CCF5A0BEE78BAEDD91AFDA98B0D786A2CD7596C37291B9607DA74862838B9CA9
+      F3FCFCEBF7F96C7F8A0E212E17232F121B2623333E4C5C6F4C596E2C3541363B
+      47636D7F4A586B2B36481C253333414F536576192930000A0E18233338485B5B
+      70824B62752C3C4F485E783E516817232E0B191D323E477C90A85B6D81111B22
+      2E384429363F47535E2D3A472633410D17251E263173748321222F0A0E162E3B
+      47212A3719202E2E41584C648256647E313C485B7B786E968F3958587A8F9FB1
+      C5E4A5CAEE95BEE498BEE391BAE192BAE391BCE48DBCE3A9CEEE90BCE06BA3CF
+      9DC8EBBFE1F8C6E5FDC3EAEF687A870C233E548DBA91C4F0A5C6E795B9DF7CAC
+      D6ABCAE4C2D8EDB8D1EAB9D4EABBD5EBBFD6EBD3E3F4B2CFE86EA5CF40608217
+      243D517B9F4782A9396D905F83A36C8CAF7BA5C97CAAD16899C36E98BB8CA1B8
+      8398AF62809A80A2B2EFFCFDCBDFE0ACB8BE8F969E2135400A2433001926222D
+      327D7782565D6E18314029404D263946212F3B1B20281A181D1E1B1C25232525
+      2E3B2843572B50622845571D32422D40503F536545586A324958293A49263443
+      18212A1A2630314D5F3D5B6D3D546453637055636F505B6C5662754E5D6D5063
+      7653687B3E535F364B5742566540586732485326343D1B272F0C18203A4B51B4
+      D4D4B0D8D45B72773F4B632A6DA4003B8F3D558BFDF9F5EFFBFFBEE2FFCFE7FD
+      A8DAFD61CFFF32D1FF56D5F87ACEFC66ACEA95B0D6DFDBE7EEFBFDEDFFFFD8F4
+      FFB6D2FF7BAFEC196BBA4488C4A1C5EF9EC0F59EC4FB6FB6FA4AB1F760C7FA74
+      D6FD6ED6FF55CCFD48C4FC47BBF741ACF23AA8EC6CB3E36EABD74F98CE2A91C5
+      003B7D415B83D9E6EA98A9B05A6D803F556D07203E06284617314C1F3149455B
+      7A425E8133547B2E50770E2845131F387D8EB296AACF748BB04D65860524492A
+      47706881AA6B86AF6F8AB16B83AE37567C506E926D86AF18335A0B1B3C6880A2
+      7E9BC45F85B082A0D136537A0821381022393E55757997B86684A26280A66181
+      A9335174344A67182F483D5A7F5176A54D71A04C6D972845652B46633C587745
+      5F8059739A41658F597AA17792B67691B76181A639618A5676A2728BB2516F90
+      4C6B8848628034506F142D4A00122E294361364E6C1D324C6981A3809BC24A67
+      8E66799D8694B296A9C96080A0244266344E73274C702D50736384A57091B45A
+      789F4C688D546E928B9DC1667999041E320F28424E6B976386B76F8FC2597DAE
+      577CA8537497203A56365371152D49000821364F70627EA43D56790F2641354F
+      70233F5C1734513855783D5A7F244260203C5C28476C6582A787A5C789A6C650
+      7092345A8A4570A8355D866C86A95C799C4B66889FA2B57480991F46734B73AA
+      6386B94D698E223D5B122C483C597C7693BB617EA2566B8646586B2545674B6E
+      A03357812A4E754C6C91394E6A1A2A422A4264385C833D62854A6D8D5B7A9836
+      5A785876959BAFCE4C6C923A5D79CBDDDECEE4E038746A347E6B2B7461267260
+      2C77672F7961317864327C653B85733C827333786834786C397E713A7C6F347C
+      6C347C6B307A66337A6C337D6A2A70612C7A6A2F796C357F6C397D6E367F6F2E
+      74652F7465326E612F6356326D6129685B23554C2152432462502E71652A685A
+      2B5D4E245C4F2A6A5E2B70612D7863337C68297765317F6A307E6A2473612975
+      66337F6E33806B317666307A6D2D7F642D756430776B368273307C6E367E6C36
+      7F6C2D79662F7760307A6C2D7166277066226F6325736622745D1C6B531B7160
+      217C6B23776A1E7058186B541F6B56216C561F6D5D23706317684F1565511D6B
+      59206E58217159206D531D70561D6D5820706422715A20735E21756320715E20
+      755E1E6F612577601D6C60226F5D2C7A6C22715B277665388B7E2574662B7C6C
+      26756629786B378677307F6A2F796A2F7C6D327F75327E6F398275307C6D2E78
+      6D327E72348677317F75387D713C80742C70643D7F743A7D6F387D7130766A31
+      7666317665317A653B7E6F44897C437E6D34786935796C327565317064286F5E
+      2A6B57216C61216A57246A562A70662068561F69501B654C27715F1C69541E6B
+      521E6A5026448FA4D88AA1D88CA0D27E9AD089A8E1809AD6577FBD527FC1769A
+      D79AB4E98DA6DB577FB97D9BD383A2DB466BAD5179B438689D4D70A66789BE8C
+      A4D27192C34F72A98293B8909BB45A6B91596D90B6D2D7B1D3D64D6994203879
+      0D1F4C0C1D496989C19EBDF25893DB5598E36997DF2E60AD6F9EDB748DC2030B
+      39000E330D34676392D6AECEFFA2C6F67DB5F0456FA41F366F466AB76694EF70
+      9EF43660A11B396C506DAD5085D5264E9508103B173F7B6699E27DA1DF517FC2
+      4675BB2E4E8C0A3172395E9096AFB6A6BFB97E999F6083A13165922B608F5581
+      AB6088B23767942B5E8A4776A04D7BA25180A9386E9A0E4F7A306F9E5087B862
+      97C44981AD285C825485B06A9ECA518ABA3D7FB5205F910F48726599BE7FB3D8
+      5A92BB6C9DC9477DA82A6592366B93225475183D5F1231561B507532729A5B8D
+      BA2D608D285E844A7AA23869913E6E94254A6600172D193D5A11314C00172B90
+      AAAEFFFEFEB7D2D13D4D5521222A1A1A1B1919171E1E1F2F3233313132252728
+      3135342E3334252B2F141A1C2A2C2D4444452F2E2F1D1E1D42454A575A622B2F
+      31171C1C2F35382326262C2E2D464B4F22282A191B1E4B506049525F25292D3A
+      37395856553735330E0F102123274849524347513A404A4047543C43522D3036
+      3236393D41454245484146463639392A2B2D1314152F2F2F89959D9BB3B888A1
+      A36581974565884D68875E75923A56722E4F6C5777975578974868873E5A7920
+      3F5D0E2E4A1F4364476E985E82AF3954770B243C102D45244A684E72966485A9
+      364D6A060B1E1D37524A6D9244678E24456609223B19395A4C709B6385AF7692
+      B8718DAF4C6E946280A77C96B6657FA02B4A691C3F5C3D5D7E335272657E93C5
+      D0DBD2E0DDA8C7C54F7DA53C6FAB6D9BCD679ACB6996C8749BCF5184BD5385B9
+      7AA1CD77A2D06C8DB8657EA17691BD9AB3E398B4E29AB4E192B0E1749AD4608A
+      CA7199D26E96CB6997CF537AAC273757193052325C895C86BE789DD28FAEDDAD
+      C7F0B1CAF3688FBF34669992B1D9B5D1F3B3CEEBB5CDE9C3D7F5C0D6F57991B9
+      5875A3A2C0E8A2C0EB8CAFDF96B3DF97B0D889A6D07A9AC77594BE6887B04761
+      87596C82CDDBDEFFFFFFA6B7C11E35431A2A37374354263446101F2B3948554A
+      57695F6A7E788499505F72303E4F343F50414F634052631E303B051016041217
+      2B3A4A50607733495C30425222303E1F2D3D36485A3C4D5E6572858E9EB62936
+      462B3241323D4C27313D323C4626343E33414B16232A2D3B464654661F2B3A20
+      28344250621F28320F151E4E5B716371865C6678313B4B4A61647DA49640655B
+      6A8697AFCDF186BBE47FB3E095BDE48EB9DF84B3DC88B5DE86B4DC8CB9E1B6D3
+      F08CB7D576A2C8B2CCD6A5C8E04C658400000029475B65ABDB7DB5E2AECAE8AB
+      C8E75A96C38AB4D5CEE0F2CCDFF1C7DCEFC1D7ECC6DAEED8E8F99BBDD95B8AB7
+      6890B6214C6D2053783A72985C82A57692B579A1C88AB6DA8BB2D5709EC7769E
+      C07E9CB77E98B2617E9A567B91C5D9DEE6F1F094B3B3C3CAD1BDBDCB67707C3B
+      4E585E6979797B903649572036442D495D27495F254152253743222C38252D38
+      1C1C1F161418212D392941512C4657284152273E503C5062465667364B5A3249
+      5A293647131017222F3C3F586E2F4756364B574D6170404F5E3943503F4A5832
+      3F49475A6A61748A4557654654634D5C6C45556039495143515A3F4D5722313C
+      23313E829DA0C8EEEC769E9F515F692A4D7E3379BBAFCFE4F3FAFDF0F6FDE3EE
+      FEA3D7FE97DDFFA5E1FC5C92C4466397D1D0DEFFFFFFEAEDF9E7F1FBD7E8F7D0
+      E2F4D1E5F6CADEF8B8DAFF83CFFF38A0E62386DB3C9CED62B1F66BB1F9429CF3
+      2392F03E9FF23EADF926B4FD21B7FB20B8F839BBF44EBAEE6FBAE873AEDC7DAA
+      CF519FC51376B45E80A2D3D6D8BFCECE6F808A67788F426289456B965676A12C
+      48681E3651213B581F3C5D1735550C2947415A7B899ABC8394BB6780A5253F61
+      1930525B779C5C79A153729D6281AC3245621F2A3C647C9D2E50721633555D77
+      A16F8AB27D97C0809FCC6386B05A789C4C658718233B02122B4462857D99BA71
+      8EB16889B44A6E9A2344671E3A5737567744668F567BA8577AA61A2F481A273C
+      4C617A5069874A5F814E698F6F8CB1748FB2738EB55979A12C4F764B6D96718D
+      B5627D9E4968864662804E68863A5371203B5B6984A5A9C0E53F58781B314990
+      A2BF95A9CF46648E2B4873637CA19EB5D35163800F284954759F6F91B86283A6
+      48688A4263875E7CA0394E693F526F6B84A8305171020E22010D202B476C5276
+      A85D82B2496E985B789E3E5A7A27435D20344C091E39446385607DA231486810
+      274314314F3954734A6A8A45698B83A2CC4A5B76090C134F698F5F82AC7290B3
+      617DA21F395D2E507A4468983B6085617B9C536E915C7293BCBCC9B0B3C5335C
+      8C3D6AA6547AAC304D7210294721395849668D5479A85D80AB3B567602142A13
+      27464B6C983B5E881C3F614B6A8E5E6F8D1D1D230915241D466F43678E547295
+      49698C44607D6A7B93758BA83558776D8C9BF1FEFE74948E377D6D3E86733178
+      64337D6A2D786B267460317C6D317A663C8875398071357A6E3583753C7E7144
+      867A408073266B582F7563337A6925756227756A2B75622E7C692F7864358065
+      35826A276B5920534421492C1D4630265E503C73343A6B1A113126204C3E2164
+      4A2D6637163F291135261A493E3375662F76652C6F5D2C74622F776836877731
+      8272317A6B317C712D7E75327D6F337E6C29776928716A2F7C6B327E6C2D7A65
+      2A7463256F6227746025735F2B7C6A2B7F692A7E6523715D27736224775F186E
+      53256F5B2A74652D79662871652877652378602075591B6E5D21735A216F5F1E
+      6B5F31836B23745B26745A1F6D531B6F571E6F5D1C76621E745F2778651E705E
+      227564217962267A652075621E7A5F207864277C6A227963237A6D297D6C2B7F
+      6C2B7E6C2B81722A80722C7D6A2F7E7126776A237864247961247462226E6226
+      78652774642D786D2D7D722979692A766A247061286D612975652E796A277364
+      277664357E712F796B2475622276632D79682A70612E776B2E796C347A6A357A
+      692B706023715D2F776C206D5A1F6C552B71622971641A6B571E69562774612B
+      765E2374581A6A511D2F9BABD8577DBD3A6FB290ACDE9BB0E588A0D58FACDE6B
+      92CC6487C09CB3E44F7CBA6488C1688CC2567FBBA0B0E197A5D65D79B06482B6
+      AFC0E39CB2DD7795C47995BF859BC18492B45E6F955B6A8D9EB3BEC3E5E27B9C
+      B03C568807183F1E385F446AA96188CBB1CCFBCCE6FFA8CBF52D5498052F7D35
+      5AA53A54971C3E7608366D567FC3A9C4FAA6C4F782AEEE30588E133A6F5083D0
+      689EED669FF94973BD11173307102C123F82093C8B000D36000E30366EB26196
+      DF5280C42E55920B2556284C8846689F7893A8B0C7C48FA9AC6B8AA448749F37
+      69964E7BA65784B13A6E9D21527D38648B547CA343739C507FA8336B974D82B0
+      7CA9D183B1DB36698F001C37294E715488B16D9AC1689AC929619104365F2C49
+      662E394D4463876397C61142650D3350325D8215578137729B3C6A931B4D755D
+      8AB36C9ECC3F739F4A799F40739B023051123048234C682552743F63873C5D81
+      042544436774E7EEEEEDFFFF93B2B6384044131515161A17292D2B292E2B1215
+      123334354D4F5430363B3C404A2F3137282C2C535A5B52555623242426292839
+      3C3F45464F5156614850593F434932333641434A3F41471C2125313743595D70
+      3F414E2B2B2D534F4F38363824282731353524262A0B0C0C25282E5256682F34
+      3C13181A43444C5D5D693D4042292E2A1E21211F201F36383A202125636B719E
+      B4BE8EA8AF74909C4F6C87425D7C546A842C46603C5E808BABD058799B365576
+      2B5071527698475E7D0F1A3111314F284C6E4360834462841B364F0B263E2948
+      62556C84778AA54C638118304C2C5073668CB46C93BF5780AB345C8420456B3F
+      5F865C7DA4446A9144668E7796B86F8FAC172F4B1B33516A89A9607A9B274668
+      4A667EA8BFC9C5D3DAC0D3D080A8BA5380B36A95C583A9D56F98C8457AAE5283
+      B56C95C46290C25A88B79CA7BEADA6B67286AA87A7D0A8C0E69FB6E4A0B7E3AB
+      BFE66C99D26897D16998CD6189BE4C66965C6F96717EA2486388224D7C325F99
+      577EB06E8BB6426A931D5A8994B6E0C8D9F7B7CAE6B3C8E2A0BCDAA7C2DFB8CD
+      E794B3D66994C3A2BEE3AAC5E88FB4E093B3E192AFDB92ADD584A2CC7796C26E
+      8CB64E6D98445F7DA4B5BCFDFEFFF0F8FC5F717C14212D374655405264505B6D
+      373F493A48585A6E855263783F51603E4E5F45536539495A2335462D3D502333
+      451425312B3743333E4F37495D394B612E3A4A1E2E392F405265728864728832
+      3D50324050515F704351600E162131364328333E26343D33414D303F4D354254
+      29374412222A18242F2D384529353D111B212F354024293622283948535F7291
+      885C83753E62647C9FBF7CB4E277B1DD85B3DB86B0D97BABD383AFD68EB4DC7A
+      A5D393C5F1C3EAFF555F6B0B0E18526B838398A340444A3754736DABDC8BC1EB
+      ADCCE8B8D0EA6499C34B87B4A3C2DFD4E7F9CBE0F3C9DCF3D4E5F8C1D7ED6A98
+      BC5A88B06A93B846749382A4C39EB9DC7695B684A8CB79ABD577ABD491B7D895
+      B4D38DACC98CA8C07896AF5177974164808CA4AEF5FFFFB7CED399A8B3CCCAD4
+      FFFFFFF3F3FE5464790A23352438411E333E30536B34567029475B2B4E622749
+      5E253B4B20273521263125313B1E3342233E4D365064355064344E613F54663A
+      4B592232401C2D381C2B372C4356455A703748553547542E425222313C28333D
+      323F4A2E3B432434403C4E613E4F5F3C505F4253623B4B553D4B5635424D3240
+      4B2637430E1F2A41595FB6DDDBA7D0CE576E7333425AA5BCD1FFFFFFCFE3EDDA
+      E7EED3E9F9C3E4FE9FC6EF3372AD00144C0E0A3FA1ABC4F5FFFFD1E3F2D5E3F2
+      D6E5F6D2E6F7C9E2F5B4D3F3A9CCF2C7DBF9E1ECFFBADBFF6FBBFC319EF1399D
+      EF72B2F87AB1F7529BF32E8FF32195F924A2FF29AFFA37B7F653B8F16DB6E976
+      B2E085C1DB4396BD347AAD6C8CA7A7AEB5D9E5E4909FA65D708B4C6D975D7EAA
+      5F7FAB324F70071E3128415B4A6488445B794F618462779B7C91AE5D6B891E34
+      5540668D6682A61E38553B54764B6C9224496D132A42121E2F0B243C24466671
+      86AC7687B05F7AA3708EB64460853F5A7E6F87AB6882A86C8FBD45699613385F
+      395E81708CB0708FB76185AF45648C1E3956213F5A4462875074A13E638C1123
+      3500010B060A181D3048061A31364A6952739C5A79A07996BC4B698E04182D0F
+      24392641602448663256754A66853A59782948662E47644C64847593BA85A3CB
+      4055730D2035647D9C93A8CC8B9EC3697EA4576A904F698B3C638A5274A1506F
+      9634577A3B5D7F5B75983F516B0C141F0F253A3E6187526E942742630B223C1F
+      314A273F5A38577D40638E4C6A8D47648715395825405E2D4A69456A8D305174
+      0A23415369888297B7647EA75371971C3D592642602F3B4C213247375E8A4F76
+      A26C90BD1C315120314C58789F4568914463876783A05C759451668AB4B3C4AD
+      B2C71E4C8438669D3C638F27496C465D793F526C375580527AAF6188B9597AA7
+      2B47670C2E4D2C4E71577196476387304B69344F68516A86657FA35271974165
+      8A59759A6A83A9728BAF556E8F314B6C566D83C1D7DBD8EFEC3C7062337B682A
+      735B337A693A84713379652D76683182712A74693A8774347A6D388275408577
+      33766B3A796C3376642B6D642B736A31776A2875692D7E722570653177692A64
+      542760512D6C5F407E333E712363A00C204524346A445895183D6D1645771019
+      43373878475F9C103B6B163B6812194232276550246851204F3F245D4F35796C
+      2B7C692D836B24796828756A3681713180712E7E6C2E7A6C35816C337E6F3285
+      762E7D6E31816E2B816D297568286E5E276856215F49215F4B1A5B4E21615224
+      63521D5E50206B582165511E614A1D604C2B6D622065511E5D521E614C1C634E
+      21745F1E755F297C6230856A287E6225785E1F6F542678621F775F1B715F247A
+      641D715A18614B1B604920604E1B5F4B217159297D6423786C207E6B2681662C
+      836C31836C2F82682D7E6C1F7E622A7E642C786525715D195E441A5B49236355
+      19594B1A5D482062501F5F502A6E5E2263551464561670602571642275641F76
+      6C2075632A7D6A337D6B27745B247C661A786426755D1E7558217362237A6A30
+      81692C7D64267662246D601E63541C61502063531F64531F644F1D5E48256854
+      207157166F562C7C6334866E2D227293C9B5BFE481A0D25C8AC37395CC8097C8
+      5B7EB9638ECA638DC55D87C07090CA819FD14F7AB36487C195A8DB556DA57E94
+      C2B7CAF0ABBDE24C71A68197C5AFBDE17996C3708AB56F86AC5C719B6B819CB7
+      D7D6B0CDCD728AA52E4C7A1F396926407F406BB2BFD5FADBEBF77A9AC6061A4B
+      00174A2D549F698CE26B94E01A4A892F569282A7EE6F9BE85A7FCA2644740427
+      4B3F6FB57BB0F34E81CA163A69111E2B424E6E94ABE86290E1104B9E021C4F1E
+      2246335892295EA70B1C4A040D312C52903868AB55759BA7BFC3A9C1BC6F8DA2
+      4C739816507B42729B5984AC3D6C9A3F679218476E36648B5081AB38729D2C65
+      905E8AB390BADE82B4DB28486A000C282357813873A63C74A35D8EB838678E02
+      2C5000091E040C1A1C486B144D76072D501F44673768922766935791C06C9DCD
+      305F8846769E518EBA4177A22E6A962966931A3C560C1D2F33597B597FAC446B
+      973C5C862744691C415BB2C7CCFFFFFFBAD4D4404C4E1716141E211E373B3B35
+      3A3A171D1B2125252D2F3027292D3D42492A2E300D100D2E36333C414526262C
+      1D1D20222527494F5954576248495431353916181820262A2D34383336372D32
+      32303337383A4435363E2E2B2C1413152326283F43461A201F070A0A2A2C3743
+      465341464B29323023292D2C2F361D21202527283032352428253034371B1B21
+      3232348E9DA69CB4BE8FA7AA576F813D56714E657D2A445F3A5A7D7192BA4563
+      863E59786380A06E88AB2536522442614C719545688B4E729654789D3A5F8024
+      4B68153A530E29415066808DA5C78099BB3A5D7C2C597C6285AB81A2D1799FCF
+      365F83011D3D1533562C4E7344698D5784AB285A801F47676F8FB17694B54E6C
+      8D26486A39577085A0ABB3C4D2BCCFD2ADCEC88EA5BB486EA2356DA46090C154
+      85B75989B96D99C75C84B295A2BBD3CAD1D3C9CFA8A9BC6D8AB090B0D4B7CBED
+      B5C7EAB1C6E9AFC7EEC5DAFBA1BDE6446B9D617FAFA3BDE9A4C0EE8AADE15F8D
+      C45B87BB3A608B1427411C3754759BC8B1CAF4ABC2E4BED0EAB7CEE7B0CBE5AA
+      C4E0A1BCDB8EB0D66795C793B6DFB6CEEB95B7DF93B5E296B3DF92AED889A6D0
+      7E9EC67795BD567AA5446083838F9BE1EBECFFFFFF99AFAE172A34293649505E
+      733E4756090C0C0712174D5F775265812F4455475A696D7C905E697E303F511F
+      3141344457323E510F1016060E153C4B6043546C24314318212F293749233040
+      141C2B1217243C49562C3F515F77903C4C5E1E1F2E3E42531B26323F49593847
+      5A2A3B4D3B4D5C23364516233149596D3D4B5D484B595E616C262A311E202D2A
+      32434E67687BA3943E665B57767E8AABCC6DA1CE6BA0C97EA9D27FADD57FB1D7
+      6FA3CC6398C25E99C97BB0D65B778E6B7A8EB7D3EDD0F8FFC5E3FA5A7B9B5783
+      A9A8CFF1C9E3FEBBD3EF75A5D01360913E759B95BCDCB7D1EEBCD1EEA3C1DE66
+      94BA3A729E608DAF78A2C5497294607A8D849FBF88ABD487B6DE65A5D37BAFD8
+      A3C1DEA7C1D89AB6D07A9DBE7295B06788A43A5E7D44687CD7EBEBE5F3F698AF
+      BBCCCAD4F2ECF1A4AAB6344B5E192F3D22354020405030576D325168263B4B28
+      445330576B2D4F652A3E532E333F262B36284157385A73415B734B657C355973
+      496E886E79883531331C242D2C4051455C743C536946546849576C36495B3243
+      51212E39202B311D262C1C2532283B4A273E482A3E4B2E3D4725343D31444E28
+      3A4220323C2D42510B1C25101F288AACAFC3EFED75999B49545291989DE1F2F9
+      C6E2F8ADC8DCB4D6EE7AACDB123A71001E4A10497F0336824A70ADF3F8FAF5FD
+      FCD8EAF6D9EBFAD2E7FBD2E7FACCE2F7A7CFF39AC7F4A1CCFC64C0FF6FC6FFC1
+      DFFF97D1FE3CA7F42375C5537EBE8CB4E778C1F844AEFD44AAFC5CB6F861BBF3
+      5EB6ED6BBFEC62CBE5234E732D3E665198B75B84A2CCD9DCBBCCCA4E68823E5C
+      8559759C48648931496B28425F416082436388596987636D86617492556C8A05
+      162D111E387D9BC28BA2CA091A34071B3427476C193B60355A804F70953D5A76
+      3F58787284AB7B8EB76F8DB7456A8D00081817223356769B6683AD728DBB7291
+      C05479A51F476F2A4A6F59799E6184A9637EA4364F7007213C466183607DA61D
+      3854021122203143586C86647B9A2A496D24436A617B9D889DBF6888B01A3653
+      020407000000040815153754647FA192A6C96480A5244A6D041F361D334C5373
+      9D6686AF7392B9365573132F4D2D48696B7FA0909FC26170941A37591D426B52
+      739F304F742541673E56751F2C42000006040C16143147193C5F2F4D733E5478
+      1F3557030F2200041003152B2944632B4B6D1B3A5F2C476D3655777894B081A0
+      C0496A8D33537657719661789D4B648D17395C1635541E3851030816485E7C66
+      8EB638628C32527B1335527790B199AECD3651742D486B6D8AA96583A1465676
+      3A3E5834496B1A4B804C6FA13352775069897D8EAA3A526D2D4D7A6387BE5780
+      B15880B16781A829486A14375C607A9C687F9F1E36501B35507E95BB8DA6D065
+      86AD6F8EB46E89B058789C5B789B677C9A66748C82919CE5F9F987A6A4387366
+      3A7C6E2B7166367E713D84773C7F733F8B80327C683C7F6E387D6C32786C2E78
+      68347C6C36806C32796C2E76642877652E78682E7C6835806D37876A2C796633
+      6E4C1E473214372C275C4C4F8D2163A00C25491612352A2A645754911C63A00C
+      2B4F141E4738286B5D52901B63A00C2E561216433526644A366D2D3A6818173F
+      2F22614F45937E3C867330807236837228735A297768347A6E337A6D327F6C36
+      8373418F833F887C4189813681722A6D602050431236281130241130240E2C23
+      1130251233261F4D3F2764551C513E13372A0D2D231130240F2C210F2D241137
+      2C1952402875602477622075602E836F277C65217A601F715B2478602D7C6B22
+      776225755F20604C1541310D2D220D2D220E36281C52422C7C64207465207D66
+      238066277D6C2C7F6F2C806D207663237561277A652468561242340D2F230D2A
+      210E2D230D2B200D2B220C2C230F2F2411322611433717615320766525776922
+      7669227A6C2277682E7A692C75601D735527776A2374641E735D1C765B217C61
+      2C8069207A5D1E705A236E5A174E3D0E33281030240E31240B2C211031240F31
+      221447391960472D7D60287D6A31887A111E4477BA6E8ECD94A9D92E619C3867
+      A78FA5D898ABD79AB0DB86A6D95984C0436CB22E5FA38DA9DDC1D0FE89A7DC56
+      70A6657EB2819FD35D7CB2637BA9AAB5D78FA4CE7189B57D95B85F7EAB466393
+      4D6188A3BDC5C8E6E08DA9BB4A6DA409265A0A205418478C487BC54977B9264A
+      8319335E1537664977BD82B2F997C4FF658DCF214B814066A23E5CA210255813
+      2A472041641E3E6F1F37711830611C365B0E23450D255696A7D6C3D4FF5485D6
+      06357C040E372348895387D64F7EC01B36632B457B3365AE35619985A1B2B5CB
+      C985A1A76C87A0255983265C895782AB3569984675A32B5A853B668E5886AF38
+      6F9A255E8D5F8CB57BA7CD4C83AC2A5A831C5077457DAC467DAE356E9A30648B
+      0D395B012D50113753173B54265372436B903C678E265C852A6899699DCC80AF
+      D75B94C15083B25790B84787B04472964C79A42A699B245A884E7AA55378A532
+      58833B628A3E628A405D85203C606F909FF6FCFDE4F1F07187821C211D0D100D
+      292E2E3B40433A3F4425272D191D1D1619171B201F181D1B1D21202E32373237
+      3D31343C2C2E31242627202224202424303536353B3F282E310B1614212A2D53
+      57602E33340D0F0C36373A494A4E20201F0A0B091417171B1F1F383E3F61686E
+      35393F1B1F21585F6158606323282B1D22253032332D2F3232363A2E32322225
+      261A201F1E1E1B787C819DB3BB99B1B3758D9648637B4E63802E4460405C7C67
+      84AD3051754A62817288A82C4B69162034233C5A597DA4577EA56389B186A6CD
+      87ADD3749DC450769B21405E16324B4B6581849EBF809CBF56799A2A52724263
+      8A7798C57DA1CE4364891331511D4265507CA06792B8436F985B84AA7395B465
+      87A84767861736513C5774688297A4B6CAB7C9D8A9C6BFA6BDB9A0A8BE5F80AC
+      507FB37EA1CD829EC7718AB18C95AFC5BFCADCD7DEDCD7DEE8D8DEA9A8BD6385
+      AC88A8CBA5B9DDA4BBDFA9C3E58DA9D14A72A26C91C0B1CAEE9FBBE66A96D062
+      93CF5C8CCA6594D083A5D95C7199566B9092AFDBB2C7E7C4D4EBB2CAE6ACC7E4
+      BFD3EBBACDE69FBEE36D9BCE1E4E7E5579A2BBD6FB9EBFEB8BAFE096B3E09AB3
+      DC8FA9D187A3CB829DC83A5D8A365276818B9CBBC8CBFCFFFFD2E0E3455D6A1A
+      2B403942582326311B222822323D5A697E7783A05661796877875F6E7F2E384C
+      2B3F52546A8150627B1E2F3F060F14101A1D1D272F1B26331E2735212B39495A
+      6B3646541B2835394A5D344354212F3E4D69849BB6D2404C5D151F2A202C3C4A
+      566A3443551E2E3D384B5D384B5E233950394F69374559757A87555D660F1924
+      0F181F141C263E4F5882A79E60887E476362818D996C8BA85187AE6092B86591
+      B44A75962E60823277A23E7497081A2B5D758DDEFAFFD0E4F899B6D7B5D1EDA0
+      C3E46A99C06292B895B7D5C0D7F283B0D83582B10B4F7B12456F507EA96A92B8
+      4B7DA7467BA45384A86895B7719CC12F4B67080E146383A084BCE97EB0DB8BB9
+      E194BCE1A0C1E0A6C3DB8AAFCC6F96BB6F93B56F8CA72952712C506CAFBDC4F9
+      FFFFB5D2D9BDC7D29A9DA8263847334A5835485421394627495A23475B2D4B5D
+      21313C17252E203D4A2A4F6431526924323E1E22283745583C58732F4A633854
+      6E2D5772557489A2A1ADC4B4BC5A5E6A19344B4C67814357692B3C4A2A3A4836
+      424F3842521D222C1718191B1D21232D3621313D202E3B1D1D28161B2417242F
+      1428322038432D43522A3F4C1827310E1D2A4F686FC0E7E49CC8C5637A7F4348
+      585B7D9AA3C7E9A5CDEE79B3E42E52820000221B46776CA1E55B8DDF1A69C19D
+      C6E6FFFFFFF3F8FCE2F0FBD0E7FAC9E2F8D7E9FADBE8F9CFDDF5B8D4F87DC6FE
+      3BC0FE56D0FD83DFFF74DBFF3280C300337C0D468A3660A24988CD66B6F96EBE
+      FE46B5F83EB3F03CB1EA2A7DB80D194517325B4894B52D85B28BA8BEDEE7E476
+      91993B597A3A567A334F6F274262294A6A446284546887545A75827D9171748A
+      1B2F4B132A422C4461637DA25D79A01C314E182D483B547739587A48688B6F8B
+      AF829FC4455D7C0913242E3A4E475E7C3F58743E516C32476036506D536F9857
+      76A65A7AA86F8EB86685AC2548680F28463349675B74994C698C132A453D5677
+      5F779923384F1D364D7796BA84A6CE6985A94D698D3D597F677C9E8197B5435E
+      811B38581B334C16283C526585546A8C5B74948DA3C5829CBF567DAA3A5D8625
+      446448688E4466923459834D6B935D759C2F44640409193D4054344C6E1C3D5F
+      44638B476A9235557A354F711E274011172C203D56405C775A708D3E5F7F2349
+      6F2844672135551C324D2E4662334C6F223F63234369405D851D3C6547628191
+      ACC97599BC5C81A3395C8033547D45638E49638B294B733B608C3B5F870B253E
+      5A75978FB0DE3F5C83040E263E5C7D7695BF7D98BB5163812C4264728FB16483
+      A4405D7D10264A0C1F413A628C466893395071566582324C6A082B4A2E527C61
+      85BB648ABC5579A63F5C813B53782446693E5E7F506685132742273B56617A9C
+      728FB36C8BB16F8BB0627C9B4C66816E7E938990A07C8595A9BEC3E3F7F74873
+      6E34796C317569317B69337B6A3E81733F827A3E806E397F6D317562387F6C31
+      7C6C36816F317C682A7560337E7133826925755E2F806C307A622C6E5F2F735A
+      2B77614D891C5E990D3662152056473D7E3049811663A00C2650243673635A99
+      144175153A6410163F313073455F9D103D6D16355E111843323D7E3063A00C2B
+      53160B2B1C1A4F3E2E715D2A6D5323644C3079621D695123705B267156347E6D
+      317D692B775F3C806F397D6F4690803E89814885324D8514497A0C48780B4878
+      0B48780B48780B375E0B1B3C303B74314F88164A7D0D48780B48780B48780B48
+      780B28490F1B443A2B6A612F786C307E7127796C2D7A6F2373692B7E6C29786C
+      317E74287568276B5E478016497D0D48780B47780B26490E163F32296F5F2E7E
+      6B2575652C7E6C2B7E6630806C2F7E651E745A206B56226C5A417921497E0E47
+      780B47780B47780B47780B48780B47780B47780B365C0A0B22182056482B7A68
+      21765F2178631B70611F7968176C5724796C25786624745920715D2678681B73
+      5A1B735E2278642578641A6859215D334A800F48790B47780B47780A47780A47
+      780A487A0C0F35251F665126806B2277642479623018316BB217549C6A8ABC80
+      98C97595C99CB3DD98AED891A5D196B0DAB8C9E7A9BAE195AEE59AB4E682A4D6
+      618EC9718CC6667CAD7186B65E74AA5A77B05782BD4B70AE4869A45E7BAD6C86
+      B16278A16B77987E8E9FBFE0DA94B6C139669F3F6DB76B8FD26F92CE5280C044
+      76B9325D941E3B664765994E7BBA2B67B04377C35779B53E5D91041942091531
+      111C32081C3E2C5B972B5A91051233212B594467AC3F6EB3134E8F3A6094AEB5
+      DC6179B3000F402348886BA1F2799EE55379C21E44820F1D3F17335C1A428045
+      67889BB6B8A6BCBA768F9D5F7D9F3C679348729F2C5F89215884346290336089
+      42719A225C874D7FAB719DC4396B902D5D884F77A56D96BF5585AE1C5886103A
+      5D193354264F72224F7328567B255473214E6B2E577524537608486F1F588257
+      7DAA437AA4619AC177A7CE6F9FC46396B7215D82094A753E76A95287C33E7AB5
+      2B6599274C703B50703D5A803B5A7D1A3756243F54B6CED2FFFFFFAFC7C53F53
+      54212D2F343A3D343A3F292B3021232B333A4530363B282A2A383C3C42454947
+      47524A4A502F343634384036363B1F1F1C2B2D2F44484D44474F2B33362E3636
+      36383B262725222523272B2E393B3F30312E1D1E193B40412A2F300407034647
+      4B7D838E2E33341B1F2052595E5153582C2C2F3B3E443C3F46141715171F1D28
+      2C2F292B2C3C413D282B2748474A8EA0A797B2B796AFB260788B3D54712F4762
+      445D7E5C77A03A5B812947680625451537556B8CAE5A7FA7375E83557CA43D6D
+      9547759980A1C398B5D697B5DC95B8DF7F9EBD3F5C7635536F5372946786A958
+      799C153250112A453E5A7C4161871E45685B85A899B9DA3C668A2E5D827699BA
+      6A8FB06F8DAF24436120415D496687586B859FB3C3B7C8D5AEC3C58FB9B8B2BD
+      C4E4D7E4C3CCDCD8DBE6EAE2E7C0B9CAB5B6C6C6C6D2E6DEE5DEDAE4C5CCDEB1
+      C1D77895B94B77A34775A24B749E43648A23395E466289AEC5EABACEF0447EBE
+      3274B979A1D8598CC85485C27EA2D7759ACE5276AB9AB2D9D7E0F3BED2E997BA
+      DDC6D5EBC6D2E9ACC4E69DBFEF5583BA0224450F28456185B093B9E796B9E99B
+      BCE79DB6DFA0B4DCA1BAE57490B90C1D3E12234370819EA8B3BCEAF7F6FBFFFF
+      9FADB53C485D212C3D08111B273140323C4B0D19284A576E6D7792636C83575F
+      703D47553F4F64435974465A74435366293A4817242B131D2311171C313B4532
+      404D2334403446543242546272895464761F2D383045567E95B17D91AA111927
+      232F3A3E4A571F2830161E28323C4C242D3B304155556C855D6C7C444E584D58
+      66424E5D303D471D28322937486E8A8C7DA2963D5D5964777997A4B35D839D16
+      4B67002D4B2A485D5C7A927BA8CA9BBBD051667F889DB8DAEEFACADFF09ABAD5
+      A6C1DA85B4DB62A0D25A8EB628618B4C7FA490B2D2AFD9F8698CAF121D275071
+      8B6492BB7498B87A9DBA6F97B96995B93D5D7B071325586D887BB4E269ABD88E
+      BCE699C0E899BFE3A5C4E285B2D4699DC37098BD648AAE456C893E6380466683
+      678495ECF9F6F2FFFF8BAEB8213A4B1B2A3832424F2E4755315361456B7F4669
+      81294657233A472136431F3947223F502645552645541D29364D47533E445217
+      2D40314358616D7F9E9FA8D1C8CEB5A9B5827E8D4A5B70182F3D1A20211C1C1C
+      1818181715171C1F26242B301D1F231C23292029331F222B1B222F1D242E1C29
+      311926302137452D4A5D284455192A322033401C364A263F4CA1C5C8C2EBE878
+      9AA3595E6F3939435B676CC9DBDB7DA1C700215C0F2F666F8DB3DFEAFFC2D3FF
+      56A3F64EA3E9C0DBFCE4F2FFEBF0F9F5F7FCECF4FDDEEDFCD6E8FAE3EDFCF2EF
+      FDCADAFC53C4FE2CC9FD59D8FE75D6FF569FE41C70BC004596134189688CBB7A
+      BFF46DB9FA5CACF13491DC2881C14C85B55899C0418CB22A82B43188BA4C81AB
+      C6D7E0C0D0CF4E697D253E5D243E5A2546644363846179955D657C595C736771
+      8C516683405974253C5A162F50405C7E7589A8667895485E7C284161354F6E5B
+      77986B87A4647B994A5E7E0D18250000000000041A263B59668556668308131E
+      12263947689253759E5D7AA1738FB47696BB39506F0B162C243D5F416286506F
+      954A64863148674662827A9BC17A9ECB5579A14F709354769B637EA447638935
+      54774961827A8DB15A779D375275545F79394966586F90546F94597AA25C83B1
+      577DAE466792294C74466A9741649237527F3B587D59779A26384B0000003542
+      5A5D72943D597C2C486C37567B6582A78AA3C783A3C87593B87691B38096B88F
+      A5C67E9CBF3A5B7F2A43634A607F48648747638A47638C415F8A284874000F30
+      3E547281A4C77096B8688BAC4D72972F547F486692284E792A54804668973858
+      841D4262587BA37598C5426085203A5C607EA46080A75F7BA14255744D5F7E93
+      ACCC5D7B9E1D4A73709FD26697C81F40600C1A2D0A1B301F3653455D802B4869
+      2247705D80B76288BE48688F1F38544056765B74953B5A7F3B5B832137571F2F
+      4938526F44698B325C820B3A60183B5C445770737F92848B9A88959FE4F3F490
+      ACA8326D5F33776A32796C357C7233786C32806E3B806F397E6A377F6B2E7468
+      42857F347E6836826C317E68317963368271327D6A2C7E652B7964245D4A1D4A
+      3C245A46337642569216528A10122D1C265A4E508E205E9A0E345D1015362630
+      735E5796175E9A0D3B6812174438296E5954921C63A00C3B661217403229664B
+      508B1863A00C1E43161E513E27624F1849351137261E523F20614B277165266E
+      592A76622C7E6B277159317569367D723C807649918757951F63A00C63A00C63
+      A00C63A00C63A00C63A00C48780B163527427C2863A00C63A00C63A00C63A00C
+      63A00C63A00C32550C193E3534736B35867839837D33817C3A86803B81813286
+      743682763C887C357A6E3A742A63A00C63A00C63A00C63A00C32560C173E3329
+      645827746B29776D2E75692571612377592779661D6E5A1D6E572E6C3A63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C0B1A0C1741
+      33276E5B2B756429745F256E6020745F2475641F70571A7159216D5D1B6C5E24
+      7D631A755B1770551B75562A7E64276A4C5C9A0D63A00C63A00C63A00C63A00C
+      63A00C63A00C42730C0F3E2B176C541E70601F755D20745E39356187C2265BA2
+      6889BFB2BDE7869ECD4972AE839FCEABBFE49AB5E0E2EBFFD9E8FA779BCD7B98
+      D06289C46689C2738EC36486C08299CB728BC05276B15B7DB8738EC4A1B6E080
+      9CCC6E89B77585AE8A8BA4787C94A9C2C6BFDFD9668CAE557DCE85A8F1B3C8FC
+      B4C5FF81A4EC2553930A2F5D2C4A781A305B122955133266000F360E34622351
+      8C12305C0D2F5E386EBA5F91E25E94DE2661A1205292658FD8587CC14872B726
+      467F1B28581430610004180C133A597EC25A8FDE3665B02C579905142A000002
+      0D2351193B6A74929EB0C8C787A0A38D9CAB7D97BA22578601376221567E1F51
+      7A1C507A275D8B1E56833B618A26547C0038601840635A7EA28EBBE24D85B203
+      3962000B2B1B2649628FBE7FA9D96D91BF4A77A439678E254B6A0D304C002946
+      061D3606213E09426A4D88B48DBEE844769F1B5179558CB4528BB94E81B4477A
+      B03A6EA55082B72F527701112B1C304B2A3E590A172E00001464858EFBFFFFDC
+      ECEE849EA8607783364346292D312024272B30374347553E434D2F3335343439
+      3434392F333647474B232525292E30383D45363C4240454B35373B1B1F223239
+      3A61686A4848492A2C2B363B3A35383D61636A3D3B38151615474F534C515640
+      43441A1D16121814505B5C646F7723282B272927494C5033393E171C1B1E2020
+      3E444C30363B21242544484A262727161213858F999DB5C09CB4B9839CA63D55
+      6C22395646608354739C51719858769D49688C193F602547694A607E1D3F5C5D
+      83AD74A0CB214D711D35535673946482A8839ABB9EB4D25174930A2B45204463
+      2C507239597D405C7E0F1D30000516164262769DC59CBAE0294E76124067749B
+      BF638DB37499BE5674960429494A698A617E9D4F637D6E8393ADC2CEC1CDD39E
+      C3C28CADBDDAD3E0FFFFFFFFFEFCFFFBFAE8E1E9C2C2CFD6D1D5D3D0DAA4B5D5
+      95B3DB93B7DC99BADE94B5DA80A9CD6E96BB59759B4B567B778BB3A9C4EBA3BE
+      E682A6DB7FA5DA86AADA6996CF7099D26993CC6C94CB5682BA96B2DAC1D3ECBA
+      CDE6D9E3F2CDD9ECAEC3E3ACC5F08BAAE13B5A8E435C7A4F68802749712D679F
+      6797CEA0BEEEA2C1F59AB7E87D9BC53A5479262F4820304E25446D677C96D2D9
+      DEFFFFFFD5E1E29193992A35410E202F3E495B2D3743031620243745616C7F6F
+      778D636A7F616A797D8A9E3B4E651A2B3B272C33252C391927331522291B2025
+      1F283036414E2C37436B8094899EB86B758A8691A5455C7112253417222E4759
+      6A424A5A151A201222272B3541262E3A4A545E292A34292B3E8794B19EABBC2C
+      353B232E3B5F7085606F7F1C283320283B485C6783A59D5B7F763D5E5B84989E
+      72808A324C5F416786C2D8EDEFF9FFCDD8EEB0CDEE77B2E298C0E2C2D5EABAD2
+      E7BACFE3BDD2E780B3DC629CCC81B1DE71A4CD1E5C8B497CA5B7D8EC6E7F8E00
+      0000384C608EB4D8759BBD6B92B65B88AF315978041D33395F8196CAFB79B4E4
+      7BB0DC9AC1E89CC2E7AACCE8A5C6E378A9CF6D9DC67498C0577A9A2E5A785474
+      93466986385F7AACBDC3FFFFFFAFD5DA2849550E1F2B1D303D2740503B5E734D
+      738D3D627C315B71436B802643521E33432D4353385666253944000000434148
+      847D897272835B5E677E767C9F99A3BABAC1BEB8C0CFC2CF7575831023291E32
+      36262B2E1A18141916141A19171D1C1C1D1B1A1C1D221D20281F2B352337441E
+      333B1E2F3A1A344235576B415F741A354428435B37577026465B1431445A787D
+      C8EDEA99C1C37593A06D6D78262525253C524774AF244E8F345991B5CADDFBFF
+      FFD1E0F7D1E7FF6FABEE287CD865B5F8A1DBFFE0EAF6FFF9FDF5F9FEE7F2FCE9
+      F2FDF7F6FFCFE4FE7BCEFE62CDFD8DE1FF91CFF92B75BE0053A91374D1AADEFF
+      FFFFFFDDE8FB8CBDF075ADE87FABDC95C7E0A9E9F28DE0EC8CCEE15598C62878
+      B02475A86C9EBFE3EEF080949D3A52681D3B5527476463799573849D3F495F46
+      4C62596E8C708FB27A94B8617BA22A4B753A5C817584A1535B775060813C5172
+      142E4A162F482A3B4F20314817304D1D334F1F2B431A263D09162A000B1F000E
+      2207090E1120302B4D703F5C804E688C5872966A84A77897B854729249648653
+      6D936980A8617796516B8B809DC28BACD4648DBC5980A83C597A2C405D5C7599
+      56719752698E7285A9657A9E6076992F455C0001091827424560814862863455
+      7F5A7AAA537AAC476E9F254C77416693688CBF3C618C24436647698E577BA415
+      1D28070509394C6B4357740E1C31314F6F87AAD185A5CD748FB66E89AC758CAD
+      7E92B2778EAA59728E5974966880A04D66863952774A61864059813D5C893452
+      760B15312E52747FA9CD6F92B45F81A25E7EA3435F892446702148764B6D9B51
+      73A0375A85294D6C6082A76589B4284B733D61897290B755759A60789D354D6E
+      5066858898B83E6084285986789FD296C0F448668B050B16324C656785AC5E77
+      9B1F3F5D1E41665173A45074A23C5779243C56324D6A3853734E698D6888AF2E
+      4C6C192E49435C7C49678D2E52772C517628517914436B405B7A768192B8C9CE
+      F2FCFC46726B317E6A2E73622F7668367D71357D6B3882712A78623073632D73
+      632977663382722F78622875612878643083742D7D6C33806D317C6A2D664F49
+      80162247191E4B3E3C7D52579316528A101D3D1920534445852D59961157900D
+      11312422624B53921C4C83133760131841312D6D585B9814417414355E10173B
+      2F316E3F5F9C0F4070131C3C171A4D3C4481255E9A0D143115103324205F492D
+      776324715A28745D236D58236D612C7363337E6E307A6B3C836E53901A63A00C
+      63A00C63A00C63A00C63A00C63A00C48780B1432243F792463A00C63A00C63A0
+      0C63A00C63A00C63A00C32550C1C403742827C408985458F8C478A87468A8345
+      908B438F8741868339837D346F5263A00C63A00C63A00C63A00C63A00C32560C
+      19403234705E317D74387F743681742C786B29776D2A78691F6C611D6B5E4F8A
+      1663A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C23
+      40090D2D241B5D512B75692C745E28706026705F2F7D6B1E745E177359247660
+      1F6F5720755A207D662774681C715A20755A41812463A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C27511413553F1C755E1F7466207C5F26785F54576788
+      C26989C8839CD47292C97C99CCA2B5DFBDCCECB8C7EBBFCFF4BFD1F17B9ECB49
+      76AD91A5D38DA1D4BCC5E6D6D7EE90A3D17496CD729AD096AFDCA5BADE778FBA
+      617EB28CA2CA7087B0536896898EA88B8B9F8091A4BDDFDC92B4BC7695CB839F
+      E28DACE86491D9265BA1113C770E2D5A0D224515214106081D0E2042385E922D
+      58933869B14066B017387B4B7AC883ADF66B9EE34A89D53770B64C79BD33589C
+      395A9F3757910D2D612F61A3275FAF00195C00174C0F3775335DA141629A1227
+      4C2B426F5E7BAB37598E436986A4C2C3A1B8BA8499A36887A410507F1F598734
+      6991033A63174A75416F9B356691103F6A002A540B3E65305C86668FB36294BA
+      235F8A08345D183C663368934477A86E93C2799CC84D7BAB3E6FA07BA3C97E9F
+      BC30445F091226204562386892386B994F84B02C67974079AA679AC76B98C54A
+      83B22B6EA331689D2E62962E5E8C2241610B2B460D2C49142F4B01203F24435B
+      BFD3D5F5FFFFB9D6E07891A0222C2C090A072B31354F5B6A373E472D31372326
+      292020221E1E1F282A283E3E412E31320C110D2A3437667281454B5335363949
+      49474447463C3F42303337545760575A603336333C3F3F3B3C3D2A2D2C353A3D
+      50565F6A727D42484D1D1E1C484C4C5961651C22203D404170737D2D30352021
+      203336383A404D393D4C23262D2226291A1C1C090807606165A4B5C09CB6BE9E
+      BABE536B7B1A304F44608357779D597BA24C73996F8DB07FA1C53D628609172B
+      162A3E44688A77A4D0749CC320355100132C19304E0C1B340C1C36466C904C78
+      9B38607F34577B3E5D7E2E4D6C1B3E5C3F69898AACD299B6DD2E597F12406968
+      91BB6992BB608DB47495B9193859284E725075994C69841E2E44101B2990AAB5
+      D5E4ECBDCCD096B8BFB1BBC7F2E8EEF3EFF5F3EEF4F8F4F6E1DDE2C6C4CF99AF
+      CE98B5DCB8CBE9C0CFE9C1CFEABFCFECB7CBE7ADCAECABCBF26984A957779F9B
+      B9E2A0BCE6A7BEE66797D24E87C7729BD46E95D04479BD7199CE6487B46589B8
+      A3BCE2C3D3E8D2DCEFB1C3E7ADC4ED9CB9EB446BA1355A8782AAD49BC6F19ABD
+      E56091BD285E903F62916682B34B6D9A27446948628A849BC8798BB035587D11
+      3B6771889FEEF7F8FCFFFFC5D1D142505B23334340495B2A36462F3F511D2F41
+      2333424B556756596D717B8F96AAB94659672132463D4B5D3C4B58212E3A1822
+      2B292D332F3139202C36303A496778925A6E85404E61444F6451607529394800
+      040B27333E282E3612171B31404F4D576A343F4F2326312725314C52638A98AF
+      6A768729303A525F6F687D934A5D6F3D4756313746111B245A77748EB0A64A68
+      61586F6D616667636973B8C7DBC8DCF6A7BDD8BDD2E79DC5EB7AADD8ABC7E2B8
+      CEE6A1C1DDCADBEAACCDE7589DD168A1D268A1CF6CA9D47EA8D148779A296286
+      214F6C1E303F101F2C4B799C6E9CC25686AB386B900E3D5729547589B6E487B9
+      E87FB2DC9DC2E79CC3E894C0E59EC3E582AFD975A7CD76A3CB6F94BD466E8E39
+      637F3565832C597A2A4969607D8EF8FBFCF0FDFF7497A10C202B1A303E335368
+      3B5F743C6177355C72416C814E768D2B475917232D2E414D3956661222291A1B
+      1C817E84C0B5BECCC3CCAFA7AC969096E4DCE2F2EAF1F0E5EDE7D9DF48505700
+      1216284756467088304A581B23261B16171B17151E1B161C191D1E2834304A5B
+      2B45561D303F284354305368213F4E213C482B4658304C673B5C782D4A5D0B1C
+      271D2C3398B9B8BEE4E37AA0A474818763656B475D7D6789C2799ACCA2C2DCE7
+      F4FED8E8F2D0E3F2D9F2FF80A6D616244B3453773EAEF143B3F5AED1F2E7EDFC
+      DBEDFDD7EDFEDEF0FED4E9FFA9DBFD99DAFEAFE0FF5F9FDF0063BD1089E787CF
+      FFE3F2FED1E6FCC2DEFAB9D3F6A5C7F46AC0FB92D2F8C5D9EBABC5E07AAAD842
+      7DAE07437707548E1C6EA2B8D1DEC7D3D06079892C4D6A4E68827C8EA75B7290
+      3F506A5B637A5B708F5C789B6481A66988B15A79A53E5F861A314F0000152732
+      4A576C8B38506C11274211243F2034523145653649683142632C3A5A303E5832
+      3F58232E442A364C3B51703C587B38547828476C345374526D8D5D78994B6A8D
+      537194758DB1687B9C3C5A7A6686AA86A4CC6D94C25684AF5780A7304A6B0208
+      1B0C2641294A6D3B53773C4F701E344D0319290A1D334D678C59789D0F2D4D41
+      5D834D6D9A365B866687B5557CAE24518108244A3F57805B7FAD3255791F466C
+      5175A1385072102237516984505C7525374C395878244A6D1C426523486D3355
+      7B45638942658A1E3B5A000E224C5F77879DBF5B759A3B577B2A3E5F021A3F28
+      51777E9FBF567FA0406B8D516F8C496B8C577DA06988AA4563872D50773E608D
+      4768955578A62F547F1B3A5A6786AC6388B62C557F5373986987AE4B6B93617A
+      9E30507338577C47597B102239587EA77BA5D97CA2D2618DBD2E577E4F6E956A
+      85B54F6A922F4C6E324D6F37577E4B6E92405B7B1F38523451712744663E5679
+      526B8C2F506E4060814E709345688D4D6E935371942E557D2E51745E6D85899A
+      A5EAFCFC92B1AC3C766C3B7F6F3073662A6F61327A69377F6F3783772973642F
+      7C632F7C63307966347C6D2D75632C78642D7562347D6C338168317C66337A60
+      518E1956910D3460121947363377574D8A1D5C990D2C53171A4C3E3B7A345995
+      114A7F0E113022235D47518E184B81102D520E13372E165744508D1757910E34
+      5B0F15382B2C683D518B165C990D112B171C4B3B4C8B1F50891651870D12321F
+      2059472C7560296D5729735B2473592E756A2B7161338273367F6D3B806C5491
+      1C63A00C63A00C63A00C63A00C63A00C63A00C48780B102C203E772463A00C63
+      A00C63A00C63A00C63A00C63A00C32560C173F313270654290844C968F418B83
+      4D968B4A9589458F88458D833C7D7649822163A00C63A00C63A00C63A00C63A0
+      0C32560B143D2F2A6C5F2F786C30786B3D867A2D7C6D318173377E733A807236
+      704763A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C406C09081E15174F3F2570602B756325705D216C60236F5627765D206C
+      5521745B237665247668257D5F1E7758196F56196E5757961163A00C63A00C63
+      A00C63A00C63A00C63A00C5C970C10392B17614C2576652A7E6D24785E207558
+      464FBCC6E6819ACE587CB97391C3ABBADFB4C1E26085BA3664A26C89BD345C97
+      4E71ABA5B6E16684B7778CC0B6BCDDCED1E6C4C4E291A5D57FA4D584A7DC8FAD
+      E1748CBA405B8B3E60943C5B8C7582A15A6A8E52638B65799CA1BCC2ACCFC68B
+      A6B07F98CD6589CC4474B5285292233B6C0E2B53466DA35478AE061A3D344E80
+      6E97DE284D8B2F5094648ADB3E6DB63763AB3D71BE3879C472ACF74074B91439
+      775570B34260A10023564A7AB7AFD8FF9DCAFF5490D6154388000D3810295009
+      274E1D315A6281B76F8CBB40659D3254877F9FAEB4CDCD86A2A9678A9D4A7D9F
+      336A9327608B285F892E5F891E5683255D893975A32F6D9A1D527F346A9A2B64
+      911E58822E638A5284AA5F8BB54A77A2668DB86088B43A6B9545739C6891B96A
+      97BD9EC6EC9DC1E759809E346891256595235A844C6F985C88B3699CC55F8FBD
+      5388BC4F7EAF30639212568814568B2F5C8D204364173B5A1A4A6E1B4B6B1B48
+      690B2F51668B97F6FBFAE7F5F9769098303B3D13130D31373B617C912F3D4920
+      1D1F2D2F313A3F3F373C3E282A2D2B3131262F2C1E2C292F413C495458242A2C
+      2F30325A5A582D33300D1015454653484B4F282926272B27222B255F68737178
+      8830343543484E3C455232354136373A2224212429251F241D282B2B2B2E3126
+      2B2D313739282C2D24272B2B2F3C3C4150444951404445383C3B19181872787F
+      9EB6C1A7C0C4839BA63F5A7B4D668E4D688C54759A52789F14325054647C92B0
+      D4689CC62245650C1F384F749874A5D26298C32A4D6B374B672239540C263E5C
+      7EA15A83A5517493557A9F688AAF5A7CA14C769C96BAE08DABCD26537B2A5C85
+      79A3CC658FB95986B17FA3C9314E6B2C5073628DB5183650000D20050D1D060E
+      1E5E7587D5E6F3E8E8F0AEC8C694B4B6D2CFDAF9F2F7F4F2F6FCFBFBF3EDED9D
+      AFCE91AFD6B5C9E5BACAE7BDCDE9B4C8E7AEC3E39FB9DF87ADD5A7C4E68AABD0
+      4B79A67397C792AEDE95B1DF90B0DE86A8DA709AD55686C45383C198B8E65774
+      9C0B2E577490B889A7CE6D8FC1809ED0789BCF35629727588981AAD796BAE689
+      B0DA8BB2DBA3C2EC94B7DF3758771622363E4E6C7A96C698B5E585A6CB86A2C3
+      97A7C5607396254364A2B2BAFFFFFFE2F0F0808C952D35471E293B29374B6774
+      8B515F7523364D40556D5361775560755C6574434B56212E393A50674A5E7917
+      2431171E25413E4A49485335404B1E2C3B252C43222B3A2C3A495363794A5267
+      434A5C1B2734091219131D223C49592C313E141924617688515E6F1E242E5260
+      70718293474E5F5D697E95A8BC6B7E9346586C313E4B0B141E000005212D2F8C
+      ABA175948A49606068757A7A858DA5BBD0ABC1DFC7D7EBB7DBF675B1E082B0D9
+      AFC7E0ADC7E1B7CEE2B9D3EA75B1DC5BA1D25E9ECE5699CA4491C56DAAD76993
+      B53A6788578CB079ABD15784A21D527541759E457DA42C6687366D9574ABDA95
+      C1EC93BDE39BC4E893BEE599C2E8A1C7EA86B4DD6FA3CF76ABD3709FC43E6C91
+      3764847E98AB9BACBC587790183F5E3257729EBBC6FFFFFFC4DFDD3F59601B35
+      503D607A284C5D4469806F8FA93C515F223846314E6129425028414D1734411F
+      36427E838FA19CA2999698A29BA2CEC5D0EBE6EDD6CFD3D7CFD6F1EBF2D4CACF
+      3B444B081D281F374336586B3D5F7327424F19212A1A20251D22291F333E253E
+      4F31495C354E60274557244255203D4B2037462D45553B5264243C4E304C612A
+      43531B2833030C164C6368C3E8E2A1C1BE738F93657682526E9586A0CCF7FAFF
+      FCFFFFD3E0EDCADCEEB1D3FF6895DF1E3366000D17170C1A555C8A299AED008C
+      EC70B8F3C9E2FFB3DCFF9CD1FEAAD9FDA7DCFCA1E2FF67C5FC1086DF1C91EE68
+      BAFFA8CEFAB0D3F8C3E0FBD7EAFEDAE6F86FBFF53BAFF79ED0F3D9E2EDB7CCE8
+      518EC8115B9B2C5B8A4477A23A7FAB77A6BEE1ECEE8A9EAA6077907689A26580
+      9D6381A45C6F8E505E7A58718E506E903C5A8132537C3C62875975974C66861D
+      38561826402D446048607D5367854D6483364D6D263C5D233A5C2330501E2640
+      222C472F3A54181F321B1F2F4D607E55739A4161861E41653B597E5C779B4864
+      88425B7C5C779746617F0927413E5E7D88A3C77898C65983B54A77A13A5F8345
+      648D3250771D3D5D365A7E274B75162E50010F1F112739647EA27892BD3A5980
+      425C7F445E854D6B99375C8A4A6A965A7EB0356499112B4B090A183D49653C60
+      8541648740648D40679245678C2B44600C192C404F695773962B4A6C3B567947
+      628833547A2E4F752E4F742B4B701736551E37513A4E6F223751041C2C000B21
+      475B79618AB4376D9A759FCA5877962F40536C86A1638AAC6F92B24663852D4E
+      7444688D55759D51759E0D213B39486293B4D8507AA62C51766784AA5F7FA555
+      739B647DA1385A7F577AA742638F0F16242E415B6897CB7097CB587DAB3C608B
+      4567945676A33B5C87294B713E5E7F647EA15D789C395172233C593353773E58
+      78212A3B17293C6C87A87B97BD4A6D914062843E5E802C4C6F455D7C797F927F
+      8792B9D1D5E7F7F7446F6641817A37756B357367397A6E347A6C4888803D8175
+      368073307A65357E6E3A857235817235816F3B8578357F72317A652F75632A75
+      612E73465E9B0E3F71132248151240302E703E5E9C0E457C1318381A1E4F3D4D
+      8D205996113E6E1012331E19543F5897125C990D38630F173E311E5D4B559216
+      57910E44750E12392C27634959971257900D3762152053443A76425995115187
+      0D13321E205645286956246251256D5729785F2F786C2C716230766A31796C3B
+      857254911D63A00C63A00C63A00C63A00C63A00C63A00C48780B0E2A1C3E7623
+      63A00C63A00C63A00C63A00C63A00C63A00C32550C1740332A6A573B8775317D
+      6D31796B317E6B2E7A693281723B82723C754463A00C63A00C63A00C63A00C63
+      A00C63A00C31550C1C443B276B5E317D6D327C6C357E6B37806E337A6A387F72
+      347165538B1863A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C0A1A0C164132206558226E5F1F6F5926745E1B695618
+      66551866512170592A7E6625785F24785E23785B1A735533774163A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C3A641014493A186C55307D6B2675632680
+      68257C62484CCED0ECDEDEF68CA5D16789BD5F7CA9395F984871B55C7CB6546A
+      9F1539754F6EA6C4D1F87494C53C5F995169A3A6B0D39CA7D06379B86785C050
+      7BBA557DBE7C97C6879EC87A91C0657FA95970963E527E5D688D47597D4D5F76
+      ABCBC796BBB5345C8A25489B345093102553001236244370476EA92E4E8A1823
+      4C455B8F447ABF0B3C7A3659A46184D7395C99234686215BAA337BCF63A9FF26
+      5595041C4C193B70041A3E000014435A8896BDF6C8E3FFC0E4FF3A71BE082868
+      2F4577436EAD2D62A2325F95668ABC7899D144639C3C546E9BB4B5A6BBBC7995
+      A37499B4295B8224577F6190B53F749D30618F2F6390225D8C5488BB5181B00B
+      436F184C793467925283AC6D96BF81A3CE7198C27099C14173A0245C8B5E8DB8
+      98B9DC9BB5D586A1C46F9ECC6AA0CD4A779D4776A03774A1608EB7557CA5235A
+      845F91BB5C96C622588B193E6A396F9B4A81B43364950F3D632244643660873A
+      688E5276984464872E5069B5CACDFFFFFFB4D2D66B859142545D364B5D5B7790
+      464E5A2A2728282A2D343A3B2C2E2E13141437474E5F768153666E2C3B3A2428
+      27232826252B29272B2D2E343C3A3E4C474650282B2A1A1D1D3C404630343737
+      3B425E64712E32321312151C1D222022222D2F2E2427272F2F2D23251F232625
+      3B3D402A2D2E0F1514191E213C414A3B434C262A3630323C46484B3D40400001
+      003A3B3D9EACBA9FB7C0A0BABD68839B4860842E4B6A2B4E71648AB337597900
+      0B223D527188B5E177AFDA2A55781D3F5F547CA273A2CF48759B3C5C7C4C6688
+      0B2D46496D8F678DB5527798456C8C3860855A81AE93B3DD91AFCF204E743364
+      8B8DB0D85F8AB65481AC7BA2CA486689223F606C93BC365E8213223626304420
+      39501A324A3C4E66A0B9C8ECF3FADEE1E292BEBDA1B9C3E9E0EBFEF9FDFFFFFD
+      D0D4DD819EC991AFDCB0C5E4B6C7E5B1C2E79DB7E180A6D67DA3DA6C9BD388AE
+      DA95B4DC5280AE517DB37496CD86A5DA80A3D96E97D3759ED97DA3D88DB0E196
+      B6E544669028405F506E91537EB1386A9F254F7F183966153C666D93C591B8EA
+      79A0D1789ECF6591C76092CB8DBAE883A0C656648491A9CFAECFFC8FACD687A2
+      C5819BBD7D95B598A5BF6B738D617183E6EEEEFFFFFFBCCCCF464A5A171E2F2D
+      3A494B586D3642542E3A4A2F4356273C502A394C29334144506045526127313D
+      1B27342431401E2A34131C2610151E29313E3143564F60764E5663333C494855
+      68323D4F56667A545C6E373943212A311C29320F171E313D4B6E7D936C7C913E
+      49592A33433D47594A4F624D5D78758BA552637423333F08161C000911111621
+      1D1821576D6B83ADA3436761607A79A7B7C1ADC1D9C0CFE6C2DAF093C4E870AC
+      DA6FA5D1A5C2DDCDDDECAACCE46EAAD780B4DC91BBDE64A3CF5A9CCB4994C754
+      99C86F9AC083A8CA90B5D189ACCB8FBADE5B8BAD325E83355D7E3A68888BB6DE
+      99C9F68BBFE9B1D6F3CEE3F6A7CDEC9EC6E993BDE382B0DA82B5E077A3CC325C
+      7F265879819DB3BBC6D5ADB9CB8CA0B8507290163E5E35657BDDEFF0FEFFFF85
+      ADB0254B6434536C49687756758C506579363F482A3A462C4D603E607124424D
+      182F366870798586932639434F5B61C0B5BAB9B4BAB7B7BEACA3AABBB3BAFFFF
+      FFB8B6BB161C2A152A3C273B4A283E4B3B55662D495A19313B21354321324028
+      42532E4B5F2742542C48582C485A213C4C182F3C35526634576D294C60284355
+      2C4658304D602C46581127351625338EA8A8CEF3EB85A6A55B717F637FA9A3C1
+      E5E7F3FACCD9E6BACEE2C8DEFD86B0EB19427D03184C316DAF336FB91D448846
+      7FC11595EC0081E750AEF6AFDAFF9FD5FF8FD2FCA9E4FF85DAFF189EEF0E90F2
+      6BB9FF89C2FC6BB7F79DCFFACDE5FBDFEAFBADD1F74EB4F738B5F892CFF7CADB
+      F28BB9E8388FCD5099CB68B0D85EA4CC5992B85786A3C7D5DAD9E0DE6E859850
+      6A8C5371945D799D4A6388587295405E7D23405B546686435C7C224664305270
+      4D66885472954566873B53735066844E6581304B68213B5D293F61344466212E
+      4A0F1E3615254015253C00000800030C4D66855C7CA31F46692A4B6C5A759A58
+      71952F375115223C21405E092D462C4C6A849FBF678AAF4E77A85A80AD4D6F94
+      173A5D4868925B7CA7395F856A88B17C9AC65982AF2D4C6C4D64808DA7CB5979
+      9F6887B2A6BDE848597D1A274B617EB03C618B476892436995254A6D050F1B00
+      020D3F668D96ABCE526E95294D782B496A13304C3E5A73425A762134533D5175
+      56719B60779F60769B5C7298597097546F963A5D85123354000E280000000000
+      0044587896BFEE6F9BCA2D5E8E557CA95D7E9F65839A89A2BD54789C5D7E9E48
+      5975354E705B7A9D7190B5304F6F0000032C354A8FB0D0243E570D1E325A7AA0
+      53729B637EA4546F932E50746689B55376A205152E030B213151765979A5627E
+      A954739A33577C4D69925D7AA5243F63273C59768FAE5F77962E4A6A33507237
+      5375435C7D212A3918223346607E425A763145623A4861283D551738575F6D85
+      8D8E988DA2A5EBFFFF84A2A0427C743E7C7036766A32766F3E867E3C89793D7E
+      7844887F3E897C3C89773C877A3B867438837232796B357F6F357E7131796D33
+      6E622B695925614C47801F63A00C3B6812124133226044366F2463A00C366213
+      1D493B2B6B3547801663A00C1C40191A5642549216457A123E6C0E143B2D1E60
+      4E5E9C0F3F711238610E11372B417D275E9B0E41701211291F1F514155931D5F
+      9B0E3F6F1113341E1E504233703E1E50401C55432A6E60347D722E7A6A2F786C
+      307A6531796A55931E63A00C63A00C63A00C63A00C63A00C63A00C47780A0B29
+      1E3B752263A00C63A00C63A00C63A00C63A00C63A00C31550B173C2D2669552A
+      735A2C76602C6E5932786128786025755B276952558F1463A00C63A00C63A00C
+      63A00C63A00C63A00C33560D21494125685F277062287460297161286E60357F
+      6B3A7F752F6A3D63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C63A00C2340091131262D6B582B79652C7A6A257163
+      2B7A622A7C6D2A7D6D1D7162267A652B7D64257A6420715B2C785E48872263A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C1C411C1E604B28796226766828
+      7A6B2C826A2B816A7473A0ACD396A7D4A6B8E67F9BD35A7DB66388C57697D0AE
+      B9E3B2B5E15D77AF4269A45D7FB7698CC594ABDB6D85B77086B79AAAD997ABDA
+      7E9BD3869CCDC3C6E0B4BEDF587EC07793CE89A1CC486B9A6C7FA48891AE3A4C
+      76292F52899FA8ADD4D27298AE8499D35267A2122B58334E81567BC03960A208
+      2259001039183B6D3465A825528E3255933853980C2A5D1D41724370B34473BB
+      1C48873053887394C731548E000A2703091000061C254B83759DD66287C91B44
+      8B2B62B24480D25E8BDC3D6EBF003D842E5A924A61910E234B0004205D7682B6
+      CCCC92A7AF7790AC3D69912259834780A92960882D56803C6D97115282256295
+      4976A41D4C783565914877A1245E873F6E985A85AF5E8CB55585AF4C7BA65482
+      AE78A2CF90B0D795B0D47CA0CC6495C92A64961440675A7EA56A9AC7346E9B17
+      4B74255780538CBD5895C73D7DAD2D64943662924A7AAA3B75A523537F22476E
+      3F6A944778A1476D952F557A002042567B89F1FAF9E5F2F28BADBD7199BE6EA2
+      D3557899393B4338393F2E333736393B2B2A2A202021586876859AB3626F843C
+      464F3034361F201B12190F24282D494C5D3E4249121512202222303135232429
+      1A1B1D1516172A2F312C30324143463E3E403232314546443D3F3F4040412D2D
+      2B1D201D33393725282826272D3B3F483C3F4B2D343A1D232B1D1F272123271C
+      22221017141919187A7E8A95ACBC9CB6B98DA7AD546E86233E5D09244036597A
+      52789D365B7F0325441B324E6C8FB36E9EC92D577B264B686086AB688FB43C64
+      855C799926455C335A7B6E96C25C81A53F607E34597A8CABD088A7CB345E8245
+      739A97B9DE6992BA4E7CA779A2CD5B799C1A38565880A54771991F4365526E90
+      5D7B9A3C5975142F4715263D4E6576B7CFD7F4F1F9BFD6D98EC0C2BCC7D2F4EB
+      F1FDF8F4C4CAD882A0CE8CABDBA4BDE49EB6E2678FCD7A9DD491B0DE6691C866
+      8FC65D92C67AA4D04B719A6D8FBBA2B9E5A5BCE46F97D05386C990B0E2AAC5EF
+      A4BEED6590C26A90B6AEC0DBAFC6DEC0D0E8A2B8D55870902B38574A6189638B
+      C3608CC35A88C34677B75B87C26B99CE7DAAD6668FBB5D81AFA6BFE8A0BAE390
+      ADD591AED48AA3C98098BA8398B37F8EA95A657DA7AEB6FFFFFEEEFCFB8D999E
+      2C303D2A303F3843561D2A3814202C22323F1326311A2A39293B493A4D5D2633
+      40080A0C0B151A1C2A391E2B370F1D240A141F262F3E36455645566831415330
+      3A492B303C2732413748583F48592F35422B3745313A4810161E3B45533E4758
+      2E3A4B4A596D5C677958627642546A64768D67788D4E6172293543061119050D
+      132A2B323B2F393E424681A29B628F84315A5697ADB9C1D6EFA3C7E596BCDE95
+      BEE28EBDE767A1D05F93BD7FA4C65E95BF5391BE94B9D792BADE6BA5D25E9DCD
+      5A9DCE6BA3D1719EC699B9D8AEC5DFB3C8E090B9D7628EAF0D243C001129325C
+      8193B6DAB2CFEEA6CCEBA8CCE99CBDDBA3C5E3A9CEF077ACD675AAD783B2DB3C
+      607E385C759EBCD4BECDE0A4B9CA96AEBF83A0B85F85A745688A2B516D84A2AB
+      FDFFFFC9E7E7486D7C264258425E6E3A5162475568596C79475F6D344D612B46
+      551026313F4A517C7E855A677429495C4A62739394A19994997D7B838F98A3BD
+      BEC3F3F0EF959296131A281A2E41203343364F5F41596A2339491836422C495A
+      2C4759324C5F2D46581F3747253D4F2B4659223D4D1C323F2847583259704265
+      7F38566D304D5F435F74243C4A1A323F0D21303F545CC2E6E0B2D5CD67838B59
+      709887ACD8B7D8F0D0E2F1B5CEEB729FD42E68A41A5F9E5590D574A5EE5AA3F2
+      4BA8F255AAEC48AAEE128DE70074DA41A5EE8AD0FF79D2FF62CCFA1F9FEC0F8E
+      F051AFFD7FC1FE50AFF977C1F9C4E0FBD7E8FCC4DCF889C1F850B2F943B4F97E
+      C6F98BC6F35AB2ED6AB8EA72B7E25DA5D272A2C57D9DBA7090AD87A7BAE5EFF1
+      92A6B1426081516D92344D6F304D736D93C0537BA51A3A5650627E6E819D374B
+      692A405E445B7B3955764660816C809F415E7F213E62263D61243E6213274304
+      0D1C2D3E52577496576F9423324500000015283C41688F3C5F81112C48415774
+      537194153757060E22505D767189AA41607D5175966A89AD5071985A7EA75770
+      92212F4B1B385C4163925F7FAC4E7099496A946F8AB3577AA3466E967190B078
+      97B97B9BC48B9EC34259800F2A5021325535577C4E6B914662864F70973F6182
+      1D344B4061857196C24E6D932D547E32547F15284521334C4B6A8A5A78953241
+      5C050C2422345328466A345376415E833E5C813B587D3553771C3A5A0E294317
+      1F30303F557294BE588BBB4E7BAA486D992850762C577C5E82A37C97B46987A8
+      416485354D69536B8C8BA2C85D7CA00724431D35531B395E1D39591421341831
+      4C517197577099597399325276425F836F8BB135567B1F3C5A3247630A223D1D
+      39564563836785A85D7A9C4561884B68910F213F020C23334A644B627E4A6788
+      4D6B8F455E7D243F5A2F4B6B4E688E12314D1627385C5260544F60344E6F3D66
+      92546C8A6F7F89C6DADBD8EBE9407269478A7C2F6E6229695D367A723F86763F
+      81743C83783D867642897D3C8173468A7F45907E3F897A418A7F377E73398574
+      367C6B3D73332851443D783163A00C406D162B4F161741373F7A2F63A00C3663
+      151D42161743314B881C63A00C3966110F2B2123594655931663A00C3A641014
+      392B225E3D49861863A00C4A7D0D153A2F225C4350891663A00C3762161C4D41
+      356F454B83185C990D325E181C5243437D29234E291640352262563B877C317E
+      66357F6C347E662F7E6554921D63A00C63A00C63A00C63A00C63A00C63A00C48
+      780B102D243D782563A00C63A00C63A00C63A00C63A00C63A00C31550B11382B
+      26695A27715F257059216D56307C592A735B28705E3C742B63A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C32550C1B41332F6E62307769246D5A2D76602E
+      79692E78652D7760518B1763A00C63A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C406C09081E162156492F73653480
+      6C307E712D78692C7F6A3A86752177692074632A826A29806D2375692774625E
+      9B0E63A00C63A00C63A00C63A00C63A00C63A00C497A0C1744392B78632A7D69
+      21736629786C2F82752B7D6CD9DE6481B75A7DBE86A1D890A9DA80A0D86F94D3
+      7D9BD06F86BC4D72AA8AA4D2859CCA385E97849ECB95AFE37996CF5E81BF7692
+      CA9DB3E191ACE292A9DEB0C3EA9EB5E0849CD18099CC7995C45E79AA6A7FA65B
+      749C7B8BAC7383A84C668999BCC1A1C8C595B3C86885B6243B72495E99456DB0
+      10336C0F28542D5589244F8413326105173C0010351A40733C6292254E7E214B
+      88102B6200052D6E88B393B2E8395DA73C68B94C6CAB2B365C020E2B04285700
+      235E1F49904481D41D69C23B73CC4E82E14588E11C365C000000000C28183C70
+      31537B90ABB3A9BDBC798F996A91B33D81AF286D9B1C578217416C1F517E2357
+      830F446D285B85265684124B7A4B7DA8648BB5416D9A346891628FB54577A24B
+      7BA55E8BB56892BA6D94BC709BC377A1CE668FC03B6FA11B4F821748774876A3
+      4276A21F5C8B2C5F89375E845684B26DA3D6558ABC255D8E1D598C2F6A9D1A56
+      860E47762055822F6188456C9246678D4166883256729DBDC5FFFFFFB9D5D971
+      97B26FA1CD568EBB455F7B393A432B2E2A404342494C501A1F1D26272B787B92
+      99A4C370798B1E22212A2B271C1C1724282B4044502A2D2C2122213B3E433436
+      3A28282A35393A4A4F54545B5D3E42432E2F301F211D2C2D2A3C3E3E2B2C2C36
+      38383C4141242A2A1118151A1F1E3E3F45474B542A2F331D202330343C2E3338
+      1F2021282C2D22292B0000001F1E1C8A9BA490ACB799B4B67B95A15164822236
+      500D263E274B6D3F678B446B8C28384F242D474B6C8E3E698B1237501A354C5C
+      799A597FA46283A3516985224B6C6790BC5B80A54C6D8F85A0C17995B81A4467
+      49779BAFCDF27DA1CA4874996589AF53759B2644635574954A71971F476D5076
+      9D3F678C395C7C55708E516E8B21364F0006196D838FEAF4FCEBE9EEAED4D393
+      C2C4BFCAD6F3E5E8CCCEDC8DA8D699B5DF8DACDC5886C54E7DBE759BCF98B4DF
+      5A84BD4D78AE6D94C6789ECB3C5B804A678F8CACD7A7C3E9A4C0E7A1BEE898BA
+      EA9EBEEB6B96C8749BC2D2DDF0B6C7E486A5CBB9CAE1DBE3F8D9E3FD8395B740
+      5D8B4973A65985BB618BC65380C0648FC889ADD88DAFD66692BB7699C4B6C6EC
+      A5BCE49BB7DD98B6D991ABCE899FC08094B57E95B2596B875D6B7BD9E1E2FFFF
+      FFD9E8E86069741B21323741543242541A2E3C1B2A36414D5D28384800000B0E
+      14203A404A1A252D121D27121E270A161D28364236475B11202C101B242B3847
+      4C5B6F6170823F4751263037080D11151D25273643374557252B3B192432414E
+      5E2835400D1B282B41537D8DA26473884A637E4C58714F576743505E040A1203
+      0B0E0B141949424B695C625D51576A79788CB3A94F736E45697372A0C16DA4D1
+      77A9D48EB6D99CC0E287B3DE4D8BBC2E6D9C3D71965382A971A1C970A7D36AA1
+      D26DA7D973AEDB689DC56E9EC1AFC8E5C1D6F19EBCD65180A139617F2D3E4F4A
+      6D8B699AC94F84B4296B95487BA18DAECD7CA5CB6292BC88B4D698C4EB80B5E2
+      355B7E2D495BC5DCF2C4D8EEA1B6CDA0B9CDAEBDCDA4B4C65B85A94272974264
+      86507086CEE0E1FFFFFF9CBBC4375568263E53394C5F4554644555663148581B
+      2A34151A23212F3C2E4859324D612F4F62395C6E3F6277405E7532414F4D4F59
+      878C9AEEF0F2F1F0EE4A4C50091420253F5226425631495C3248551E323D233A
+      472845592244571D38482C4554253A491C2F3C223C4D203C4E263F5122415324
+      455932506444637C36596D36516123313A192C371E34432D4356819EA1CEF3EC
+      90B1B159707D5675956EA2CE96C2EC7CA5D2225D971C62A2508ED389B1E8ADC4
+      EF8BB1E542A9F049BFFFA9E4FFADDDFD599CD90066BF2C98E449ACEF0275C422
+      7DD37ABBFF7FC4FF67B7FC47ACFB9BCDFCE2EBFCC6DDF88BC4F566BBF943B3F7
+      7EC5FB94CDFB7AC7F675C5F290C3EAA1C2E098BAD792B0CC7DA1C2518DB6267B
+      A792BFD1E6ECEB6D86973E5A7C4253734E668A6F98C9709BCC3760893B577853
+      6989293E5D243B5B54688A44587749607E4F67862E4867253D5D2E4364384C6B
+      17263D0B1625788CA5AEC9F3819CCA1F2633191A22718EB7527DAC1A3E610715
+      2D2739543A5D7F072A48324E6E96A8CC6A80A22C496D496A914A6B9138597B3B
+      5B7D1A3A580E1F3A33496E657DA9708CB65C7EA635577E3D5D815872913A506B
+      395675536E94525C7817182F051D3D5B80AC6183AC1C3A5B1A3252263B563248
+      67354D6D3F658D759AC9618AB41F476C0F3253375A820C203D142039415E7E4A
+      6A8C5F7D9E1C293700000006162C16385A112F4D14304D2642621E3856203B57
+      415F8056789A6D8DAA426B89345D813D6189365A8737628E224B721A3B5F4963
+      817995B1617F9E223F59243F5C3F608412395D395D85698ABA44679109284648
+      61826883AB517096657FA6435E81213F5F6E85A86D88AB2A4C70334F6E6F88AA
+      60769915243C142C442B496B334F70305072405D81596E8B495E7E2139595970
+      8E899FBE5571932E4A6B01182D273B5484A0C9779CC24F657E645D6F5865834A
+      7DAD396C9F28527492AAB0FFFFFF60857E317766397A6F2C6C61327665327D72
+      327E67317A6B398075317D6A387C6F36796C388271347D6A377C713882713C85
+      783C8175427F29386621193E332F6443447D2363A00C355D111F433537703E43
+      772F63A00C3D6B15194233336D36467D1B63A00C2E591A285946569316396616
+      50870D1237272B66325E9B0E467A133F6D101A3E304F8A1E63A00C3863161A39
+      1D214D4057931763A00C325A161838252C5C405B98144A801617362C275B4E2F
+      716131806E2D7D6B2D7A682E7E6852911C63A00C63A00C63A00C63A00C63A00C
+      63A00C47780B163327437C2963A00C63A00C63A00C63A00C63A00C63A00C3155
+      0B173C30296A562B766C2F7A6C2E77622B79602C7864296B4F5E9A0D63A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C31550B153D2E2D6B5D317D692E7564
+      266F5D3079692876632E6D4B63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C5C980C4C831263A00C63A00C63A00C63A00C63A00C63A00C0B1B0D1B463B30
+      746435806C3A856B3C81732C7E682E856C317E692A78652F7D6C2F7E6931806F
+      37783E63A00C63A00C63A00C63A00C63A00C63A00C63A00C2F561221594A2C7D
+      722F8071408B8138837639867837867668676785C299B2E0BBC9EB8DA8DA678D
+      CA3F69AC5A7BB94B70AF345F9FB4C4E6A1B2DB8098CBACB9E7849ED57D9BD252
+      7CBE5175B9809DD3A2BBEAADC6F06E95CE6383BBA0B2DAC1CDEA9AAFD43F659C
+      566E9A7482AA4E66944D62913E5A858BA6B5B4D8D37395A1758DB2616F9B4350
+      7C13285600143F1631655178B44E7FBA143A630E12340D1B4C1C477E5681B83D
+      6FB2487AC4618CCA3C6AA635638F1247801445A0759BFB6D92DA46588720325A
+      1235645273A23E76BC4B86DD6292EA3C79DC4987E485B8FF33436F00051A3050
+      7F6583BF4A669E64839BAEC4C592A7A8577D9B4085B43A7BA6255F8C184B7A23
+      56823C699120547D1D537C1C49752654835688B45085B13A6C99547DA65281A8
+      3F729B46769F5280A8195A85054A76628BAE839FBF45729B517FAE5C88B5265C
+      88336591628CBA5A8ABC345E8700203C14395E5E86B5669AC85283B2376EA20C
+      4E840E54863870A03265942B5F883061894C72986981A02B4E6C3F6C80DEEEF1
+      EFFDFB94B6BD7595AE6EA6DA6290C12329300D1003282F29393E431F24251214
+      0D60636C949CB75B64723A3F3C4445463132353B3F47343A420C1413282D3253
+      556448495131333332363954585E63666A37383714150E181914262523201F1F
+      171B1E2B3137373C4245444E3A3A3F313537292B2F1213172A2E31393E421D23
+      24191C1B1F21201D1F1E2226271F232301010064696C9BB2C095B0B99AB5BB5B
+      72893B4A6C1A2A46051E353E5C7B7490B36A8CB2334E6B1731473B566F355169
+      051C2C1A2D3F5B6E8D53709059728F2846645278A16285AE547399556E8F0E31
+      52285276A9CEF297B9E03B67903C6586517290355573526E8D53698819345548
+      729A5884AF2247693E5B785473935977976279950E162F223247C9DCE3F5F4FD
+      DBDADFAFD8D591C1C7D3D5DCE2D7E29AADD295B2DD82A7D94477B35B85BB7A9C
+      CD688EC3537BB4547DB36C90C55277AA52668A5C6B8A627FA67393BD8FA8CF93
+      AED28AA3CD607DA93D6F99B7CCE3D4DCF0AAC0DAA5BAD7B7C7E0C5D4EAC8D7F1
+      98B1D53E6A9B6591C18AAFD9759DCD477CBD6494CB8CB2DA98B7D77195BB87A3
+      CBC0CFF0A6BFE59CB8E09EBADC9BB4D58AA1C67C94B67C94B45D70913C445B99
+      A8B0FFFFFFFFFFFFA6B4BA333D4C263243384C63253A4E233240273648011120
+      222633625E6D4F525F233240202D3B141E240C1519101F2930465B2335460612
+      190A17244B5D72758CA44C596453585D313035171F252639471D2A3708121F43
+      566B2A3B4B222C38525C6E596B7F384E603D54645B69814B5470475666121F23
+      0000000303073A3B437D70768174787A6B71625D62859E9B8CAAA33051523661
+      76688FB678A3CC81ABD089B0D487B2DB8EBAE26299C31C658F225A804A759D6A
+      A4D676B8EC74B0E176AAD4387A9F6195B7C5D6F39EBEDF34698F305E7F658CAA
+      87B7DC90C1EE76AAD94F89BD1C619110517E6F98BB8FB1D1245F8909466E739E
+      C3557CA10009256C8098E6F9FFB0C5DBA9BED49EB6CDA7BBCE9FB5CA628CB150
+      7DA1487094375C7D88A0ABFAFFFFDEFBFB87A3AE273B56011C352436412F3D4E
+      2A3D51191F29242D3747677C3F647E3959702B52663A61775E809847697F2645
+      5A4F5E6DA59DA3E5DEDFDBE0E02C2D2E00010C304F6836576E19303F2038451F
+      374319303B1B3443264253233F4E2B46542339481A2B38223A493955662B4758
+      24405341586F2F465A425E7648657D42596D3348592437452B3D4F364F693A4D
+      58AECBC7C1E6E0759797576A795069893A6A962A6AA73471B75789CD79A7E294
+      BBEBC2CCECB0C9F033AFFB60C5FFF6FAFEFFFFFFFFFEFB598EBE05539E1B5AA2
+      1C62AF7EA8E18DB0D68FB7E281C6FE60B9FF96CDFDC7DDFDA1C9FB5BA9F234A7
+      F17EC9F9BEDEFE9BD4FB8FCFF88FCEF46DBFEE80BDE6A3BFDB78AAD23F93C61B
+      83BC0272AB2C81A7DFEEF0B9C8C952687C727A917285A55F8DBE749ACC4C6D98
+      3E597D4259792D42613046654F63855E6F8F4A5F7E294966475F7D576A884356
+      753B4D6C20314B2035516E84A699B0D85F749A0000083943559EBAE95777A10B
+      2F4E122944192A3F445E7B2E4B6E162D4830445E425A7A1D334F151F381D3A58
+      385B7A2845671D3F625074973E5B7E3650744E6A8F253F5B0F243A27425F2D45
+      5B0A121D152B4A1B2E4F0000080A1D38718DB36C89AE3D5C7F475F81142F4F0D
+      1E3A000B1D06152E5073A17097C6507EAC1C4062000007192A3E103052061A36
+      465C7C5C749B5E769C59718F1022372D4B6A40648A142F4A132C4806203D132F
+      4B6887AA4C688A2B46606B7E946276901E3853082D4E51729D90ACD9728EB52A
+      4462112B464F6881526A831027400C25441739604365926082B132567F314B6A
+      293E5A4052706D86AB7293BB6B88AB2A496B354F6F7F91B2687FA01C3D602B47
+      697997B992AED135425A0D13260F28411D3E5B43618490A0C3C6CDEB93A4C850
+      6A914B658761789948638119395321354A4B5973748CB16D8EB84164852C435B
+      486A8F6192C738689F51748DEEF7F5C0D5D1326C6336776B3070642C6E613077
+      68337C70337C6A337868307E6F2C7D6A2976632A79642B76602C765F2E7D632E
+      76652F7C682C6B5535661F63A00C173A2E3A712C63A00C36621551870D183A2B
+      396E2B5F9B0E376113355E12173D2D45801F63A00C345E0F13321C1D4D3B4985
+      1763A00C2B4F141535261F543E40792463A00C3F6D0F123826285D33447A1A63
+      A00C3C6A151E473C3B713145791863A00C3660192D5C353E732A4B801620401D
+      1E453B306C62347D7331807131796D367D6D53931E63A00C63A00C63A00C63A0
+      0C63A00C63A00C47780B123127437E2A63A00C63A00C63A00C63A00C63A00C63
+      A00C31550B163C2D2A705D2E7D64337F6A3E8D713C89742C78684C861A63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C63A00C31550B183D30296B562B75
+      6032786836806E297962317D664C871B63A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C3761143D762B63A00C63A00C63A00C63A00C63A00C63A00C244109
+      1434282B6C5636836C327F683280652B76622D7663327E6935806A34816E3381
+      6F337F6B4A872363A00C63A00C63A00C63A00C63A00C63A00C63A00C13352321
+      60552C78622A7764347F6C2E735D33736C31716A4B41A4B3E57F9DD688A5DB8F
+      A7DBA0B4E29EAFD8688ABF4E79BB6486C18CA3D08BA1D37895CF547DBF527CC0
+      6587C57B94CA5B7CBC8BA7DBBED0F690ADDB3D6297526EA1A1B2E0A5B6DFA9B8
+      DD5E78A920437E576C9C61739E5C6E958D91A878849E97B8C1A1C4C0B1BDC59F
+      A9CA2742750012402A4E8B3665B20A3776183F71284A823B5FA55682D12B4C88
+      062961417AC699C3FFC8E3FFA3C7F8224C7C07316D5B80D87E9DF43961A92542
+      7B18346B245293A9C1EB86ABDB3A77CB6094ED5891ED8AB4F8749CCA1741721E
+      417E5071B05E7BB1637BAB5D759A8CA6B2B5C7C67A919B4F7DA0508DB63A729D
+      1B517F16507D225D893772A24576A21F486F2955815386B21155832358856687
+      B22C618E44739F5B87AF336A931D5B86376D9A4A78A03D678A4770966B95C05D
+      8AB63E6D993E6E9D6E9DCE6991BC2547692C557E194571184B764784B32B6394
+      23578B487CAF4278A62D638F40729F4174A027608C20527A224A6C163F5E183F
+      5B8AAEB7FDFFFFC9E6E5A9C1C97E91A732485C21292F2C2F2D2D2E2F171B1F33
+      3A3C2D37310E1311393E4831363B4647473D3C3D2C2D2F4F5055474B532A3238
+      323A3F3E42453237371216121717163232302E2E2D3A3E3E4E54543F41402928
+      25252624181F1F1C2229272B33433F4B45404B27292D26292D23252A31343937
+      3C431C21241E20201B1D1D0E110F1C211F3237371B1F20262425919BA196B1B9
+      A6C0C47E96A0394A673446680D1E371D2D47667B9B4E72964B729838587A334C
+      67596F8A4965801E3349131F3229445D516F8D374E6837526D86A3CA435D7E00
+      000E1D405E8BB8E384A8D424527E28557A688BAC49698A4E6E915A7294111930
+      364C6E6E9FCF517EAA2544653D55726381A13D5F7F5D78945E7690061F376278
+      86E2ECF5DFDCE5D5DADEA8D2D39CC1CADFD8E1CECAD991AAD08BADDC8AAAD85E
+      86B9597DB34872A63E6BA15C84B95A81B37685A89E9BB6B3AFC1B1AEBD999EB3
+      8F97B38691AF7F89A4616C8A7E90B0C2D3EEBBCCE6ACC1DCAFC4DEADC1DFACC1
+      DFC1D1EAA3BCDD487CAD5389BB87AED87EA6D26092C76595CA8AB1D99FBDD94F
+      779B6A8DB4CAD9FBB0C5E8A2BDE49BB6E096B1D78FA5C88B9FC07D95BA506C92
+      494B646C6E77CDD6D7FFFFFFEFF8F873818A00081648617E7792B0232E3B0000
+      02353E4AACA7B1BCB1BB4649581A283619273618243017212819232A38455433
+      3F53152130101E2D10202E0C1E2E1D2E3E5C5F6C5D5D681F2C373043563C4F61
+      415A6B6078903D4D6647536A4856675764764A5D71586C817282996E7C96485A
+      69122227050C122E31397B727B5D5960373941504E55554A505D636689AAA367
+      857E3754575A7B907092B77CA4CA7EACD38DB5D9ABC7E58BB3DC4B8ABC20648E
+      185072365D7D4373954781AB4D8FBC619DC681ABD26794B95C8AAD84A6C397BD
+      DA8CBBDF97C0E68BB4DC87AFD78DB0D682A9D46793BA30608A3F7299608DAD36
+      5D80205177173C590A0D246C7488DBEFFDADC5E1ADC0D79DB7D096B5D082A9C7
+      638FB26489AB6083A4476A8B447087ADD3D6F6FFFFBCDBDC8296A6364A610015
+      24071B281224332B394A375061486E864C769130556A385B74476F8D4167823A
+      586C335063304D625D6B77B1ACB08B888916192210273E274861314D642E4B62
+      35546D324C621F3847213A482D4656567890476A7F1B36422238492940523048
+      58384E603C516250617752617B485C724862783B546B253C4D2233412A3F511A
+      2B38000308576E72CCF6F3A5CBCA6D858E4D4F5750667D5D99D75D9BE177A5DC
+      9CBFE9B5C8ECBFC6E86CB8F234B7FEACDEFEFFFAF9FBFCFDFFFFFFC7D2DF1B43
+      7E0021633C76B390A9CB5F7C9574ABCA9BDCFE60C4FF59BFFC93CBFE6BBBFF08
+      88E96EAFEBDFEAFEB3E0FF8ED3FC76CBFA61C5F461BFF077BBEA6BB1E0379CD7
+      2194CF1E90C41C84BA0E6DA871A8C5E9F3EF9BA9AE868D9D6F7D9B517BAB618B
+      BB4E6F97556D914B64853246641A2D472C4361415776566B8B4E678A5B71915C
+      728C21375610274A2F46673148685B6E8F7287AA2739531B294246688F3B4D6E
+      0D21392E54773C57780C0F1D4D5F7E7797C42142620E2D4A365574173347181D
+      2E3E4E6A667FA15973954C668A5873974D678D324F77304C7416213B1020313E
+      58741B3853223B53536E9430476A0A2542678AAF809ABF334C6F344D6F39587B
+      486B973B567919314B3E577C59749A53779F335B853052752331450512243F61
+      843953701D25385161816F80A35369852D5B854F7EB3466F9A43648749638524
+      426158799B5B779704162803182D324D6B303D552737506D83AE7999CB7495C0
+      738DB138506E27405A243D570C2439132D455C77A06D86B754719D23456A334E
+      6F2134501F2B3F161F2F1524364B6989375B7F3E5E8260799D536B8C405A770F
+      2640324D6D6E8DB0698AAD405B791F2E402B3C4F506D8F839DC69EAECF9AA6C4
+      94A1C18E9DC17387AB3551741C3D60506B876172894F617D415E823C5D833A59
+      7D1F476C45709C648ABE486D94ABC1C4F7FBFA4B756D3477683374652E726537
+      7D6F367B6A367E6E337D6E397E6F368273358271317E6C35866F2D786233816B
+      2C7A6838826B2D7E6547832863A00C30561315352731643242772263A00C2B4F
+      1311322043792141751D63A00C2E54111537274A861A3E711863A00C25491528
+      5A2759961138641663A00C22462134683263A00C325B15497E0D204A1C3E781F
+      63A00C2C50143660141F493249822163A00C2647162E56181E47314B861A63A0
+      0C325B1617392D275E49387E6E347F6F3680733A827154911D63A00C63A00C63
+      A00C63A00C63A00C63A00C48780B17372848802C63A00C63A00C63A00C63A00C
+      63A00C63A00C32560C1A40322D70573385693181652E7F642E7965336C3963A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C31550B153B2C30
+      6A592B715E3B7F6C377F6C34816A35755163A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C5C970C133C2E2B6D5563A00C63A00C63A00C63A00C63A00C63A0
+      0C406C090C2217205744287057216E5526735A3078612573582E766137826A2F
+      715F2E7C652B6E5A63A00C63A00C63A00C63A00C63A00C63A00C63A00C43710D
+      123E311B665423736023755B2570592069582A6E662D7065E5E5849FD8A5BFEC
+      97B5E6728EC78DA2D6CCD5F6A9BCDF20579D5C82B6A8B6DE708CCB587FBE9DB6
+      DD96ADD96A8BC7A6B9EA93ACDD7298D38CABDE7FA0D77490C86988BCA4B6DC87
+      9DCE6F8BBF7289BE7A8CBD4F6797465F87475E863B476E47547D6C87A2BFE3DF
+      99B5B74E6D9712438E3365AD6192DE7EACFD3F74C4022A641D36713262B76A97
+      EE7088CA052465608BC2C5DEFF97BBEEC9E9FF7D95BF14275A5871B35479BE2A
+      5593243C72031D514C75B59FBDF2C7D8F285A9DA296DC95091E36186B732517A
+      50709D3B66A32F599E325F9E5D7CAE6277A35A7594A1BCC3ABBDBA6C84934075
+      A13772A32E5E8E2D618D2B69943A6B98215179204B721F4B7145719A6C97C438
+      6C99436C9A48729F5985AF5987B138699241688C668BB1739BBF4F75994D74A1
+      6995C36690BC41709F4E80B58AB8E65E86AC122B55496D9B5F92BF4D83B02D6E
+      A51D5E94436B994677A61E67971E6999397BA8457EAC4C709726425D2851724B
+      71942548681C3B51BACBCCFAFFFFC4E6E95E6C67161007282B282F3031222526
+      1C24232D3535303638181D1C2327281A1D211415173333333234321E1E1C2D2E
+      2F4F5257626367262D230C17082228222D2D2B3E3F3C2024223338395B5F623D
+      3F3C3D3D3F484B50232624272B285C616953556127292F292828525456545B5F
+      1E24251315194A49513B3A3F171B17262D292A3232282D2F2326270100004442
+      44A2B2BB8FA8B2A4BBBF6F8896465F823C55790A203B29415F5E7C9F4E719653
+      729A2A4C6E1A36514A617E3352711D405E53739443617E37516C21354B617B99
+      3D556E05050A647D9B75A0D00A2B531F4B718AB0D67DA1C61E4164214A6C2850
+      72263F606487B26B98C44D7BA327496B334C69708BA86784A1244868617B9748
+      5F7700162D92A1AFE0EEF3C9CFD5DEDEE4A2C8CDA3C0C9E5DBE1C3C3D596AAD0
+      8DA9D66A8EC4567FB5658BB76489B7527CAE748BB2C2BACDB9B5CDBCBCCFDFD5
+      DEE0D9E0D3CED7D3CAD2D3C9D4B9B4C79BA7C8B9CCE7B7C9E292AFD0AEC3DFAE
+      C2DE8DAAD0C0D0EBB2C5E1507EAE6290C39DB9E58FAFD989AFD58CB0D7B6D1F0
+      A0BCD61F3E5C3D577BBED4FCCCD9F6C0CBE6A2B9E38BACD689A4CA8BA0C95F82
+      B333577E5E63775F5A6A7F8A95EFF6F7FFFFFFC0D6D926393E2E394643546713
+      1D2537383EAEA8B2D5CBD2C8BEC461697722344723334627364417222C1B212A
+      1F22280F1218232A382230401423370D1B2E242936685F687B757F24333D2337
+      44455467647D92819CB36276914E5D74091620020C175C697F63758C54657C35
+      475A24314029313C1722285252574E4E54061721122532141E281A1C22443B45
+      74838588AFA7486A614F696C7994AE6592B988B0D1B0C7E18EB1D377A7D281B2
+      DE70ADDC1A4E70000000191E2B5F8BAD7BB6DE8BC0ECA8CAEA7299BBABC2DBDC
+      E9FAA3C6E6A8CBECADC9E7B0CAE2BDD2EBBACFEAA4C4E783A8CE2A5A84809FBC
+      EAF2FFD5E3F8729AC14A80AE4F7093203B5699B6C9E9F5FFC5D3EBA8C3DD88AE
+      D27CA4C5779BB87494B36F8FAD60809D3C5E7F5D8195D9F0F2DDF3F2A9CBCCAD
+      B8C069708138495741535F3951612540502E4D64436D8B2E4C60334555365166
+      33536A3F6077415F783252671B3E4E707D87514E500A0E19283B51263E563854
+      6D44607B234159304E674F769B496D8B19333D3A576B50738C37586D33526727
+      4355374C5E4E60724A5E6E3248593549593445572F45563045562B3C4D18232F
+      13151A0B04030B192232546A9FC1C7D2F4EC92B6B6586A7869749188B6E781B7
+      E989BCEC86BCEF92BFED59B6F232B8FC95DAFFEFF2FBF3EFF4EDF1F7FFFFFFF6
+      F3F44C6D9B00165026375E6E8AA966B0D28FD4F6B1E1FF8AD3FD6DCAFD4BBCFE
+      0097F83EA7F0BDD4F0CBE5FDB4E3FF8CD4FD78CFFB8DD0F77FC5F54AAFEE23A3
+      E735ABE3319ED60981C60871B70A63A80A5C97ABC9D8DDE6E4788A95707C904B
+      658B4D719C507299526E92435E81465D7E445A79485B7B223C5D1E38573D4964
+      2E3E58324C6839506F2C405E536A8D405F87142F522C4060304969577BA6426D
+      9B081E3C4C5B777190BA172D4D000010324A6D5F7FA5476C903F658A39567516
+      3450455B7C939BBF4C66892148684562834D698E4E6993567299677FA74B648A
+      2747647489A46679974E698B6686AD1F43694A63877F98BE345B813D5C813554
+      7851709B52668A1A24365568905B79A71738582947682B4E706880A36E8AB027
+      4867596F8E5366820005141A273C42597B234467406A973F6E9F315E8A5B7FA6
+      48698C4A6C8E4E6F9209233C1D3348415A791F3A5910203A596B8E6D88B72B50
+      8135557D506A8D59729750698A374F692037503248675E7BA42E527600173356
+      6A8694A5C442597A0C213A02122000010803162D4D6B8D60759731446429486A
+      34557A304C723D5E836686AC5371993C5878334C602E3F5012243B4B5F838292
+      B79BAACC8998B98191B194A5C0657C9E4F6A93536C8B1F37512944644E6F944B
+      709846658B59749A6383AF486F9A7E9AA3F6FFFE799A952E7463367A66296F5D
+      2D7165377C6C38866D31775F397C6C3482743D8173377F713F8674347863337C
+      662D776233826D317E62347A555F9C0F3D6E165C980D1A3D2134682763A00C3C
+      6B135C990D2149262E623B5E9B0E46781152880E183E32386C2A63A00C345D0F
+      2C53141A462D3F772463A00C264A161B3F2C3362443C711F63A00C2345131334
+      263C742A49811663A00C2A4F13204B2C49821F44791763A00C2F56193C701D47
+      801C40731958910E37651F2057452F775F32806C2F816C3A8A7A57952063A00C
+      63A00C63A00C63A00C63A00C63A00C48780B112F24437D2A63A00C63A00C63A0
+      0C63A00C63A00C63A00C32550C1B403328665B367D6B317C682C796920655453
+      8D1263A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C31550B
+      14392D2461522975632E6F602E78642D755F4B871A63A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C3560131F55452E77644F912363A00C63A00C63A00C63
+      A00C63A00C63A00C05100B0F3424134B36114B3819533F2057441F5545205546
+      2056461E55431F564433682E63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C2448161F56422473591E73592177611F745D1F6F5D226E611D6B59E4C997AF
+      DD88A8D9739AD54972B78298CC8DA7DA4B73B33E67A890A6D1A5B5DC91A9D88D
+      A7DAC1CDF0E0E0F8AEBDE26E8FC691ACDF82A4DC6E93D48AABE16996CD789FD2
+      95A8D44469A94F73AD7191C3A3B5DD7E90BD556F9756678B203664586A92697E
+      9F9EB9C5C0DED96D92A65583C85481D45581C889AAEE73A4F42463B115448A3B
+      67BA5E8DE4597BC9112E6E768FB4CCF0FF5E99DC85B9F46D92C0193764254C80
+      0F3E7512385D0F2C4D0E32686487CE97B7FAC2D9FF8BA6D7376EC05E99DF2053
+      952C538B89A7DC3E70B125589B436DAA6182B65371A4203B6C6A879DB6CFD286
+      9EA25C78966888B47389AB6188AA5F8EB42E527A0231593E698C3158781B4C6C
+      84AAD176A2D1376D9A5B83AD75A0C4437AA124527932577A4673984B7AA13966
+      8D4776A4476D973849672A527A6498CD80ADDE2C6093022D60103E6831699562
+      95C56898CB76A4D2A0BBE0427AA60051843479AB5D9AC95085AF263C5625384A
+      25476339527039557200102D486A74F3FDFBF5FFFF89A9A9474A472E29251415
+      12151B1B282E2E3138383A42463539382E2E2D27282D1013143334353135340B
+      100B20201E343535303533252B213D423F484D502D332F292A292B2C2D323433
+      4A4D4D4C4E5054575B5153572E302F3034315055554D5357393D3F4748475459
+      5A4E54582326281D20224A4D522E30320D120C2C332E3E42433135372123221C
+      1D1C06030574787F8FA8B499B0B79AB3B652708956719945618304213B2E4B6B
+      53729952779E496B900B1F3603080F183A55648FB77A9BC430516F2847622B42
+      5C26425D2C476124303F3B40551E3C6026496F90B4D99AC1E93B67901B416431
+      597B224C71466B97729AC778A2CB3D64871D39543D52714D688A849FBD3F6081
+      2646666D8099172D47233547D1E3EAD6F1F4D3D5DBD7DCE188B6BCB2C5D0F4E9
+      EECECED9A4AECAACB8D593A8CC7892BA547DAB5A84B4849FCA8AA3CD89A9CE8A
+      A8CEB1B8D2E5D9E0DFDAE1DBD7DFDBD5DCC5C1CE99A3C3ADC1DEC3D2E8B8CBE3
+      C9D5ECCBD7EABFCEE7CBD8F1B1C5E236628A4B75A5A4C3F49EBFE99FBDE2AAC8
+      E7A2C5E36D88A7353E5C3D476A8DA6CDD8E6FFD7DBEEC0CAE3A4B9D99BB2D878
+      96C6255791345A847886A26B7DA0556D8EACC0C9FFFFFFF9FFFF708A91000000
+      22242A8F929FC4C2CAC0B9C0BDB8C0E6DBE4717682020B13303C4A3C4B570B14
+      1B0000090000000000000E17221724350A1426555969AB969FB19DA49B919754
+      5B66021620233140556B846F849C48596C2B3D4F5C6D8537485C2E3D4B2C3B49
+      102032203242252F3C070D151A1E264D4D553D434C33414E2736401420270210
+      1716141E58535B94B0A880A5983B5C575F79847E99B776A0C073A3C77EABD98B
+      B8E281B1D95A90BB2E54734D5E72789AC3B8DAFDABD2F380B3DBC2D7ECE2EBFC
+      A3C3E09EBCD892B6D8BCD6EECFDFF2BFD3EAAFCDE9A8CAE9AAC9EB6396C08DB3
+      CDD8E4F6A4BEDBD0DDF1CDE2FC76AFDF83BEEC377DAF326486C0CAD3C3D8F68C
+      B3DA7EA8CA83A8C780A2BF809EBC7395B46A8CA9607A98335475799BA9FFFFFF
+      B7D5D592B1B6E6E1E9ECE3ED949DA818363F1D394847607B415E793146591C2C
+      37283D4E486681517594476683485E72405D71446073222326130B0B2934431B
+      324A39576E49667C21394B253A4A365C79466B88253843102731213D4E3C5870
+      405D75324B5B445564495E6C3E536335485833485324374619293C2636482734
+      401518190F0C0A1721262B4E6227425C455C66C4E5E1CBF1EC6F8C924E5C7481
+      A2CEA7CBF38FBEE948ADEE2FAEF62EBAFE79D5FFE0F2FFEEF0F9E7EBF3F3F6FA
+      FFFFFFD2E3EF3069A200255C0000074E70927BEFFF75D8FFA0D1FCC4E5FD89D3
+      FD1BB1FF22A6F7C7DEF5D8E1EDADD2F0C1E3FDB3E0FFA0D4FB85C4FB4CB1F839
+      B2F53CB7F31F9BDC0376C4186CBC2D74B62B6DA70C56953C74A1E7F2F2AEBDBE
+      5B7284475D8237557C375B834A688E3E597C3953724C6386546789213959323E
+      51BEA4A48980913A5683758CB84961861A41663E658F18365A193355516C9857
+      76A041648B7595BD99BBE63C638E081E3F0E26462241633954763A587A3D6082
+      3D5F7C1F3E5C0C294B42587A586F9321466A062846203C5F38577F304E713855
+      7839577C122A4643556E43536A344B646C88A74C6C9291A6CE708BB06485AC48
+      6C8C4C7095697DA7030F2316202C758BB36F87B0244564112F471C38526C87AC
+      799AC23F57750C1522182C40556D8C64779611305225527C658FBD325D873B5E
+      866B8BB04F71944964862F48661F3B56556E8E4F6A8F4B6485667DA0314E7200
+      2042041934051731284D735881B13E62863E556C637795436288385A7F426181
+      405878677C9A68819E617A9E415C7A12324D2B486760799B89A2C34758750000
+      1A000F2817304C2B4A705C79A4607EA54E6D95506C923A57772E465F04122700
+      04201425463B465F2F46623C5C7C5A75966981A960799F2A4A6D0F2A46071F37
+      4D668A7691BC59769A6380A45D7FA75B7A8AD6E8E2C8DEDB2D6658347B663275
+      612C705F327263357D68387E6B3179632E766C317C6C397D6C347E6839806E3D
+      816F2F7C642F756A307F6E2F796E357A58356E2C5E9A0D3A651120451E4B8318
+      38692257910E204116183E294D871B467A1A5E990D1B3615244B265F9B0F497E
+      155C980D2546193160265F9C0F3D6C1A5E990D20482C386E335F9B0E3C6C165C
+      990D204823376D2C63A00C36611457900D173F3240762363A00C3157133C6A14
+      143C2C3D732163A00C224719224924215446276E573C927A3180693C88725592
+      1C63A00C63A00C63A00C63A00C63A00C63A00C47780B102F22417C2763A00C63
+      A00C63A00C63A00C63A00C63A00C31550C173E323470653480743A88743C816D
+      3F782463A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C31550B1739302063522E75682E776A38796C29684563A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C5C970C20452C2969532D786142883863A00C63A00C
+      63A00C63A00C63A00C63A00C1C350606120B081A12071B12081D15081E15091E
+      16081E15091E16091E160B201644740D63A00C63A00C63A00C63A00C63A00C63
+      A00C568E0C11372C246C562778622A7A6C3080712D7E73297669307A6B297863
+      42409FB7E3678BC9829CD19DB0DC91A8D57296D16288C1718BBE92A5D989A1D6
+      567BB05277B78FA5D9C9D0F0B1BFE3375E9A6C8AC19AB4E86D92CF5983BD3163
+      98597EB68EA3D25977AD748DC37190C1436DA36D87BE6784BB4963954D638F6B
+      7F9E44567B3C4F75A8C8CFB4D3CC648CAD164690325AA089ACEA88B7FC3B6DB8
+      001652385FA668A0FA3D67B400174327496D73A8D3356CA7133971294F815485
+      C03C70B12853922C51831E4A783864A03E69AA607FBB4D66A21D50A93E7AD583
+      B1F36EA2F0235294476D9E476DA41C43774261974C6B9F1F4A85001C521E3456
+      94B1BCA7C0C26C89918C98A7D0C7D29FA8BE557EA81F54851E4B76315E823663
+      8525567714476A416C935483AE5184B0356E95245C8428598535618B285A8300
+      3F6A1A5B895E92C135618B112949375A795C8EBA3166981748793B669711416D
+      2259884E8CBF4E88BB5C91C1699FC883AFD76D9BC62F6A944E87B44D7BA3274A
+      661D4A65133C5A2D4965536D853C506D34506DA4C2CBFFFFFFE2FDFE7F99A129
+      2B3225262637393A3436383134325E646C60626A1E1D1C2525293E40443B3A3D
+      3134343539372D2F2F2E2F2E2A2D27282C2653575F5D636D2D32320503022527
+      28404445262B292729294146453337321A1C19242828181C18131A142E332F2A
+      2E2D1D25243136393E404630343934393F282E2F0B120F1C2221383B3A323532
+      232824252725090B0A26282594A2AA92ABB69FB5B877929D5375966587AD2844
+      5D07243C2B4E70395C7E385F802A415D0B1A28476A8B7A9DC3557698264A6A2C
+      4C6D2B46632C465E4A64803C577502132A2444658AB9E287B1D94C71991E3C5D
+      3E65874E78A02A496C506D9386AAD684ADD726476512273D4155751E3B5D5176
+      977D97B63754714E6681566C85000F24636C7ADAECF7C1D8DEE4E0E3B2CCCE82
+      AAB5E3E2EBFFF8F9EDE5E7FFF3F1D5D1DA7C91B87098C685ACDB7FA8D981A9D6
+      94B9DF8FB6DD779ECBB7BDD3E7DAE2D8D3E0D9D4DFD6D1DAA4A9C595ACD1C8D5
+      EED3DCEECED9EECCD9EECFDCEEC9D9F2A1B9DD3452722342635E82AD7194C26E
+      94C45E8EC0557CA2626D878F8BA17F829C60709298AECFC8D8F3CBD6EAC7D1E6
+      9EB1D64770A43A66977791B9869DBF768EB15A7095687F96D5DFE1FFFFFFB2CA
+      D065747CC1BFC1FCF5F8DBD4D9B6B3BBBEBBC4F4EAF19294A01F2228171F282B
+      37431E2633242C3A2E3A461D333F1526391F22306360657A7782847E8CA79DA7
+      B3A6AC89848E29344133424F3541502B3A4C4452693E4F667E94B5677F994957
+      693A46562B3D4B263540080C1300040C3C404E5A5A674C57674654680F1D290A
+      151911191E050E1522202A63696C98B5AC5D80763656517B8A926C8BA95991BB
+      89B2DA6B9BC24279A34E77A278A0C9AFD7FFA3D1FE99C0E5AECDE7C8DCEFC8D9
+      EFB5D0EB96BCDF9ABEDD86AECE8CB2CFC3D7EFB0CBED9AC1E3A4C7E78FB5DB48
+      8FB9A3C6E0C3CEE2A4BED8ABC3DABACEE48FB9DC5D9BCD6FA9DB3176A608406B
+      436C94739EC989AED37EA7C7729CBC6F97B77E9DBA7997B24C74962B52745674
+      88CFE4E7F0FFFF92B9BBA8B5B7FFF3FA8791A000203226495B3D5C721E3B4B2C
+      495B3751642F42563B5873446A863B5D783F5B714360772B415017191D21232C
+      2D475D22455D283F532E4355324C5E2538451D303C223C4C2B404E3450622A45
+      562A3B454D6A874560772B3C48324A58334D5C2A3F4C1D2D341A242C1D243022
+      29331F2B311F2A2B182022213C492543530F1E2A0A1E2B749198DAFCF5A4C4BB
+      52717B6984AEA6C5F382B8E745AEF045BDFE8FDAFFC1EDFFC6ECFDE1EBF7F6F5
+      FAFFFFFFEFFBFF5889B50034720032652E3A5B4988BF67CCF869C6F679C6F89A
+      D7FF6BD0FF21B7FF5AB7F2DBDCE8F1E6EAC2D1E49AC3E89BC6EF8DC0F464B7FA
+      66BFFC68BFF9248FD80E70C33581C75A98CC5A9DCB3E90C22F7DB12865998CAF
+      C7EAF5F17F99A2466181334E742A4B704261873C587825405D284360344B6821
+      375642495FADA1A89598AF3B5D8F5A7BAF5774A1042C52315A85799AC73D5E88
+      395A7F7893B2859EC07F98C0436493001C40304B6B49678D1C3D60354F703853
+      753C597C4C6E8E567A9A3F67890E3456425D83627AA424466B00213F2C466B47
+      61893A53782F466613223A2B415B39516E3C556F334A654F617F6F80A1667A9A
+      5D77953C5E7B587396122C4A1027433B587D788BAF667B9C4769925770940D18
+      2D2546645B80A8354B681317244657707C93B7768FB35C7BA1577FA8507AA319
+      355424355158749657769A3F597A2E46633855754362851A2B431B2F4B4D6E95
+      49668A274464293D5C0D1A312A4A6E6E9ACC507AA72E4A6B3D54714E70927C96
+      BA9FB4D790A9D13655761E36544C6283566D88304E6D6585B096B3DD6F8DB52F
+      4E6E2C435B2330440A142223364F5C7AA25371975370945E779C365377365174
+      4B60805C6C8D3045630619301C3C624F74A65573A04562863051753C5C883E53
+      75202D443149656A82A06E82A547669351708CACC1BCECFBF748726C3B826A2E
+      71632E7564317661266D572C7361327A65337A66397C6A357E6D3E8375377C6D
+      34766C3E8177367D6E347E6C3B856E37816B3C7F525F9C0F538B114B80102045
+      272C5C345995114C82115E990D1C4225275635548D134C81105E990D1C402C33
+      622A5E9A0D3A6511457616355E3D3763325E9A0D284E191D43263060323D7120
+      63A00C264B161C3F2B477F1C457A195E990D1C3A18285124558F144377165C99
+      0D284D18386A1F548F1336621C63A00C2E591A214E412D705D2D7C64317C6435
+      826953911C63A00C63A00C63A00C63A00C63A00C63A00C47780B112D24427D29
+      63A00C63A00C63A00C63A00C63A00C63A00C32550B173F32297060348773327F
+      6A2E6C4A5E9A0D63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C31550B123A301F6355277061397F73357D6E48811F63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C3A64100F42312E7462317D6E307C6463A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C38620E1B4C3E2A70652A796C287968338673377E723078692C77
+      69256E613D4280A2DC8AADE38AA8DB9EB1DE9BADDB7B97CE94ACD9A4B3E091A4
+      D89AABDC8FA4D07A96C97A95CE8DA2D53B69AE446EB1607EB2577FBB678ECC77
+      98D193ABDB6A8EC15A7FB58C9FD1829AD34672B52558973E64A2798DBB8294BB
+      5D74A44C64934D5D81555B79667A98BBDBD9A8C8C6405C8339548E749AD95F96
+      D82A51880B1B49123B734E81CA355BA01B2D56314668134787164583000A292A
+      436675A6E74578BB385C96193D6D2651845987CF254F9104123300000D4065AA
+      448FEA2B76D0477DD0183467010D221311190A16390B2F710730771846872B56
+      92082452394E64B3CBD09BB9B8688887AAB1B6C7C1D2496F9C1B52854A638840
+      6283144A73416B8E2750710D37593E658C729DC55081AC3369963B72A140719F
+      3463902F6D9C5291C4456893183255265A7F608CB05C8DAF235A7E1A45682B3F
+      61193157335C89699CC6568BB53E75A33277AA538EBA85ACD53D739F0C497124
+      5B7F2B658C1A4970597EA184A8C75781A34A7498355A82345B78C2D7DCFFFFFF
+      CEEFF45F7A8430383F393D3F3434352A2D2D2D34353037372E31322C2B304242
+      493A3A3E363A363C403C1419183637376661653A3E3D31393B44494F2D303126
+      27272A3131373C3B313535171B1820221F2B2E2A2C302E1F24221C1F1F2A2F30
+      1F272714181921272831363B36383D26272A2828293D3F403C42432127262129
+      25424548363A3E1319191A1F1E1F2424595D629EB2BC91ACB4A0B6BA68899B61
+      85A46482A31D44641B4564081D34142A43355B83426E9A789AC17291B845688F
+      294E71516D9128425E0A1B2F3E546F2F4D6D325D8480ADD68AB4DE4C749F152C
+      4A3040566890B42050751435537593B89EBCE66893BB1A43632940583A506D17
+      324E0C3453688AAB738EAD46617C677E97384F650008158D969FD6EDF5CCD6DE
+      DFE4E68AB3B79EB2BCFBF1F6FFFCFEFFFAF8E2DFE58CAAD389B2E196B7E28BAF
+      DA92B4DAA2BEDFB0CAE78BB3DA7F9EC8D5CFDBE8DEE5E6DFE5EDE3E6CEC9D484
+      9AC0A5BCDFD0DCF1C3D2E8BDCDE8C1D3EAB4CBEC7E9AC6717B95727288505C7D
+      4A65934D79AD678EBD8199BB8FA0BCA9ACC0B5AFBE80859D58698C7D92B998AB
+      D08197BD496B995277A594ABD296AACF8097BA7C92B37488AA4B62867890A3F3
+      F9F9F6FBFBCFD9E0CCCBD4DCDBDDE2DFE2D1CED3DED7DEA19FAA7076868C9AB1
+      556479303C4E2834443645585362747B90A68598B13D425060656F3B49560318
+      263239448F848DA7979F6D6B75141F2E1119255C6A7A798AA542506742546B49
+      5C7234425337455736465627323E101A263240505C6573474C562D3A4826384C
+      1C2F3E17252D38404E2D3744080B101410155A6A698BACA1496A5E3B57537D8A
+      98667C99385D7C4173996C9CC68AB2DC8FB6E293BAE3B0CEEBC7DBF0D3E1F2C9
+      D9F0B8D0ECA9CBEB9CBFE47DACD290B9D67AA8CAACCAE4B5D2ED9DBEDE93BDE5
+      79B6E332729886A0B7CED8E9BECDDFB8C7DAA6BED690BBE069A0D26FA4D470A9
+      D83F7BA50D476B1D5A804B7EA5729EC47BACD277A2C1819FBA668AAC3F6E936D
+      869D7684976E909EDEF4F5E6F9F98EB1B9C5C7CC8893A2082F4622485B3E6073
+      2A495C315568426479243B472841503F617840607B4B6B87344F601B25302C39
+      47273A4D32546F436985354657303A49415B6E3452653A5468263D4E2B3E4C4C
+      60754860743A5563587DA4466B8D314E5E4360722A445122303830333A171719
+      0402000C09061615151C212526363C243A441A2B351B2D370C1D2B1828348EA9
+      A9DEFFF389AFA956778B85A4D27BBBF55AB2EB8BD2FAB2EBFFADE6FECBE3F7F7
+      F2F7FFFFFEFFFFFF86A4BF000F4B11346E5B94C082D3FF2FB2FF088FEA55B3EF
+      61BFF369C8FF6FD1FF3CA8EC258DDB50A5E575B7E495BBDCAFC7E3BDDAF4BEE0
+      FBADDAFE8BCEFF2C89D91F6BBB7AABE06EB7ED41A1E12F94D31988C8458CC16A
+      8CB24E78A0AFCDDCE4EFE96C858E5B6B8257668432567C4A6B8F3452721A3656
+      384E6E4A608442587D0F2C500E31543D618B587FB46D8EC232476B071A344064
+      8D5E81B05E789E7489AB7287AC2B507D00153D000F28445B78667CA1223D6023
+      40624561853D597B3D5D7E7696B1A0BEDA3964850F385B56729B5C7FAA32577C
+      1C355442587F50688E4962825B7A9C6384AB6988B2526C8E142B450725401732
+      4E0D1D330C24364A6582294A6D1638593D5A7C3C5A7F627C9E556888274F7E6A
+      97CF516F9C2142663C5D7F3C59782A48685672944461812847697991B98EA3CB
+      2245691D3B5A4A5C7B364D692943602743603A5674476A90253F590000000C1D
+      362C588849719B6082A93F61870E27450824422D5177819FCB91ADD514274027
+      374F88A1C16B8BAF708DB3516F931932512D425E334A674B6B9481A3D28CA9D1
+      6586AE2A4D746D86A7677D9A0A17282437505E7DA4506F96526E96485F80172E
+      472C4668597396B6C5E6788EAF2D4D73597BAC7897C95C779F1C365627466B37
+      5B831E3E62687FA86985A8485C735866844C6485879FA7F5FFFF6C908D2D6D60
+      3275642E6E60327660337A68327669307664347C692C705F2D78603C826E3D88
+      6D39856C36816B3780713986783E86763E837438806843833A3E762A44781639
+      63163A691950891640751B477C132448151F45205E9B0E538B1153890F214216
+      25492463A00C4D851352880E1C3C192E55285F9B0E4B80165E990D234925305D
+      305E9B0E4275165E990D2C542027512D5893104170135E990D254C1F2E5B245E
+      990D3C6914477A13234C263161225E990D2A511B3A691A17463C286A5A2E7869
+      2B78642C7C6352911C63A00C63A00C63A00C63A00C63A00C63A00C48780B1331
+      24407C2763A00C63A00C63A00C63A00C63A00C63A00C31560B163F2F246C5731
+      80682D745E467F1C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C33560C173C2E34755F2E756A3A817840795D63A00C63A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C1D4427276457317A6B347F6F39
+      867756972063A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C17381B2264523182723385742E7C6D3286713C87732F
+      7663236F592A70624B55B9C3E18CABE26B92D47291CEB6C0E2D1CEEC99A7D888
+      A1D284A1D45F85C67A99CEA8BFE8B1C6EE90ACDC5D82BD6C8EC9587DBD658AC5
+      A0BAE9B4C6F07D9BCB4F7FB27E9FD18EA8DF89A2DA5882C34574B65B7FB998A9
+      CABCC6DF889AC96B7EADA3A6BDB0ACB8787C9285A3B1BEE3E1A3B6BC7485A72A
+      4C8A1240792F56832C548800113F0F15397C80A1C6C2D19098BC2E64AE3E77C4
+      31518B1635634F80BE73A0E3426CAB001B491538644E78C025428204133C1122
+      481F4B7E2D7BC9508FEA3152941D407821477B02122A0A235B2753A7406BB274
+      93BE7D9ECC254D82071D438298A9BAD0D1829F9E718A8C9DA6BF577EB439679A
+      405D814C6B8D0F466F103F6558779B6F8CB1264769436284739EC7537FAA588B
+      BC5892C63A74A64580B53E81B30B3155000A23265170326488355271405E7C38
+      688D2D55782C4D700F3E642B5A7C3A688D2455832C5A87053A641B517C3F729D
+      0729490F36564778A535669A4E77A37B99B73E6E942C5F872253760933595579
+      8EE9F2F2FFFFFFA9CED2607B87607183373E49242C2D19201E040C0723292A25
+      282A1D1F1F2026241D201E292D29191E191C201E3A3D403B4143282E3217181B
+      212724434B4A323836181B17272924252926272B28484A49585E60393F3E4146
+      4652535732353E282E362F35352D303246484F3F404315130F2A2A2A50535535
+      39351D23202D30353F404B3D4147252A272D3435181C1F71787B9BB6BF9DB3B9
+      94ADB16083966A8CAD4871983F6990152A4408162E345D84648DB77C9BC16A8D
+      B5335C862F567A6985A6425C760F1F3129455F2E5677618EB893BCE84A709A1F
+      3959223750647D9B648EB8022C4D223F5891ADD49ABBE835628B1235523B5068
+      2D4561304862122D46274C6C7B9ABF6381A04A647F61758D132B3D3D515ED2DF
+      EAD0DDE6D4D9E0A1C9C96DA0A6CED0D7FFFCFFFFFAF9BFC5DA7CA0D189ACDE8F
+      B2DF86AEDC90B4DBA2BFDEA6C3E097B9DE82A2CACDCBD5F0E2E2DBD3DDD0CDDC
+      D0CEDB929DBD6687B6ADBFE1CAD6F1B5CAEAB3CAEC8EA9D57E90B6B5AEBDABA8
+      C18193BF85A2D29EB9E4C5D3EFCCDBF6A8C6EB8EA7CAABACC1BBB3C2898AA46A
+      73966B789C4E62884D6A988FABD49AB4DB87A1C8879CC38299BB7C93B362799D
+      526B8AB6C2CCFFFFFFD9E9EAA8B0B8C8C3CAE3DFE3FEFAFDF9F4F94447572931
+      428D96AB919EB55260704C5A6D4052672C3C4E6A778C6B7A8826303913233228
+      3D4720333D14212D232C376C6770877E8A25273517222D5B6A7A67768C4E5C70
+      4B5B71485C7026323F2A374719293A1521312834434B59663E4A552934414755
+      686176882C4250172734435267414D62090F14000000181A2278928E8BAB9F3A
+      5B54597271666F82465D7D8BAECEA6CEF499C1E99DC2E4ACCDE8B9D3EBCFDEF0
+      C8D8EF95BDE29AC0E3B0CFEBA3C4E36A9CC794BBDDA0C5E0A1C1D990B8D698C6
+      F187C2F34C81A8031A36516179CBE2F5B7CBE0C2C8D9C1CEE07BAED865A0D06C
+      9ECC699DCA7CAED85C96C12D6B921350732D597B6286A874ACD46A9FCA5986AE
+      7D96AD9CA6B26F859C51728B91B3BEF4FFFFC7E8EFA0C1C6778592233C503350
+      664E6C833A596C334F63496C853655672B485C31546D2B485E44637A3551611F
+      2833293A4A1D2F3B273B493E5A6E3B4B5C44516142586B3A54673A5266384F62
+      44596E4B5E75445E75537896486F8F3258713B5A6C2B3E49252D31504D516A66
+      6E57565C4A46451E1D1B0200001614183A5562355563192C37192B361A2A3604
+      111F344651C7E6E3D8FBEF72989758789472A9E06AC5FF97D9FEBDEFFFC1E8FC
+      F1F0F7FFFEFCFFFFFFC0CAD50A114220275C60A4D460D0FF30BEFF4AB0FA3DA6
+      F61CA0F740AAF64C9FDA37628A1D5E99329FE34BC1FE22A8F02194DC80B4E0C6
+      D7ECD6E4F4BFE0FA67AEEB0F61B8549ADF87C5FB5DABED56A1E1549ED74791CE
+      6993C39EA2B7878FA26388A9E8F7FBD1DBD8707F89767D8E5A718F597B9F2B4E
+      6F0F2D4D445B7F405A7F2C496A1E3D5C1C3B572C4C6A5377A3799DD3475D841F
+      24372B47652D557C304E6F364E7138557D2C4B6D1C385123405F4C668A596F92
+      344D6E04213B2F4A6A4661833D5B7B6383A094B1CD678BA9073353284E746184
+      B0537BAB143659051F3C2B4B6E5B7BA37E9CC96E8DB9667FA64E668328465E26
+      46672C4765000F23172E49304B6B2A486C46638944628A315074314A683F577A
+      3E66985B8FC775A7E05A7DAC2E5279506F97536D91637D9F7389A82E3D562C3F
+      594E668623436458749A8599BF394E6A0520393B5677607FA5354C6905060712
+      172229476D375A883F6691567CA8476B930E30541B33542641614B6A8C758EAF
+      444D6B121F3A5E7C9E7493B96785A96887AD3A5B7E0F29481931515778A384A6
+      D082A3CD5077A02D50775A76A04760810C1A2D1D2A444B658C4C709647658B29
+      405A2031444B5E7F566E924856711D2A40415F824F6B8F2442601A3C5A1E3E60
+      2640621B3C5E3A608E6B8EBC718AA85E6880434E6A6C828CDEF8F3B6D1D03371
+      642C76662C71602A74672E7B68337B69347C6B357F6B347D6C3175662F796C32
+      7C6E2E7A6C37816E3A8571347C6B38807237856D3380682B6E60286248559115
+      5E9A0D417313143428224F314A82185E9A0D52890E204821346229447917538A
+      105E990D264D1F2851244D83134170125E990D36642633642C3C6C1A2D55173A
+      6A1A508916346627467A132144172A531F5E9A0E44771652890F2C511635601A
+      5E9A0E46791852890F21442136621D5E9A0E3E70195E9A0D2A53252A5E322862
+      513379662C786033816951921B63A00C63A00C63A00C63A00C63A00C63A00C48
+      780B123124447E2963A00C63A00C63A00C63A00C63A00C63A00C31560C174132
+      266E562F7C64326E3863A00C63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C32560B173A2E296B58317A692E71604C872263
+      A00C63A00C63A00C63A00C63A00C63A00C63A00C3F6C0E2151452D7063438776
+      3C82733E897845893A63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C50850C173F342E715F2A7C6533806C2D80682B816D
+      2C7F71337D6D287764307D683D3CF4EBECC3C7E0C0C6E0CACDE4A4B6DE7A97D3
+      6B8DCC5881BD7094CB5D85C6416FB64B76BA8EAAD8A9BFE8A0B4E1869FD18FA5
+      DB9BB1E5A6BBEA7C96C76788B76C93C798AEDD87A2D7A3B8E1A6B6E38FA9E494
+      B0E77796CC6889C07E94C16D87B46F84AA8E92A98D8DA1576C8D98B9C4C7E8E0
+      8FAABE3457930F2F6B263D6616396909295F102556818CAAE1E1E9728EC8175D
+      B92E76C24B88D6416AA6173A66294C7F3263A1436EAA2D436E0710351839714B
+      7DC9548CDE15509209346E3850922044812A66B072ABFF3765B6082E784976C3
+      86ADE88DAED85F80A81126461D2D543E51758EA3B0ADC4C674909271899D6E8F
+      BC4678B1326290154C74174C7407365D25517588A4C64E6686001E3A24557222
+      486930527B46709E316E9D3473A24681AF457CA73163884972921F2F44000920
+      3962884076A14881AD4582AE12537A033B630C3F690C3F6A0D39610D31553558
+      7C3E6F95174268466A966D95C73A719E487A9E6E91B2608CAF688FB2456E8D05
+      385B002C4F7F9CA8FAFFFFE1F9F99EC2CB93AFC55B6C7D151C2124272D2A2C32
+      1E2525161D191B201F1E26241418162B2F3040474829313017201E252A293238
+      3A3C3F443A3B3F2529291A211D1E221E2A2F2D1D21201B1D1A45484950545A2F
+      3334353A364445423C3B403D424B363B412B2F33474C544B4D542122211B1D1C
+      2C31342B30312228260E15102C31304C4F4F1B21191B221D1B1E1E2C2B2B8D97
+      9C90A8B49BB2B988A4AA57788D52759C5F83B041678C1E4060375D816D8EB571
+      92BB5178A0183D624664897B94B649637F39546C597490668AAB6E96BD2A496A
+      02122913314E5275967698BB3B668F2045694C66838EACD882A3D01C3F5E2840
+      57495C76455B75415B732D485F18375531567A6586A4617A975267813D536C34
+      495F758794D5DCE4E0DFEBBED1D67BB2B499B2BEEEE3EDFFF8F6C2CADA82A4D0
+      97B5E29EBCE594B6DF95B8DE97B8DB9BB8DB89B0D98DA7CCBABACDB6BFD3A2B5
+      D999B2DA9BB3DBA1B3D5758FB85678AA89A2CB93AFD67E9CCC8996BDBBB0C0B4
+      B0C37998C686B1E4A4C5F0A8C3ECB3CAE9C1D2ECBACDEC9CBAE091A7C8B9B3C3
+      C0B8CAAFADBEA29FAD9094AA88A0CA8BADDB89A8D189A5CE89A2C9879FC18196
+      B8748DAE6278986F7F95D4DDE1FAFFFFCCDEE0B8BCC1D8D2D8EBE3EB9599A62D
+      3A4A373D4D33384511151A0C141347556255687E404F654F5C6E27323A070C11
+      333B4740505C31454F3D4F5C0A1E2A0316213A404C605E675C5C663D44522C38
+      4B3E4F6556677D5D6E82525E6F424D5D252F3D2A30385357602A303B03070E30
+      3E4F67809D8EA5BD5A697B323F5349586B2734450E1A2410141B1715222E373A
+      8CAA9E89A59732504A5F77838DA2BF94B6D2A7CCEB9FC5EBA9CCE9C8DDEEB9D1
+      EAB3CFEAAECCEA83B7DD76ACD694BADFB0D5F683B4DC9ABCDAB3CDE59CC4E384
+      B7E55A8EBD2E51743F57732D4C70718CA9CEE3F7B0CAE4A6BAD1B7C8E07FAFD8
+      5293C25C97C36A9FC970A1CB72A5D47CABD8487DA80B3451051A28244D682D6A
+      93477EA292A8BA93A2B37C93A86F88A25E8296A9C9CBFBFFFFCDE8EA6F8A941F
+      394E21405737556829475938566C4260752948592A4D653458722F4D6337576B
+      354B5F1D202C161E29202F382738432E404E3948573948562D41512334431D2A
+      383D556A4F6F893F5C7432546E43637E355165294254272F3A14100D342F2E5F
+      595C6B656C958E98AFA8AF827E8846445016242E23424E2F5160243E4C2C404F
+      314656273C4C1E32485C7A88CFF3ECBEDFD768848E566F8B6DA9D974CBFF8FD8
+      FEBDE8FFFDFFFFFFFFFFB3D1E422457B2C407966B9E530C6FF0EA5FF59B5FE8A
+      C7FF5CBDFF2AACFF36B1FF377AB0000004113C646FDBFF82E6FF54BAFA0F88D8
+      0273C5407BBF5D8DC94D87C51F3B7F4866A56AB7F948A3F665A8EE8EB4E68DB2
+      DF7FA5D682A1C68BA3BA9AA4B3687F9E7591B0EDF0F1A1B3B870818B7D899941
+      5A791E3C5A213B5A1E3B5B14314E1935513B58773B597920405E3250735C79A4
+      375377374D69768DB03A5E840D2E4C0A21381228414358776C83A66985AD3B58
+      793A5475627CA230466107101E25364C3B56735173947B9DBE83A4C1274E720A
+      355D406A994C76A7345D892950745472986280AB617EA87B91B5748AAC375573
+      1F42626C87AF33496C132B48415B803C577B4760845A71984E6B962F4C6F0820
+      392549715481B74F7AAB4F71A0436492496A947790B67F96BF738EB45369881C
+      273B0D20373153755B779E5A70955E7397405978294560556C8D334C69000512
+      040C13465E7D3E60892D507855789F436D974B729C244468293F626A7B9E4F6D
+      91092948304B694C64875A759A8FA5C8758FB452739C5D7EA836507512254661
+      80A57D9EC76287B032567C31537841648F3A587B333F54202E453A567857799D
+      5F7A9B2C455D142C413C567331455D000412192C456187B057779C122E481539
+      5949678D1127422A46697797CA5B7FA95B7595636D8A707E8BBFD6D4D0E7EA3A
+      6B6034806D2C7F67337E6A2A7764347C6734816C3A816F3A7F6F3C887534806C
+      327A6A3A7F6B317F6A357F6D3880763582712D7869327C6C2D7F66488A2D4079
+      25447E1A34641A4C82113F7118498216447A183D6F17325D173A6A1A5089164D
+      8614467912305A152850195E9A0D5E990D467A121A3F211E45305995115E9A0E
+      528A111739271D462E548F1358930F5E990D275024295628548D124C81115E99
+      0D234B1D2C5620528B113661145E990D3E7018295324447716204520497F1634
+      64252755452F6A5D35806F34816C54921D63A00C63A00C63A00C63A00C63A00C
+      63A00C48780B153325447D2963A00C63A00C63A00C63A00C63A00C63A00C3256
+      0C1941342A6D5E2D6E5A58951063A00C63A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C32560C193F32296A58367F69316F4F
+      63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C12260E153B2E1E54
+      4527695630776432796534805863A00C63A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C2F55121F56422A775E2A76642E7A692A7A
+      652977662D77682B78612B76682E7C694C4FEAE9EFF9F5F2FFFFFFFEF5F8B2BA
+      DB8DA1CF7E9ED389A8DE8CA7DA9BB0DCA1B4E58BA2DB597CBA6686C393ACE0A7
+      B9E47993C87892C999ABDB6987C27795CB91AAD8ABB8DD9EACDB99ADDD92ACDA
+      89A1D4879FD15C84BE527BBA829ACE6682B53B5D9066799E7584A6405A865A74
+      94AFD5D6A2C8C67495B85E74AC0D2957194776629FDC6AADF5367ABE20508E24
+      53A21156AF2A6CB87AB6F98CBFFF192D5C000D383C6A9F7097CF31416C02123B
+      4E7EC572ACFD428DE1408DE01D366B0004342D63AF4E94EE80A9F95985DA0730
+      7511285B3A548B4762961D3B6900031A191E361E305D415F89A3C1CBA2BCBC70
+      8A8F7F91A16A8BB83164931D4D702B587D345B7F1246691D4B6F365D822F587A
+      2A53740C3B5B0016381E41696EA3C979ADD682AFDC8BB4E65084AE0E3450010E
+      2134577B6B9FD52555820D436C3F81AC377CA73C77A44C7DA933658D00365F2B
+      5C84668FB54275A06294C57DA9DB4679AE5282AB8BACC581A4C1527394385879
+      3C64853E6A8A2D5F81335C7BAAC8D1FDFFFFCCE9EA8DB2B9839BA849555D1E20
+      28393A414C5350303834313335353436272A2B3D3F4660616A3B4042171E1E2F
+      34363036394D53594241461B1C1C313A3B30393A3240443E464B505252424746
+      242B2C2D3435252A24171B13222522333838393F46282C35131718262A2D4448
+      524647492829270B0E11303435777A7F4A504E2127232025231A1D1930363627
+      2D304445479EABB399B4C0A0B6BD7F99A139587551709D6487B13460844B7297
+      698CB45881AC27517613345763799E798FB224415B334C657085A4597B9D4A72
+      9642608008162F0F1D396987AB769BC01B40620F172E4760828AADDA30506E06
+      22342D495D233F5730465F24384F13293E334C66182F4B263B57657E9C506884
+      4E627A2C4055000B1E748B9CFEFEFFF1E7EDAFC9CB82B1B8B0BBCBF2E5E7D1D4
+      DC8FADD39EBCE2B0C6E6A8C0E399B7DD8BAFD797B7DF81A6D3718EBC8CA1CB8D
+      ADDA96B9E59CBEEA9DBEE7A0BEE5A8BEE27593BC5E7DA58D9AB999A1BEC5BCCB
+      CABFCC8095C0729ED99ABCEBA6C1E6A6C1E7A3C0E8B4C9E9C1CFE9B3C8EA93AF
+      D6A0AAC0C6BEC9C4C1CDBFB8C4A2A4BD809CC887ABDA92AFD98CA9D283A1CA7B
+      99C17692B96D89AE6C82A462718C8F99A6F6F8F9FAFFFFBDCED4DEDFE7B3A9B2
+      181A27172A3C38475816252E333A47464A5120292F485865525D6E505E717685
+      9B767F925F69763B4B552C414E2C44540619242839472D3D4B232C3550566562
+      6370494E5E3A4B5E384658384452313E493E4954343D49393F4B575E6B394552
+      232C38203245637A917E95AD6C829C687A98333E4F0E121B3B47582B3B480B12
+      170000053043419EC0AF779183294A446786907D9FBF92B8D7AFD0EDB3D1ECBA
+      D4EBACCBEA91BDE67BAFDA72A9D1A9CCEFACD3F9527FAA2034464D6883B8D9F7
+      89B8E0456786040D194C525CC5D8E082BBE97AB0D7DCE7F8CFE1F5BFD4E891B8
+      D95E9AC65B95C15592BD5990BC6999C276A3CC7CA9D66294C22F5C7E21415829
+      455F143B561338506E879C8EA7C0889CAE98A7B6708196628699CDEBF0FFFFFF
+      C4E0E248687503223327475A3F6278375B6F223841273D483D5D723D5E734869
+      813A5F792431441B18231C1F28212E37263B473748574353623A4B5C293E5023
+      3342171C2A212E3B293B482328312738462841532A3C491B212C202931364651
+      1F2023201C1B3937384F4B5060616682808C6E748318323C122C36132C382741
+      503D566A2E404F2E4250304C64112D4169868DE2FFFDB5D4CE57717747586A66
+      93B774C5FF70CBFF73C6EA66A9D10A5FA51075B960CFFF1FBFFF00A1FC83C5FC
+      A4D1FF5ABBFE3DB3FC26AFFF55D2FF497EA5000000000009358AB73FBCF71283
+      D0298CD361AEE569B2E455ACE3359BD82660A25780BF72B4F756A8F667ACF37D
+      B1ED8EB3E68DAAD681A1C6819FBE9AACBF7E92AD0A2E6272879CF7FFFF90A8AC
+      596C7C4356744A6281365072283D5C26405E2D4B6B516F943F638D2042661937
+      5B435A7E4C6280152F4A435E826F8AB55D7AA4425C7E0912250E1C32526A8D3E
+      516D0820303D5975899CC46D7D9F1823351727372A40573E5B797499BA8CACC9
+      46688D1B416A214B78325D8B2A57822E58816584AC6987AD56779D5D779A3B58
+      7C10345948689253739C23416753698F435E83415D81687EA2637BA035547C26
+      456A234364315C8A5588C35A84B740608D3B5983899FC2839CC243669624446C
+      1E2C453C476156759F7B9ED16C89B7304E7316304E1A2539232F461229410008
+      172F3D50576E8E6B88AD6C86AC23466C3B628B4E78A2406D932C51704760837A
+      8EB58296BD4A6C961A466A25374C2B354B657B9D7E99C15B7AA46886B24C6A92
+      3351726583A76D8CB25272983452724260834D6C96354F6E14283C132B424D67
+      84859DC16985AA29425D142C42081E3100031427405A44678C345E8749739F39
+      5C803C5B7E2843611A314E6483AE6788B65577A643629152667CC5D5CFF3FDFD
+      537D792F79683E8371367D69317966367F723A846C3F8572307A683780723A88
+      7536816D327D6D327F61297961317A6C337E69337E6B35806A367F6C31836B3B
+      7C3E2152383E731A63A00C3662192046272D5D242F5E1D63A00C4C83121A3E28
+      4071182C59195E990D52890F3C6C162F5B1A3C6C153C6B155E990D4278163B6B
+      1B1D421D417315477C144D86134178162A541D2D5919437716599510497F163D
+      6C162C54172E57195E9A0D477C133F711322471C254D1F5E9A0D4C8313538B11
+      183B27234C282755382A6358307866367D6C54911D63A00C63A00C63A00C63A0
+      0C63A00C63A00C48780B15322747812C63A00C63A00C63A00C63A00C63A00C63
+      A00C32560C1D413435705F437C2963A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C63A00C32550C1B40342D6F603079
+      6247821E63A00C63A00C63A00C63A00C63A00C63A00C63A00C558B0B172D0608
+      17100E271D1037291A4D4124685820705856981863A00C63A00C63A00C63A00C
+      63A00C63A00C4F830B4C8512518F1955921C53921C55951D53921C5E9B0E63A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C16382521615321735E26746431
+      76693174602C7964317C652E76652D73613076603F3EE3E3EDEDEEF3F6F4F9F4
+      F5FCF8F1F3F0E7EDCED5EEB7C8EF87A4D9A1B5E2A6BAE88BA8E391A6DBA5B3D9
+      B0BFE99FB9EB7295CB7A92BF6887B38CA5D47E9AD396A7D6CED2EB96A7D688A0
+      D48CA5D95876B13A5683607EB67190CE6482B7718EC13E5F9422487B506B964A
+      60893F4F7792A2AEC5E6DFACCACC8A95AC4365924E94D58CD0FF67ABF263A3ED
+      266DB704489B3675CF68A3EE98CEFF6096D81B3F7F4167AA4A7EC5153F6F000D
+      2D1C4D94619BF83F86DB2075C7569FEE3660A30019504079C992BFFF87AAFB33
+      6AC20B4386011338000F38001A4A27528C355C95081C3A111E3D1B3D75547695
+      ADC5C89AB2B26C84878494A76884A33959783B5D7D416A8D4071990D42661A4B
+      6D43678B3F658A4E769C34648C14375B60719187B1D85485B32A5A85254B6E00
+      223C093A5C749FCF7CA3D5245D8C386E985D94BF5F95C06196BF7CA8D392B9E6
+      6092C02A59852657814476A36B95C75E8CBF2762983566996087AF779BBA2938
+      510014331A496C4C6F8F506E8B1B3C5E4F7A93C9E7EBFEFFFFB9DCD983A4AC9C
+      B3C2707D8D262A3048484848484A3E403F5B585B4E4C502F31365F606A52555C
+      252A2A4F565B3F464B2C31332E2F2E414345586369283538222F35404B535758
+      5B61625F3D43413A42442B3232141B15171C163035364C525D40414C20232328
+      2E2E5D606D51535A22211C0000002320237271794F555A2A30333E43442F3030
+      33373842484A2426255A5C5F94A9B18FA7B2ACC0C46D87903A597B5E7DAA436B
+      9155799F6289B23F6F99234A6B3C577D5370975973942D4C672745633658783D
+      64863862857CA3CA7292B7283453788AAB5789AD002C4E1A2942546F8E678BAD
+      2447644C6684607D99456582405C7A30445D0C182F1D3148263D552539565C75
+      92637A95415B70253F542E354D3B516AA4B6C0F6F4F8E8E6EA94BDBF77A2AFCD
+      CBD7E9E1E6A1B8D396B5DBB3C6E7B5C9E8A4BCE197B5DD97B6DE5A88B95884BA
+      8FB1E198BAE79CBCE6A0C0E8A3C3E99BBBE4B3C9ECC4D4EE90A7C8B9BAC8E0D3
+      D6E1D4D8B4B8C96F93C691B2E4ACC2EAAAC3E8AEC7E9A7C2E9A4BEE9B6C9EAB9
+      CCEC94B1DC8EA1C1BEBAC4CDC7D0CAC0CB9DA5BD6E96C484AADA92AFD989A7D1
+      7C9FCB799BC67D99BE768FB37287A77E8CA2596C838C95A1F8F1EFEAF7F9D8EA
+      F1B2B1B8201F2919263435445328384675869A7B80953337403441474249542F
+      35447081A0B6C6E267707B3E484E404F5C49637D46627D6073874C596B131E2A
+      030F1737434D5D5C6654556036404C24333C28353E4C55634750622C3341222A
+      37586B7AB5C8DE9BA6B999A3B88499B6406283536F9167748C333C4A2739482C
+      3C4907111200010506051049635DA8CDB8627C6D2D4B45547C9497B9DFD2E9FE
+      BBD7EDA7C8E79EC5EC82B4DF71A8D396BFE890BADE4581AB2846683E3841314A
+      69405E79243A4B000000363C4BADD0EDC4E4F9AFC9E9357FB076A9C5DAE9F3C8
+      E0F572A7D55793C472A5D1629BCB5090C4629BD069A0D0609AC54A82AA5485AB
+      739CC67DA7D36488AD223E5750667897AEC3899EB29DACB98196AA577A956A93
+      A4DAEAEAFFFFFFB0CBCD37545D0E35472A4E632D4450293940495E6E5C788F22
+      4456193E5048677D2B334912131F202D322A3A422B3C473649553E4F5C304253
+      253C4D2232401D2232131520131113160A0C1B1B251E2C3824343C25353D2E4A
+      59466B8527333F0A0100110F0A0603000B09082A30392D404C172A352338441E
+      39441D37452E46572234423649583953630D212F0B1D2992B0B3E9FFFF9BC0BD
+      59717865667263839E42A0D41A99E00055A30070C32CC7FF04B2FF099FFD8ECB
+      FCA9D3FD46B7FD2DB1FD36AEFD4ECCFF72C4EF152246010B165359582B4A7800
+      33762D7CBE6BC4F58DD6FF8CDBFF8DDEFF82E3FF57D1FF42A0F25EA2EF61ADF6
+      64AFF588BBF293B5E86E9AD182A4CA9EB1CBACB5C68096B2114E8A285985E1E2
+      DDF2F8F1768F984C667F445D834C6183626F8B49668C375B8646678F466A9527
+      496E1D3D5E213F5E44516E6B67794B566E4B6B937293C07A98C546597A122740
+      3C5370203245000B18314C68556C925B6B885A6C8844597521364E1B30495375
+      968EAFCE5171921B3B62294B75315A86274F7412233E2337512D46611A2D4529
+      436335547A274A71647DAA4D6D946A8BAC6480A54662856982A47490B7476689
+      15325428466A5C7A9F3A608B325A8F5776A44F71975E7B9F60799D375985173D
+      690B274736445F4A617F557EAF7EA4DD4F73A0183F641E3C5B0F1C3100071A0F
+      2742425E7D506B8A61779A88A0C591A9CD222C470E2747517BA55481AB527192
+      364D6E5B759C8BA0C57697C5406D9E00152700000422344E5A71936C87AE6784
+      AF2E53773A63847E9DC17695BC3E5D813F5A7A607B9E52698D0E2036112E443E
+      5B7B4F67886B83A537506D0F243A24395004162A2536526E8AB53D5B811B456C
+      436F9F587AA7405C7E02243B33557A718FBF526E9B46669F2F56808FA8ACFFFF
+      FF789894448A7D41847A4086794185714485783F857B3F8976408E7D3E89753D
+      83773D86713E8673428B7F3E857637816F347E6F398671367F6C36806E35806F
+      327E6C529224477F1C4C8313244A1E538A103F7018498016538D11264D203E6F
+      1750861443771658920F3D6D163966163C6C16477C135E990D325C1628501A20
+      4921487E1563A00C3C6B151F451F1B44243C6E165E990D4C831216392328541D
+      427616528A10528A0F386516325F18417313467912528A10528A102851192C57
+      1935621A5E9A0D4F87152A5932255C503075632E786553911D63A00C63A00C63
+      A00C63A00C63A00C63A00C48780B143224427C2763A00C63A00C63A00C63A00C
+      63A00C63A00C32560C173B2F2D613E5E9A0D63A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C32550C1A403130
+      71612E6F5163A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C558B0B3B63080E1F0A0A1E16173C2F1F59473A803663A00C63A00C63A0
+      0C63A00C63A00C63A00C2240070F3122246550377F6529785E317F6429735F4A
+      871B63A00C63A00C63A00C63A00C63A00C63A00C44740D19463B246E622B776C
+      23705F206C582B745D3175633377652F73642B76622C76614342E0DFE9E5E3ED
+      E8E7EFFDFAF8F3F4F8ABC1E3A7BCE2C3CCEB9AB0E17198D987A7DF85A4DF7196
+      D48DA7D8849FD84C7FC59AB3DA95A8CD6C87BB98A9D58DA2D16B83BC96A6D19F
+      B2DD9CB1DB859BD05D77B33F5A917F95C97895CB325D987491C64C6FA8325788
+      8F98B08D93AE5D6B90616F8C8AA7B9C3E4E39EB5B7809AB56397D3468AD53F86
+      D18FC7FB82B4E31037703362AB7AB9FF5087CE0E3F86426EBA74A2F6427DCF1F
+      56990C36600A3D7A2369C54184D45A92D74486D5174D8D000D2A153A694A77C2
+      2F5BA902408E00336C1839624571A1517EAF80A7DC73A1E320447A071A392E49
+      7D25498167879EB6CFD287A0A3778E928797A747658527547741769D6494BD56
+      86AD38678C2B587A2B597D5A84AB5D8BB30B3355001C431B55841D5580093C5D
+      1339571845692B5D8C618BBA346F9B2A6E975083AD356A9735719E3C79A3467D
+      AA7AAFE188B2DB1D406300264E4578A36593C54A7DB430699F2A5F9232669C3A
+      638C092540143B5C355D843D60840F284405213D1834515A788AE7F6F7FCFFFF
+      A6CBCC89A9B7B4CFEC6372831413152B2A2F30303147484A414548181F1F3136
+      3A3D4142373B333C423D2F36363C42463E434A4E5259576066323C3F2731352D
+      363919191A323432474A48363A39424A4E484F512F32334F505D61616E4F505D
+      525560313436303335393D40272A2A2C2F2D2628242A2C30434754393E434044
+      433236361A1D1C47494B494C501B1C206C70759CB3BB95ACB5AABCC066818F41
+      6286496E96597EA74F779F193654495F7F6C84A926486A274A6756789E446F95
+      27587C3764875778994D72956D93B97D9AC26888AA1F5D8242779E88A5CB748F
+      AE55738F6683A5728FB86382AA6C89B07D98BA869BB97C8CA93654711E42624A
+      63825269843F59723149614B627A5E78903A4D6532475CABBFCCF2F1F8CED5DA
+      7DAEB282A4B1D9D3DDD9D6DFA1B5D49AB5DEACC2E3A5C0DF8BAED56B90C24E7D
+      B27FA7D99EBEEB97B9E591B6E29FBEE89DBDE5AAC4E6C2D0EAB3C6E4A1B8DDB6
+      BDD1DCD2D8DED4DCABB1CA7E9DCD9CB8E1B0C4E8B1C6E9AEC6E9A8C5E8A5C1E9
+      B1C6E9AFC5E990AFDB94A1C2C2B9C4D1CAD4D2C6D09FA1B45D86B6739ED68EAB
+      DA80A1CF7BA0CF89A7CD96A9C78FA0BA8E9DB68594AD3B5B7D37526DB5BBC1FF
+      FFFFF1FBFCBFCFD5495B682F4051323E50424D634852640A111B182027313A47
+      2F313F4C54624F5C784F5D754D505B3C3F473D48528499B4A6BFE04A5E6F3C4B
+      5C3D495C0109130A1C2735404A5253595D5C6748505D212932171923303A4B35
+      3F4B1E252C1C232A8392A4BBC8DC6D7A907185A454759723496B5D78954D5E72
+      1D2A312A363E2B374018222B0A0B140E0E145C7871A5C6BA526C60274C4A7695
+      ADC1D7F4C2DFF998C2E56CA2CF6CA4D095C6F078A5D038739E5A8BA9A3BED4BC
+      D7F8A6CDE14C687C00000021212BBFD5EC90C3ED90B4DAD3DDF37BA5CC1E6A9B
+      32689032668E336A963D739D346C973B6B964B7CA4538CBA4784B22061884F85
+      AC87B0D8689BC75C98C672A6D64B7DA7426780A3B7C991ABC47F96A8839CAE5C
+      7E9D375A767194A0F1FBFAF6FFFF9BBABD3B5A650E2B3B112936193A481A4963
+      28587A24475F53616C8A8B933C3F4B0F17231D2A332032382A3B433B4A574150
+      6238495A263B481C2B3821323F23313F1E1D231B19211825331C30373247533E
+      596C2844563C596A445D6F161718130C0C17181B16171C13151D16282E1C343D
+      1D3640334C5B425C6B263D4C2D42504A5E6F3A54651C3747000F1922353EACC7
+      C7DCFBF298BFC4576E7B3C3E3B517584337EB30381C427C2FB23BFFF25ABFC8E
+      CBFD8CCFFF38B5FE38B5FD33B2FD36B7FF6BCCFD326FB42B477095B0B8FCFFFF
+      ACABC028367168A1E18AD4FF73C2FE76BCFC91C7FD84CAFE3FB6FF2698F465A6
+      ED6BAFF66CB3F69CC4F57CABE6679BD299B7D2ADC0D6A0ADC96487B72377BD3A
+      7BAE91929EE3E4E6DFEAE86683932743653E5276496180365A813C6291365A86
+      4F72983C5E82203E5D102D49324056A1929E7371822743655978A26381A94A66
+      8B3D5A806A84A67E96B53A53711A35521D3B5B2A4562596A854C5F7C253E5702
+      162A2844627BA1C56387A80A27482740625572993B597A0511250F1F32324760
+      2A3B553C53734161864C6A904E6C9248668C7791B25D7D9E7591B26C88AC2F47
+      6A071E370F2D4B294B713B5D841F40620016331C36545C779A5A749521426529
+      4C704564894F70984E739E30537434567844699539638E37608B314D74324F6F
+      365473334D6C405775203A55435D8086A0C787A1C4253146000B1F3D60847FA0
+      C96A81A4091C352B45676B89B45D7EAB4F74A12A4D6D0C21340A1D350F284530
+      4D6D2B48671433513755757B94B3718CAD3E5D7F325173415F80213A53152E46
+      51708F6583A7516E922E496804182603131F0A1C2C192E47738FB97E97C02344
+      671F4971416FA14F739F3551712445654C6A93607CAA5171A43E628B71909AEB
+      FFFE95B4B434746B3D8979387F6B397E743C846E3B856A3B84753F877A45917F
+      43897D3C86773B87723E8A783F8F803C8378418677408376428F80428B83317C
+      6C317C6F307C6C4D8B303C701F355F185E990D2A521D325C1F467A18345E215E
+      9A0D3C6B1B3460234F86152548245E9A0D4376163C6D16477A14325C1657910E
+      477C144D8513487E162C5620538B104377164F86154C8513214824407018538B
+      114D85134C83122F5A1A3E6D163A6616528A10528A1036621B335F182D571952
+      890F5E990D437816204723173B252956292C63563477693B867655931D63A00C
+      63A00C63A00C63A00C63A00C63A00C47780A113024407C2763A00C63A00C63A0
+      0C63A00C63A00C63A00C31550B113024487F1663A00C63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C57900D63A00C63A00C63A00C63A00C63A00C32560C
+      173F2F296B5A4B8A2F63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C63A00C355907050F0B102B2220563463A00C63
+      A00C63A00C63A00C63A00C63A00C4777090A1F161C564128746024775E227658
+      256E5163A00C63A00C63A00C63A00C63A00C63A00C63A00C274B16275E4C2875
+      653C867A307768246B5531765F3A7F6D30705E3476602E76623078663D41E2EC
+      F5E1DEE9EBEAF0F0EFF1DFE2EDC2D1E8A9B9DEB4BDDFB6C4E5769DDD7CA0DFAA
+      BDEA7498D2507EC75E86C94373B47296C885A1D08CA1D79DAADAA1AED8889ACA
+      4569A95D81B8ACBCE4A0B2DF97ABDC6484BB3B639A5D7DB26482BF839CD0A8B6
+      D8ABB1CBAAABC19FA6BB7287A945608F617495AEC7CDBFE1DBA3B6C05671A600
+      378B4485CE97D8FF588ABC01113608244D1F427C0D306B143A803960B7406DC6
+      4976CB497AD40B3378435C82B1C8DFCAD8F37196CF0F4D9E09336B233B590A12
+      2B0000260028701855A1031938091B3D79ADECAFD2FF9DB6E28FACDF587BB805
+      1D4F112654172E610F22456F868EB9CECE87A3A25F7D875B7999527EA94E83AF
+      5587B16894BD4378A44B7FA648759A1B41611E45673A75A2266B990249783672
+      9F41749D143E621B3E625078A63D75A6215C8644789F396E99013A660D4A7626
+      6B991D5E8C1841661A3C5A2F587A144569194D756E96C96D92C41C40702A5988
+      5F97C433669126577F4471992A5B80265A7D2147661C44610E2947071B366A8C
+      9CEFFFFFF8FFFF9ABDC07E9FB2809BB022242B18171A35373A3133371D21261F
+      23241B211F171D1A262B292227221317143038392B2F2C171D1631393B6C7278
+      878E91585E5F1E2121080C0C2228271E2220383B4064697053595C22232D1B1C
+      285A5D716D6F8533353D131514292C2D3D4044414346343936292F30282B3030
+      33363B3E44292E2F0F19142B30313E41452A2D31333339818B909BB1BD98AEB8
+      A5BABD5E7B883D608648709A254C700F243F4A66856C8AAB475D7B3D55714F6F
+      956692BB608CB2426D913F6689587C9F4A71967895B7527DA3154C736D8BAEA6
+      BCDE9AB0D096A8C68CA0C17390B45A7CA05277997290B289A3C48AA8C77496B7
+      6A88A96B7E9F354963243F573B577525375305112620384F475775627C94BBD4
+      DFEFEBF5C4D3D571AAAA85A6B3E0D4E0D6D2DFA9B8D28DA8C87999BA90A8C57C
+      95BD799ACE93B6E796B7E599B9E597B9E693B7E4A4BFE5C5D2EABACAE6ABC2E0
+      9CB4DBA5AECBDBD2DAD7D1DC9EA8C78DA7D3A2BAE2AFC4E8B1C6E8ACC4EAA6C2
+      E8B2CAEAB9CDEAA9C4E898B2DE8C99C0A8ACC5B7C5DBB3C2DA99A0BB4D6A9545
+      78B2759FD9749ACF82A1CD91AACE859EC28FA3C1A2B0CC5775984160816E7F98
+      7A8B9DD3DBDFFFFFFFE8F2F3A7C0C64D667B18263B15171D454F5D707E8E141D
+      263B4050677585566B7F4C5B754950636066735257654951616B76853C424B21
+      2C3D3E4C604856683C4B5C34405224354326333C5C59627A717A454249000005
+      0E172227343F161E2711141C2C38464E6377283C540C213B5E81A188A7C73F4D
+      601C2733323C442B383E3444502C36400C141A090C181217225F7D78A0C1B451
+      6C5B2449466387A0B3CDEE99C3EA61A1D072A8D7446F9623547691B3C9DFF3FF
+      D5EEFFB8DBF7B1DCF7D0F4FF8896A36E8AADACCFEB9FC1E09BC0E4A0BEE1C0CF
+      EA749DC71E5E930C507E10527C054C770A4A7810466E1638540B16210B1A242B
+      4A6473A5D2649ACC649DCA9EC4DFA5C5DF74A5CD27649147709097AFC99BAFC6
+      8EA4BD628AAC3E66893D60809CBFCAFFFFFFEAFCFDA1BAC08D99A18392A05E7C
+      90436980526F87A0A6B7EEE9EBA7A4AA1E282F13242D22343E1C2D352737413C
+      4A574856683D4F602B404D1F344027404B3048551A1C231C2027273F4A1E363F
+      2B4252334E623D586E4D687C37586B294151283440385266243C451B2D36223B
+      48315565314E5C3245513449563E56664E667732495B28435422404E1C2F3C0B
+      1A26344851BAD9D5DAF8F182ABAD4E656E4C393931576D43C5EA60E9FF47CCFE
+      6FCFFC80CDFE36B6FE28B4FC48B9FE45B6FD4EBAFF1F8EE8488FCCB4E9F9CCFB
+      FFFFFFFFDDE0EE5485C57AB6F1BAD8FFBEDAFDAFD4FEB8D4FD85C6FE3DAAFD1B
+      8DEE68A9F079B4F67CB8F59AC1F57DA9E88DB3DDA7C4DBB6C9DE95ABD35483C3
+      287EBF2F83B82770A4407FA7D9E9EFDEE5E4617C892C486927446B244A703C63
+      91345B8A365A7F617EA14C698C294664334A63596C88576C8B314B6C32507336
+      53774A5F85516A934A6B8E7F98BB8BA4CA4561822E4969304B6C1E3753233951
+      243A5201152A1F30496C8DB17499BE27415D081934324B6E3050723957786A83
+      A6768EB25F769C466288325578536B8A1C3E5F2042665A759A6F8CAF54729215
+      1C2C020611213754466A8F698BAF46658A24466836516D334D6A3B54741D3D5D
+      1F436556769E7D9BC488A9D35E84B437597D2945601B3F603C638A374D6E090F
+      1C1E2C465A779B5574950E1A23171C295E7BA389A5D07E95B833537422405C33
+      506E6078984D63840F2841001A3840618E5E7FAB4E6F923F6287113651324E6A
+      5A739437517202102334445D4F66844159721E273519283E274A6C0E2A450F2B
+      455E7EA07794B76885A647658726435C243C52233C57082038495E7EA2BBE472
+      90B62D5076234D76396897406691304E71446183627B9F506F9E416690739299
+      EEF9F5AEC7C72C675E33766728685E2F756A2E74632F756731796E358174347E
+      6D377F713786772F7C65367D6F317C6E37806F3D8B7A31796A347F7244857847
+      91843D887A3B8177367D7248882C477E1B5E9A0D36621B5E990D325B1D3B6618
+      5E9A0D284C284F8614457817335E205E9A0D274E225087164376163E6C1663A0
+      0C2B531F43761636611C36611B5E9A0D315922335C1F40711935611A63A00C3E
+      6F162C55203E6E1630591A63A00C3E6F17497E15437616315A1C58930F437716
+      5E9A0D3C6B161A3B21497F16548D12548B11305F282865583B816E408F7E5595
+      1E63A00C63A00C63A00C63A00C63A00C63A00C48780B123124437F2963A00C63
+      A00C63A00C63A00C63A00C63A00C30530B22451363A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C3762154F891663A00C63A00C63A00C63A00C63A0
+      0C32550B163C2C2A6558609E1163A00C63A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C558B0B1124060B2016
+      4F881563A00C63A00C63A00C63A00C63A00C63A00C0B1B0D184532256F5E2C7D
+      6A2475653C7D3663A00C63A00C63A00C63A00C63A00C63A00C5C970C14392E24
+      65563D866E35816B337A64246C572D6E5F438A75408164306E573B806A438A73
+      494BD3E1E5E4ECF8E5E1EAEBEAEFEBEBF0FFFFFDF7F4FBCED2E2D2D5DDB5C3E4
+      87A6E37B9CDA7595D69FB3E58AA5DB779CD97199D37697CA7391C86F89C2758D
+      C37590C8698CC44870AC577CB25680BC7D9FD87496CC254E8491A2C4A9BCE85F
+      7FB99DA7C9AEB1D1667CAB5774A2788DB1909AB6697699627695AAC7CCBCDCD2
+      6987A12956A33778CB2F76C4002A6A0D29580E317100125A00175129498C3556
+      A9294EA44E71CD4161BD00003B4A5A85EDF4FFDADEF57498D06C91C8627EB466
+      8CC9576F9B13254F3F68AB6D99DF5A76A81A39704C82CB93C0FD87AAE180A4E1
+      4F78BB103979092A601629580C1B460F203C859EA7B3CBC77A96995D7B8C7B99
+      BF5E90C05789B387A9D16890B54A7CA13C678F000C280E31525791C2457FAE37
+      729E5691BF2F649400153B203F5F437199386A9A4F7AA63A6D972C69940E4D79
+      2C608A5085B13773A0011C39000E273860822F5C7E124268316190335C860A20
+      45335C855D9DC32D5E852144695479A03E6E931752764175974473953F688A09
+      2641000A206A8993F2FBFAF0FEFD93BCBD546C762E303B21232232333536373B
+      3D40424546472629281216162B3237383F412B32301D24241A231D2831262F37
+      334B4E518B8F925860622527293C3A41373B432F35382F2F3028292A3C40413B
+      3E462A31414F596944475127282B24252824292944484A2525290D1112292D2D
+      3235343F41424C4B50282C2D1D24233A3D412E2F341518160000001B1C1C8D96
+      9C95AEB79CB2B79FB5B8547487355A80395C82294B6B3D64856585A56878954D
+      5E782B44606B90B67DA2CC6688B23963892D567B5A83A97AA1C54F7AA02A5174
+      223E5A30506D637F9F7A94B36D8AAA7897BB92B7E092BADF8CACCD87A5C8769A
+      BA7C98B6A0B9DF8CA0BD161C253444567A9ABD465C7C28344C213E5A4962825A
+      6A87648196BDD0DEE7E4EEBAD2D36EA5A78CA8B4DCD2DFDED6DEC1C8D5BDC9D6
+      D8D5DDA6B4D087A6DA8FB1E297B8E59DBBE79BBAE79ABAE3B8C9E8BDCBE6AFC4
+      E3B1C7E68AA7D3B1BAD2FAEAE9EFE2E2B1B2C68AA4CE9EBAE4A6BFE5ADC5E8AD
+      C4EAABC2E9B8CCEABCCEEBB5CCEB8AA7D16283B689A8D59ABDE3A4C6E5A4BDE2
+      7795BF2D6293366CAB76A0DF88ADDF83A6D089A8D29BB8DF6485A60F32515C6F
+      88A1A8BA858E9E869199D7DADAFFFFFFF7FFFF97B0BB263C540D141C2E374284
+      9AAC57637018222C70899E778CA86675913E4957444E55686F7D5B62732F3641
+      36404C4B5F7A26354627303931414C3B4D602134450E2332212F3E514F597871
+      7A4A4D58000612131C291B2531323C4939404F1F2C3D3D52673F516460779189
+      9DB85455621F28311E2E3819262E24353C28333A202734192130090711141B21
+      77988F9CB9A8425C4F254B4D7F9AB4B2D1FC7DB1DE325E7A00263D6A8DAAC4E3
+      FAB3D2EDB7CFE8CBDDEDADC8E4C6E3F8C3DFF54979A04980AC72A2CA5E98C975
+      A4D38AAFD89EBADE96B8DA87AED679A3CB548BB8508EBF4F91BD5283AB43556F
+      1C2329374F64659BCD6DA5D5BAD4EEDCE7F6CDE0EDCADEF184AFD5113F682D35
+      4A6D83976288A82B5D811A4B6D143D601D45609DBABEFFFFFFD5EEF0A5BEC0CC
+      CFD6DCDBE6C8C8D1E0D7DDF2E8EFF6F4FA89919D0C222D132B35243B44273947
+      2B3B473748533547542B404E304855253D481F354221313E1D242D283C46314B
+      5A2740501F384A203A4C4F6F875977943D5A743E5D742A49583654661F364332
+      596E416D8E5C82A14764772D444F283F4A344C5A5471853F607510253118272E
+      2A3F4D14283500111F506B77DBFBF6D9FBF37AA3A92C272D475E7278F1FF71E8
+      FF91DEFD79D7FE26B8FE3AB7FC3FB9FC3FB6FD54B5FF39A4FA47A3EDB6DFFEE2
+      FAFFE6F5FFECECF1576296567BB7BDE0FAD7E8FED3E2FBC5DEFDC9DFFC88C4FF
+      51A7FE2A8CED4E98E8A4C6F69EC7F498BEF195B7E997BCE1B5CEE3CCD6E4A3B5
+      D95D94CE4395C95495BE277EB40E689E6895B2FFFFFFD7E0DE597583213D6308
+      2E5C2C53803C5D8B1F3E62506788627EA12D4D6D3351734E709C5C7CA8748EB3
+      536C8E18355746628A4F63880B1D38405D7D92ADD27590B4385A7F4C6488293E
+      590C243A32476111243C08172D6983A184A3C63D5978112A49213D614161857A
+      96C192AEDB49668B273D5977839F6D7F9C2848663B56795D7398405F84305174
+      07193211192A3E536E5578A3809BC394AACC607B9D4561835D799D516C913651
+      7616395E0F33564060867090B9809EC87291C0375A7F11304F26476B2D4C6B05
+      0F1B00000000021131506B7290B24C5E752E3E567088AD9FB5D9617B9E324C6D
+      576B8A36506E4059765E759546668B10315208203F4C6E94557CA12E51751F44
+      64607A9A6A86AD405E833C4A635C6C89405A79374C66000B1A242F445F769835
+      4F6E3A58796B8BAF6F8CAE5470922C4D6D3D62845B7EA743699231557C6D8BB1
+      97B1DA6A87B12E50772C527D39618E2F557F48678858719348638C416085738D
+      99E7F7F3D3E6E62F695A327B6B2D71632E6F602F7867317A69327D6F30756D38
+      7E72368174317A6D3B8075347D6B29705E2F7665367E6A3C8F8042907F337F6C
+      397D6C357F6C3F82743D8978347D6A54931E518A172A5324497E162A521E5E99
+      0D538B11264D20538B122F57233C6A1A5E9A0D274D22538B11305D1F4D851352
+      8910274C1E5E9A0D3C6B1B437516538A102A541E5E9A0D407119437616538B11
+      274D22538B114D85134375165E9A0D2C55204F8614407019437516538B112951
+      244D851439651641711357910E2C55203E70172B541D204A2C296250367E6939
+      857154921C63A00C63A00C63A00C63A00C63A00C63A00C48780B133124437D27
+      63A00C63A00C63A00C63A00C63A00C63A00C2F5007558D0B63A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C568E0C184A31508E1863A00C63A00C63A00C63
+      A00C63A00C31550B1741312D715E2E796A307D66357D6838837536816F3A8564
+      4089484A8E2A5A991463A00C63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C172C06294F1363A00C63A00C63A00C63A00C63A00C63A00C23410911332520
+      6653257D682779624D8A1D63A00C63A00C63A00C63A00C63A00C63A00C345D10
+      1F5143227163367F6637806A3C8672297668317A692D785F33755F3676613180
+      683375604340757E94F2FCFFE4E9F2E1DEE8E9E9F1EEEFF3FDFBFCFFFEFDFFF5
+      F2E6E1E8A1B5DF829FDA85A4DE8CA6DF789BD97EA3E299B1E0ABBBDCA4B8DE61
+      82BC798FC4879FD0799BD36E8DC7315F9E6387BE7E9DD5809FD94463996D86AE
+      BDD4F85F83B73B57917E93C36687B85175A45E7AA66277A0415A85213A696D80
+      9DB8D8DAA5C6C26E91B15C86CF5172B323457B1C4A957497DC94B9E34F7EB81A
+      3D733349853D58A52445981C3E7D3B44712438725274B488A8DD87ACDDA7C4EF
+      97BBEE8EB9F67EAFE84680BA7099DF7BA3F079A7FC4F7DCC2652948AB0E4A3C9
+      FF4172BC113E835B81B75F85C03A62A6385D961D3B6A4A63899BB6BEAAC1C07E
+      979463818E6A8EB45D87B1426E96587FA05F88AC3363901C436918476B376E97
+      4075A2346D9D4A85B227598010335A3866902F5F891B4B7930638E3369903973
+      A03F7CAA36729D3E739E5C8DB84F7B9E1D3E5F0833531F4E6F29597F1A547D24
+      5B836087AA558DB6255B85072240000E272847685B84AB658AAE6A90AF5C88AB
+      47749724486513253E08263D7E9CA5FAFFFFE9FDFA8EAEAC7886865057581818
+      1928282A55575761636227292A070909242D2A28312D3E41447F879A768FA246
+      50543538341F2421262827242827272C2C42434936363D494A51494B4B1C1E1A
+      222422585C5F42484D262B2B32342E15140C1F211F6871765C64681F25242025
+      273F3E46322E33211E1D3A3E3F3E43442F32363A3D44282D32191E1F282B3010
+      13132E313196A4A899AFBA9CAFB690A9AE57798E55799C3B5F833B62847591B3
+      627B9C4E66823A516A2C516F6990B67B9FC76189B1274D6F18314D527494678E
+      B24F6C8D314A6913314E2243634666884567881F37512E3B493F5571456F9350
+      789D577B9E517495405F822C4560223443334B646E88A997AECA8EA1BC657791
+      3650703B51723F56706B899BC1D0DFD6D7E3B0C9CB75A6A797ADBBD6D1DEF4EC
+      EFFFFFFEF1EBEDA6B6D48BAADA93B4E397B7E59CB9E79AB8E7AAC3E5BDCCE7B2
+      C4E3B1C5E3ACBFE29DADCFCDCAD8EAE1E7E7DFE4BABACC6D88B78EADDBA8BFE8
+      A5BDE3A6C0E4B2C7E6BFD0EAC5D4EFA5BEE35280B46A93C69BBCE893B8E398BA
+      E298BCE7A2C5EF8AADD53C6B9B315F915880B4628DC1688DB9617C9E273D561D
+      2F497688A39BA9C09097A8757E90768290D9DBDCFFFFFFE8F7F789A0AF41546C
+      2A37452C3F4F7D8FA042505D172A3A48556759627735404E28323A39404B3A3E
+      4A343D4C6F859EB7CFEA56657B11161F0E19212B3D531D30420A1D2B172A3A20
+      3140575C667B7A81383D46070E1B121C270B15211F2937333F4F5868798191A5
+      485B702D3E5349586D3B4B5C101B2319232B313B451E283218242E151B240909
+      0B07060D1A272D7E9B9392AC9D344F41506F778AA6BF6A859C12384E466983BE
+      D6F09CC5E68BB8D9BDD6EDD9E8F6C5DCEDB2CDE995B1D14E77977CA0C16297C6
+      2974A83578A84981B178A0C990B2D7A2BDE2BECEECB9CDE9A4C6E780B8E282BE
+      EF90C1F0486D8C2E5B777EABD5C3DCF6D5E5F7ACCDE9A0C5E5BAD4EEE1F1FF7D
+      9BB40017310E36512655760B3E5D0F405E0D3B5B0022441D4155AFCACBFDFFFF
+      B5D5D88EABB1C5C7CEE0D9E1E2DCE3F1ECF1DDD7E2626C790F2734162E3C2438
+      44263A433C4F5E4357663749552839452239442338421E2E381A1F2C1A1D2921
+      344223405229465B3B57703A566E344D5E4560774E6C842E4A5C1C3A49203644
+      1C2A3A3753693B5E7A5777913952612D424D465D6B3F556647667B43657A2237
+      431221271E333F1E37440D1923040C125C7276DAFEF8CFF1E86B86854E688066
+      BBE862DCFF89DAFFA0E1FD58CDFD37B8FC30ADFE3CAFFE60B2FE85C0FABDDEFC
+      DAEBFDFFFEFFDEE8F45F90CC2365B181B5E6C6DFFDD2E4F8D5E4F9BED7F6BCD8
+      FA81BBFF5CA3FE4293F01C84DC96BEEDC7D6F3AFCBEFC2D7F0A7C7E5ACCBE5D7
+      DFEACBD0E068A5D7489DCF71A4C5719EBD6191B2316E9F659ABEFFFFFFCDD7D4
+      516E7E28476A2E4E76526A8F5C6C873E526C405A7A355377405E834E6F99496F
+      9B5477A26682A7677EA0446082192F491E2A3F466686668FB882A2C75C80A530
+      557B47628432496631435F45536D12253B324E6A7895B9385A7B2D4D70566F96
+      758FB77F9AC5557093152C4216283B616B8449607D244569546D93506C921E3C
+      5C00011416243C5272994B709C5C7EA76C87AE4F688C26445F1F3A553B557956
+      70974E688F33537E1C3E63102A45374B694A658A3B5A80334D6C405A7A48688E
+      476B924E7095415F872042641F4460415E792F445E2B42616880A59AAFD35B73
+      92091A2E2338522845663E5777748CAE738FB65276A01E37570C193543638864
+      83A743608130527439587B385979557192556F8F4F698C576D8E3D5879738BAD
+      7488AB567295506C915B769A5A7498284A6A335B80547FB15383B4456E983A5B
+      7F607DA37994BF526E961031552D4D734060893F5B7F7A91AE6C84A734507367
+      808CD4E8E5D7EAE83D6E652F7864347664367A6838816D377D69357C6F347D72
+      3A7F773480713980753381773F897F34796B327F6C3C836D357E683B836C4083
+      7337816F327D68327D6A347D6C34806E3B816F4085443163325F9A0E497E165E
+      9A0D2C54202D56205E9A0D325E205E9A0D44761624491D58920F2F5A1C528B12
+      4C8313284D184C82112047235E9A0D538B11315624487D14244B24538B11538B
+      11264E2058920F284D20487D15538B11204621599310275022467C1352891024
+      4C205E9A0D28531E57910E51890F29501C5E9A0D3968164B82112C5E261E5F4B
+      2D776129766052911B63A00C63A00C63A00C63A00C63A00C63A00C48780B1735
+      27447D2A63A00C63A00C63A00C63A00C63A00C63A00C5B970B63A00C63A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C2C56191E5D4E51901B63A00C63A00C
+      63A00C63A00C63A00C31550B153D2D266E5828796534826D2F7D65377F6A347A
+      63297C622B7A5E2A785B277859438A3463A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C5B970B0E200A63A00C63A00C63A00C63A00C63A00C63A00C406D09
+      0A22161B56442670632E755963A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C193B1D2768542D78662E7C694388733D856E2F776934826B358168377E6646
+      907537886D327F6A47414A5D988F97AEFDFFFFE2E5EFE5E0E8EDE8EEEBEAF0F8
+      F6FBFFFBFFF8F2F1D0D2E47E9CCF6C92C890A8D891ABDE6A8ECC738DCBC3CAE9
+      A0B6DC5B7DBB738DC69CB1E07F9ED57E9BD06181BB8DA3D6859FD5406BAA4869
+      A3788DC19DB4DE7193C2456BA290A4CAAABBDC879EC6556E9E3F598E536B9646
+      5E865B66869BA3B3C9E5E6A1C4C297A3ADCCC3D86184C43874CAB2D0FFCDF5FF
+      5B8CC50419420E32612F599E1439820B3573627DA954659B627DBA7EA8DA6190
+      C36E9AD19DCFFFA5CEFF384D79315A999BC7FFBADCFFB5D9FF98CAFF30507F24
+      2831435A8713295A0A2D667E9ED29BB1DB80A1CC5F84B43058933A5F9B4F7198
+      95B3B7A9C0BB78938F617F896986A73966904678A06A92BB1F50823F719D4675
+      980F3B632A5883205A85164D772F61855F8FB65889B83B6D9B42739F2958811E
+      4E752E6D9A6197C682A5CF7497C07499C180ACD55385AE072F51012B4D386990
+      618FB86C9AC25490B84A8BB5628FB8345D802F587B2C5578416C92668EB75985
+      A932658B225479305F803F63810726431F4259B2CDD2FFFFFFEDFFFDB6E1DC62
+      7276242427292A291E2121333837383C3F2D30352C313035383824242A505763
+      4D59631A2021303331363D39161C191B1C1D313835272D29393C44565A693C3F
+      3F3C413E454A4A3032301E1F1D45444A5D5E611E211315190D4B5052484C5149
+      4E4E616468403E440606040B0D0D33373B444A482D33351B222A20262B3C4147
+      4C4E58383C40181A1D3D3E41A7B5BE9BB3BD98AAB199ADB3628496385F85284F
+      796F8AAE748FB1627F9E536D8C3956753B64836389AF7C9DC45172940A203800
+      0E2226425E304F6E425F7F3C597A193A5837557758789E314A640000000B182B
+      4E7495335D7F2E59814B729B3254761033532B4D712F4C6A1E374F3D56706F86
+      A2A3AFC696A1B74D67832E4C6941556F90A4B4C9D7E1CFD0DCB7CCCF82ADAF98
+      ADBCD3D0DDF1ECEFE5E3E7ACBAD68EAEDD9BB9E798B9E49AB9E699B8E7A1BDE2
+      B6C7E5B3C3E3B8C9E79DB4D6728EB7A4B0CEAABAD9A9BCDCA2B3D75E7DB14A79
+      B39CB9E7BACFF4B6CFEDBDD4EEBAD1F19FBCE2507DB04378B397BAE999B9E592
+      B4E397B8E698BAE49BBCE7B0CBF995B9E43A5D83283A5C4859814B5E84595E77
+      7D717F68637942587A7E94B0AAB1C4999FB16C798C7A8A98E3E8E9FFFFFFE6F6
+      F893A5B22A39481F2E3E596A7C7583963B45550D18242E3845495262414C5C4B
+      55652E3440222B363643537B8A9D70879F43576D4056693E546A2B394B2F3B4C
+      2F3C4D3B4A5B42506146505B696C75323A421022302E455C3F546E56667B5363
+      743D5165384F652C3F513C4B5B435060363C4C333945454D5A3B465903091416
+      1A27232A310203030C0A1537414C89AA9D9BB8A33D5C512F4F497585864F6A87
+      6C8DAFC2D7EDA4C6E1A3C6E2C6DCF0C3DAEEC2DAEDCDDFF281A4C86994BAB8D0
+      EA8BB9E35396CA4689B94980AD4F80AC4F88B45A94C182ADD6B2C9E6D0DAEEB5
+      CAE499C1E796C2EB3A5C7832475FB9D9F7D3ECFFB8D4EAB6D4EEB5D0ECAACAE6
+      BED8F0AFCDE3618DAC3662862E5B7E60829E6B84A1577391436A8A0B33522C4D
+      59C2D8D6FFFFFFBADBDE8AAAAFB3B7C1CEC8D4E8E3EBC0C0CA414F5F1628371B
+      303E2539422E4149475A6E4E657C41576624374017262F1926311E272F1D1C1E
+      1F28321E34451E3848284154415D7A55728F354E5F30495C405D6F203B49213B
+      4B2037471B29361D222F2B3D4832505B2B45524053623A526139505D2B435320
+      3D503051672B42531329341E38461D1E22010000000000576C6CE7FFFFE0F6F3
+      779B9E51779961B1E559D8FF85DEFE9DE3FE43BEFE13A4FF33A5FF9DCCFDF3F5
+      FDD8E9FAF7FBFED0E0ED518CD14B9AE14AC4FF6DC1FFB5CAF2DDE6F7DBEAF6BE
+      D5F1B1CEFA74B2FE4A9CF95FA3F43393E93E97E7A2C2ECBCD3E7B5CEE1AEC8E3
+      C1D6EBFCF5F3C1D4E72D9CDE3E9FD960A4CE81ABC480A3BC156CAE166398A0B2
+      BDFFFFFFC9D6D465818B4B607A4E6686677D96556981526A8C6784AF7192C06C
+      92C15983B3456E9B577BA46480A2243B52071A2D62809F7EA3C63154776382A7
+      A5BEE4446487244266334461070C191E2E431A324B000C22465F7A637FA15D75
+      977791B7617BA1263A5505122308152231496224446516395B3A5B7E2F54781C
+      496D284E6D344C654B7294486E9658759A6B89B24C709D33537926425B19334C
+      142D4A384F723B577D1A385C132D4B172E4B37506F435F7C132C47172D474E66
+      864B6E92567FAC73A2D880AFE680ACE1668CBB324D6E00091F1429456D8AAF7C
+      94B835516F354F68657C99657EA1375377466387728DB16D8DB76386B2243552
+      0F1B33375572345979234B6B3F5F815772954D6B8E516E8F819ABC647FA25C77
+      9E7A92B7547092597498526C93536B8F334F712D51774C76A35483B84C76A418
+      2B4836435E859DC55D789D425C80536D93415D813A56765A6F8C7383A259738D
+      738A93DBEAE9D1E9E83F7065367A6C2F756836756C3A8070377E713E807A4184
+      7B3C7E7440887F40857A3F83763F827540877C3C7F71397A6E3F7E723B7C6C31
+      7F683C836E3A816F3C8778337A6E3681753A83743C806F5798225C9915336028
+      39641C315D1E5E9A0D5E9A0D2F592037641D275124528A105E990D3965163E70
+      17275024528A105E990D3D6C1658920F274F2136611A5E990D3F6E1658920F23
+      4D202F5A1C5E9A0D3A69185E9A0D3B69182C521C58920F2B54205E990D467A13
+      244B16467D152D5C245E9A0D467C132C57194577172B5620528B113C6D161E4C
+      36246B55297D6A2B7A6952901B63A00C63A00C63A00C63A00C63A00C63A00C48
+      780B163326437A2A63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C50860D19493C29705D51921B63A0
+      0C63A00C63A00C63A00C63A00C31560B163F2F246F5D2F7F713486722D7F683B
+      8A742F806B32826C2A806A2B7F6A2B7A6A2F7E6D408B4263A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C3B620842730C63A00C63A00C63A00C63A00C63A0
+      0C5B970B06150D174835237060397C3463A00C63A00C63A00C63A00C63A00C63
+      A00C50850C1844372366502C7762227F6C2B7A66277766317A6530786134806C
+      2B77612F7A6434816B387F6B3E404D62A34E5E999FA6B9FDFFFFE2E3EDE6E0EA
+      EBE9F1EDEAF1F6F3F8FFFFFFF1ECF197A6CB879FCCADBDE1A1B2DDA2B0D8859F
+      D67799D27594C798A9D398A9D77294D14C7ABD6C91C7A2B4DD7291C87B95C97C
+      91BB778DBD8FA0D07A94C46888BF7094C9AABCE18CA0C74A689B6B80AD8192BB
+      6580AA6B81A682899E626A82647E99B9DFDDBFD6C38293A03B6CBB6C9CE9AFCD
+      FF92C3FD3771AD002E642D63A86A94D6829CD58097CD667BAB6073A46884B256
+      7EB0597FBA90AFE494B3E25875A5121F45081C43466DA1688EBB7C9DC6608BC1
+      153565021E4A0E3778000D30091742729BE8AAC6FFA1B9E33A486B0C1B47375F
+      AB415FA1738AA5ABC6C9A7BCB874908D6C8992819AB86593C03D74A42C598A41
+      709C5181A805325B1D4872507DA30D42680B3D634F7BA46C98C56996C444749F
+      0A305B13446E2E75A1357AA86E99C2A3BBDE80A6CD6D9CC677A2CA6C8CB35074
+      9C235C86386F985B88B1205E884E8DB47DB4D7316F983873A13A6D981D517749
+      77A35182AF3D6E9839688E3765883052700E314C163C5A46677BBDD3D7FFFFFF
+      E1F9F795BCBE55626925242626282948494C3F40433A3D3F2C2F3335373D2025
+      2914191C12120E10120D353B39484C4A3335352C31322C3330141B15222E2F41
+      4B503B3F404E51544E5357383D3F3A3F40393B43373C45565D625053550F130F
+      1E1E1D69656868676C383C3F242C2B2E35382422281E1E211B2223383E483A3F
+      4725292A181D1A24272925282C121314434549A1AFB498B0B699AAB192A8B04B
+      7188224C73627FA47890B16683A1627E9F4764864C6C8B476E8E4D6F926281A2
+      4868872638523C4F6B4E6D8C4A6C8A4362821A3B590C2F4D254B6E587B9E3E5C
+      7B5472918FA9CA27425E2344665F82B0325A82385C7F5A779E4F6C8F2E4A6A16
+      2F4D1C38533A5A766C82997A8EA45A738F364E6D3D536C9DB1BFDCE4F1DFDDE6
+      B4CACC7FA7AE9CACBFCFCCDCE6E2E6C4CBDD8FADD99DBBE5A2BFE798B9E597B8
+      E49BB8E3A4BCE0AFC3E5B3C5E55C84B56D91C0B1C3E6A9BEE19AB4DD98B4E091
+      ABD4547FB2497DB680A7DB8DB0DF83AADB799DCF5574A42D5790709BD19CBFEC
+      8FB2DF95B6E29DBEE8A3C2EB9ABBE791B3E6A6C7FA8DA5CD62627C7B7086A495
+      A6A89FAEA4A8BD8C92AD2B4467153B617C8EA8AAB5CCA8B1C58C96A78E9EAAF1
+      F5F4FFFFFFDFF0F592A1AA27323E000714434E61606F8622344421303E374353
+      29343E343D4B6B7C9266758719202C04121F5D769291AACC516980445C6E4959
+      6B4A596B36435128323A3A465613212F27313D5A62714555673C5B744B6A8552
+      637A44526537455C43556B202F3B0F151A313943414A5B38414D3F475438465A
+      172738303E50303C490000000D0E111E212B212C2C86A69498B6A13250424D6A
+      656F86955D7B96B1C9E0CAE1F8B3CFE5C2D8EDB4CFE9CDE0F3C1D7ED729DC488
+      A9CBB5CDE781B8E460A6DD67A8DC6AA3D15A90BD4D86B44D89B6538EBD7DA9D5
+      B1C9E7C1CFEAD5E7FFBCCFDA03070D212330D3EEFFC9E9FEB5D0E9BFD8F0CBDE
+      F2CEE1F1B6D1EAA2C0E182A3C9628AAD5C85A780A0BD90A8C36484A36C88A656
+      74910017283F5157E8F6F5FFFFFFB5D8DA86A3ABB3B6C1EBE2EE9EA4B5334658
+      192E3E142B3B2D47564B62755168803E596B38526129404C162B382233431D21
+      2B1E22263148552640532B42523046562D4457425F764C6A803A54692B465838
+      4C5F263743253F4D1429360D17204256624D6B79475F713E5665365061324A55
+      1E333B2540562C4D65345064233A4815242A0C12161A2833111A22000000616E
+      6DF3FFFFD8F1E86B878B4A6E925EB8EA66E4FF62D0FD4DC0FF36A8FE429CECCF
+      E4F6FFFFFEF3F8FEFDFBFF7BAAE2509AE454C0FF1BA6FF59A8F2CEDAF2E8F0FA
+      D7E9F7BCD7EFB2D0F880BAFF52A2F95EA3F455A2F8499AF74694E69FC3E4CCD9
+      E2CEDAE7FEF6F2DAE3EA66A7E52797E664ABE07EADD692B7CE5494C10670B74B
+      86AE4A78958FAEBFFFFFFFC9D3D1647C88425772314A693E5874445976435C81
+      5178A85A89BD507BA92D58842046702C486A3649632E415B5C80A49ABCDF2D42
+      5F2F4768B7D0F48FA4C60F2945081D352C374F364A66334A6814233A2239514A
+      627F556D8C415D7B18304B13283F1C3C511D465B255872134B671E4D6B2F5F7C
+      2056742758793D6F904F89AF4D84A73A688A7394BC7998C83559863656778496
+      B57685A71B304B001A351A3A5D122E50001631000D2517223A667B9785A0BF33
+      496520334F324B68274A6C3F66936793C677A5D97A9ECF7890BB627599395371
+      54718F4563804964829BB0D1AABDDB8C9FC15874972A4A6D5370948299BD7895
+      BF4D70970B253C2A435C5976996080A24F729458769C627EA16E89AC7891B637
+      516E5A7393627B9E4866876D87AB3B5A7D29486831577C4E77A5557FAB587CA6
+      2D4361020E1D364660536F972F4E6F617B9B6C88AE405F85586B876F7B945064
+      7D6B858CDEF3EEECFBFB437469317965317562367969337868347A68367F7533
+      847235816D3C807534796D327C6E337D65337C6B3A837831796C2D756029705B
+      3279652C775B2F765D2D7360317D642B73662B7769337A6B377A6F367A62356B
+      40548F135E9A0D437817234A27254F224C8313497F165E9A0E3E6F172C511641
+      73143E6F175E9A0D538B112144163864162F5B1D5E9A0D5E9A0D2A501C2F571B
+      315B1E5E9A0D5E9A0D2C552136641E28532558930F5E9A0D2850244D85152E56
+      224C83125E990D214924548F142953264174155E990D3C6C1B5E9A0E2C541F2F
+      591B20483D34735F327D6C35817554931D63A00C63A00C63A00C63A00C63A00C
+      63A00C48780B133024417C2763A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C63A00C234D22296455307C6054
+      921C63A00C63A00C63A00C63A00C63A00C31550B1740322C70613D87722E8065
+      317E6D2B7E6C2B81612F816C34836E31866C30806D38837531866B4B913463A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C30550B63A00C63A00C63A00C63
+      A00C63A00C63A00C2340090C30231B5D4749881A63A00C63A00C63A00C63A00C
+      63A00C63A00C284E13195342206F5822785E257A6224775D257A682A7A602273
+      5D23705E24755A25735922735B2E7961514A485C994D62A850609C909BB2F2FE
+      FFE0E4F2E2E1EAEBEAEEEDECF1F5F5F9FBFAFBEEEBEDE2E0ECBBC9E7ACBCDEAC
+      BDE38BACDE82A3D89CB0DBD1D5EDEFEBF97A96C7275DA44D7CBA97B1DBA0B8DE
+      89A3D192A1CA7487B85877B17392C893ABDD8AA3DB7395CF6785BB556C9E536A
+      9B4E72A75D7FAE58759D687C99546285132A535F7C90CDEEEA92B8B74A719A70
+      94D6A0C1FCB1D1FF7FABE22368AF3877C56D9BE089ABE7B0C4ED92A0C8394A7B
+      2C46797890BFADBCE496A9D72B3E6E00123C1025470009220011400018500009
+      260004241438775985CE769ADE43619B090E232B3B6B4D70B73857940E163B0F
+      1530153366254E8E375992486B8C99B7BDA8BEBE7F9898738B966285AA2D6AA0
+      3A709F5680A9678DB623537C06315849759D6795C235659119476F2D618C396E
+      99436B96153F6C124A754F8DB94587B4296E9B4982AD4D85B14F86AF749DC476
+      A1C96B99C25A88B117537B0F49706193BA739DC32444631B5178447CA8316B96
+      154F7524567F41719F5987AF577FA32B59791948672C55722F567334536F4365
+      77AEC5CBFFFFFFE9FFFFA0C4C6838B94A7A4B054585E252829353B3E2F373A2D
+      3436282D2E1F25262F34383236372C31303236382225221C231D1D25212E3435
+      2C3333262C2B474B504D5156333C3B3A3F433B3F430F12111D21256165704647
+      4B3234363F3F422D292B2C2E3033383A33373B34373B1C1F2324282C2C31352B
+      2F34212426161A18191F1B2D313238383E2F313405050540494FA1B7BE96AEB4
+      99ABB48EA7B0507384466888728CB158769651708C5879964367874A6F8E4068
+      843C607F4765823556724766876C8AAD6485A8587B9F6182A758799C3D62822C
+      5476345F847093B67E97BA3450732E51744E739A3C5B81284B6D3C648C648FC0
+      7197C55E7CA24864882A5073193C5B233045273145253D5518354E334C6291A9
+      B8E0E8F3E3E2E9AEC5C889ADB5A2B2C4D2D0DDDEDAE1A9B9D58EAEDC9FBDE6A3
+      C0E6A1BDE49FBBE49CB8E2AFC2E67898C8668BBEBBCDEAC4D3F0B9CCE8A3BBE1
+      93B3DE9DBAE393AFD96081B05D75A37286B28295BBA0A4BC767E9C4A6EA47FA8
+      DF8BB2E18EB3DE96B9E399BBE79EBEEB9CC0EA95B9E78FB1E27EA3D08591B3A9
+      96A6ACA3B291A5C479A0CA769CC56C91B64068901D4269294062506784697D9A
+      3B56795A7084E1E5E5FFFFFFE1F5F8A5B5BE454956101A2A3A4D5F5264772A38
+      4A323E503943502B36475F73915C6E892A36452D3F5259749258718D2030413B
+      475B576274161F211722220D191D222E353441500213222D36444B53601C3140
+      3952663D52654D5D73676F87393F4E2C33402830391820282A3441374253262D
+      3D2C384848586B3544552B3748232B370D15180407070000001B282A84A6999A
+      BBAB41605B5573766E87986A8DA7BCD8F2CDE7FFBFD8EED5E4F7D5E4F675A2C6
+      7DA5C69EBCD8A8C7E29EC4E883B7E26AAAD964A5D66BA5D66CA3D2679DCA6399
+      C55D96C2639AC678A8D3BED9F5A7AFB7272F3C5E7D96B8DAF5C8E0F7BAD4EDB9
+      D4EFC3DCF2CAE0F2CFDFEFA2BCD96892BD7598BA89A4BE97B0C791B4CE578AAC
+      648AAD586E89141E2A38424E819DAECDE2E7F1FFFFB6D9D993B4B5C0C5CD757B
+      8B29425546667A405F7524455B3554694A667D344D5C364D5B3A556826404D32
+      4A57232A331E2730293E4B243643253A46283E49364A573E5464415B6F3E596B
+      354D5E263C4A2034411E313C212F381B2F3B1F343E415864445F743651664B68
+      814E667B2C47561C3744182F3C213E4F233B4918262B2135403956682C44520A
+      181F000811697B7FE4FFFACCEADF74959A507B9A5DADD667D4FF73CFFF56A3EE
+      97BFE3F4F7F8EDF2FAFFFFFFB9D3F460A6F040B2FF46B2FF43A3FC56ADF4D7E6
+      F8F0F4FDD2E5F7C6DAF1BAD6F783C1FE6AB5FE66A8F62C83D62884D60A77D937
+      89DAEFF8FEFFFFFF8ABCE72E81D21A83DA499FEB66B7F178C0ED51A3DB0E7BC7
+      2A86C2699CBC5088AE43779B90AFC1F8FEFFCAD7D8667E8A3C4D6739506E2C45
+      5F0E243D2B476C40648F406388375981092B521E38595D749A53769A4E759877
+      95B7536C8C13304D617B96A8C0E0556F8F344C6B6278A05B729A4D6287455B7C
+      233C5A18314C273C571B354F28516E366885255F7A2B637B2E6379245C742B5E
+      7830637E3D6C873563812059772761813A71915082A55079A02E51761339593A
+      5678536B9050688824415D132E4F485F88677C9D6D809C4958700E12261A233A
+      4D5E782F456010263F2637522739541E36532F517841679145688F486489304B
+      6E15334F3953714C67865974926D83A66B83A66985AB7694B65A75933C597C68
+      84A97A93B96382A7375C7D415A788DA0BF6C80A14B638056708D5C76987B93B9
+      425D7F112C475D73935371955872954156731E3C5B3A5B7F567CA8557EA93F60
+      862D48692539564155764A6486294A682C4D6E4A698E4961846F7F978289A06B
+      738970868EC7DEDFD3EBEC4070642D7663347767317561307967337B6E337F6C
+      35806D36816C2D75622A75652C75652F7C66307F662A79652C7C6824715D2878
+      64327F6C2F7F6B287D662A785D2678622678642B7D6C297764307C692E7A6641
+      874857951742771E17392E487F16538B1258920F4478171F482833632363A00C
+      52890F477C14315E1F2852234D83125C990D4C8312487F16265022315F185791
+      0E5E9A0D548D13254B27254C22548D124A80165E9A0E37621C21411D4D831344
+      77195F9B0E4D83132144193A68183A69225E9A0E528A101B3A202C5520366324
+      5E9A0D5893102F5E513A7C643F88773C877255921C63A00C63A00C63A00C63A0
+      0C63A00C63A00C48780B112F24437D2963A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C44750E1C513E307462
+      2E786352901B63A00C63A00C63A00C63A00C63A00C31550B163B30286A5D2773
+      61317E6C2D7A692978662E7E6A23775E2A7C652D7C6A2B805F3181662D7C693C
+      855F5F9D1063A00C63A00C63A00C63A00C63A00C63A00C2A4D0B63A00C63A00C
+      63A00C63A00C63A00C63A00C406C090920161D523963A00C63A00C63A00C63A0
+      0C63A00C63A00C5C970C153C26216655217762277E65277E64237863267F6A2B
+      7E642B78692B7D662A7960347F6B28785E23745B685C4C60A246599F4C5FAC4A
+      5C9E8994ACFFFFFFEDEFF9DEDCE6E9E7EEEEECF2F4F6F8FFFFFFFDF8F7B5C5E4
+      8FADE18BAEE48AADDEC3CEECBAC7EBA8B9E2A9B7DE7793C77E9CD2809FD584A3
+      D69BB8E66990CA395EA17289BD97ACDE7E9ED98AA7DD92ABDE7693CE6080BA47
+      669D4E679A647EAB899BC155729E2F548860739A3B4E7135476B939EB1C7E7E1
+      B3D5CD6285A5698DCC9DB5EB758EC73263A82D6CB74D83CC5E92DA568CD36388
+      C52C4879011D525972AB8CA9DF4872B72A59A624498005204418416B3A6AA237
+      63A92F528E0927564C6CA2BFCAF3B4C1EB50689F03122F00072100154702205A
+      1B335B0B1A341F2D47396795114A821942735F7D9AA4C3C8B5CBCA7F97986180
+      884773973570A45F8DB77A9CC14A79A41546720C2A4F3D5B8275A1D04175A200
+      386531649183A1C95885B1134C78124B723774A24481B13F7AA63A75A13B74A0
+      6490BA678FB73F75A05F94C67AA9D836739E3D6D90263B580727473B729C578A
+      B55786AD5080A63D6C923C6D952E668A154B6C134969295A7C2958782A55735C
+      7A932B445E335166BEDBE0FFFFFFF1FFFFC2E5EA93A1AF494E592A31364B5457
+      525D5D293437363F404146475254623B41481318140E1311303731393F351E22
+      2036383B444445252A2825302F3035370F1110191D1E41464B3C404235323532
+      32322025213734383A3A401D2322252C2A25282627282D2C2E34414547535B5D
+      4C52541E201F181A183A3E3F4042434545464241441E1F2006090628323A7681
+      90B0C2C899B3BC9BAEB79FB4B55B7A884F6D8F4B698923435C4A68846080A25F
+      7FA16384A34466822A4B64486681557597345B7E486A904E74993A688D436F96
+      6C96BF4B79A32B557A6788A96F8DB17D9AC05E85A92353794F7097577DA31A40
+      5F19223A3C54784777A24B75A54C73A03F628728405C283F5A1F364A050E1A00
+      04160C1B306E7F8EE9F3FCEDEFF4B4C9CB89ACB195A8B7CDCAD7DDD6E3A6B6D7
+      90B0DA9DBAE5A2BEE59DBAE1A1BCE287A1CE6789BEB5C6E7C1D2ECB8CCE7B4CA
+      E89FBCE399B8E294B4E17EA5D79BAACCDFD5D6E8DCDAF6E0DCFFEADFBCB1BE5F
+      80B574A3DA8DB5E193B6E093B5E295B8E5A3C0E999B8E474A1D76796CB81A7D2
+      A2BBDE9AADCD6E8FB85A8EC16A9CCD6999C6689BC67AA5CC5A86AE163C600015
+      301325422D3554232B455E6B7BE6E8E9FFFFFFE5FCFDBFD0DA8B8F9B47525F3B
+      4B5F3A45574952624753642B364827354C2332442B394845586C1F2F3F051623
+      43576F334057313B4D2A2D312E353A525F6D212E331D28304D5B6D727A8C5E61
+      722D35433A4A5C1D33451122384353693339411C1D215260704350603E424E49
+      4D59181E2D131E3020273A212B3A3B4A5D313A4B1F232F0D1016010000111420
+      283E4E91B3A9B9D4C247656140626C5E7F93688AA2AAC7E0DCF3FFD6E9FFAAC6
+      E17BA6C498B7D2A4C2DAA9C7E3B5D1F0AFCDEC8EBAE176ACD979ADDC80B2E16D
+      AADC6CA6D6679EC95C98C36199C7729BC350799B84A0BE99B8D5AAC9E7C0DBF4
+      BED9F1CEE2F7B6D1E9B6CDE2CBE0F599C2DA6992B29DB5D28EABC87EA2BF89B1
+      D179A7C8709DBB496F8F43566F5F7086556B82889BA6DCF2F2FFFFFFD0EEED98
+      B9BA46576216334A2F546D506F8550687F44617736586C3051662D4C61324D60
+      293C481F2A2F1E292C19282D1E333D2B4352293F4A293E493D4F60425261293C
+      4B2F4A593A56692A49592F5165192A373E3D41555A62111F2717314147657C53
+      6B8242617644637B2D485A243E4B2D4C612948591A2E341D323A335063293D4E
+      152129263E4A283F4F030609566261E8FFFEE9F8F580A1A041637A6984A64773
+      9E51829FE5ECEBFFFFFFFAFDFFAECBEC5095D95AB1F629AAFF7ABCFF77B5FB41
+      A2F1D2E2F6F0F3FBC2DCF3C3D9EFC1DCF884C7FE6ABBFF71B2F81A79C20068B0
+      006AB8004FA3587BAE6781B40351B1005FC03788D3418ED81965B81159A50C6C
+      B5208ED362A5D0689FC15695BC568AB03A73988DAAB9FEFFFFDDE5E3788D9644
+      596F213D5D254263516A8D697EA3697EA18FA1C09BB1D2435E820E13273A506C
+      6D97BE557A9F5C7FA32D4B6917283C68778D798DAC37506F3852745C749C5F74
+      9B495F813A5372435E7C4D68853F668330678628627D2B5C75325F7638677D30
+      61792A5C752F5F7837657F2B5B751D4F6A1D5372437B9F46718D040F2001142D
+      1C3D5D4965846E859F1B273B050F181134502949706F84A59CAAC37D91B16378
+      9724365000082001152F0B21380E2239202D4227334815233A203450294B6C21
+      497030588735649239628B3C61892F587D23456821375431445E4255704B5C77
+      1C3751193B5D5A799F748FB3536E902F4B6C4B64813F526C3D526D394E6A6F83
+      A2506A8915314D2F49675C74976C84A85F779619354D314D6A607CA15C7DA331
+      4F72233C5C2D486A446185627CA5536F933B5671516481747E97A19FAD9796A4
+      6D788A80959BDCF2F1C9E1E236685D2E796529735D2F7962327B662878602D7C
+      6D357F6C307F65317F6A2E806F33826B2778652874642F786C2C7D6C2C816A2A
+      7C6A2C796B377F7232816C2E816B2B7C662E7C6A2A796B2D7C632E7A662A7A68
+      297869357F583E80313A6E245E9A0D2F5F1E33611A2F5A1A2E5C1C4980164A82
+      173D6E163B6913264F19477E15538D124B8211294F13224B1C3E741A538D115E
+      990D305C16163A243A6D1B5E9A0D5E9A0D3969191C412B396A215E9A0D51880E
+      4073132B56202A53254C831257900D3866173C6E1D3C6C1C3C6C165C990D4376
+      16599510325E1F1E48322C6858307C6C358173307F6453911B63A00C63A00C63
+      A00C63A00C63A00C63A00C47780B0D2D23407C2763A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C5C970C20482A2569
+      572B7664317D6A53901B63A00C63A00C63A00C63A00C63A00C31550B163C2D29
+      6E5E317E652C7C6C2F7962297A612977652F7E6A267C66287F612C8066277A65
+      277A612D816852921B63A00C63A00C63A00C63A00C63A00C63A00C31550B477C
+      1363A00C63A00C63A00C63A00C63A00C63A00C0B1D0D2D591963A00C63A00C63
+      A00C63A00C63A00C63A00C43740D194F3A2975632476632C7C693180683C8871
+      327F6A297D6537826D317F6831816B39866E2D7F642D80695E525268AC4C61A6
+      46569F4C5FAA4B5E9B7B849EF6FCFFEBF1FEDEDDE7EBE9EEEDEDF3F4F4F8FFFE
+      FDDADEEC94AEDE99B5E5AABDE4B8C7E9A4B8E4819DD96D8DCF92A9DACCD3F094
+      ACDC7EA1D68AACE27BA0DD5880C07490C493ABDC7A9DDA6189C985A1D5A0B4E3
+      5176AC2551884B6FA35B7AA87B8CB7687FAF667EA9677AA05E71946573945D67
+      8873899EBADDDB97C1C56B89A5ADB0CBBBB3C95771A72B6BBB669AE796BAFF6E
+      9EEA234D8E122B552B41781C35802A57B0699DEAA9D1FF5D8CCB0847885692D4
+      9DC4FE81AAF16197EF3D73BD4E6D9D6C7DA03F5174062B5A13437E163D6E2040
+      794664A1243B620C1F3B24436086A4C48BA0B88295AB5979A346759C93AEB8BB
+      D3D188A19E5E7D86416D945483B26F95BC537CA6225985023A64002F5520476E
+      4777A54F86B96992C342709C255F8A6893C234608D1E588473A1D15C8EB82366
+      932E6E9C4A80AA447DAA4980B05D8EBE5C83AC39698F01162F00000214476D57
+      8EB6608EB35F90B35F90B74780AA5588AF3770970E46690D4265336388255174
+      234F6F59799543607A25435D7092A6B4CBCDFFFFFFF0FEFEA4C2C5697C837272
+      776F70703036383B474C424A4E484A5043474F1F2529252B2B3137365A595949
+      4946121A13242A2B393E422E302D1F241F1418171C1E1D313434484F4E3F4443
+      2326272D32343E42483131362726264145454F5356393D3F2A2E30181D1E3A3D
+      3A5D605E595F5F5D61623D3E402A2B2D3B3A3A3131302023231A1F1B3234322D
+      303117182040404596A5A799B5BEA0B4BC9EB4B55A79883F5F7A274A66466180
+      3D64863761827188A66A829D40617D3C5C79617D9A8AA1BC5C7B99375E81426B
+      8D24506E102C49244566416C927695B96182AB708FB46A8AA92D5A7F1F4D7360
+      84A955759300071B001631214E71255A802E5E8414395D09102D303E5C5D7798
+      2A40560915261E273D17243662737DEBF4FFEFF0F8B6C9CB8FB3BA98ADBACDC7
+      D6D9D4DFB3BFD7A0B5DB9FB4D79FB2D4B4BDD87F98C08DAAD3C1D2EDBCCEE7B7
+      CCE9A2BEE89EBEE69CBBE38DAFDF7A9FD2BEC3DAFFEEE9CFCED5BEBBCCCFCAD4
+      B3B0C2647FAD75A2D98FB6E495B7E19DBDE99DBBE89CB6E1749FD35F92CC86AE
+      D6ADC8E7A9C7EA9AC0E588B1DD6596CA5C91C674A0CE6898C26193BE74A3CB52
+      88B22D4B6F56475D6B5B6B55637C4761816A8096DBDFE4FFFFFFD9F2F7C8D6E2
+      A3A3B1535A69172432303D4B3F4D5C242E3C2A353F2934412C3949323E4F3639
+      4842566C7DA5D248607C2C394B595E72313745242F3C17222A0912163D414793
+      8F98B2AEB66A68764955675565794653684D5E75303E4D0E16165E6C77606F80
+      0E161C0A131B28384B3C50673950682D4A623D556A2A31410909160F101B0503
+      04090E121C263C41516092B5ABA7C4B45E7170637E866E8C985E7483576D7A3C
+      69869DC1E1B7D0ED9AB8D49FBBD3A9C8E494C0E89CC2E7B0CCED9CC3E78BB7DF
+      91BBE289B7E476ACDC76ABD979ADD968A0CF5A91C05A90BD6D97C24B709290B3
+      CCC2E1FF9CC3E1C8DCED8BADCB83B2D7C1E5FF7298B86A8FA8BAD2E880A2C274
+      9ABD76AAD05F9DC77AA3C36B94B86286AD5E799760768A6B7D917F97A9CDDDE1
+      FFFFFFDAF1F184AAAD4F6E7F274460021E3A2C4B6347687C4C6A7E516E845171
+      86405D722C485B1B2933191D21263843233F4E314E6245637B3C576D3C506447
+      53662A3947304C6360829E466377203F5122374D65636D867C7E575B6007212C
+      1731434A64743856674561784161794265805476933E55631A2A2C314552394F
+      611B303D0B1A222D38463C48550E171F000005566068E8FAF9E5FDF886A7A848
+      5B6B0B13233D525DD4E2E6FFFFFFE0E9F0557CAA5893CD4BB8FD2AA9FF94C6FE
+      74B5FE2996F2C2DBF5FCF9FCD1E5F7C0D9EFC7E0F68FCEFE76C3FF74B2F41971
+      B91267AE1365AC00519B004498003EA0004FB6166CC94B87DB5290DE6D7FAF1C
+      1651134B8C58BDEC84B3D766A2C95A9DC0689CBA628DAE4B71986A96B5EFFAFC
+      EDF1ED728792475B72657493687D9F657E9E617B9C7E93B5B2C4E890A8D12732
+      4C1C324E698DB32F577E466C907D99B91F3A570A243C445C752F4A66112F4926
+      4562304B6B22415F2C4D6C4B6D89537A944F7F9A27678425617B33647B295971
+      22556A205268295D74315F762C587122536B20547130628638698D2A4E6C3745
+      5974819A47607E385472AAB9D365738D00132929445E4C6683345072485F8161
+      7696546E8E3C5776344F6E28436115273B000814010A170A162416293E596A8B
+      54729B2C57885787BF72A0D66992C86A8FC5587EB03E67942D4D75060E190000
+      00283750526688314865213E5F456184526989566D8F3A55764156725367853D
+      54733E5774122D440C2942324C6B6780A1637A9D4E678736506D152539243B55
+      2845650E2C4C2243654F6D92637FA5536F91435B785D66819B9AABC3BDC4A09D
+      AA707B8A859A9EDFF9F8CAE2E232635724725E23725E2A74572C765D30796330
+      7C6A2B7A642F7D62327F6D30786C317D6F35807231806B2F80642E8269348172
+      31826F2B7E6B3C877538816E33806E2D77692E796D2E796B2E7866307D693581
+      6C317E6A2F7E682C7F65448B29549216205128528D11467D153F7313528A1017
+      412B447D1B5E9A0D294F145C990D1B471F396E1A57920E3D6D0E457C1339701D
+      33681F3C6D163F71124C85124780162A592029531B3C6D164F8714548F134176
+      162E5A133663153C701757951057920E2A4F122650193D73195895105C990D27
+      4C11143A1A30651E5E9A0D205332236957257A6027776126775E53911B63A00C
+      63A00C63A00C63A00C63A00C63A00C47780A09281B3F792563A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C3A68121F
+      53411F6D5525745E27735D53911B63A00C63A00C63A00C63A00C63A00C31550B
+      113A2E226954277660267A6427756028745D2A775A2979642D79642878612B7A
+      63277962237660297D644A8B2463A00C63A00C63A00C63A00C63A00C63A00C31
+      550B2F5E1E63A00C63A00C63A00C63A00C63A00C63A00C1E380843740D63A00C
+      63A00C63A00C63A00C63A00C63A00C193C17215A4925715B327E6B2F7D632C7F
+      63307E642B7A65297C602F7F642D7A662A7C632D806628765F25786035315268
+      B35267AF4C60A5475AA15265A74E609C636F94E1EAF1F1F4FFE2E1E9E9E7EEED
+      EBF1F4F3F6FCFAFAEBE9F3D7D6E7B9C1E198B0DFAABBE495AAE18BA5DDB6C3E8
+      A8B7E36E92CF89A9DBA8C1F07199D15A83BC8BA3D59BAFDE9FB7E67396CF6087
+      C47594CE6888C36B88BD5F7EB2849AC69AA8D06A7FAE6477A0667BA46F82A759
+      6B88445A7B5F6E8E6C8195ADCACDA0C5C69BB0B2D6D0D36D7AAE1E4FA34680C6
+      4D81C13A6BAB18427D0F30625874B645549A1E2A756380CDA7C9FF4A7BC2003D
+      854684CEA8C8FF93B4F04F8BDD4574BD233E730A3D82114E9D3870B879A0D640
+      60952D599982AAEC4A6DAA02163900102A5C7FA197ADC58FA5BE4C74A3042B5C
+      25415D8EA9B3B8CECB8BA1A153778546708F7F9FCB5B87B400456C1A5D894479
+      A5194F7714466E2B5783305E8A23517C1C49753B66934974A0275A834A769F79
+      A3CC4C88B63878A6538CB8548AB82F587D172D45030D1F0A243D204262224768
+      255B845381A76590B36496BA6B9ABF588BB6467FAB4A82AC5581A51B45640D3B
+      5D1141633F65845373922B53715D80956877841E2B3B8297A0FEFFFFFBFFFFC0
+      DFDEA1B7B84F52580C0D153A404324292A272C2D494F52565960595C61414744
+      282D281B201E2C32356065764C53601C201E2629261E21202023212D3230272D
+      29282D2B1F2422262C2D474A523A3C432125264344473C3C3E20242423282931
+      35343B3F3C3336382529294C4F5038393D1F21201C1D1C202423363B39323531
+      2C2C2B2225220E110F0A0B08333331818C908DA6B295AEB3A2B7BB728D9A3356
+      6F4465857291AF486D8A3254734C69845B6F88455D7523445F4E6F8C91AFCA7B
+      9AB851799D567FA637435600000044628381A6D251739C6382A7597FA25179A3
+      406A921C4D70386081526E93416588305B7E467292648DAA658DA751627B1E2A
+      434D6785668AAD2E4D6820374D36475D101C2B46545DD1DEE8E0E2EDBBCBD096
+      B8BE90AEBBBEC3D1D7D3DFCBCBDBCFD1DEE6E7EDD8D3DF91A9CAA3C0DFB8CAE8
+      AEC5E7A2BEE79EBCE69CBBE693B6E19ABAE2A7BCDE8598BC6E8BB7789BD085A5
+      D782A4D77395C742689C5581B89DBCED8BAEDC90B1DB9FBBE46F9ED36897CEA6
+      BFE1AECAE489B5DC8DB5DDA5C1E59CBBE67BA5D55A90C4679BCB7AA6D16A97C4
+      5E8FBD5891BC517AA26165836773906C8AAC708AAA647A996C7B90CCCDCFFAFF
+      FFDAEBF2C6D0D9ADB0BD535B6C24323F27354229384635414F3941512F3D4D20
+      2F403C45593F4F623C566F1B2F422B364654617748596D2F3B48363C462C343C
+      00080D2B2D31BDBABAE7E4E97F7F925E667E6674864F5E704E617C6470892C34
+      3D17252F3043575F738C93ABC5A5BDD9A8C3E1A3C2DC627D962032440F182303
+      04090100040E13191C2530222D4035485970938EA6C4B38D9F996D898B607A7A
+      43595F6084A382B6E07CAACDA8C1D7B4CCE09EC1DF8FBBE196C1E691BDE299C0
+      E5A1C4E699BFE3A6C9E89EC3E686B6E085B2E07EAEDB74A9D75C9DD2619CD041
+      75A4295A80B0C7DFD7ECFFB1CEEBA3CFEDB4DDF96E7A880F19285A7FA0A0CAEC
+      82A3C4A8BED6AECBE36CA1CE78A2C98EACC96A92B6577FA25176933760803E60
+      81677E91B1C2C7FBFFFFE9FDFC9FC3C591A2AE7C879D2E516A1740572D4E6434
+      556B3151682545593D5B72355467192E3B293C482337421F323D44607746627E
+      3D52652E404F3B536447698145698232495E1C2D3B14203054525CA4999AA697
+      98756E73313F491C2F371D2F362B47553B5A7039586D47647A354D5D23394545
+      5B6D495A6B3D4D5D2F43501C263114191F21333D1A2E3C020D1848585CD2E7E7
+      EDFFFFA2C7C1536D762C425FABB9CFFFFFFFE6E6EF7B9ABE58A4E63FB2FF42AE
+      FE7DBDFD6DB4FF2096F98CC7F5F3F5FAE0EAF8C2DCEECFE0F3ACD9FE8BD0FF69
+      A6E9125FB41A6BC12475D22F80DC036ACC0769CD317FE14587E45E94E9538EE6
+      88ABE19CA0BD6291C571B9EA94C0DE7CB3D277ACCB77A5C2809BBB4C7CAD1661
+      9D5D87ADDCE0E4F1F3F28DA1AB6E7B8C7078915C72936782A26C83A35673988F
+      A6CD96A9CE3E6083375B7F274D722B4E6C455F7C375575466381617995758AA4
+      58708920425D22436035567245658137587319425E2A546D2F57702E586F2B5B
+      701B4F65224E6828506B20475E214F641A4D65395F7F4F74955F7F9F617A9B67
+      7C9C8296B3697F98607289A3ACC47995BC6489B6265178324F6B7F89A4465C77
+      062648485F805C6F913B56793554764663843C526D0D1827040D1C1224370E29
+      3E466180748DB446689523527F2E59853F69974A75A44D76A65A7FAA6283AB60
+      7B9F3C465B0C0F144858736A7B9E4C5D7B2E4664394E6E3B567512314E18354E
+      465D7920374F00172810233607192E1A3149415C78516788647CA0475B792A36
+      513251701C3F5F375477587397617BA04161872044665D6C84AAA5B5B8B5BF9C
+      9CA874808F90A6ABD8F0EF9DBAB92D6054266B59256954256955236B5627705B
+      2A755D307C682D7C672A7A60287464317E69317C6B31806E32856F31826A2F83
+      6E2F7E682F7F66297E62317766327C65317E662A7C602A7A642E7C662878632E
+      806A32856B2E80692B7D6C2A7F6A3A874F377A3D3D7724326423437816467A12
+      224A1C315F1F447D1B42771651880E20451733651C4D8815538B1145770F1639
+      23447D1A538F134C83124679111A4021427A17538D11477D14528B1016422938
+      6E235E9A0D447810518A0F18462C356C2157920E3F6D0F457A122D5F28376C23
+      51890F497D0D36661747851828602D19554023665329785A24745B2978605191
+      1963A00C63A00C63A00C63A00C63A00C63A00C47780A0B2A1D3B762263A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C5C980C
+      14422C1C61551D6E611A6E5B24786851901C63A00C63A00C63A00C63A00C63A0
+      0C30550B113C30266A582D71632B7364297668317E6F30756B2D78662B7D6D29
+      776B257661277A6B21716229766152901963A00C63A00C63A00C63A00C63A00C
+      63A00C31560C1A482963A00C63A00C63A00C63A00C63A00C63A00C406C0963A0
+      0C63A00C63A00C63A00C63A00C63A00C568E0B133C2D26695326745A256C5721
+      715B22745E28776029796327715924775B26765A20765A207A6022765E227E64
+      3935586FBE556AB95269AF4960A74D5FA15164A24D62A4616F9DD7E2ECF4FFFF
+      E2E0ECE7E4EBECEBF0F2F0F4FFFDFCFFFAFAE1E1EBB6C2DFB0C0E6B6C5ECBDC9
+      ECA8BBE58EA8DCABBDE39BB6E593B1E55A82B97591C1BCC6EDA7B6E49FB3E087
+      A2D4678DC87090CB8CA6DA849DD18096C8718DC2879ECD8291BF546A99949CBA
+      A7A9BF3E5A823A5A847A88A3767E93818A9AAEC5CAA5CFCEA1BDBB748AB13059
+      AD3567B12B609F225CA1487CC1315796344E8D51639F262C5F3E47886681D41C
+      3A7B204E94609DE993BEFC6894DA2D66B5214B88335B9D3E76D34881E26B99EE
+      8DAFEA54689524457B5082CA3465A9465B8058627B3861833C6890254B7A0016
+      40062047324C782A4B707A9CABB7D2D29EB4B5678489587A925A84AE4780AC49
+      83AD4A85B13678A8255E8C103E660F3B60224E742C5479245176255C8122597F
+      155078316794356591376F984170972745691F405F163F550C2F441538544174
+      9A3C7AA526608A3E719A5589B05990B95189B26E98BF588AB1588CB16A9DC121
+      456203132C224966305D7C3457731639522642551D1F300A13301336547598A3
+      F5FFFFFFFFFFCEEAEA85A7A955595D0E0D0D121817252E2D444A4B464A4B484C
+      4A3A3C391E2424252F2F3D40495156632A34371B2321282B2B282B2B1F23221F
+      242431353A4749503F4244272C2E2A2B3227272D393C404C4E4D33312D212223
+      32373C5E61676063684B4F593637400C0F0E1216164144474040442A292B2828
+      241415100201013033344C4F54343939171C1A333133848C929EBAC6A1BAC3A7
+      BABE8199A43B5A75637D9B9FAFCD5D7B9D2346692F4B6852667E51657C153551
+      2A4E7088A9CB88A8C85B80A9567B9F455F77586E8D5B7CA53E6A8F6F91B24B75
+      9D4572A1789CC94C78A20839606D88AAA8C2E2436F912850702B435B2A3B4C54
+      6D862838491A24356B84A86787AC25445F142E431F3044213244596F7EC4D1DF
+      E0E5F0BFD0D5A5CACB8FB1BAA7B0C0D3CCD9EFEAEEFFFEFAE3E0E7ACBBDAB2C6
+      E5B1C6E69BB9E39CBCE4A3BFE69DBAE49FBDE3B7CBE683A0C73E6FAA719BD68E
+      B5EA97BAEB94B6E894B8EA79A0D330649F4779B787AFE597B9E77BA5D9568DCA
+      A1BADEC1D4E893BCDDA1C1E1AEC6E799BAE487B0DF80AAD86092C65A8FC27CA7
+      D17FA6CF719CC8759FC849799F2A5C876287B37F98BC768EAE7C90AE64789864
+      768DCDD1D4FFFFFFE4F4F5C8DADEB2B9C64B5564212B37222D39363E4E2C3643
+      25333E2A3A4A121F300B101D1F252F313F4E2C394A3A44556E77866C717E585D
+      6C3A4454465565858897A6A1B1DCDAE1E5DCE38D8B99364454374B5D74869D73
+      89A83549630D19294A5C716D84A047607D647D98AFC6E49DBBDE31404F030A0F
+      3C5162495C6B1113190606082A333D3F4F641A253A060F18476766B4D4C193A9
+      9C5B767491AEB6AECAE96995C66794B9C5D9E7AFCDE683AED28DB4D691B8DC8E
+      B7DB91B9DE90BDE296C1E4ADCEEBB0D0ED9DC1E492BAE195BDE19FC3E67BADDC
+      77B0E47AAFE2306EA22D638E80A4C17DB1D37DA8C74A4F57010000201C1B9BB4
+      CFA2CBEEC0CFE3C6DAEFA8C8E69ABDDF8BB2D37DA5C76D99BD6994B7648CAD45
+      73933562854B6585566F879CBBC4FFFFFFF7FDFCA9CACCA2B9C0BEC3CFA9B0C4
+      6C81955A75874760743B56694B647B3E5B6F324D5E233B4A243C491D333D3248
+      5B455D773F55692A43545679915277901E3C5225374B242D3B0D0B101F232765
+      62686A676C63606645444A15171D17232A192F371A29331D323A26445248647D
+      50697E445B6C415060404A5B455564525D652F3236131D21293B44253745010C
+      1727323AB4C8C8FEFFFFB1D7D17C9EAEB0BBD5BABDCFB2B5C49AB4D953ACF63E
+      AEFF58B5FD6EB9FD7EBDFF48A4FD69B7F3DBEAF5DEEAF6CFE1F1D7E4F3B5DEFC
+      A9DDFE5B9AE21775D81A86E71982E52784E63386E65395ED609BF1ADC7F9B4C8
+      F879A7EC84B0EC83B4F18ABDF19CC4E8ACCFE69DC7DD99BFD58DB1CD739AC152
+      8BBF4A7EB40B3A6E385876D2DEE4FAFDFCA6B6BA6B7C88566A855773986D87A7
+      6984A48298B88FA4C74B6D9030527659789C41607B0C263F475E7B577598506F
+      948293B3667F9D355B7A436380496684466683476985486A88243C550E172B19
+      2D421E41593D6481496C8F416487213E541A36495173985B78A07287AB8290B1
+      7588A95F77983C5C7A254262445878748CAA4A6E9A315A8A355E863B5C7D596B
+      8939516A001A37263D615A6E93677DA052698D385476324E71283F5C1D334B2B
+      496334546E30506C2B4F703A5E834A6E9C4B73A548719F375F882F567F476992
+      5C7B9D5E83AC526A8C1B2127030E1A314764576B8D56698B677A994F64822C43
+      5D5F6E875D738F3A4E6A17294016283F1F2D453D5168546B8B6980A5738BB03D
+      506C3F53727595BC6885A947658A2B4C71244B70254C703D5C7E8089A0B3AEB9
+      8C8E9E798994AFC6C7E7FEFF789A952D6B56357A66296E5B2E725E2E705B2D73
+      622C7460257661277560337E642879612579622C7F6A317A642E7D5F2A775526
+      775E2777602877632B7A622A765E246F622B77682474661F755E1A6F6121755B
+      19745921785B247961297E6A2880681F7D6021775D5F9D10387437599712487F
+      162B53165E990D275124457F1B5E9A0D2950145C990D15402F47821E63A00C26
+      4A16487D1424543540771C528A0F294F123C6E163A6B2238691E467C142C591A
+      2F601E457F1B42771644770F204718386E1B4F8A16528B1044750E15351F4580
+      1B4F8B165C990D3D6B0D0F3124427E233D792C1E624B2A765A2C775B27765E28
+      786051901963A00C63A00C63A00C63A00C63A00C63A00C47780A0B2A1D3B7722
+      63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C2751161A55431B6D5921736021745B257761508F1963A00C63A00C63A00C63
+      A00C63A00C31550B143C2F2668592976652A78612B7968328172357C72307E6C
+      2E806D2E7F6A28786325776025756020635458951063A00C63A00C63A00C63A0
+      0C63A00C63A00C335A0E174D3E52921C63A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C63A00C345D0F1B4D3A236B5327785E
+      2570582171571F716322755D29765E20745824775E20755B1D785D277A5E2A79
+      60267E6140426179C95C74C2556CB75067B04F64AB5062A24F63A35366AA5766
+      97ACB6C5F5FDFFE6E2EEE7E3EBEBEBF1EEEEF2F7F7F9FFFDFDF0EAF2BDC3E1AB
+      BEE4B1C5E890ABDE96B0E3ACBDE79AB2E297B1E085A0D67E9DD684A0D7809CD0
+      849FD4A1B2E3A0B6DF789AD16887C2607DB76F8DC57C95C997A7D39CA8D37A8E
+      BC6D86AF657EA7647BA97489B243648F687B979697A3777F9581A0B4B0D8D795
+      BAB96388AF426BB73769B85C90D8608BCF314D8B0209261E1F3A4C588E465B9F
+      1F3A75010C2B1B315F5E8BD86F9EF14471BF0F4086000A49113E874980D86B98
+      F480ACFF537FC41D3D77112E652C507D6782A692A7C696ABCA7B91AE6881A25F
+      74944F5E792E486D2C4777174276335D88869FACB6C7C5A8B9B76185854F7488
+      7F97BF8FB1DB6191B94E85AD4A87B21E5F8A15456C295374426F8F5A85A83364
+      8B24587E3369942E648F174D7325608A2C63891F4A6E3F688D5183A83373991A
+      557C4D83A771A1C33168923E7099719BBF5F94BA4982AC5689B06392B95588B1
+      407BA725597B0D37501E48661441622E516D2B3D5100091D072644173A59072A
+      4E0C33506F91A0DCE7E7FFFFFFEDFDFCAACBCD3C4748050C0D1A222132373A21
+      27273A3F3A4A4D4F3034382A2F302D35372C35393A4042494A4B373B3A212523
+      282D2F353A4032343835363A2B312F242B2C2E3136191C1D2626253837363334
+      35464C5058636C5760684A4C533C3F442C333820222520221F2B2E2A37393C19
+      1A191214112428262325253E3F424E4E5533343A272D2E131516272423697376
+      92AAB494ADB7ACBEC2849CA9416077647999A8B7D38399B9395C7E1B3E5D314A
+      6343566E213E5C264D716D93B887AACA759BBD4E76972E4D69264360365A7D72
+      95BC48719637638C809FC98BA8D33C69951E50767490B05269800C2A413D5E7E
+      26406000040E07090E0B1F32405C7D8098B95F7B9B102F4C283D54394A5E3646
+      58617686A7B5C3D8DEE8BBCED1A4C7C895B4BFA1ABBBCECAD8E6E2EADCDCE3B8
+      C5DDADC2E3B3C7E7A6BFE4A9C2E7A3BEE59CB9E0B9CBEAABBCDE4370AC6993CB
+      9DBEEE94B8E799B8E59CB8E69EBDE8A2C2EE729BCE2B578C325D964D81BC5185
+      C07DA0CCBCCDE593B9DD97BCDDBCCEEBA3C0EB91B6E58AB3E080ABD96696C857
+      8ABC6D9CCA7FA6D280A6CF7DA7CE34709D4073A2849DC8839BC17592B5758FAF
+      758CAD697C9B71859CA4ADB7F9FAF7EBF8F7D6E4EA929EAA2A38482533465861
+      74282D380E181F565F7145516629425A43617D70819D4A597125303F4E505E67
+      68755255665662738D96A8BEBCC8A8A3B09F9BA6CAC1C9CAC2CA8588962E3F52
+      273A4932495952698760718D3F4F6223334518283C2F465C678098596B880000
+      0910161D5D728949586C0B1117000000131B25181F2A01040700000200030C46
+      5D5CAECFBEB3C6B86A818159818C779DB87D9CBC7E9FB96493B26390B36992B3
+      6790B77EA2C497B6D79EBEDFB1CDE8A0C3E491BBDF9FC5E795C0E399C2E59AC2
+      E597BFE38DB9E38BBCE882B8E84181B5065385075683225987335375273D5331
+      3F52C6D6E4D7F3FFAFCEEAA6C9EC8DB9E29CC2E198BDDB8FB3D286ACCB74A3CB
+      6C95B92747612043626583A2647A9458748B94A8B2E9F5F3E8F7F6A4C5C596AC
+      AEC8C9D1DAD9E8E3E4F0C2C3D145515E152E3D314D604F677E3B586C213E4E2F
+      4F644C627C374B60374D5F5871865E7A943354702F4F651F333F1F2731221E21
+      110E0E131B212031391929331B1F271B161B1E2024263B43263C481E36401D40
+      4E3B5A7141596F32465434465037465539495643494D2824280D0C0F141A1C27
+      3A47283B4E0511201A2E38A4B8BCFBFFFFDAEFEC8CAEBA37576A313640627497
+      5EB5F53FB5FF5AB6FE84C1FD9DCBFF64B1FE50ABF4CFE7F6E0EDF5C8DCEBC5DC
+      EFC6E7FDCDE5FF3E95EA2F9DF930A4FC298CEC478FEA70A0F4659DF47CACF49A
+      BEF76BA2EE91BAF4D4E4F581ADE181B3EBB9D9F5BDDAEDACCDE4ACC9DE9DBDD6
+      71A1CD6B99CF4868952544615C7A935D7D9FBDC6D0FFFFFFBFD1D06986913859
+      7B3E5E888194B57188A8516F924A6C8E3A5F824062843A5A7825425F233F5C45
+      62876380AC6D85AF516D923D60815775935774915273916A90AD6183A11A324C
+      18293C112439061F34304B644F6F9040698D4467882C42583C4D694863823E57
+      78394C6B1B3248213F5C677D9E8697BB6079A135577E26486A0B3558446E996A
+      89B759749D354F70132B481D3557294367435F84566F934762833351713D5D81
+      4462833856733D5E7B5B7C99577D9F3D63833B5C7F345A873A6595426A982D57
+      81214C72385C7F55759559718F273A53122236081F3219334C435A774C627F3B
+      556F576B847582A0526A897288A57083A3283A55172941596C8A7187A97F98BB
+      7B90B52D3C580F1C2E39526F294F73123B602E51744364864363865A7396707D
+      978287947E8E97B4CFD0EAFFFF658A812164502A73602F736030726027725A2C
+      715F2D7B612D775D2D7B6523745D2A78642F7E642C7D622A7C6233826B2E7960
+      29775B23775A2A7A6428775F24795D2376612A786323765D2576651D76611E6E
+      62237862247A6221715E21795F20745E20755E1D715F1C735F2D775E30744629
+      6537528B115C990D244A15204E26377024467E155C990D2A5316265A273D7A25
+      477F1556900D1D441C498518467F1C4B81105C980D244D1F5591144379172E5D
+      1657910E1C4D2243801A63A00C345E0F4A811015472D44801A63A00C38640F38
+      6517174836407A1D63A00C37620D1B441D266630165E43207056206F571E664F
+      26765931786050901A63A00C63A00C63A00C63A00C63A00C63A00C47780B102D
+      233D782563A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63
+      A00C568F0D1A48361F69552A78612877631E705822705A508F1863A00C63A00C
+      63A00C63A00C63A00C31550B113B2C1F644E2A7F6325705B246E5B27705E266F
+      5B27775E2E7C632879652677692E7A6A206659316A2763A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C2044171C5B4042893A63A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C173B1D205B48286F
+      602B745F20736220746021765D23776025765D1C735925745F236E5824735920
+      735911664B1D71574E4A6279CD6179C95C76C3556EB95268B25466AC5264A650
+      62A35263A54F5E9693A1BCF4FFFFE9ECF5E3DEE9E9E7EEEFECF1F4F2F4FEFCFB
+      F2F0F5BAC4E096ABD9A2B1DDACBBE3A4B9E7A2B8E68EACE191AEE58CACE26B92
+      D16E8FCD819DD27091CC88A4D87396D06186C0839AC8BEC8E7B7C1E6A3B0DBA0
+      B1D992A6CF5576AD7C96C4A5B0D48795BE516B9A5C7395929BAB5D6F913B507B
+      738AA1B1D5D2B0D1C97B9BB73062AA1F4F8D2743721F3D6B1B3255151D34171F
+      40132C5F00205200173802132F1025511D386C123B732E62A15E84C62C65AF17
+      55A0365BA22B42821241863166B83B64B529447B7084A79BB0D1A1B5D1A8B6CF
+      9EAEC78C9CB49AAAC0808FA71C22370E20413F69A361779D8298A5A5C5C8A5BC
+      BD7F989C637D8B8395AD99AFD15185AC1E5C8438719A4D7FA62D597C2A547A40
+      719831688F1D547A36688F46769E356D955B93BB5F95BE4175A143729E42759F
+      39779F1B567C1F4A707597B776A0C02A638A45769F7CA2CA91B2D6709CC14780
+      AB558AB34A7DA622597E205575315A7A3A5B7C274B671833492137532C56791A
+      4264183A5B062E50173D5D537486C8DFDFFFFFFFECFFFFB4D5D2788D8C40454B
+      1F2026363B3C343A39282E322B2C322E2F33343B3F30353A4644465C5A5A3033
+      320C100E2226283035372F33352F34392326263035324148482A2F3110121226
+      24253232352F35384850553137370F130E1116101116122726254040402C3533
+      222D30252E35252A2B4344444A49493A3A3A212428191B221B1D232327292123
+      24202021575D629FB2B99CB6BFA9BDC292A9B35C768961778D8091A67F97B25B
+      7EA32A507122415C2E496212324F295075557DA06088A75A7E9F3F5F7E0E2C46
+      1B3B596F93B953759B2E577E648BB67F9EC96C92BF23568014395957687F4758
+      6C1C3F5B688DB65E7C9B0315281120332E48643C5B7965809F4E6A8743556B4F
+      5A6E3B4A5E071C2F21324192A2B2D0DCE7C7D4D8B1CBCF9FC2CA9EB0BEB9BBC9
+      D4D4DCCCCFDDB0BEDAA4BDDFA4BDE2A9BFE4ABC1E4B7CAE9B1C6E37998C46B8D
+      C296B3E18DAFE186ADE290B3E498BAE593B6E38FB3E17CA4D86887BA9B9EBD6F
+      7E9C284C79A2B2D0B3CDEC7BA5D1A6BFE2A8C3EA96B8E991B6E689B3E184AEDC
+      6C99C94C82B55F94C376A4CD87B0DB6997C8265D926385B891A9D284A0C5809A
+      BF7F98BB7B93B3788DAE627B9D58708F9FA9B9FBFEFDFAFFFFDDEBF298ABB339
+      4E601D2A41323A483F4A552A3D50566A877393B24A6887384B6A3E4A5F36434F
+      383E4D4344515959639599A5AAAAB6B9B6BFC3BFC8BDB7C1BAB2BBBFB5BFC4BB
+      C4888B972C3A4C26394A384C6151637B72829A4B5C712B3A4B3746582C3F501C
+      2839384353596B7C3543520B0F17252E3E364759101E2A010A13080E1302060C
+      00000100000031423D97B6AAAFC5B46C857B50757B698EA16286A15D83A06188
+      A75C84A4668CAC6A91B17EA2C096B6D391B4D48CB0D495B8DB97BFE395C0E3A4
+      C6E79CC2E59DC3E5A0C5E691BDE197C2E790BEE7689ECD508CBC5896C584BBE4
+      9FC5E94E779D36638383ACCE88BAE47DAED58FB4DA93B9DD90B9DBA8C4DB9BBA
+      D375A8CE86B0CF57627613263E315A7862829E617B944D657D7691A1D6EEF2EE
+      FFFFB6D1D493AAB2A5B2BBEBECF5CCCBD71C2E381C3D4D3B56692A3F4D2C4456
+      1F3A4B344F643D556B3C5065354E603853652A44592A465B27414F182A34282F
+      37282C321B2B3529485D2438471B2430273D4D2839471B1A1F1E272D253F4E39
+      586D4362782343540E29353144524960713D586A455869272D330C151918232B
+      1C262D1A242927343F2A3E4E0E232F1F323F8599A2DFF8F5D2ECE68CAEAF3A4E
+      5430425951A1DD3CBBFF50B5FD70BCFE7CC1FE7BBFFF4AA5F5A5CDF1F7F8F9D5
+      E6F1D0E2F0ECF2FC75B8F21793F236A7FF1792EF107DE22480E82281EB2F89EF
+      64A1F674A6F36AA1F1A3C6F8DCEBFAB2CCE98CB2E3A9CAEECAE1F3D5E8F1C2D7
+      E69CB9D88AB3DE5D91BD11426A5C738D799CBF4570A0506F9682A4BBEAF7F7DF
+      EAE785A1AB436682405C835A6F944A678A4665884A67883957794562854F6B8D
+      0F2D4B1D35526B80A57891B85773975774945E7C9A5D7D997397B46B92B0213E
+      550C20331B314318283B182A400E283D294764577AA07498BF556E8911233232
+      485D2F465F1D324E001628001629455C7C798EB16982A5496486223C542D4F71
+      6990C17A99C95D7FA93353783E57793A4F701D365722416526496D2E51743455
+      7522415F092D4B153C573E5F7D516D8F36496514283F1F3E5941638455779C6B
+      89AB6686A65E85A96285A84A6C8926425D1F344E3445602E405D172F4E112C49
+      1E36512037503E536D6B7E9B6A7E9B617C996C86A8647B9A3248634B62807F94
+      B48096BA4D607F1624350E1E2E244562456B916083AB6280A54E6C91405F873C
+      577C60758793A5A9C9E0E2BDD8D6406D6123634B22694F2069511F6A54206F5B
+      26725B206F5726725E23775E29775E27785F2B7E6228785D24745327765A2E77
+      5F28745D24705B25745D27745825776125776324746023755D20735B22756123
+      756226786126756124765E28715822745823775A237056227062267366307851
+      367C435E9C0F437A182B53165C990D11402F5491155E9A0D214713366214194D
+      36508F1863A00C2146122B5618164B314D891663A00C1D3D12173F2120572E3F
+      771651890F214B16113C23316B214B851250870D0B2F18205A2743801B4B8512
+      50860D143B1C3A751F3D7C1F56910E4F860D1039202065381266511B6E531A6F
+      5420735724765E30786552901A63A00C63A00C63A00C63A00C63A00C63A00C48
+      780B102D223E782463A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C264F1A1F5E4C2674632B7A61176C5E1F7159227164508F1A63A0
+      0C63A00C63A00C63A00C63A00C30550B0F3A2A1961481A6F541C6E57206F5D26
+      6D59256F61287A6827776123746129736320635023552F5C990D63A00C63A00C
+      63A00C63A00C63A00C63A00C5C980C113D2C20694F2E7D5A63A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C487A0C123E2C1E
+      644F2D765E2973602A7461287762216E5A27785D25755F2B78652F796229715B
+      256F621E6A4F0F62491870574149677CD3647CCF5B78C85A73C2566EBA546BB5
+      5267AF5267A94E63A34A60A54D62A46A7C9FD3E1E9F5FAFFE7E1ECE6E3EBEAE9
+      EFEDEDF2FCF9FAF5F5F9D6D8EAC0C4DCC3C5DCC5C8E3C0C8E29EB7E295B0E799
+      B5E69FBAE8A1B6E25B82C2688CC8829ED67F9BD49CB2DE9AB0DB7D95C87B94C1
+      A4B4DD859FD689A5D68198C56177A44B6E9F3E66A07081AD9195B17D8BA3617A
+      9952688E5060887C8EAABAD8D8B1DAD57D9FAD909EAF647EA60B356D2D4E8639
+      568B08254C2B4C7F3C67B20F3B8A041F54172237051327315786ACD1F2CBE1FF
+      A8C3F75686CF114785052E644672BA78A1ED7294E41F428A47608E97A5C9B4BF
+      D88999B3707D9B95A4BD8C9EB79EACC3575B6901000347648C7699CE3B557A25
+      3E5592A6AEC1D7D98FA8A8647D81687F956085AB386B9B2A689430719A2F638D
+      2B58812D5E894377A44F82AF3F74A129648D265E833261845C86AC5C8AB65181
+      AA4F7EA74978A13A7198041F43161E40849CB876A9CC24608F2C5F8A749BBE95
+      B6DD6A98C16A9CC54D85AC14496D3F628542688C305B7E3256750C294933537A
+      4F749D0D3B5F17405F2C506E173E5D1C436242667B96B1B7F5FFFFFFFFFFDDFB
+      FA9CB5BA3A4042131512252B29343E3B4045432B2A2C15151425272621252527
+      2A2C3C3B4037393C41444A3B3C3F373A434043512F3034414645535A5B3F4247
+      3131382E31323031313135362D30301C1B17221F1B3739373538361A1D172632
+      355C6D7E58687841505C192224222221403F42232426161B1D2C30353033342F
+      3535242A2C1012130809083E424288969E9DB4C1A4BAC2A6B9C06A8191475C71
+      63778E96A9C595B1D1467297143A59172E492A4B6B668EB5496C92223D5C607A
+      983457770E35565B81A36584A733557A3665936893C26B90BB4F79A420476C34
+      506973889E33475B2443619ABFE87093B41E3D5A425F7D2A4460132C443D556E
+      4C5F7540506423364A2F3D513840531C212B657585D4E0EBE4E7ECBACECFA6CA
+      CBA2B9C3ADB4C4CDCBD9CFCFDDAEBCD698B0D79AB4DCAAC2E4ADC3E19AAFCD7C
+      95B79CB6D89CBAE38AACDD83ABE17FABDE8FB4E299B9E58EB0DF719FD34F83C1
+      ACB7D2C4B0B6586283ABBBD4BCD2EFA2B9DCB5CAE99CBCE896B8E897BBE78DB4
+      E185AED96C9CCB598BBE719ECD8AB9E979A9DE1E46701B3E6A7B9BCF93B1DE85
+      A3CC86A0CA88A1C6849BBC8094B37A8DAC697EA25C73977B8CA4CED2D5FFFFFF
+      F7FEFEB4C8CC75808B3C495F4D5F76516678445D785874973E54707A89984C51
+      5E0F1423354253343B49888A92CAC8D2C3BFC8C2BDC7C5C0CBCFC9D2D3CDD7CA
+      C3CBC8C1C9D0C6D1767A8B2F43583C4A5D161D29435066677B972232421E2837
+      38435437455461798F40586C080D14080C18273348475B6F192B3A1925353C49
+      581A272E070E140A0D1400000411191E698E80B3D8C39FB2A642605F44707C77
+      98B26D8DAD5C83A154809D5A86A36D92B26993B56795BA7EA3C78BACCB90B1D2
+      A3C1E1A5C0E09ABADD98BFDF98C2E69FC5E7A2C6E6A2C7E99BC5EC90C0EB84B9
+      E49AC3E5A9CFF278B0E22862911B4D756F92B880ACD083ACCF93B4D998BADCA5
+      C5E098BCDB9ABCDA7AA3C36D92B37892A93F667E33607B567B994D6E8F42607F
+      688599B8D1D6FCFFFFE1EFF193B9BE89A4A7C0C4CB72838F2D58702741541623
+      2C43515E364D6208253A3E556A566E863D5A712B485C2846592C48571B2E3B1F
+      2B36243037243B4832566C3D5E76354E63202F3D2335462644572338481E2631
+      171A272A3F4F3F596B37536428424F2F49592F50643B596D414F5C26303A2340
+      4F26424E171A1F14151822313B2B3F4D263742243545253E5356707AC4DAD6F8
+      FFFFBDD8D2567B81477BAB5BAFF75EC1FF5FBAFF72BAFC90C2FC6EB1F75EA9EA
+      C3DFF2ECF2F6CDDDEC70A9E01189E92DA3FC2594F41989E93998ED449CF42987
+      EC0C72E61D79EB5D9DF49EC2FCB1D0F9C3DBF5C7DAEE8DB4DB87AED79DBADE91
+      A9D5ACC4E2D8F3FF9CC0DF1049812150817592B94E85B82971A71A659C1E5E90
+      7293ACD6E8EBFBFFFDBBCDD257778D325173496283536A882440611C395D4F6A
+      8D6B88AB304F73172B474F556B5F6F895774926C86A46783A27395B37095B422
+      354D0005172B3A4B384A5C38485C41526C384F6D3048653F58785A779A47607C
+      0F23350412212032483D51713B4F6E233D5A092B4C0F305029455F1D31421931
+      494E76A5759ACC7D9DCC6482AF11243E1F304A526F954C6383344C6915385C15
+      3E6424496B264562415E7D4F71914D6C8C2C48650D2138293C555F7C9A83A1BF
+      7F9BBB7B97B592B0CF82A0C031526E2A4C6A557192536D8E445E7F465D813752
+      784761813C506B293E582D4662324A676C819D93A4C18FA2BF7E95B4445B7756
+      6F86738BAB40547A0D1B2E0F202E3551705A7AA07D9BC16687B03F638C2F5784
+      385C83607A8AAABFC1E2FAFB94B0AD2D6352236854216D4F206751256B56266F
+      5A21765F2976602272592577631D6E5A28755E26785D26765929755B2C795822
+      775826775D2D7F64307A6835836B2F7F65317F6A2C7F6C2A77682C7962217058
+      1C73572675612D79622A775A24745929765D28755F26715326745B206E5D2377
+      63266D572470572B734159961163A00C254D1815453429643148801663A00C31
+      5C161D4F3F3B76324D87155C980D2650193E78243D77244B83125C980D1F4923
+      5E9B0E417A182B54165C990D2051274D8D1763A00C284F13447911154D354C8D
+      175E9A0D2D54102755161752394F8D175C9A0D274D111039281D624C17705424
+      79612A7D62277D61277C69317E6A54921D63A00C63A00C63A00C63A00C63A00C
+      63A00C47780A0C2C1F3B772263A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C50860D174A3819684C2274591F7056186A5427776526765F50
+      901A63A00C63A00C63A00C63A00C63A00C30530A0E31241E5648175F4B1D6451
+      1F65502066532669561E624E1E5D4B1C5644154738204B1C5C980C63A00C63A0
+      0C63A00C63A00C63A00C63A00C63A00C346213154F3E216F572875584B8F1D63
+      A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C284E12
+      194F3F256A4E2C755A2C7062286E56206E582E745E286B5B26715A2B7A5F2E7C
+      612B76602F7A633180712D795F2E79623A426983D9647FD5627CD05F75C95B75
+      C5556EBD546AB85169B44960A9475DA24E63A84B5EA25A6996BECBD9F7FFFFE3
+      E0ECE4E2E8EBEBF0ECEDF2F5F4F6FFFCFAF6F6F8EBE8EFE3DFE8E9E3EACCCEE5
+      839FDB82A5E1BECEEEABBFE490ABDB96AEE199AEDD96A8D36F8BC17794CA8EA1
+      CE7B95C4A1B7E4B4C4ECC3D3F88098C10832644E6EA0869ECD7F91BC6D7DA764
+      7B9D4D6E95516C957381A33B4F7B34486D9EB4BBD2F5EEB9D5D493AEC63E639F
+      274D97375A9E1F45813E70B25C97DF5087D92442841A26481C30521F3B687795
+      BDBAD7FFBFDBFF7196E0102A601F3469588CD877A1E597B4F45485D61A386826
+      20243C394C2D45791E396A9AA7BDD9DCECC6CDDF49567900011A252E482C4C7C
+      092F63132F5F253957788D95CDE7E7A6BABA6A81865471845D80A76494C1457E
+      A4356B963C6E9A3068924B7EAC6C95C35B88B74B7FAC4E7EA6385F8418486D2F
+      6086537EA56C99BF396F9949799F466E930422493B62866A82A4203D640F426C
+      164C762B59816592BA5288B21140650025460A3357365D835B80A55A7CA2304F
+      750D3158284D73365E81375B7C355878144362244E6D2B4C6B102D4465828DF8
+      FFFFFFFFFFDFFCFDA3C8C94F635E161C15373A365F625F27262308070533353A
+      2D32370D14121C1E2045424A5C606843484B272B2E35383E4447494143483C3E
+      4338383B45444940414433383940474B464A523A3A3D3431303C39372F2D2A22
+      28263B47524F5E72586A7B3B474D252A291D201D3032332023262325274B4D4D
+      494B4A333B37151B1C070807272F35363F49373A3C687175ABC3CDA7BFC8A4B6
+      BA8299A5526A7F546782869AB797B6D66990AF2E4D660212294556798CAAD53F
+      5A7D3D5F7D5B81A01F45663B6384658DB04C6B8D1429463F6189709DCF5B86B3
+      3866912F52705E72887D8CA11A3149426586B0D1F55D84A9355B7E324C681C2F
+      48253B54102B440D293F5462766A738723283500000211273A4E677ACEDEE8F8
+      FAFEBDCBCEADC9CDA6C1CA9CADBDC0BFCFD5D0E0BBC1D7ADBDD3AEBDD7C1CADF
+      CFCED8A3ADC39FB9D89BB8E094B3DF9EBDE399BBE387AFDF89AFDF93B5E17CA8
+      D95082BD7D90B6A49CB95E74A397B2D1D3E1F5C7D4E9B7CAE6A4BFE79CBBE795
+      B5E285ABD884B2DB70A0CC5C86B76994C55C8DC03658851E2A4845587D7BA1D6
+      87ACDD87A6D284A3D089A2CB879FC5869BBE8194B47287A9637DA3375175313D
+      4EB1B4B9FFFFFFFFFFFFD9E9EC899CA51E3A4E263A502A40502D455A7D94B1B8
+      C9E048556A3D445690939FA7A6B1C3BFCACAC5CECBC5CDD0C9D0CECBCFD0CCD2
+      D3CED6D0CED3CDC9D0E3D6DFC4BFC8546172334256343E4E2F3A4B3442521C2A
+      3648586E5D708A3F51655065784D5B6A565D6E3A43560E19261F303E3F4F5E2E
+      3948252E3E394450262D360C131A0F1521070B1706161C496C63A1C7B1C0D2C0
+      5F79743C67727397B17897B76786A45A829F5786A94F81A75C88AD6390B06A95
+      B47EA1BF92B2D285ACD09BB6D6A6BEE196BCE18AB7DE98C0E4A0C6E6A2C8E7AB
+      CBE8AAC8E8A4C6E790B9E28DBBE68CB8E24779A71A4E7B6089B189B7DE74A7CD
+      A2BFDEABC7E5A3C7E2A8C2DB5E87AB4A81A976A2C5496B8605283C224B66537B
+      9D4B71914C69855E74889AAEB5FAFFFFF5FCFCA5C7CA85A1A9A4B0BCA6B1C5A8
+      AEC2A6AAB8C2C4CEB2B9C45062753B556C4B677C355467223D502A4154355162
+      2943511B242F1C26302A46593959722B4A6029495C2943542A4455345167233F
+      55263E4E252F3B0C101A0E222A4A6B7E688AA4384C5C1B2226202B3127343C30
+      4655224356244352242E371719211A2E3B2439482E3E4A31485A37586D253A4B
+      374752A3BCBDFFFFFFD7E6DF7D9FA8578FC354A2ED77C5FF8AD3FF86CFFF8DD1
+      FF5EA5E44D96CAD6EEF3E7EAF75B83D22E8DEA28A6FA3B9FF26AB7FA58B8FE6B
+      BBFE83C1FC70ADF51A7DE70972E68FBBFAE8EFFFC4DDFAA0C2E672A6D1D6EBF4
+      DFE9FC6A8ADB6B91DF8DA6BE3B3C3500000F244D7B74A0D24789BD035F9C1164
+      9D4D83AF437EA55080A1C3C9CEFFFFFFD7E3E67293A14F6980525B7548546F27
+      48683555795871953D5B801C3857444D645660766B809D6F8BAA6A8AAA6287AD
+      264766000E2550607B687C9625405827435D3C58794A668C4661831C3652172B
+      48243851273D553C4F67415675445D80516B8F58729B416088204161091E3100
+      0E181F39526089BB7D9DCB86A2CE54729D00152E111E35345074627A9D607390
+      2F4D6D47688D466A903F63895E7DA27493B63F5E7D1A344C3C546E6E89AB8DA8
+      C87496B7688BAF90B3D6718EAB1924362438505E799A6681A05974994E678B3C
+      57753B5877466283365170435E7F3C54731B2C43303F5A566A85798DA9697E9C
+      2D4763546C87546A8A0E1A2E03121F39526B5A779A5673975A799D365788214B
+      7C4A708D7D969FCBE1E1E8FEFE5F847D265E4E1E67501E684F206651286E5823
+      6D5226725C24745C2B7E6A22725E32816B2B796126755D25735A24755D26755B
+      2D7A64307A662C7E682D7A603280632F7F652E8065328066297663277A622E77
+      6123765B2271582375571B705221755B2075581F735725715A27715B27745922
+      705729745E296F5A29705442872546831F2E5B1B3762131743315F9C0F5E9A0D
+      274F12264D181B4E3B57951663A00C1E3F1420481B265B3155921663A00C1D3E
+      12133B24215735528F135C990D1F451613413629663D4D89165C990D264E1716
+      4B38306F32528D115C980D1C461F26683C3E7F285893105E9A0D1B54412D7363
+      297C6B307D68297E602A79603081652F7E6C53921C63A00C63A00C63A00C63A0
+      0C63A00C63A00C47780B0E2D203D792463A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C204D1E195E4520715A1E7056207056166D511D765D
+      1D715A4F8F1963A00C63A00C63A00C63A00C63A00C2F5108081A111131231136
+      250D35250E3724123B2A1139290F35240B2C1E1F411644740D63A00C63A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C56900D17472D216352256D541B6B54
+      31782F63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C1338231C5D411C6F5627786328745E317C69317F69317C612B766029765E28
+      795F2D7E642E7D65297E64297A61287A5F2D7F6352486C87DD637CD5617AD35E
+      77D05C76CC5D76C75B74C24F69BB4B64B3566CAE5065A64E62A55263A254669B
+      8294B4E9F5FBEAEBF4E3E1EAE8E6EEEDEBF2F2EFF5F9F7F9FFFDFEF8F7F9F1EF
+      F3E0DEEAB6C8E5A7C1E89DB8E49FBAE8A0BDE984A2DB92A4D9869BCD5877B692
+      A1CCCFD0E88599CC6588C0C8D4F6B4C5EF2A54881D457791A4D2B9C6EE748DBC
+      4062995B739D6073994F6A953B58854D5D845B6486757F98A1B0B9B0CECDA3C4
+      C788A3B8859DC66B81B8284785365D9F5C91D5679BE125518F254888415C9818
+      3260091C4A263E7230508B224C8F02195216285A4D7CC63974C45385CF578EDB
+      25538A00142F021A39364F85485E993E5B88657D9D4B6C912A558D2A487C1026
+      501E3D69385C8E4A6B9E3E59871420393D474E9FB7BDBBD2D28D9FA2607B8A66
+      829B7B99BA4983AD447FA96993BB4D7DA7356892507DA67FA6D36191BF386C96
+      4F789A5178993A6489648BB173A2C85F95BD336589002B5119507923456C0B2C
+      512657821D588311486F15486B0728491E3B5E497099386890275B83214F7611
+      3A5F13446A224F751533531B3952224F6D214D6E31597B386080153652001A35
+      14395749677C9DBCBEF6FFFFF5FFFFC6EEED8CABAB3A424218120B22251D2D33
+      312C2B313A3D41363D3B222A2730353834383B2D3534262D2B1E2324565C6269
+      6B772423231D1F1C5E616A54545F1E25262C3537393E46393C4122221F171510
+      1E201F3B43454F575D2A32383744504B57613D41442C30301B1F1C1D201D262A
+      2B3A3C3F373939252A2A181B1B1A1C1A343B40242930111313272A284F53557D
+      91989DBBC4A9C1C592ABB167808F4E637D5D7593839EBA85A2BC394E66000820
+      3D54776F8DB6577999587C9A2E56792A57795E8BB06187AC18212C0205134A74
+      A36C99CB4572A13B5D7D3F5263667B906B80961623355975949EC1E9466D930E
+      324D485C796C80A2587191304B67233B551731461D354B2D475F16334C28435B
+      3951678D9BAADFE5EDD0D8DEB7CBCFA9C7CC97AFBDA9B3C2D0CCD8D1CFDAD2D1
+      DAF4EEF2F9F1F4CED0DBA0B5D393B0D99BB7DEAAC4E5AAC4E398B9DF7CA8DC7E
+      A8DC8DB2DE7097C65474A8728CC26890CF7C9CCCC8D4E7C7D5E9ACBFE1A1BBE3
+      9ABAE589ABD891B9E38FB7E03657870C386B2D609439608E4B5C7F706B837075
+      966D94CB7BA4DF7E9FD380A2CF86A4CE85A1C87A96BF728CB46C87B053739D40
+      5472494A604F5566717B88DDE0E1FFFFFFE8F6F7AFBFC5526575333E522E3C4B
+      2D4D618D9FB6CFCCD7B4AFB9A6A5B1C1BCC8CBC6D1CBC6CECCC9D2D3D0D7DCD9
+      DDD9D5D9D0CCD3D3CFD5D1CDD2CDC6CDE0D6DFACAAB849596C4E61733B435112
+      17236B778AAABFD96B839D12293F4A5563C7C3CBA7A8B4495667253443222F3C
+      1D293627303D1C242E1E2532252C38151B251C252F232F3A1C2634333F4B3249
+      4A688F80C3DACA9AB1AA44696C5B7F8F809EB97392B27295B65E8CAE5E8DB05A
+      8BAE5A8DAF6190B15186AB568BAE87ADCB97B8DA92B3D58FB3D88AB4DB92BBE3
+      8DB7E098BFE3AAC9E9A2C5E697BDE39BC0E4ABCDEBACCEEE7AA4D02C5B843D66
+      8A94B8DD9BC3E486AFD2A1C2E2A2BFDB5A89AA3972973F6788233F5514314811
+      364C204A61476E8E5577995B728C697F948094A0CCDADCFEFFFFCBE4E691B2B6
+      97A6B1CBCBD8EBEAF3E0E1EBE4E5EDD4D7DE4661721F3C4C243440263C4D2F46
+      57192D3F0A273B233C4E243D4A2740532D4C602440531E394A344E612C495C2D
+      4E653B5971263B4A22333E202E371C333C3453633952641623311A232C2B3B45
+      1D2D382036452645563C5B6E435966171E23101F2C315169304E631A31413954
+      64385263233949273D47637579D8EDE9ECFCF4AECACC5C93B3386F9A4976A456
+      89BF679CD23667B000278291ABCBEDF9FF3D89CF288DE135A6F859B8FC80C5FE
+      9ACFFEBDDCFE91CEFD75C4FDA8D4FB85BAF23C8CDC85AEE3E3E7FEC3DFFD9DC8
+      EE99B2CB7F8AAA5171B832438407082E01113018233A30507A4992D1267DB900
+      518E306EA35E99C4428CBA5C87A87E8D9F85A4B6D5E9F0F7FCFAAFC3CA758796
+      71768956627C354F743D587D39567B566D8C707B9164768E768CA85F7D9B4F73
+      972C4C6E00162F334F6D819ABB5270912546653F5A7F4B699254759C617FA556
+      6F90152C461C324A6C7F9D6D83A44C63864763854E6C8F5A79A14F70991A2D45
+      000109060D182B47647196C87797C77393C03E5E830C26414657765463822037
+      562A4C7049648945608341648B4F72996385A84A6A8A1A324F2D435D5573916C
+      8CAD7895B76B8EB17A9CBE567796122943081C3226435A4A65824D68874C6483
+      294563274564516B896077994E6B8E34506F2E3B51424C62384862253C55263F
+      581E3650233D5931466016283B24374D3048653B597A4E6B8A4361842349732E
+      55796A8A9CA2BBBED7EAEBA3C0BD366858226450266D57286D562568521F6952
+      246F591E6F5422735C25755E2A78692C7F6832876C3081683183692B7C5E2A77
+      5F2B7961297964327F6C308064317E662B7E682E81682C7E622E7C61307C622B
+      7D652B78602B79612B7C5F2A795E25795E22775A247759257559207155297961
+      2E7C682C7C642C7C6229795F28775D2C79575A9A145E9B0E3A6E1B1B4C392B66
+      3B538F1356900D3F7113174D3B28683C538D1263A00C2C5618215D3D366F2F4C
+      83125C980D244F2046831F49851829541651880E15433253911B5E9B0E2F5913
+      264E171E52405F9C0F5E9A0D274D11133B2422634656961759971223573D2A6D
+      5835806C31796629795F297F5D2275532576602C7A6051911B63A00C63A00C63
+      A00C63A00C63A00C63A00C47780A0B2C1D3B772463A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C3E6E0F124E3A1E6B542073581770591B705A2073
+      5921755A20755951901B63A00C63A00C63A00C63A00C63A00C4D810A2F510830
+      540B30540B30550B30550B30540B30540B48790B558D0B63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C5C990D255A2A206C5222755D2C78
+      6623735E27754563A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63
+      A00C3C6A0D18493A236C571F70571D765B2678612B7F6421755B277C6A2C7964
+      34806A27796025785F2C7A6229775F2E7F6C27765F2A77600D136D87DF6B84DC
+      667FDA6280D65D78D25F7BCF5C78CB5A74C65870BF5A70B8576CB05266A95365
+      A7566AAA5266A56272A1B1BED1F7FDFFE5E6F1E3E2E9EAE9EFEDEDF3F0F0F2F9
+      F6F9FDFAFDF5F5F9DBE0EEB7C3DEAFBFDEBED1EEA3BFEA789EDA7A9ADA7B9EDF
+      6C92D06980B67082B95D80BE5D8CC6759DD85984C05C7AAC8D9DC694A8D76F8C
+      C35C7CB399ABD38091B95066946B81AB6379A35F71997B88A76A799C636F9181
+      8FA4A7BEC4AED0D0B0CECDA2B7C3475E8E072062173F86174B8D2D5B9A698ED7
+      597AC11D4184375A990B2357021D575483C84780CB104086224B8E346BBC2F68
+      B81A5395366197617AA71D3D64143160435D9E304F93021D4F041F503166A633
+      5C98153E765D78A76C87B343699F476C9D233C66000A2D1D354A779399C0D5D6
+      AABEBE71888F597791457298618BB088ABD377A1C65F8CAF709BC15587AF1247
+      72023B6A235D8740688E345E851A46692B4E714A74A028628E2E638B537DA53C
+      7097144D78144C7B6892C15387B9074977476F975081AF3065944D7DAB3F6F9A
+      345F86325F874E7FA63E6D962D557B0E26410427401544641E47682C50741D49
+      6C11425F284D6A224461194057749098E2EDEDFFFFFFE3FFFFB4DCDC627B791D
+      242316161A1E1E1C424845737C815B64682D34351F25232D32352A2D311E1F21
+      32343845474623231B181A181D2321242726474A51384144070909151313504D
+      4F575B675B63713F444B2C30313E4445434C4B5C6B755A6977252B2F0D0D0B1C
+      1E1B373C3F3135382F32333234372F34355660664047491719191D2123151B1B
+      1417173A3D3E6A797F89A5B1AFCBD2AFC0C48AA1A94C6A8038516C5C738B88A0
+      B9576F880021392C51727392B66E8EAE3963862B55794F799C6289AE5F78962C
+      415608314E4573A3638FC1436A903F546A2B3D4E5D778A57606D0C0D1D4C6B8E
+      97BBE251729514385827405F21364D1A375325496C3F61854E7195224563304C
+      65475E791C314C273B53768B9DB7C4D0D5E0E8BAD0D1B0CED09DBBC392A7B0B2
+      B6C2D5D3DCEAE6EDEEEAEFE1E1E6B7C3D895B2D6A1BBDDB9CDE7B5C9E46D9CD1
+      3E7EC277A2D691B5E05A87BA5D82BA9DB7E685A7DB4F80C19EB5D6ECE9F4CED9
+      F5B2CAF2A3C2F0A0C3F095B4E1445F8C243F6F6988B592B0DB9FB8E1A0BAE086
+      96BC6B6A87667498759FD982AEEA8AAADC89A5D485A2CE7C9AC67095C65684B2
+      4A6588736E837475874C617F415A7A73889BC7CACEFFFFFFFFFFFFDDEAED9CB0
+      BC455870001328485867F5F1F5FCF6F9D5CFD8BAB4BEBDB8C0CECBD2D5D4DADC
+      D9DDDCD6DDDBD7DDD9D7DBD9D5D9D6D1D4CEC9CECEC7CEDCD4DB898F98142332
+      1E27374E55664B55671E2138161F33636C7BA1A0AECAC3CFACAAB3313B481E2C
+      3B1E2D390E1D27465566394554080E17151D292B3642172530253444262D380F
+      16204550613848514060579AC0B0BED2C6738479406763668FA07B9EBB799BB9
+      7599BA5E8EB4548AB16696B873A0BF78A4C06691B077A1C18EB5DB84ABD37AA5
+      CC7CA5D287AFD982AFD991B9DFA9C6E791BAE08FBADDAFCCE6B6D3EDC4E0FF86
+      A6C50834542D56776CA1C978B2DF91BBE0AACBE76391B12A5B7D304F6718374A
+      1B3E573F5C7339586B2B50694C7395678CAB53769767819A6075817F9AA1F2FD
+      FEF0F6F6B3CBCF8CA3AE9DACB8CBCED7D8D9E5EBEAF3A1A8B51D314408203225
+      455C0D3852103A517A8B9A4C687B1B455D244559203F53283C4F283947233C4B
+      1E3545345266354F6221303C21354340505C70717D3547571D37493A576A2D49
+      5C203240253A482B49573C5E6C4D6B7D385061142937243D515275933C59721A
+      2D391C323D2442522C485A152B360C1D28334850A3B8B9FFFFFFE9EFEA8CABA8
+      405F6F3B4A65323D6F6E7DB2A8C1EBA9C1E575B1D631B0ED1497E13CA3EF68C0
+      FE6FBFFD81C2FD93CBFDA4D4FFA9D6FFC9E7FFF6FEFFC9DFF34D91D0407EC878
+      ABDE3F77B4050A630013640139921550AC3878CA63A6E48DBEE77DAFE34A96DD
+      3683C126629F4983BD55A1CF5298C07199BA608CB13E79A25F86A29FBDCFF0FC
+      FFEBF3F3A3B5BB73838D51677E304B721D3B61475E7B5E718B667B964A658139
+      5A79314E6C051C342C47636C88AA51709237597A284B6D44638D5576A257779F
+      607FA76F8CB34B6586283D586174926F82A1495F7F4761834A65883F5C81233D
+      5B0615280D121904080C2B425F7097C8809ECC728EBC345478344F6F5D72933C
+      57750F32532B4B72576E932B43622E4A6B6080A74E6F951B345202192E36506C
+      6989AB6687AA6081A36181A5385A7C142F4D32486549617E475F78637A966B84
+      A25C72903F56724F6786597395395B7B274E6C335573566E90617B9E4F6A8A36
+      4F6E3049683B53703F577211273E29415B5E789E5A74994A658636577A2D5174
+      51708497AFB2DAEEECD1E8EA587F762B63522E6B562668512A6E5A2A7055276F
+      58236E58267A5F277856287B5D287B5E2877692C856B2F81662A806831876A27
+      7C5E2A7F66297761337E692E7A64297C6234816C3181692A7860287A612A795E
+      23735A25765E287C6134836A3181682F80682A7E64318264247D62247860277C
+      622E7D5D3282662F7F5F2D79602B7C6326765F2A7C622D7D474C9121316D3720
+      5A4548882158961139661011311A1C4F3D5F9C0F5E9A0D274C0F11331C27643E
+      5F9C0F5C990D264A0F123A2A316E3D5491165C990D2E5712134532216646538F
+      1363A00C274E181B503C2E6C3E538D1163A00C1C481C1A5E443B803C35763623
+      684C29755822735925775A22715F176A541A70601870572071594F8F1963A00C
+      63A00C63A00C63A00C63A00C63A00C47780A0A2B1C3A752163A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C5C980C17422A1A624C20765A1C745723786021
+      7C611C785E23765B23745952911A63A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C5E9A0D286139256E5E23776523
+      785F2D7F6A2D80662477644C902263A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C183C16205547307D6520765E257860267C602778612778692677
+      63297C612C7F65267A632075602C775E277C6126795E277964287E6221146C86
+      E16A84DF6C86DE677FDC5F7BD85E79D5627BD1657DCF657BC95E76C2596FBB53
+      67B35769AD5768A85367A65165A755679C8592AEF1FCFEE7EBF4E0DFEBE3E4EA
+      EFEDF3F2F0F5F3F3F7FBFBFBFBFAFAEDECF2E2DFE9D8D9E4BACCE87BA4E56B98
+      E2749FE285A9E0A3B6DD8FA2D37B9FD68DB3E681A4DB7692C998A6D498A9D86A
+      8CC75776B36B83B39EADD38E9FC8647BAA6F88B48B9DC45972A34D6A967182A5
+      6D7A9C5364874D61818CA1B4BDDCDDA9D1CB7B99A76E7EA06B7FAC1741802856
+      9E678BD85078C14A659E31508A0427553C598C80A3E879AAF24173BE0C2E6A18
+      346A3B64A22E59934663973955881D365D000D2C0B245C1C3A7700052B0F2652
+      628FCC517DB81D508B6286BA6083B614467E2651872F4C7C0F2B5A0A2D5D2046
+      6F698AA3B2C8CEBED0CE8CA0A36C8692517086476D945D8FB9528AAF2C62871C
+      4F7826517F34629016527F154D755B82AC345D85000B30132F566399C583B9E5
+      376D9811527E246A982663944377A9608ABA6897C35791C34D84BA245A8C0C3E
+      6929618E4981AD80A7CF6B95B7114C7220567F335A812043671B42641A486A3C
+      58781B25371237521A516F0E3C5A1B3C5C183753334752ADBDBCFFFFFFFCFFFF
+      D0F6F795BBBE4B5562100D1613150F5058583E42430A0D062B3030454C523D42
+      444040443130352023212629261F231F131A13282C2D43484D3B41462A303520
+      2627393A3B393B435E677154575D121011272A2A343B37202729424B55393D41
+      3030343737402122250E100E292B2D343738242827363C3F3B3F414043483A40
+      493B414834393D121512292A2C5D656D81969EA0BDC8ACC0C498ADB4637E913F
+      536A4B5F75617A934965832D4F70355B7E7593B36183A1305B7B466E8F3F678B
+      6184AC769AC43E658B1642664B7FAC6694C44B66863443532B3F4E57677A4750
+      620D2F4B3E6C9386A7D33F668C082A460A243D34587D5D83AD5F84AF2D47650B
+      1C2E4A627D455F7D273E5634485E2D465E2B485F94A6B5D4DFE6C4D1D5AEC5C8
+      A8C9CE96B0BA9CAABAC2C4D0DAD7E0DEDAE2D6D7E0B0C2D89DBADCB3CBE8B8CD
+      E899B8DD86ACD68CAFDE7092C55D7FAE7DA0D2A6BFECACBEE57B9DD65282C16B
+      94BF85A2CA8EAAD5779FCC6C8FBD445884203F716589BBA4BEE6AFC5E8AAC5E8
+      B4CEEEBCD4F68C9CC25F648552668F5B83BA6C95CB7596C97E9ACB6A8EC03E70
+      A33B5F8A7171887F7E8E6178915F7EA0637FA15D77975E7693939FAFECEAE9FF
+      FFFFE8F8FEC1D0D96274870D233E9EA2AEFCF8FAEEE9EEF6EEF3E7E1E6D4CFD5
+      C8C3CCC9C5CED9D3DADDD9DEDAD7DCDAD6DCDFDBE1DFDAE1CECAD0CFCDD1DFD9
+      DF9192A02A384C0C1D30000C2033374B9896A1D0CBD0CBC6D0D9D2DBB6B1B830
+      38430D1A2723313C27343F2C3C4A1B27342B3541334150303E4D2D39471A2532
+      141D29323F4D40515F363C4A222834314646679381BBD9C5AFBDAE5673713F6B
+      756293A6729CBC7E9FBE90AAC891ACC79EB7D183A7C529567112283E4E708E61
+      91B46C96B87B9FC4749CC476A0C78CB0D291B3D876A4D181ACD6A5C7E5B1CFE9
+      BCD4EED4EAFD7392B2000E290C1830497EA5BAE5FFACC8E123455E011527031C
+      280D2E3D2C4A5F2B465F1633490C25380D223634557772A2C27A98AC1D233306
+      0B11435960D1E0E4FFFFFFC7E0E094B7BE8DA4AEA9B4C0C8CCD7E4E4EBB8BEC9
+      74879E4E708D25516E7F93A4E5E6EB6276870E324B38546A36566C2E48591C2C
+      332D3E4A3F5568344C5E1629352D44563D586C2431393A444C38515C2C454E36
+      53633450662C43563B54645371846B94AA5377861F2D322231422E4B63264052
+      1C303E1D2D3C1B2F3E213947344F62263A47091115010E14182B376E8086E4F7
+      F2FEFFFDC6D9D48CA7AD4A5D722D394A6171778E94A33D4F694CA6D031BAF864
+      B6ED7AC2FC55B6FE64B9FE7FC3FEA1CEFBAED3F8ACD3F4B0D6F0D0E7F8C8E4F9
+      81B0DD1E65B8205DC27191D872A0E1669EE675A9F78ABBFFA4C9FD98C6FD88BC
+      F786B4EC6BA7E2418FD64093D451A5D153A0C95B96C06095BB6092B7457CA940
+      7DA380A1AFD1E0E8FCFFFED0DEDE89A0AA4E697F2F46613348664B6382506682
+      48627D3251700E2A471F3C586B87A83D5B7C22436536597D3B61885D80AB587C
+      A84D719E516E9D647DA7415B7D092440132F4A18304D132D4A203B583E547540
+      53751F35531F3D5C23426204182A20354F7391BE7896C3456892294E74556F95
+      3A577A133A5C1C45682D4E73455F8348618425446724476C234466011C360A1F
+      374B68887799BF4D6A891F415F2F50764862895B7596677F9E536B8A4C627E51
+      647E435C77314F682340572F435B29415B3558795A799C5D7EA2577CA35D80A7
+      5C799B4565861F3F63315074405D7F24425E4F69894D688E3F5B823152774C70
+      877E99A2C0D1D1F2FFFF98B7B232635026634E2A694F24674A2669512C73602B
+      775D2977602979642B7962287D5F227C5D237D5F237E632A816434876C2D815D
+      297C5F307C602778592D7E62308064277C61297C622C7C5F287E5F247959297A
+      60257A5F1F7458247A5F317D622F7C612F8065237C60207C5E257A612C806229
+      7F6127795E2779592E7E622C7C5A3180602A7C5E2971572A755A25705D357E55
+      468A302170503175455E9B0E497F0E336112174D3A2C6B3D5895105C980C2047
+      171F5F403E7E2657910E497D0D173B2B326E3A46821D51880E284E1115422F3D
+      7F275E9B0E2F56121534161549355F9C0F5E9A0D1D3E100D3120155B3F3A8330
+      1E6B51206E55247359206F5724745A20735523755D1B745A1D745A21745B4F90
+      1A63A00C63A00C63A00C63A00C63A00C63A00C47780A0A2A1D3A762063A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C3562141C544228755E25785E227659
+      2C7F63287A5E22775D2B785F26715551901963A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C63A00C508A16276640206C5522785D
+      2C81652A7D62287C60227A5F227D6039833B63A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C568E0C123C2C1C645121765D20775A247F5F2B7C6626776127
+      79682D785E26785E2778632D7D623380662C7A612A795F2A7C62217860297964
+      0E166A86E06782DE6D86E0647EDF6582DF6782DB6983D86D85D56A82CF627BCB
+      5C74C5566DBE5E71B95C6EB3566AAC5165A95466A75466A161709EBEC8D8F0F8
+      FFEEF0F7E4E2EBE8E4ECEDEBF0EFEFF4F5F2F6FBF9FBFFFDFDFAF3F5D9D9E89E
+      B5E57FA5E298B6E8AAC2E99FB8E4B9C2E6AAB8DE83A3D58CA7D59FAFDA95ABD9
+      7A9CD2718CC96E86C46185BD587DAE8E9FC1B2BBD67B97C67A95C28396B97E8E
+      B37D8FB34D66964E63886E79904B61844F67899BB4C2B3D3D5A5C0C5BAC8CA5C
+      779715418C1648A05573ACA3A5BE3B548A254D8F27528833558E6379B55372B1
+      1C3B7300072C162E5B7D9CCD6980B2243D70273E6E162C520E24471B39602343
+      771A346213264A0F2443193A6542649D1A406F0E326232528614203D0718391A
+      467B26548C32598B2D48636F8789B7D2CEA9BFBB879D9E627D884E6E8B6C89A9
+      395F830C3F686F8CAE7D98BF507BA8537EA5325C852D5B86305A840F224A1C3B
+      6138799F4383AD5C93C25896C82A6995174E782F5B853A567B19416B0B3F7214
+      518338658E4C7AA7386B971F59801E608879A2C4769BBB1951772E5B813E6285
+      30567A284A6B152942405D7C3060820F41601A4666103B5B07233C142D3E718D
+      97D8F1F1FFFFFFE8FFFFBDE6E988A4A83E4345110C0916141024282530353126
+      2B2522222247444A414344192018161B152D33334347514546542E323831363C
+      51575D3D43452225262628273C3F3F4243481B1C1E1B1E1C3439392A2D2E1315
+      161D1F214E515956566123242A1315182E2E362024231419121F1F1E22252647
+      4D513B4146292E30303339161B19292A2D37393D252B2E5B6E7393B1BBAAC2CD
+      B1C1CA95A8B1586E7F354F6B61799669829E31587A3D688B577B9A4066855C7D
+      A1435F7F15355440638B527CA3122F470511243B5E8549719B3E506534434E28
+      3846495B6C6F8BAA52779B496F956686AD34577A375A7F5979A3507399274968
+      040D1E303E54506E8E3E5A793048613D546C2D405916304848647F69839AB1C1
+      D1D0DBE6BDCED4B6CFD2A6C2CA97ADBCA8B3C3C6C8D4D7D6DED2D2DDB9C4DAA6
+      BADBA3BADBA1BADA8BACD5A2B4D8C7C4D58EA0C279A1D59CBAE9ACC0E8B2C2EA
+      8DA9DF5685C52A62A1144E862651823C547D34517D5B82B493B1E08AA7D78BA9
+      D7A7C1E4B4C9E7BCD0EFADC6EC7F92B86C728F56678E2F5D8F205C92205A8F37
+      5D88616A8A7E7A948C879B7987A36C8AAE6786AB6784A7647EA2597597577191
+      7487A0C5CCD6FEFFFFF8FFFFE1F0F3ACBBC5A2A7B4C3C3CCD7D5D9E9E5E8EDE8
+      EFEDE7ECE7E1E5D0CED5D2CED7DBD9DDDFDDE2DEDBE1DAD8DDDAD9DEDDD9DFD4
+      D1D6CDC9D1D6D3DEBFBDC7898A959795A3C3C0C9C9C6CBC5C1C7CECACFEDE5E9
+      A8A7AF212C3C1E2B3A2C39420B1622232B3A35404D3F4F60425264323E4F3A45
+      551D28343947552E414D162230232B3534363F35383F101E222E4F4A80A599BC
+      D1C28CA59A50747151848D7CA7B99CB1C59AAEC47197B75284AB648DB03F6782
+      204C623E688354819E53829E7398B98FADD18AAED281A8CD98B2D78CADD689B4
+      DAAACAE5ACC8E6B7D4F77FA0BE08283D041E341E4C6E2D688D275F862B587A33
+      5C7738627E5875946682A06482A23A546F1532470B24370B253B1F415E1A3149
+      04172A09202D000D1717212C839DA4EEF7F7F1FBFBC0DCE397B7BD94A9B0B4C0
+      C6D7DBE2DDDEE8C6CDD8C9CBD5F2EEF5F6F5F7727D8D1430493A586E27455323
+      3A452A3E4726383F31424F394F622C41532E4759364F60202B3524343E23444C
+      243F47465B6E4E657A546B7D4F617145576B44637A395A691D292F1D28312034
+      412D445839556A273D4D2135442E47572C414F1F35402438432B3E4D19303E02
+      1119343B41ADB7BAF1FFFEECFAF4C1DAD77E9B9E4E626D56616A625E5C5B7483
+      51B3EE6BC1FE70BDFE69BDFE99CFFCB6DAFAAAD2F3BEDBF4BBD9F5A9CFEFA6CE
+      ECBBD7EDDBE9F3CDDEF295B9F384BFFF94D0FFA2D3FF97C4FF8FB8F68FBAF38E
+      BDF696C3F59FC6F27BB4ED549FE44CA2DE3AA6DB6BABD395AECD7AA1C65892BF
+      3F83B2618CAD7D96A97B93A699AEBCD8ECF0EEFAF9C4D3D788A1A54B66783F56
+      764D607F5867835867804A5B7349648449698B2C4E6F4461813250703B5C7F4A
+      6A944B6A954C6993415B8429466C2743643E597C395576304968243B561B3652
+      1E39591C35512842604363892F51781C3A5D2F4B69587296355981134066234D
+      732D54791F466B1D42691F456821476A284B6F305172345476354F6E0D21390C
+      213A4B64846F8CAF334A682436545D75994D6A8E4E698B758AA97588A4627994
+      4B617915223402172F25405C354D6729384E2D3D524E6A8A6683A9738DB36D89
+      AE617EA14F6F904961809096A3738094244161314B6C3D5879304E6C41607B80
+      9BA8AEC5C6D0E5E5B8CFCF476F66245D4C1F6047256A51286A57256C5629735B
+      28735C2B785E2C7B5D297F5E297A5F297E5D2F7E5F2A79612B7C60257A592676
+      5E27765B23765B27795725745928785A2576592E7C612475582E816823745629
+      785D277C6225776028765E29785E28775F2D7E62277F62267F60287F6526795F
+      207A5F19745723775721765220735522765925775821715325745425745B2877
+      5B267759237357227557388232549215518A0F11331D134A3449891B5E9A0D49
+      7E0D0C2F201A5C405E9C0F57910E3C6B0D113A2933713059971251880E39640F
+      12422E286C385390135C980D2F5713144E392C703658950F5C990D13422D1A64
+      471F705921705623735A22765E20765828795A21755D287A61247C61207C5D21
+      796352931D63A00C63A00C63A00C63A00C63A00C63A00C497F0E113D2B3B7A22
+      63A00C63A00C63A00C63A00C63A00C63A00C57910D1A4D321E664B25775E2870
+      5B25755E26735D2C7E65287558216D5423705751911A63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C4A881A34773E2871582171592375
+      5D1F71582D7A6229765D29795A25775D20755827794E63A00C63A00C63A00C63
+      A00C63A00C63A00C63A00C3966161D553F206D5124785D257660287960317F63
+      1F6F542879622676602C7C601D6E5A1F6E5628745A2B775A29775A2371562B78
+      5E29775E16156A85DF6786DF6984E26784E16D89E2748BE16C85DC6D86D86F87
+      D76983D5627CCF5D75C76178C45F75BD5B6FB65769B15568AD5269A85368A95A
+      6BA56B779EB7BDCAF8FBFFF1F0F8E3E2EBE7E4ECEFEDF2F1F0F4F2F3F6FAF9FB
+      FCFBFDF2F0F5DADDECACBEE385A9DE759DD76D96D08FAADA7294CA6C90C497AF
+      D9A5B9E087A2D38BA3D597ABE193ABDF7696C89BB2D48FA8CF517AB35A7EB787
+      9CC5A6AFCD7B8FB94865965F719262708C5061844358825469908FA3B8A4BCC6
+      B4D5D8A6C7C753799B44679BCCCCDC8E93AE112B5C1D437F396AB219467E223F
+      6F36518513366B0C2E66062A6018316123325F2737611F3159384C753142693D
+      62936396DD4977BC2B457700041A020A2012326A1D3A6D1E365D13223B061221
+      0A1E3A072C5311406E0A2347000A21072036304E6288A1ABC6DADAB8CCC98B9F
+      A1697E895E7B8B5A7E9C3F73A42E70A4457DA747769C1C50773C6B92719CC66B
+      9AC51E4269002042517EA765A0D2306C9F052D57264F793C73A0114A78284E7B
+      4175A41454873C73A66A94C521557E034167447DA878A4CE7AA3CA4779A23261
+      884A6D932A4D701C456A4E7CA42D658A466E9142678A285577224D6D17395507
+      1C330C243D39617B95AFB9F0F6F4FFFFFFE7FEFEB9DFDD84999D3F46471D1E19
+      2D28253835312A2B29191B1B1D221E2D342B292E29252B2B4C505A5C5E713134
+      3C2A2E32595D634D5056373C3B353C39101314202429424447484A495B616343
+      484A25292E282B2E2625263C383C49484D4444483C3D44393D45363C402B2F30
+      2F3437212527191D1B161B161B1E1C2F343322282724292E464A552F32372E32
+      3563717C9BB8C3BCD8DFB5C7CC8B9FAC5E798C52718B4A6A8D365B7F40668544
+      69894B6C903C5678142A481D3F603768913E698E2E4A67234A6D325C802D435A
+      3A5065364C601F33474F6D8C90AED751769A2C517250689042638A234D6E163E
+      5C1A344B2A3C54556F924464873554742C455F394E661F3B52233F5747637F33
+      4C651E2C3965727DC6D0DBE7EFF4C5DADCA8C5CA9EB8C399ABBBA8B2C0C8C5D3
+      D4CFDCCBCCDABCC3D6B3BCD3C9CCDFF4F4F6F3EDEDA3AECC799ED297B7E7A3BC
+      E7A0B8E49AB5E3A1BAEA9FBAEC6E96CD426EA63459875273A38DAADC7F9FD655
+      82C16490CF93B2E1BACDE9B8CCEAA2C2E77993BD707BA36488B45B91BD6295C1
+      5B90BC5183AF6D83AA9C95AB9496AD7590B87292BC7793B56B8AAF6382AA6581
+      A55D7A9D547093566C8E76839BC8CACEFFFFFFFFFFFFD6E8ECB6C0C9BBBDC8C9
+      C6D0D9D2D8E8E3E8F9F6F8FBFAFBF4EFF2EAE3E6DCD7DBD9D6DBDDD9E0DAD7DD
+      D8D5DDD7D3DAD2D0D6CCCBD2D6D3DDE3E1E9DCD9E1CFCCD1CECACED0CCD1D0CF
+      D5EDE6EEBAB6BF2F36421421332F3E4F3A48572C364727344222323F101E2C21
+      2D3C2E3D4D2F3E4D33415017273317243013202A42464F41424B0A0B0F232E3A
+      39505B507673B2D6C8C5D8CC8CA39C548381497B845A85986891A884A8C483B1
+      DA689BC6537E9C567C986A90B1497B9B2252733C5F7E6E8EA982A4BF97B1D19B
+      B4D37AA2C696B9D9B7D0EBACD0F6608EB1001024475C7383BAE41F6FA32E76A8
+      7FB2DC89BDE573ABDB80ACD884AACE71A0C878A4C8759DC06B96BC5B87AF5F7E
+      9C54728F40678B45688A425F7F2138512C4963738C9EB5BFC4F2F5F5F0F9F9BD
+      D9DA98B6BA93A8B2AEB7C5D1D1DADDDBE4DDDCE7F2F0F3ACB1BC314B61243F51
+      2A42534665803E5F772437401B3135344C5C2F4253293F4F364F602335422532
+      3E2D445335506044596957697B4A596E364556384A5A536D813D5768141E2528
+      2E36233442203646395468314B612E4858315060233C482235412D4A5D2A4658
+      253E4B172F3B0E1A2618233152606AABBEBCF1FFFAF8FDFDCBDCDE7B9AA05270
+      793F43434A5E7160B3EA45B8FF58B8FDB4DBFED7E9FBC7E3F9C8E0FABEDAF8AF
+      D4F6B3D7F3C9DFF2C0D8EDD9E7F2F5F9FAA8D2FD82C6FDA2D4FD9ACEFF98CAFE
+      AFD2FBB3D4FBAFD0F9AFCFF597C5F27BB6ED6BB6EA58B6E58ABEDEA2B8D977A7
+      D56A9DC74A83B05B90B486A7BB769BB03C82A5307DA38AB5CAF0F9FAF8FBFAC6
+      D8D9849DA75E7485646B7F8681925F687D4964834868884A68872A44602B4662
+      3D5B7C1633520A20391D344D3B57773F5C8159759A5D79A26986A8849EBA657E
+      9E475C79314660132B4520395747638A36557B3553752E4C6B2C4764102B4615
+      395C2A588322547F214E751C466921456A2A4E7223486C224366344F6D283F5B
+      10253F253A54435E7E2E4E6D0E2A43263C583851712B466522415F3B58753851
+      6E0D253F375065919EB35C6C882B3F61485A7D4C5D7B53576E3C4760314D6E43
+      64873C5E7F425D7C6A778E9797A5CBC6C9BFB8BF81808E445469456177849EA5
+      BDD0D1E3F4F5C6DFE05D827B295F4E20635122644F24654C2A6A55276B55276E
+      522870552D775E29755829745B2876552D78542970552E7E5F28785527795924
+      775B28745925755A2A775A23714F21705427765E21775E287E5F1F7654247960
+      2579582E7C5D2D7A5F2B7F5F287D592D8060307E612B7E6124775B21795B2377
+      5928785D28765B20745A20755A196E4A2074541873501E714C156C4E1C704C22
+      76542C775A227658206E541D7050347D3A63A00C478616366E19114F34377826
+      5C9A0D43760D0A311E195941508F175C990D325C0F0E3C2B20693E5390145C99
+      0D1D3E1218412D3170305E9B0E56900D08231717523D478A225E9B0F3B752925
+      6A5121735A29765B2B795F2774571A6D501F71512075531F73532175591A7158
+      1971551571534C922463A00C63A00C63A00C63A00C63A00C63A00C508F19195D
+      463C832C63A00C63A00C63A00C63A00C63A00C63A00C2F703219634E2075541C
+      6E522B7665337D692C7A662B7F66277A5F277C5F25786153971F63A00C63A00C
+      63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A00C63A0
+      0C63A00C63A00C63A00C508F184687213D80312B7148216E5221715621735A25
+      7657206F582074581F6E562B7E602074561D765A247A62287E684F932563A00C
+      63A00C63A00C63A00C63A00C63A00C2A6642226E55297A5F29775F256F5A2170
+      58176B5015684C207157267A612778662F806A247A632A786227735724755A2B
+      77622674572C7A60143A728BE46F89E26985E06D88E3718CE2758CE36E88E06B
+      86DE748CE1778DDC6A85D5627BCF6579C8647BC55F75C1596EBA576CB6546CAF
+      566AAA5B6CAD5669A854639A7E88A7DDE2E8FEFDFFEBEAF4DEDCE6EAE7EDEFEE
+      F1F0EFF2F5F2F6FEFBFDFFFEFEE8EBF690ADDF4881D0528CD379A2DB9CB8E3AD
+      C6E9B4C8E897AEDF6C91D390ABDCAEBBE38BA2D894ACE294B2E7638CC87390C0
+      7290C1718CC49DABD65B78A22B507C506B9662749B7484A46980A44D6993596C
+      905C6B8C6F869DBFDFDFC6EBEC91AEBAB9C3C97A88A20F295E193F825584CB52
+      82C21E508631568D2751943968B6164488001A491C2F5F384C772030531A2B4E
+      243A643660994378C0356BB13B6BAA113667072A5F184A92335EA23E5E9A152A
+      4E05152A1D34563156853A6DA9174277081E3F17304B20416546628B6E88A299
+      B9C1C4DDDDABBBBE839B9C698A94436E8C49799D7CA1C66088B036698E406E92
+      4D779F5A8AB7638FB84D6C953E69964381AE518AB82C61921957852064942668
+      9A1C4F7B17355C24517D739BCA83A8D22D6C9438729C5B8BB51B658F1B669457
+      8BB734608A264E7423486A325B835885AF34689235668E2A5D8324547A2A5579
+      244C6B284665183C5E002A500B3559506F84B9CBCFFEFFFFFFFFFFD4F7F9A8CF
+      D1768F893B40372D2521302C2F1E23231D24223C3F3C403F3E1C1C1C1D1F212E
+      33391E27292E333643474D333B3E242A291C1F1E1319192D3135524D55454247
+      3A3E3E343D3D1B20230B0B0A0408032529295252583C3F401F22204D5158656A
+      783B42433C444730363B3138362B332E202624343A39323838202429383B442D
+      30331517162C2F32445155758D99B7D2E1CBDCE5A9B9BC849AA65E79933B5879
+      2B4F6B224B662C527445668B5A769C6A8AB07295BE7EA4CE87AED47FA3C77697
+      BF6E8FB55F81A460809F586B831D2E453B5C7E7096BE49688B11284817395948
+      6F936689AF50709428496A527295375C7C34506F293C54384E64183A54345169
+      62788F3845540000020716274C5C6F95A1ABE5EFF6E5F4F7B5CDD1A2BEC696B1
+      BD93A4B5A6AEC3C4C4D2D5D4DADAD7DFE8E1E9FAF5F8FDF4F5C4CADC7BA1D28E
+      B2E5A7BDE79DB6E295B1E395B0E4A1BAE8A8C1EC8DAEDE507EB3547DB27799D0
+      6992CB608AC883A3D87AA2DC88ACDEB8CFEDB7CEEB6584B05B82B17FAFD87DAD
+      D87BA7D178A8D170A4CE6597C27089B07688AE7D99C188A3C594A8C3829BBC69
+      8CB36B89AF6C86A768819F5A71933C557D566986969AA8E4E3E5FFFFFFE5F4F7
+      C5D6DFC4CAD4C8C6CFCDC9D2DCD9DEECE9EEF6F1F5F7F1F3F2EBEEF0E9ECE8E2
+      E8DEDBE3D9D8E0DBD7DEDAD3DBD3D0D8D3D1D8D4D3DAD1D0D6D2D0D6D9D6DDDA
+      D9DEDDDCE1FBF7FD999AA018242C2938483242544E5E72526074334151202937
+      202E3C2C415535485E394659425062263443202E3C2D394A2425303232393137
+      423F4A5D2533460A1B293750568AAEA9C3EBDCAECCBF7E9A974A7075507B7C71
+      9AA380A8BC6F95B5668BAC6086A580A4C5A2C1DF608AAA1B4E712E5D7D4F809F
+      7EA3C2A2BAD58EABC791B1CCC8DBEEBDDDFC739DC42E42578492A7C8E7FF8FBC
+      E490BAE1A3C6E98EB9E17EAED98EBADD84B4D97FADD589B3D685B1D475A6CE82
+      A9CF97B3CF6A99C0528AB54E85AE6290B56B7F9A6578906C869D5A7993788F9F
+      C1CBCEF9FCFBEBF8F8BCD8DF9FB7C397ADB3AAB8C0C5C9D4DFDBE5D2D3DC4963
+      76183849335063486A8B55779B324B5C334C5C304959364E5E465F721F394B15
+      31423552624761734E64754A5E6E4B5E6E45536546586A51697C486478445D71
+      2B3A46242B302736401B313B283F4E2F4A5B2C46563A5666385160263C4C2E48
+      5B3650632E4A5627424F162A360A1B25132531293C475F7376BACEC9F7FFFFE0
+      F3F0B4CFD18AA7A8486065457DA763BDF942B5FF62BFFEAAD8FFC9E6FFCAE2FE
+      BCD9FCB9D9F9CFE6FBDFF0FDDCEFFDE9F2F8D0E1F091C8F6B2DCFFCAE5FFAFD8
+      FD9FCDFDB5D6FDCEE1FBCBE0F9B5D4F893C3F89EC8F4B2D6EE94CBEBA1C8E78A
+      B6DF7AB0DB95BAD63775A9286A9F6199C0559AC03B8DB61878AD2E73A3758DA8
+      B7C1C9F7FBFAF5F9F9B7CBCF8EA3AA7F899242546A1235552F4E6A56697D2A42
+      5E435C7D6F86A95771903148631B354F2643635B749A617BA548668B5E78976A
+      88A7738FAE63779440567040576F354B69426084557196405A7A193554112B45
+      071F333053763A6E9D275E8C2856802A5379214B71274D723354772F4C6D0F2C
+      48243F573B536F243F5D2C4765445B7B5166871F3453010A25485C7A6983A834
+      5D85315A802D4D702E4F747188AB9FA8C15A6983334869375073455C7B627596
+      6F84A6466687446485324F72748095C8C0C7A8A4B08585957F8792889DA2A7BB
+      BEDDEFF1EAFDFC7898932C5C4E1E5C481A62451D6449266752266952226B5424
+      6D56206950217156247558216E542A775D2572531E715426755A247355287459
+      2A76582673542275551B6849206F511F6B472271542E7A60257556206F542879
+      572A745224735625765624765A24785F287E632D7C5F2375552377562676571D
+      7355197153297A5827735425735327785823735320755822785E23775A207655
+      2474552075582676582274562071542171521F74512E7A4351931A2A6E422070
+      53357E3253901350880E0D37251A63475595164B82113D6C0E103C283479315E
+      9C0E44781044760F1946303476355E9B0E49810F1D491912523E398230347C3D
+      22705729786127785F24775B2175552F795A2377552070551D6F5515714F1E71
+      562A775B166D511870531C6D5D277762247D5F2074581D73561B755B20786028
+      7963267C6120755D247A5F297F632A7A5F2A7D612A80632379592A7F602C7E66
+      2C7D60317D66317F6627785E34876C297D5D2A795D22795D2A7D68317C692877
+      582D7D5D30856B2D7C5D3383683482652773502D815D2A765D28765D20755422
+      6F54216E58287C602C785E1C6B4E2A7355267351257353236C541D6E52206E51
+      1769491C694A1D6F5220755525715128755A20715826775E257D62257D633181
+      682E8266287F642E83662C816528795D20715D1A74581F795A2C775E29715523
+      6E5A27735929786025785B2074572F7E63287D5E2A765A1E6E551E765727785D
+      26755A22755624775A216E542523758DE3748DE36C8AE26A87E2738AE3748CE2
+      738EE5728DE3748DE3778DE16D86D86680D5687FD06A82CF657DCD5D75C65C72
+      C05C72BA596FB45A6EAF596CAC5569A85367A557689E7B86A5D2DAE0F4F7FAE6
+      E5F0E4E2EAE9E8EDF0ECF3EEECF2F0EFF4F8F8FCF4F5F8D5DCF1ABC0E9ABC2E5
+      CCD5EABDCBEAADC0E98BA8E190AAE2AABAE6819ED77295D394B0E17B9CD37793
+      CA8B9FD0859DD095A8D67A91BB3B60905B77A68998BB7A8CB17284AB7E89AB70
+      7E9F5E6F916F7B9A75809A5B6C887D93A4B4D2D6A5C5CD96B0BD6E8DA54071A8
+      4279C14073B24666A02F5091426CB55A8BD921579F052963213B723C629F3258
+      9724427A0C2C5F0C376F255EA31A59A1063E781237673D6CB73879CE1B5EAC24
+      59A51F417509172F102549264E834473AF4374B4092F601C36555B76A1597BB2
+      2D55840F233F3B4C5C93ABB5AFC8C9A3B8B98DA4A96C898F688092647C985273
+      955B80A75881AA3F729C4377A3386E9D0F507F3D75A5749DCF3872A624619338
+      729F3974A12661891C4C73678CB4487AA6144F7C205B846B94BC5C8AB73B73A3
+      497FAF4781B02D638E2B598526557C21567F3B719B416F9A295E8B2059801148
+      6E0D426B2E5B801F4D70063A5D103B601440640C3D5E1C4561597385ACC2C8E9
+      FFFFE6FFFFCFF3F1B6D8D693ABAD515E5F1D21251A1D1F393333312E2F121612
+      191C1C1C1F25181C202D34352934312633302C3533262B2B2E33351C1F1D3941
+      4540535D202B2E2E31323741494253603745532025312024262B2E3025272928
+      2C2C3134372325242E303228292D41454C47464D34363635373A27292A1F2224
+      111717232625353B3D484E55303437171B1D2E383F758C9AADC8D7B6CAD5B1C4
+      CA98AEB6637E8C3A556C42607F40688B315A7D3B5E8546688E507597597C9F51
+      7699567A9E6284A76B87A77E92B07189A839526F0B1A321A39573C658B395779
+      1634513B5E807B9DC27B9FC35B83A82446651D3B5546607D2F3F56354A662448
+      653D5E7A3D596F0E1B281120314659774455702B3A503849598E9AA7CFDBE5CC
+      DBE1B9CCD2ACC7CC9BB8C390A9B99DABBDB4B9CBCECFDBE0DDE8EDE6EBDDDBE3
+      89A5CC6B95CBA0B9E5A6C0E899B5E39CB6E3A0B9E2A8BFE797B2DF5C87C0658D
+      C188A8D681A4D7739AD284A6DA88ACE196B6E3CAD9F49CB2DA4F7BAF7DA5D09A
+      BEE67EACD773A5D079A8D182ABD48DB1D589ACCC6187B57B9AC39BB2D0A0B1CC
+      98ABC67695BB6D8DB57C93B28293AC798AA5546C8F415C87546E936379979BA4
+      B4E4E6E7F7FCFCE7F4F9D6E1EACCD2DCC6C9D1CFCCD5DAD6DDDFDEE2ECE8EDF2
+      EBF0F6F0F1F8F4F6EDE8EDDFDADEDBD5DAD8D4DDD8D6DED8D5DBD6D5DAD9D8DD
+      DBD9E0DCD9DEDBD7DCEBE7EBCCC7D05157651E2F3D2533402329352E38473342
+      54252F4028394C6B8198667B9328394C25344416262D2E3A4730364209090B08
+      0A0621252E2C3B4D1928371A25322E3D48304049445C5E759E97A4CDC2B1CBC1
+      85A49C678C8C648684668A876C8FA2638BAB7EA1C29FBCDAA9C8E08FB5D07DA5
+      C38DB1CC5687A43268837D9BB689A8C97FA7C9BBD3EBC4D7EB86A7CB9EBBDBCC
+      DFF3BDD4ECBBD1EBBED2EAB0C9E5ABC7E4A5C3E1A4C3E3ACC8E3A0BEDB92B6D6
+      90B4D5AAC0D8A0B8D37DA3C67399BE6E98BD7E9DBA4D5F796D7F947F99B06F88
+      A16D859C6C869B80909DBECFD1ECF7F9E5F9F9C4E2DEABC5C99BB2BAA8B2BBCF
+      CFD9899CA8244A5C35576D2D4B5D344F60314C5E334C5F3A5160364F5E324C5E
+      253D5053697A4A687B2F4D6029445731495C3B4E5E3F5260455C6E4E677B405A
+      6E456075455C6D39444D39424C273E4D284353354D5D3A53624C66793A546725
+      3F51254151314E5F2D45531B2F3916252E141F29142532243A49364C5B394D59
+      5B6E73B5CDCBE2F8F2DDF1EBC3D8D382B1BE70AAD28ABBF184C3FC95D0FFC6E6
+      FFD6F2FFDEF6FFE0F7FEDCF2FFD6E9FDCFE0F29BC3E266B2E79FD4FDCFE7FFC5
+      E3FDC6E1FEC0DCFEC0DAFED2E4FCC9E0FBA4D0FD80C0FD96C6F6E4E8EEE6E7EE
+      C5D5E78EB4D28CB7D69FC3E15486B8295C93487EAB5392C14589BE3583B9397E
+      B15D85A97589A27A8CA0B7C7CFF1F6F7E4F0F3C2D6DA9EB8BF61818F4D65776C
+      74875F69844A6283516C8C617C9C617A9B4C6586314C6A163958244262264262
+      1E3F5E5D76936377934F647F5A6C863348601E37514A64884A678A2D4A6A3950
+      71364E6E2744633D64894075A23A6C982D59822D5780325A8330577E28486821
+      3955253F5C2A4665425C7B4D6483344D6B2A42602E476537516E374C6836526F
+      6B89B0799AC95E85B4638AB7587AA5406089546F93425C7B132E4C405A7A7490
+      B57793B97F98BC7C94B6728CAC687B9967758B7C86957D8B9997A9B0B3C9CDCA
+      DFE3CEE4E7779C962D5F4F245E45225E4C20654E1E63451C5E45267151196745
+      1D674F256E53216F541E6E551F6F572178582E76592675532571592F7D5D2B78
+      5B2A795E236F5128785E27715423714B1F6E53206C52206F502F7D5D2B7A5325
+      73532974542779582073572071542471561C6F542A77572571561D6E511B6F52
+      2071562A785E216E5329785B257658207654287A5827765924795E297F5E2176
+      541E745A1C735120705020704C2976582873531D6D4C156A432073501B694E1E
+      7151237A5A3E882E63A00C3971241D523F1D684E54951663A00C2B5416133E2C
+      1A5E4959981363A00C1C441C1E54402F774F57971763A00C1A593D236E58277C
+      5F24775E2D7C642D83663183642B7C5E308060267E5E2F8265287D6023765A27
+      7E60297A592C7763297A612D7C5E2C7C602177602D7D612C7C632F81662E806B
+      2B7A642E77602A7A643080662D7C5F2A7E62318265237D541F78582A7964307E
+      683280652D7E582A7C5E247857307D5F2A7F603182682E7D5F287C61237A5A2B
+      7D632D775925765F2878613C8B772E7E5F2277582C7A612973591B6B44226F4C
+      207052206C522673592B7D6424785A2677582C7C5E2D795E2B7A5D2C79602777
+      60247758297E5F2B7C642574582874592A78592471562F7C5D2A755E28755B2D
+      795D317F632F7C6226785F26785D26755A25775B20775D267D62217559237456
+      26755D2073541E6E5426795B20765320765620795921795D1F765A2C7C612579
+      5E1E7155186E521D735A2A7C6127765D320C728BE37690E47590E76A85E06C87
+      E36F8BE6738FE77690E5768EE4738DE26B83DE6A84DB6D86D76E87D76980D363
+      7DCE627BCB6177C45D73BE5D73B85C6FB35B6EAE576CAD596EAD5C6FAF586AA0
+      7A86A5CCD0DAF1F5FCF1F3FAE7E5EEE5E4EAEBE8EEF0ECF4F6F5F9FFFDFBFAF6
+      F5F9F8F8FBFAFCD8DCEDAEC0E4BECEF0D7DDF3B0C1E883A5E186ABE780A4DC62
+      87C47290CB96A9DAA9B8DFA4B5DD708DBF708BBEB0BCDA92A4C55A79A88395BB
+      8A95B7465B8144597E717E9F8890A8677490364D7751698D93A8B9B1CBD3B5D8
+      D992BDC56F98B09AACBDB3B3C544588D5878C04677C70E439126478737529379
+      93DB6789D3214993183A7B0E3B7E1F5BAA2D64B51A478A113B79275DAB3470C6
+      5D8BDA537CC61F3F7205102605112C082C583A67A75B81C91C39690217310C2B
+      52294A7E1F3B64000F282133554D658A6981968BA6ACB2C8C9B4C7C590A8A776
+      9093627B9352719A577CA4376D94145384366A9B275F8F0A4A7C326B9C246191
+      19598A487CA83D79A6296C9A266A952768973D73A440709E1949771A4E7B2761
+      91336B992E6A975187B2467FAD3470A1356F9B195682366D99366D9B3067932F
+      6691396B932E628A3A678E31658B235B851E51781A4D711A4A6C325878476182
+      23486853788AA9C5C9D9F7F6E3FFFFDEFDFEC7EAEA99BEC760748339373D4D4A
+      4A2C2C2F2C2F37454B521E22240B10101E2525444C4C525D5B474E4D2B2B2B1A
+      1A182930335F7F9260839A1E282C2F383B667E8F62798E25333E1A1E22393A40
+      2E32342428272B2D3017161715141220232120232333363858575F4A4752161A
+      18222525313537242A2A262C2E3336383131300D0B0E04050826272D424A556F
+      8692A7C4CFC3DBE5C3D5DDA6B9BD768F9D607B9764809B6281A06684A86483A7
+      5D7CA05675984263832A496825415F1D39520B25402E52785B82AD577EA74574
+      9C3F6C94285074082240203C5D6D8FB49EBBDE5971901838573B59792E42572C
+      4B653F64845A7B9925435B10273E596D8A6375912A3D531A2C4034445E293852
+      2D3C4B7F8D96C4D2DAD9E8ECCBDEE1B1CCD29FBBC891ACBB96A9B6A7AFBEC0C1
+      CDE8DEDEB5BDD44B77B6769ACFAAC2E8A4BDE6A2BCE4A3BAE1A0BAE287A6D278
+      96C39AB3D7A5C0E67AA3DB739FD998B8E5BACCECCED9F1D4DFF46C8EBD537EB6
+      9FBFE6A4C5EA82AFDA78A9D58EB4DC9CBADD98B9DB98BADA618DB9789AC4A6BB
+      D9A0B6D3A0B2CE88A2C57996BF93A6C097A3B78897AE70829E586A8D4E6C9758
+      769C5971946477929EA8B6DFE3E5FCFDFEF7FBFCDEEBEECFD8E0C7CCD5C8C8D1
+      D0CCD5DCD7DEE9E5E9F4EFF1F4F0F2F3F1F5F6F3F7F2EDF3E9E5E9E2DDE1DCD7
+      DDDBD7DDDED9DDDFDADFDBD6DCD0CCD4F9F4F9B9BBC62131430C1926151A2124
+      2A37323C4C2A384C38495B3D4E5E526274273B4F1A2B390F1E293342503A444F
+      15181C191D2029313D21313E2F3E4F22303C090D0F181E2827344431404F4A61
+      67749692A1C7BEB4D6CCA6BBB77D9A925B8680699297739DA66491A57999B18F
+      A5BC8FABC4557F9B2157741E587933698C7EA2BDBBCFE3B2C9DE6593B04C85A9
+      8BB5D5C0DAF5BAD4EEB6CFE7B5CDE6AFC9E6B8CFEAB6CEE8B5CBE6B4C9E5B6CB
+      E5B5C9E3AFC5E0B5CAE1B0C4DBA7BBD694AECDA7C1DB758CA3102D46496D8C75
+      97B56F90A9748FA66E87A16580995679937E9AA8C0D4D7EAF8F8ECFBFBD8ECEE
+      B6CDD398B6BEA1B8C06B88981C445A163D512A495C405A6D364F5D34505D1B38
+      4C10263E939BAABCC4CD214356203E553B586E3654673148592A4252475B6E43
+      576A31485C50687C5B71841C2E3F0A213126445424404E31485B365265294959
+      2C4A5C4A667C425F71203F4F254355253E4B0E191F151E28283A493047562943
+      50213848273E502B404D596F77A7C1BFE3FCF5F3FAFACDE1D8A6C5CA8EB8D283
+      B2DC7B9DC06C90AB7292A87890A46E8AA1ABC3D9CDE2F695B5DF6CA0E896C5FB
+      B7DAFFBFE0FFBEDFFFB1D5FEC4DCFDD9E9FECAE2FDB3D7FC8BC7FE81C3FBDBE4
+      EFE7E5E3B6CDDBC5CFDBD5DCE698B7DB739BCA86A3C16B91B7427EB64A83BB62
+      91BF4286BA5488B48295AE778CA670839B808E9EACBFC8DCEDEEF4FCFCDFEFEF
+      A8C1C37B939C6E7D8F56678434517737567E536C90667A9B596F8D3B5571304D
+      692442600A2E4D344C6651627A53657E7380965B69800E29481F3B5E2E486939
+      506E395171223F6232507241638844709942709735618A2D5B86295784244C70
+      0E2440203453446288446286627CA1405A7A061E331F364F3F5B795C79987F9A
+      BC323F5B0A0D10425E82769CCA698FBF557EAC3C618C44638C48668C304C6433
+      4B636A7F9E8599BE7790B66B83AB536F94667A92808E9A9DB1B6CCE2E1E6F9F8
+      C3DEDF6C928B2A5F4C23645022624A27664E28695320644921674922654F1E67
+      4822684D236D5321705019674D1C6C51176A501C70532370521F6E50216F5625
+      735827755A2476592673592276582073512573501D6F521B6D4E1F6F511C6B4B
+      176A452675572A7157206E541F735823715328775B1F6F51206E531D70532375
+      531F6F521C6A50247A59207455226F552475592C7A592675541F715220705325
+      73501D71501E7152216C532973572A765523705824735324745023734F297656
+      2B775D2275562B80622A8162418E4253961C2775562C81634F91214F8D1C508B
+      1625644E307A4C5F9D103F7C1F3C772124684B35814C47912C206F55267A5A31
+      81642E81662A7E642D876A2C866A3386643C8965398A692A85602C81612D7D62
+      307E6632806A277D632C81683180613382632D7D6531816A33816C39876A3081
+      6630856C3886653280602E8666298161328668317F622A825F2478582377582C
+      7E5F2A7A592577561F71551E6F541E715625736229755F267354277A6022745A
+      25795B237054206C4F237957206F512B7D5D206E521C6B4C2573582774552574
+      5329755423735E25715729765F267E602D81622C7C5E2D7A612D7C60347F6632
+      7E642A795E23765A2C806931806323755A2F7A632673593183642B79622E7962
+      2D786125715927765B2C7C632C75602274592A7961297C63217359267759227C
+      5B1C715224785F227655237A601D6F5720714F20735925766121745921755A24
+      73562876582B775F2175571B71522577592074560E226C89E47892E87993E76B
+      88E36F8BE4728FE6738FE8748FE7748EE3708CE26A86E06F88DF7089DF6B8ADD
+      6C85D96B84D76D86D5667ECD647CC86278C25E75BC5B73B75B73B45D71B15B6E
+      AE596FAF566CA9586B9F7180A3C1CAD6F1F4FBEEEEFAE7E5F0E4DFEAEDEAF2EE
+      EFF4F3F3F4F3F0F4F8F6F9FCFCFEE4E8F6BDCBEBB8CAEBB8CAEDB5C5EA8FA9DC
+      5E89D180A1DEA3BAE7A2B8E4A3B6E298ACDD8CA5D388A2D198AED6AEBCDB91A5
+      C96B88B87189B77A8CAD8995AD7D89A97583A3576D90556B8D596B9249639169
+      7EA18AA1B3A5C5CBB2D6DBA1C2C691A9AF69839C4C6AA24364A85370AB305699
+      33549B5B78C42F4F9F05236C072B660D3C7F4F7FC86D92D65A80C65372B8264C
+      8B053C883C6ABE4E6AB118356510244B1120430C2247163D6D133B6C142E571A
+      2A4A03102F021539051E41071B3716315827447620416F1D3B5A4F5D6D80959F
+      A6C6C5B8D1CEA1BABC7C9AA369899755788A4269875B7FA6557FAF2D659D2161
+      993270A11E64943E7CA95C92BC2D75A52771A1206595225C92678EBF4C7DA912
+      5181245F8C27638B30688E30628F4079AA4F86B43B71A0376D9C356D9B3B72A0
+      4176A45887B05C85A95079A27A95B953799F205984316088264C70133F612E55
+      7349698B1D426A274767415F774C718389B1B7DCF5F4FBFFFFE5FFFFCBF1F6AB
+      CECE9CB7B055626120222A2827311F23241F262624292A474C495A62622A2F30
+      29282B58585F45454C303B455371865A6D7E393D3C323E3B2A383A222D332B34
+      382C31321F2423393B3C4D4B50393B3D3339383F4445272D2A363D4040454A32
+      32362D30342E31384F555D44494B1417172123233839382A2E30292D331A1D1F
+      161618353539424C535A72809EB9C7CDE4EEC7D9DEAEBFC88CA2AE6C88995576
+      92476B8F4B6E937292B29BB3D0849EBC607DA04764882E4D6B2148672352793F
+      70996593BE77A1CA7EA5CC6389AE1436570B294A6686ABAEC3E27494B7143556
+      1E34492F506C517797597B991639554B6483748BA9354B65060C1D030911182C
+      3E32425A2C3D52384B5F53667A8292A0C2CDD7E7F0F7CFE1E8B0CAD3A4C2CA9E
+      BAC398ABB699A7B2A6AEBD9FADCC85A5D68AAADEA4BCE7ADC3E8A0BAE281A6D6
+      AABAD5C6C6D6A7B9DDA7C1E78AADDD88ADDFADC5EAB6CAEAC3D1EBCBD4EB5C86
+      BA5E8ABFA8C6EAA3C2E99ABBE29FC0E49CBEE1A0BEE0A7C2E494B5D8608BB76E
+      93BEABC0DCA7BCDAA7BAD79BB1D1839EC696A7C59FA9C18A99B58292ACA7A9B0
+      73839F56729E637CA35D779B597195677B9896A1B1D6D9DEFBFDFDF6FAFCDEEC
+      F2D2E0E6CBD2DCC7CAD1C7C7CED4D1D7E1DEE1ECEAECF3F2F5F6F5F8FCF8FAFC
+      F7F9F6F3F7F0EBEFE9E6E7E2DFE1DBD7DED1CED6DBD8DED9D5DE666E80243647
+      2734413038432C39463A495B4453612837451527383443562C3B4A1725313546
+      531D2E3B0E18222A3240333D4C2939474E6478414F5F0D1319080A0D4755665E
+      6B7F1A202B51555C919FA284A5A18AB1A8AFCCC2C5DCD4A5BEB36C918457878B
+      648891647C7F5D7D86547F9D7297C281A5CD4E85AE4B85AD8AB0CC5A89AB2E5F
+      866A91AD8AB3D2A8C7E9A4C7E797C0E395BDE39EC1E3AEC9E8ACCAE8A6C6E6A4
+      C3E4A8C5E49EC0DFA2C3E1B0CAE39EBEDCA4C1DC9EBAD6B5CEE77C95A81F435E
+      6888A88DA8C26F94B27896AE6C8BA76D8BA368859E64809A6E859A849BAABDCC
+      D1F4FCFCF3FBFCD9F0F3C3E1E3A9C7CB769AA14E79832B4C5C0E28371B3A4B32
+      536A586E81B0B4C3F9F4FADFDFE75873813D617B5E7F994A6A7E567286597084
+      4156692B3E4E2B3D4B2E44561A3B532B465C4F5C7031445214303B2E4A5C314D
+      632D49583D5968355163334D5D2B4B5B1C4052335161132D381E303C5B667A31
+      4355152E3A283F4D3146572138481E3546324655687E879EB3B5DBF1E9ECF9F6
+      D6E6E1B5CCCD89ABAE5C818F3651642F414E16262B47545AB8CCDAACCDFA5086
+      E44F89E7508EED4C92EF64A8F790C2FDC0D8FFC9E0FDAAD5FCB1D6FFB1D7FF61
+      BCFC81C6EFECEBE9E3E5EACFDAE5A2C2DC70A5D27AAAD49CBBD887ACC94A85B8
+      3278B85C8EC1759AC45E8EBC6F8FB28295AE8B9AAD8995A37C8B9B7C93A599AC
+      B9CBDDE5F5FAFBDCECEEB0C3C98DA2AD6982974D6881365470304A6C3A54725B
+      75915C7B9A496A8A294B6D193854364A6140536B5B6C836F7E92475D742A4665
+      445A7A4057741334541236594F6C8F5675962A547A29587F4770953966903666
+      91274A6E00041D1E2C485C7BA058799E6483A74F6A882E45623955743D5E7E75
+      91B5708AAD18324E273D5731527329547A6185B1698CBB5077A04869903C5C82
+      3E5C7D3A516B101D373C53766181A46A869A8398A2A4B5B9D5E7E8E9F7F7BAD3
+      D360877B225B4016563518573C195C3D1B5C441F5E451A5D3D2066491F62481C
+      6345206B48246C522B765A226B502770501E6749226F51247760287A632B7C5D
+      20755534806428765B2173571A6D4E1C6C491B654117613F175D3B165A381B64
+      451D634B216C4F1E664B27755D2175572271561F71531E735122755029785928
+      745920714F217350216F4E296F4A23704F22704F1C704B1F704F13643A1B6840
+      115A34175436175634174A2A215C3D1A5D3B155C36135A371256350F5334175D
+      3818603E145A39175E3B185D3C155D39175D37185C3C175536164E312B631C37
+      6F16205320124529154C2E3975233C7A21226035195E3A18623E1F6A43236D47
+      1E684520704E206C48236A43175C39175634125230114F30154D2B144E2A134D
+      2A1759381F63412369472B7556226D52206B472575542B7E60236F4B1D6C4127
+      6E4F236D45246D4C2E7A572574512578542A8058277C562F7C5A297A56257A5D
+      2877582378542C805E2578582173502677542677552273532C7F5F3182662D77
+      5E2A7D6029785D2C776018694A1F70592A7A5F1F6D4F25785B1C6D4F1C6C5624
+      7053287756277555247458216E5324765B2374531E6B4828785D1D73551B6B54
+      2F7C612673592A765D23746025775F2A7A561970511F7155287A6125795B257A
+      5F2D7E632A7C5F29785A23735924765E307861317D6427796027755D20705323
+      75521C765B13635124745D197049166F511E6B4F23755023765926775B28785F
+      1B6D4E1D705222745A2E79622A7C5D2370572070561B71551C25728BE3738DE3
+      7891E6728DE4748FE6748FE76C88E67291EB7591E76C87E26B88E4738EE17287
+      E2708AE46C89E07089DD728ADA6F88D86A83D26A83CE647DC8607AC36179BF66
+      7ABC6074B65B71B2586FAF566AA95469A5576AA36676A2A0ACC3D7DCE6E6E9F5
+      E3E3EDE8E4EEE8E7EFEBEBF0EAEAF0EEEDF4F0EEF3E2E4EFCBD4EDC9D3EBECF0
+      F6F6F8FCE4E6F1A6B9E07398D980A0DC99AEE0AABCE4ADC0E49EB5DD87A5D578
+      99CE7E9ACF8CA2D1859CC88CA3C89AA9C78B9ABA7384A77184A596A0B48C97AF
+      4E65903C568775829E7F899F8A98AAA2BCC9ADD4DCA2CBD18AB0B991ABB7BBC4
+      CA8CA0BE4F6CA6445E95727DA45B6A9D2047946186CC88ACE3779BD4799AD874
+      94D23A5A96122C69153973163A6418365E16396E173975153B733758873B5884
+      1B3865314F7D395B8E2F5489416FA629558927355A323C5F0A2B59112B576464
+      7A948E944F5D724A687D98B3B9B1C6C8A6BBBC9FB5B48FA6AA6E8A9756778B4D
+      71954D75A27DA2C680A8CD5D90BE6798C56D9FCA64A0CA508CB8306698306897
+      246695185C902F6B9A4781AA5C90B42059844275A3427FAE407AA54174A52B68
+      985281B23E77A76190B6628DB43A739E2E69921B557F275E88335A830F3A6118
+      496E2A587E3C64892E5679385B7A59748E4B688238567346657D7E99A7C0DDE1
+      ECFCFEF1FFFED8F8F5CDF2EFA7C6C56A83884556572F362F1D21181E221E2F32
+      3217191419191354585C4F545520241E2E363D39454D3D44433E414126292C43
+      42434848473133343D434341464735383640434155595A3A3F3F384043575B68
+      363B40292E2B53585D4D4F592022241F24222D3131292C2E181E1C242A292B2F
+      31171D180F15131D23251A201F161B1A2E3439606C7992A7B6ACC5D0C1D5DBC3
+      D4DAACC1C989A1AE5E7A8E3A59743753735C7A9A87A2C592A9CE8CA3C7748FB2
+      5474972B567A1749703C6B957196BE91B0D38CACD34D719414395A4D7295ADC6
+      E3758FAB132A4529415C5B7EA0285072395C7B7F92AD38475F0E1F38314A644B
+      637A48617B314760273E55263F571C31471C2F412940505B6F7EADBAC2E4EBF1
+      DDE6EDC5D9DEB9D4D7B2CED4A0B9C588A3B07E9BB186A1C89BB3DFA6BBE399AF
+      D8A5B3D0D3D0D9DCD4DAB2BCD897B4DEABC2E5ADC2E4A2BAE3A8C0E4B8CBE8BB
+      CBE58FA8CD7FA2CB9CBDE4A7C5E8AAC6E8A9C4E9A4BFE5A4BEE2B0C6E590B2D8
+      96AECB96A9C298B0D3ACC0DFACBFDCA8BCD69AAECE9CAECBA1B1CA7F95B58B9B
+      B3CEC9CAB1ADB3888CA36D81A46A83A5677E9F657B9D64769667748A858D93C1
+      C4C5F5F3F3F7FCFCEDF9FDE1F0F6D7E1E8C9D1D7C3C8D1C9C7D0D1CED3D8D9DC
+      E5E1E7EDE8EEF2EEF1F6F4F4FAF7F9FDF9FCF8F4F8F5F1F5E5E3E5E6E0E7B6B5
+      C14E5C7028354929323F354A5E394E641E2C3B39495A27384829384D34455C28
+      37433A49533F55672B3C4E26314273738164687A2C4053465A70414F623D4350
+      313845252E370408142D3342A1A1A5A7A6A67C82836D818073968D8FB3A6C4D9
+      D5BDCAC9BAC9C4B3C9BF7EA49C779EA283ABB694B6CAA0BEDB8BB0CF7BA5C95B
+      89B338668D6A8CA7A5C3DFA8C7E8A0C2E394BDE087B5DD8BB6DCA3C5E6B0CCEA
+      A6C6E496BEDE91BBDE8FB9DD9BC0E0B2CDE693BADA81AFD789B2D6A3C7E593B2
+      CC3D5F7F7C94AE9EB8D080A2BF6F94B37393B07391AD6889A461819C5A7A9650
+      728F496A8756758C98ADB4DAE6E5EBF6F6E8FBFBDCF4F5C8E4E5ACC9CA6F8B8D
+      658088A2B2BDCCCFDAD1D1DDD5D4DEF6F0F8A0A4B20B2E462851664A6C824E6A
+      7C4459672E485829445941556A75849298A2ACCECCD1D6D0D8505F700B26372B
+      45543852652B4254283F50283F502036442D49582A4B5D17394D2544578A93A0
+      C1C0CD575B6814212B2C44512C4452243A48314759344557233844293D4D394C
+      5A768A90C0D3D3E7F2F0E6F4EDE0EFEACDE2DF9EBBBA6F8A883A565B4B6B7DAA
+      C2D4BAD5FA77AAF970A5F670A2F34E93EE3C91F15FA5F88EBEFE9CCDFFA7D5FD
+      84CCFF25ABFB54B7F3EAE9F0D9DAE290B7D783B0D899BBDCB1C8DFBACFE2CFDC
+      E7C6CFDE7A9DC74482BE6292C288A1C18AA1BB96A7B99AA8B5A4ACB495A3B279
+      94AD7B93A97C8EA272899DA0BBCAD1E9EDDDEFF2D1DFE2B5C6C999AEB1728994
+      5770814C69814C6F8F466C8E35587926425E2A435E485D7847596F495B6E6374
+      863A5470193A5A1F3F6029496C27486E4D6B8D5B78974668893F6184385F8437
+      5E832E4E6F102B49061631172946536F966989B14F7193415D7E2E4A693F5E7E
+      5E7A99436381173F5F3B5E7F4D6D9033587C2C557A37597D5A789B5B7DA03F5F
+      812C4D6E3857735C73866C859187A4ABAEC3C7BED0D1D3E6E6CEE4E986A6A342
+      6D5C2158431B583F17563E14573C14573A1C6043195D4721624A1F644123684B
+      1F644B2B725D236C4C206D52236D52246E5529705524745319704E2273562876
+      5B1C6B491B6D4F1D6D4E1564411B6D5317694713603E13573717563B14533519
+      5F3C115237196648246F4F17603E1C6C49227349186A401A6A47176342166641
+      1C6C492C79540E5F380B5530145C381F5F3A18613E1E66430E522B0E522B0844
+      1A043A16083919082C0E0A2F14072C0F0E2F160E331608381608391A05331608
+      411F073D17083A1D0230130230140B3B1B05310D032A0D082C0F02270D032308
+      05220A051F1307230D06220D082A1608230D102D160B311403240B022A0D0938
+      1806301611401D11472508421B083413072F1109301607280F08260D08260D07
+      220D092514051E0B06240F05220E08240F0B2B0D07290B03290E082A12072D0D
+      063213083216082D1509351508351A052F190835190E402305381B093E1F093F
+      230F452A0E43260B42240D46280D3F1F0C3914103E170C3D19124B2512512F1D
+      5D36175E331656311C5E3C1657330F52331B653F1E63431E6545226949237352
+      2C795A2570481E653A276E47216A442A78582A795B277651287450267550176A
+      481E7452247452206F4F1D734A22734B206F4E2271492476541F714C2571521A
+      6D4E2073551D70531B6E4E1B6F4B1C6F4B2271532273521C6D501E6F4F1F7351
+      1B6D4E196E4A1C7456176B4F1D6F50176D49146C4C186D4F1B6E4F136C49136D
+      4A176D491F6F4F1D70541E71551D765A1B73551F73522373592273502023768E
+      E3738DE2728AE36E89E3738EE77590E8708BE7748FE97591E86C88E36A85E36E
+      8AE4758EE6748FE7718EE5718DE3728DE2748DE36E88DC6B88D76983D16983CE
+      6980C9677EC5667CC1667CBD5F76B7566CB0566BAC596EAC5B70AC576CAB596A
+      9D7986A6B7C3D2DBE2EBF2F5FBF1F0F8F1F1F7E8E8F0E7E4EEF1ECF2F1F0F3F2
+      EFF1F3F1F2F7F8FAFFFFFFDAE3EE93ACDA9FB6E391AFE28BA8E2B0C0E9B5C2E4
+      B2BFE3AEBDE49BB1DB7C9BD0698DCA8DA4D093A4C86C85B3788CB3798DB88496
+      B796A2B87E8AA8737E9E7883A48A90A67B849A6672947F8FA59BB2BEB4D5D7B9
+      D8DAA5C4CAA8C3C8A0B6BE9DAAB4CFCECFCECCDA6A83C13058A95F81C094B4E5
+      8DADE05C82C5345F9E7F9FC59BB4CC2D4E6F335B8E6C9DE05688D13D6DAC1F4C
+      84214D871E43773862965286C3396CA43D6EAA36629E7F8CA68389A525437612
+      346411325C4B547236416E143573415D8B6A7F93819AA69AB1BBC0D3D4C1D3D0
+      A7B7B589A1A16F8D935E7781667B8B7B8DA63E73993378A8669DCA5792C275A4
+      CC6295BF4783B54C85B94F8FBC5996C36397C14682AA2872A1065B911A639468
+      90B54278A51F5F96477BA86394BB94B5D689ACCE37739D1C608A356891225381
+      4E77A5517BA93467962E618A275A823060844F759544698C355A7E415F803551
+      6B3352626A8089B3C0C4E3E9E9F8FDFDFDFFFFEDFDFDD2F3F2A3C8C673939048
+      5A54535E5D4E555217161313131527292933373A4850594A50553A3D3F2C3231
+      29292C413D413E3D402D32325A5D5E3539390809081E231F3F4241222423373A
+      3B3E4347272E2C3F4444424649272B2A040904121713363939474B50252B2B0F
+      1511242A272C2F3020232312181A070D0B0205054E5054AAA6A5817E80596973
+      7F98A5A4BDC7C3D9E3D7EAF3D3E5EBBECCD393A3B2648097476B85456783516F
+      91506D935F789C7D91B27390B0335A7B0F3458204A6F426B946486B04A6B8D15
+      3C5B4D7194B9D4EE77889C1418223F5B744B6B8B6882A1284864213C59607D9C
+      7998B86886A53452710F29401C2E400F2234091B2B152A3E1D3A521F3D582A47
+      5F576E809DACB6C8D3D9D6E4EDD8ECF5D4E9EEC7E0E0B2CDD090AEBB789AAA71
+      95AA8A9EB5B2B2C1BABAC6C4C1CFCAC4D5B0BDDAA7BEE5AEC3EAABC1E6B7C8E7
+      BFCEE8B6C5DCC9C7D49CAFCD89AED9A8C4E9AAC5E7A4C0E6A7C2E6A4C0E2A4C1
+      E393B4D7C4CAD9D7D2D89EB2CCA1BADCAABDDDA8BDDBABBED8A6B9D59BB0CD97
+      A4BFB9B7C3BBB9C3A7A7B3A09FAC818DA06B7B936C7B965D7389536A755F7177
+      6A7D837387898B9A9AB5BCBFDDDFE0F3F4F3FAFBFBF6FCFDE2F0F5D4DFE5C4CF
+      D5C1C7CDC5C5CAC8C6CED0CDD6D9D4DBE1DEE2EBE8ECF1EBF1F1EDF2ECEBEDE5
+      E1E5F4EFF3908FA1101A310618293344584C5C6F404E5E202E3F16233528394C
+      13273D2D3E4D36444E485765243143858892F0EEF0E7E1E6C0B8C2A0A2AA3740
+      4F8A8C977471720D0E1315202E19293B72747DA9A0A58A858D7B798173757B69
+      7B7C64888588ABA79FC0BBB8D5CBCADDCEA4C4B386ACA3739D9B72999A8AA9AD
+      8DB1C08BA9BE6A859C8799AC9AB7D25F90BC5A88B55C8DB76191BC6A9BC5669B
+      C55891BA5691BE6AA0CD7AA9D07DAAD080AED474ABD274AAD073A7D2649BC863
+      9BC595B9D94367844E6D8A90B3D1588FB55786A6537A9A4D7494406C8D3E6485
+      4A6986526E85345A723B5D6B63737B687A7D839697C0D0D2E5ECEBFBFDFDF9FE
+      FEE9FDFDD5EBECA8C4C98CACB38EA4A89FADAFBFC8C9C0C2CE496378193F5541
+      576F1E32492C45585A728795A1B8D5D4E4EFEAEDF1EAEAF0EAF0FFFEFF8C94A2
+      02192C1A31422D435A1B314422364338556A4A687B435D6F2748591A3B4D6275
+      84E1DBE3E6DFE8606F7D0814201A2F3C3E5D722C46581C323F2032422031432B
+      425131495741545F596D7381999AAEC2C2D5E5E3EAF7F3FAFCFCF7FCFCDCEFEE
+      A6C3C4779AA16E98B96199D95190DF5491E86EA4F691BDFC91BDFD81B5FE8CBA
+      FF82C2FF5DCCFF5BCDFB71A4CDA3ADC6BFD1E9BED3E8C9DBEBBFD4E9B7CEE4B8
+      CFE3B1C8DDADC4DB90A8C36D91B87FA3D29EB5D5A3B5C7A5B5C3B3BDC7C1C5CB
+      7185975E758B8198AC5284A20F5C880A47721A5778618B9DADC4C9D6E4E7E6F7
+      F9E8F6F5C6D7D697AAAC8298A06580904D6A7E4A637B2745622640575D6C7C75
+      819564738B3F52703C5576567093556E92274A710A30552E4C6F4A688C355579
+      29456512304C0C264034466037476111273F233E5C6F8CB16D89AD3254753454
+      765F7C9B4265841C4162385B7E456891375D894E74A0567AA53755743C526A57
+      71875779886D8E97A0B8BDBDD0D2E2F2F2E4F5F5C9E1E194AFAE4D7266265541
+      24593F215A42225E3E1B5A3C2060461C60422567472467442165481E61401D5F
+      41216747216B45226D461966412069471A653F1961411E64441760391A603F18
+      603E1B5D3C1B603D206844185F3E175E3C145B3B1459330F502D134D29154C2A
+      1B55351D5A3923623E27684720633E1A5A3B21613E1756310B4D270841220D45
+      23145230155632154F270433150734180A3718052C160835210E3E250D3B1B0A
+      2D0E082F130828130829110B291308250E09291108251108250C08230B07240C
+      07260F103216082F17082816062A16082A130B301608270F06280E03260E0929
+      0F0B261309250D0826140822140B23150A271609230D0923110C281305240B0A
+      281208291407260F082A14072A0D082B1208250D08270D07260E08251308250F
+      051F0D08250E08240E08240D0B230D0A240D0B231509220F08200D0823110820
+      1307260E08280D07290D08290D08271106290F082A14062416052A1203281503
+      211209281308241308211208221102210E07281208270D09260A082711052412
+      082A1107290F08271203250D05271108260F08281302290D022B0F072D160331
+      130B3D211145280337160334140E3A19023516023216032C120F462608442513
+      4B2B1450330E4C310C4828083C220D452604340E0942220946250B43260B4623
+      0E45240D49270B47250D4A26094B2A0F4B290D4C23084E2614502A1254310C4F
+      2B10512F10523111552E1059320A5632105F3B0C593108552D0F5F3411603A0E
+      5E3A0D5C390C623D0F6645156D4A156A45176B4516694112653D166D4415613E
+      5C2D768EE4738EE3728BE36E8AE3708BE4768FE87591E8748EE77591E86E8BE6
+      6985E46E8BE87491E87591EB7390E9708EE6738EE5788EE57690E36F8ADD6D87
+      DA7088D76F87D56B83CF6781CA6981C86880C35C72BA5A6FB5596EB05B72AD54
+      69A8576AAC596DAA576AA05E6D9B818DAEBCC7D8DBE2E9E9EDF4F4F4F9E7E6F1
+      EEEAF2EDEBF0E6E6EDEAE9F1EFEDF4F4F1F5F6F1F4E4E2ECAABCE285A3DDB0BD
+      E2DAD8E6CED3E5C1CBE5C8CFE89BB0DC7B9AD295A9D291A3C88296C08297C278
+      91C26785B98C9CBD99A5BC9DA3BA898EAD38578B3C5A8A828EA79097A9757F99
+      586F926E89A29BB3BFBBD2D5BBDBDFB6D4DB90AFB99AADB7AFBBC696A7C2879C
+      C295AAD098ACD0758EB94B709FAFC7DFB8CEE35E7AA03E64A0598DD56594DA53
+      7EBE32649F3F73B03969AA4873AD749DD5316BA50530631F2F58385284355CA4
+      2F559B445D98304B7E0F30621B417D4E6DA65C76AA3D5F95294D7D3051765771
+      878FA3AABDD2D4C2D4D4B0C1C197ADAE839899718A8B67858B5A7E915B799260
+      77957891A892A4BA839FC18DADD093B1D67FA8D172A0CD4F8DBA3D81B1528BB5
+      7C9DC09AAFCB5282AE20609A20629A226CA12A6E9F1753862360924C88B4467E
+      A93365934772A04C7AAD507DAC6682A26A819C4E72933961813C5A74425A6C42
+      5A69435B674860625163656C787B859293A5AFAEC6D5D5E9F0F1F5F8F9F4FEFE
+      E0FCFCBCE4E3B2DAD88FB2AB657D7F7E8C94505C603A47476A74793F45551D24
+      30282D2B3D3F3B2325251C2424333B382D342F2424252529263137343C414334
+      363621231F1B1D192728273437383137383139361E231E21201E2527251C1E1E
+      262931232B302026252E3234394040363F41303D412F3E3E617170849592859A
+      968BA4A288A2A090A4A6889CA38498A4B2CCDACEE7F4CEE3EBC8D9E1B6C8CE91
+      A8B56D8897657D8B526C834162815877934A64822B476A365A7F496D945B789D
+      57759A365D7F1D48696688ABB2CAEC5C6D89132542556F8B547292547A9D7499
+      BE6287A84165862D4F6E29435B2C40542A3C4F324353465B704E698447647F38
+      577131516C2E4D672B485E38505F61747E96A3A9C1D0DAD7EBF8CCE3E7CDE4E3
+      C2DBDCAECDD39ABCC68FA9BD8AA1B48297A98E9DADA2ABBCA2B2CFA3B8D9B7C7
+      E5C3D0EDB6C3DAB2B9CAC3C1CDBBBECB8DACCA8FB4DCA7C2E7A6C2E49FBCE19E
+      BCE39BBADDACBBD0CECAD1CBC7D0B8BACCA8B8D3AFC3E1B1C4E1A9BDDDA1B5D7
+      9CABC7A3ABB99DA5B28D98A78992A57A8CA2748D9D738994758A937D94988CA4
+      A392A7A596ACAC8FA0A56576793F4F4E202424323232808080CCCDCDEEF0EFF5
+      F8F8F3FEFEE1F0F2D4E1E6CED9DFC7CED5C7C9D1C9CBCFC7C8CCC6C4CACDC9D0
+      D6D2DAD7D4DEF5EDF3C8C0C954596B4255673D566A233A4E4C5A6B4852642634
+      441726312F404B355162121C2D0B0C15777C83ECEBEDECE9EBDFDBDFDED7DCE0
+      D7DBA09DA695949DCBC5CA7D7D882D384857616D8D9298888B957F858D7F888A
+      838E91959FA299A4A596A1A18C9A996483816594858AB3A2A0BFB8B0CFC6B2CC
+      C69BB6B286A29A8CA7A090AAA983A2A37398A37495AA7192A96B8EA96485A25A
+      7D975F859E6087A7638CB06A90B65E88B05C84AB5D85B05885B46C93B9769ABB
+      7497BC7192B58DAAC47192AD6486A87C96B86383A0597F975073895F798B6B85
+      936887906480856E86827389826D837D6F838081908C849490839593879B9886
+      9795B3BBBAEFF1F0F1F7F6E1FBFBD2EFEEBED8D8A7C2C09CB8B7ACC4CA9BB2BC
+      54717D355261284652637684C3C7D6E4E1ECDDDCE4D9D9DED6D5D8D3D3D8F1ED
+      F6E1DEEC49586C06192E3B5A72789AB66F95B653708B344B58102F394D6474C1
+      C1CEDED9E3CBCED3C4C6CBB6BEC77A8B973B5B7241657D3B59683C545C4F686D
+      6981867C9294809597879C9C90A5A494A8A698AAABA5AFAF9CA9A8929E9DC7D0
+      D1F1F2F2F5F8F7EFF6F3D2E3DCB8D1CCADC5CC7CA6C14D91C0549DD759A2E355
+      9EEB6BA4F45CA9F858C7FD5DA7CA212F374B5664BED4F0D9E7FAC2D5EBB9D0EB
+      C3D6ECB0CAE090B0CE7698BD6288AB4D769B5E7B9E94A2C2AEBED5B4C3D0B6C2
+      CDA7B6C45063771F3D56456F894C7F9748778E5A7F8E728B9082928F8F9994A0
+      A7A8A5B2B6B5C1C4D3E5E7EAF0F0DFEDEDC9D9D9B0BFC193A8AA84979B72848A
+      667A865B718257697E596A81586E8F4E6D8E567497647FA8405680334A6C4562
+      81415E823F597B1E3C58324A65516381455C7B344A64314156586A877086AB56
+      73933051731E3F623C5B785D7D9A57799B4D6F8F5174945A7F9F6A8D9F879EA3
+      8FA4A7A0B4B7C4D7D8D8EBECDCF2F1CAE1E38AA7A24E73641B49320F45291748
+      2A144527204A281E5233144522154C300F42250B361C0D4326134A2A14462408
+      33170B3A230D422011442111441D0B4B230B42210D441E0C3C190A3114082F0C
+      07280A0836160834120B3313103B19103A1B0B351B0B33140835170A31150A2A
+      11174127144526114322205A310C401E0B412412492A174B260D3C1A082C0F0C
+      2D110C33140D2F120D311605290F0B2A1608231207280E06281107250D0D2515
+      08231208251508251509251509240D08210B0B22130D251106220E08210E0922
+      130823120821140B200F11260E0827120823110B261108220D08260F09251105
+      240D0525110821130822120B241107210F0A210D0A210F0B2312081E0D081E0D
+      08200E091F0B0A1E0B081D06081E0B0A1F0E081F0C081F0B081E0B0A210C0922
+      0C06220D08220C0B200D091E0D071E0B0A210D091F0F091E0B081D0D081F0D07
+      1F0E08210D09210D08220C08220D0A231208220E08210F08221307211106200F
+      061F0F091F0F08201208201208200C08220F09210F09220F0921110B230B0820
+      0D05200D09220C081F0B081E0C08220C08210B082211081E1308220D06221304
+      210F08260B09260D06240D06250D0A200D061D0C07251105231108270E042411
+      08260F06240F0E3118102D1304220E05240D03220D0822110A230B08250D082A
+      1402200C08260F07220F07231605251403240E05230F08240E082811072A0F03
+      28160829150B371B0A3014092B11072F1606321808341A052F16032F1508381E
+      0B3B24073C1F0941240B4425104D301050291451320946240E4125083D1E1045
+      27053E1D776C7089E4708EE4738EE36F8AE46F89E4758BE67491E97793E97892
+      E9708BE96986E4708FE7758FE7768FEA7694EC7492EA748FE7778FE67A92E677
+      91E4768FE1708DDD6E8BDB728DD96B87D36781D06B85CD6881C76278C25E75BA
+      6278B85B73B4586FB05970AF5669A85467A45466A1586BA4586A9B737FA3949E
+      B4BCC8D5D6DDE6D6DBEDE8E8F6EDEBF1E7E6EDEBEBF2EEEEF5EFEDF2F3EFF1ED
+      E9F0E8E6EEEDEBF0EBE9EFE1E0EAD2D6E7D4D8E8C8CFE59FB2D890A7D19AACD1
+      A0B1D391A7CE9DAACAA5AEC69AA9C2B0B5C2BAB7BD7181AA5F75A5AEB3BC979E
+      AF6B7C9F7783A18D94A88B94A6818CA091A0AFA0AFB4C2D6DAB9D3D89ABEC19A
+      BCC0A3BCC7A0B8C1A6B9BEB2BEC6A8BCCB7499B57191AE708CA93A61981A4080
+      072F65416A9F5B7BB0668CC57BA6E75984CB5981BF386CA610356A2F38635268
+      9D3C69B22A58A81742932B4B80868A947A87A14D69A0526AA13E5A9646618871
+      7B87777B847D838B747D82798B8F8FA7AC9AB1B2ABC0C1A8BBBEA0B4B497ACAE
+      8CA3A6889FA376909765818A6B838967808769838C6D869466839C678AAA7191
+      B0889FBB8EA3BE6F8DB07893B66D93B97496BB638BB05580A95B83A95C85AA55
+      83A75D86A86284A153778E4E70865D76896D7A8562757C526C74596F78667C7C
+      6E83817585867C8B8C879597849298727E866B7781505E724754704B59766671
+      89ABAEBAC8DBDFDDEDEFDFF1F1DAFAF7DFFDFDC7E8EAB1D1D1B1D2CDB3D2D085
+      9CA573858D596765404E48576663525D5A363E3C676F7680858A242D262C3730
+      2D3231383F3F3339391818162E3133565F5F454B4B333C3C363F3D292D2C2E37
+      34505A63606A77767F825E6E66687F7F97AEB59CB6B89BBAB8A3C6C1A3C0BC9D
+      B5B490ABAC849799666F743A454E2737402B4048263841394B556C84918DA2AE
+      AAC0CCBCCFD9C3D5D9BFD0D2ABBEC69AB0BA849CA4728A92637E8D607D92647F
+      94657D92637C956580A04F6B89294A6559789898B3D2607B91415D73607C9663
+      819D3F63813453734A63805B6F86526479576577526575405464384D5E395061
+      3E5463445866485D684D606857697067777D7481847E8A8C818E92758485768A
+      8E89A0AAA4BBC4C2D8DDD1E3E6D5E7EECAE1EBC5DDE9BAD4E0A2BDCE8FA9BC86
+      A1B285A3B78DA9BA98A9B8A0ABBAA2AEBEACB4C2A3AFC08FA8C494AECF99B3D2
+      96B4D398B1D0A1ADC7AFB2C4AEB5C3AEB4C2AEB1C2A2ACBD96ADBF8FA7C289A2
+      BA8EA6BA90A5B690A4B093A6B299AFB89FB5BCA2BDC1A7C0C0B0C4C8ACBFC492
+      A9AB7C8D926673783647461C2B291529260C221C1127210B151206090816211F
+      2F4242616E6CB4B7B5D9DCDAECF0F0EDF6F6EBFAFBE4F2F4D9E5E7D4DFE1D0DC
+      DFC6CCD5BBC2C9B4BCC2AEB2BCBABCC4CCD1DAADBFD5B5D2F28398AA26303C0B
+      1A252A3B4A3D566A465D78959FB3A7AAB59A9CA7CDCED5D2CFD7C3C1C9BEBDC6
+      BCBDC2B2B4BCB6B7BEACB1B79AA5A9A9AFB4B1B7BAA4AFB29DABAEA8B6B7AFBA
+      BBB0B8B9ACB4B39BA3A48084824E5B55151A170D1210111F1B1E2C27384A425E
+      786974918295B0A1B0C7B8ABC3BAA8C3BBB9D2CCBFD4CFA4C2BA81AC9D87A99C
+      9EB2ADA5B8B4B4C4C2BECCCFB6C4CAA1B3B97F9CA78CA5B29DB0BDA2B3BEADB9
+      C0A1B5BBA6BABFADBCC38AAAB782A6B693B1B984A3A789A6AA89A7A97F9D9A70
+      948C7B9F9886A59F8DA89E88A1998EA49E98AAA68298935B73704B625C30433E
+      14261F1A2F25172826263133515C5AA5A7A5C7D0CFDFEDECDCF0ECD3F2EDCCE7
+      E3C9E3E0CFEBEBC1DEDBAFCACBA9BFBF9FB0B39BABB5A3B3BDA3B1BAA5B2BBAB
+      B9C4A9B8C0BFCCD2B3C0C86E88956692A65F91A6417088305063273C4660747A
+      B8C4C8B8C2C99FACB69BAAB297A9B19AAFB7A3B5BD92AAAF87A5A79AB7B5A8C2
+      BFACC4C4AAC2C2A4BCBCA0B6B7A0B3B190A2A17B8686525A58212F2A253B3816
+      29270E1916272D2A616C6898A7A5C5D5D0E8EBE9E9F2EAF0F8E8F3F8E8DEEBE0
+      C0DBD7B4D3DBADCDD993C4DA88BCD9819EAE75878966818361879786A9C1A0BA
+      CD9EB8CA8AACC26591B0517D9B52788E597C915A798C4B6572536D7B7D9CAAA0
+      BBC6A0B6BE9BB2B7A3B7BBABBBBEB0BCBBB8BFB8BFC2BABEC1B9B3B8B3AAADAB
+      989F9F7B8081585E5E283836223936303E3D616E6F93A4A3BFD1D3CDDDE1C7D5
+      D6C4D6D9B7CCCEAABEBFA0B3B691A5AB859AA17B939E7590A0748FA071889867
+      7E8E658192587B8D59758960778C526D824D6A7E506B7F5C71836A7B885E7585
+      607A8C768D9B7B909D8298A491ABB499B2B99BB2B9ACC2C3BFD0D0C7D7D6C1D4
+      D3BDD3D4C4DBDDA9C1C37E9896607E743457481644271241230F3C1C0738140B
+      3415082E12103318072C0B0B31130F34160C30140A2B19072614092A140A2B13
+      0E2D0E0829120831150D30140C30140A32120834120A38160931140E31180A29
+      120D2C140D2C16082B0E05280E082B14082C0D0B280E082A1408251308281108
+      260C0A2A0D02220B06290F082B1109310F082B120C3116083115093316072814
+      0D29140B2F0D092A110B270E08220D08250F0B220D08270C08230C08250D0928
+      1107220E052012031E0F051E0E08230D08220E0C2013071E0E06210B0A240D08
+      210A09230D07220F09240F0B270E06240A0926150C261508231208230C03220A
+      09230D08230E07200E0A220C0B210B0B220D0B221405200D041E0D061E0E0A21
+      0E08200C061E0B071B0B021B0C04190A081B0B05210B081D0C071B0C061E0905
+      1E08061D0A0A1F0E081E0C081A0B081F08071B0E071B0D061B0B0A210B0B1E0A
+      071D0D081D0B081B0B081E0C081E0F041B0C071D0D071A0D09200C08220C071F
+      0F081E1308210F08220F091D110A211308221104200A08230C061D0E0B1D0D09
+      1D0B081E0A08200C081B0C081E0B091E0F081B0D061E110A1E110418060A200C
+      081F0F041E15061E130A1E0F091F0B081E0D081B11081D110D1E16091B160B20
+      110B20110F1E13111F1A0C22140B1F160E1E160F211C0F20161123160E23160D
+      22161020160B1E17091D0F0C24190F1F180E23171020130F21170A1E170C1E0F
+      0F1D16111B160C1B160E1E19162A241429220E20160F2118101E160E211A1521
+      191120160C1D161322180D1E13112016112319081E160C24170D1E16091B150B
+      1E170C201810241C3C46728DE77592E6728EE4728AE7768FE8708AE6738EE976
+      92E9748EE7728BE96A88E46F8DE67892EB758FEA748FEB7996ED7892E9748FE9
+      768FE97A95E97895E87593E3718EE17491DF708DDB6D88D96F89D86D86D1667F
+      CB647DC76079C06078BD5D74B95C74B45C72B1576CAC5569A7576AA75367A454
+      68A95468A855689D5769976F7EA5818FA89BA9BCC5D2E5DCE1E8E0E2EBE1E3F5
+      F2F2FBFCFDFDF8F8FBEEECF5F3EFF9F4F2F9EEEBF0F4ECEDE4E0E7C4CCE3BDC9
+      E2CBCFDFDBD8DFDEDAE0E3DDDFE0DADCD7D3D7CECAD1D5D2D4D9D2D1B8B3C0A8
+      ACC1A6B0C1A8B2BDA8ABB7A8ABB29CA3A7848D9F6C778A586473475565465569
+      6D7F8E8A9DA69CBBC3ADCED1B0CCD0A0BDC6A2C4CD9DBEC98EAFB78AA7B286A1
+      B65D81A3345D7E8E9FABB5B9C76384B85387CD5580C27C92B490A1B96785B288
+      99B394A1B9577AB23C67A65D75A0929AA5A3A8A89A9EA3798898677B93707D92
+      7B869079898C758C8F6C869072888F75898D667E80617D80576B766273817C8E
+      9D91A2ACA1B2B6A9BCC0AFC3C7AABFBF9BB2AF92A9A782A19F7A97977994937C
+      9393748A8D647E865C7B85637F895E7D8668828971878C7B8D947C899374878D
+      648287678587758C8D778C8F81979D8E9EA1859A967E9A998AA1A09AA9A79DB0
+      B097ABAD8FA1A48392977586905F6D82505F7C47577C4B5C864C5F8C4C5D884A
+      5B874B5F8B4E618E52658C60708E7A8AA1A7BDCCB5C5CECBE4E8E3F6F8E8F7F8
+      D8F9F8E3FFFFE8FFFFD8F8F8C7EBEAC4E7E4B3D0CB9CB8B6B4CDD3B9D4D688AA
+      A57B99917B918C8BA6A394AFAE6A808081989DAECECB82A0987C9795ABCAC89F
+      C0BB97B5B5BDDCDFC3E3E2C3E0DED0E7E7D1E9E9BEDCDAB4D8D5A5BDBE98ADB1
+      738B914E5D693F4F5E2B3D4E283D4F2338461F2E39243743294251223543293E
+      492E464E2F444C44575F647C867C939D97ACB3B2C5CABBCED4BBCFD3B9CCCCB0
+      C1C5A0B3B897ACAF90A3A7859A9D869AA17D929A657A83687D8972879266808F
+      597485546D7C5B7280607986687E8D697E8B6278846E828978888F7D8E94889A
+      9C8D9EA187999B8C9B9A99AAA997A6A58693947885876F7B7D515E5F30434227
+      433F142B25102724263C3C3A494B64757991A5A9AFBEC1CBDCE8E1F0F4ECF6F7
+      DBEEF3C0DCE1B5D5D6ADCBCCA4BEC39DB5C098B3BB95B0B998B0BC92ADBB84A3
+      B27FA0AE809FAD8BA5AE92A9B295ACBB95ACBD97AEBE98B0BE9BB6C29CB9BF9E
+      BCBCA6C5C8B0D2D4BCD9D7C3DBDDCAE0E7C6DEE0B8CFCFA6B8BA94A5A8768B8D
+      3F52502532311527220E1C1912231E18332D162A240C1E1814322A152C260916
+      11152823192F2C122D29163935212F2C414744717F7DAEB9B8C3C6C6E3E5E5F2
+      F3F4F1F6F6EBF6F9E6F4F6E7F2F2DFEDEDCBD8DABAC7CDB3C7CFBAD0DEADC0CA
+      8B9D9E8F9FA18DA1A5809AA58CA2AEC2C9D1D4DADFD0D9DDB2BCC2ABB7BDBCC7
+      CEC5CDD3C2C9CEC0CED1CBD9DCCFDCE0C8D7DACCDAD9D9E0DFD0DCDDBDC9CAA5
+      A7A6949C9B5E6C6A313D3A20352E112A1F0F22180D1A150F1E1A0E201C172A24
+      111E1612211E213A3B1F342B2D4336557162617C6D6D8F808FB1A3ADC4B9B3C9
+      BCA7C3B49EBBAFB6CCC3C3D7CFB0CDC5B6D2CCCEDFDAC9DCD3B2C9B9ADC4B5D2
+      E0D8C8DCD1A0C1B5A2C0B8C2D8D3CBDFD8C7DED2BDD5C5BDD9CBC1D9CDB2C8BC
+      B0C7BCB1C6BE95B1A27C9F8C77948A637C774D6A63253731253937264444132C
+      2608181209140D1225221C3C45163232162F2D101E1D19201E393C3961746FA4
+      BCB9BAC5C3C2DEDBD0F1F1E3F6F6E2F7F8D0ECEDCAE7E6C8E2E3BAD5D7AECCD2
+      ACCDD3AAC8CCA2BDC29BB6BAA4C0BFBBD3C9A6BDBB889FA699ADADA8C0BBAFCA
+      C8B3CFD0A0BDBE9CB9BAA6C3C4AFC9CEB3CDCEB7CFD0C0D8DBC8E2DDCCE3DDCD
+      E5E2BDD5D4B3C7CA95A9AB819697607273333F402534311128250614100C1F18
+      14332E1B3D3D1227240A150D0C171009130D1B29244259585D757193A6A2AAB4
+      B2C6D0CAEAECECEFF0F0F3F4F3F5F9F2F0F9E8F5FBF5FEFFFFFAFFFDE6F3EFD3
+      E6E4CDE4E2C9E0DEC4DDDBCCE2DED0E4DCD0E5E2D5E5E7DDEAE9EDF9F5E8F5F0
+      DEE8E4D5E4DFD0E1DCD7E8E3DEEAE6DCDFDECED5D3AEBCBA9098987F88855767
+      6430413F2134300C181211221A162A25143D3714312C090E0D080E0914201B26
+      332F4656536A7B7A889B9CA7BBBEB9CFD0C0D7D8CADEDFCEE1E1CBDCD8C3D5D0
+      BDD4D1B8D0CFB5CBCCB9CDCDB5CCCCB7CECEBCD1D3BBD1D3BACDCFB7CCCFB7CF
+      D0BED5D5BDD2D3C2D7D6D2E7E6D5EBEAD5E9EBDBECECD8E9E9BFD3D59EB1B383
+      9797657D7841574E21352B1026170B21110F30120D2B150D2A110A280F0E2810
+      0D25120B27120C26120C23130B27120A271009250A09270E0929110A27120B27
+      100C280F0A27120A28110B250F0C2B130B2A140E2B150C2A160B2C130C2D140B
+      2A150A29150B27140B29110A27110A26120C2B1408290D0A290E0B28130B2614
+      0A23160A26120B260D0A250F09240F09220D09240F07201108231108260E0723
+      1408241208290D0A26120B260D09200A0B240C09270F08240E071E0D08210E09
+      200D081E0D091F1108221208200D071F0D081E0F091E0C0A200D0A200B08210C
+      07200C08221108230D08210D0A201208220D08230B07200D09210B092009081B
+      0D07200E09220E081E0E08200B061E0A071F0D081E0F061D0A071E0D071E0B08
+      1D0B041B0D081E0B071B08081E0D061B0D041E0B081B0B081B090A1F0E071E0C
+      091B0F071E0F041F0B041A0C041B0B081D0D031B0A071B0C08170C081A0A081A
+      0B06190C031B0A0B1A0C07190B061A0D0B1E0D081B0D031B0C071B0F08200B08
+      200E091D110A1B0D061E0B061E0E081E0F081F11081E16061F12071E0E081D0D
+      041D06081E0D081D0D081E0D081D0F081D0B091A0E081B15091A15081F190E1E
+      160B18150816110818160816130818130817120A18160A19140B16160B160F0A
+      18150D1D1A111D160F1A171320191223130F201C14211D0D1E19111E19142216
+      101F1C111E17111D1B131E1E111F1A15211911201B11231D151F18171E170F20
+      1610201512201B0C1D190A181511221D2339362D3F2D111F1B081D13121F1C11
+      241C15211F15221D11201918201A121B1C0F1E1912221A0B1D180C1B17121F1C
+      0D1B18101E1B14211D16292A3837728EE67C97E97590E7728BE7748DE7708BE7
+      728DE8758FE7748EEA7691EB708EE7738EE67692ED7893EC748EE97892EC7793
+      EB7590E97790EA7894ED7A96EB7A96E77692E67491E57592E1718EDE718DDD72
+      8AD96C88D4657FD0607BC9637CC5627AC16179BD6279BB6078B85A6EB05B6EAF
+      586BAA5466A55467A45568A4566AA65266A34D5F9C4F62994F63984A5C8C5B6C
+      938293B690A1BA929FAEA5B2C0C8D4E1CFD6E4D0D5E3D9DFE9D7DCE8D7DCE5D8
+      DCE6D8DBE5DBDCE5DADAE3D6D7DFD0D3DCCDD0DAC9CDD5C6C9D3B8BBC7AEB5C1
+      B5BCC9939DAD798490717A8967778D505E76404D673F4E6B3C4A6A3544663746
+      693A486E37466E3D4B6D46547444537351627C7F95A8879DAA8BA5ABA6C6C9B2
+      D3D7BDE0E4BBDCDBAFCBCEA6C1C79DBBC68FB0BD86A6BA91AEB99CB2B69AB0B6
+      97B0B89CB3B997AFB48EA9B28DA7B094AAAC8EA6A988A3AB86A0A8879CA192A7
+      AA9BB2B78FA6B08199A1768A9367798562798951657F4555764152773E507B42
+      527F4556814456814C5D845D6E8D627188718295889CA994A6AC98AAB0A3B5BA
+      A3B5BC9DB2B694A9AA8DA4A08FA7A390A7A493A7A495A9A491A6A496A9A797AC
+      A897ADA99BAEAC9DB1B09AB1B39BB3B59FB3B8A3B3B99BACB393A4AC93A5B17C
+      8EA15E708A6878975E6F984E628E4F628E4E639551689B5266985365954E6191
+      4A5E924E61925064934E63954F6496556B9C53689B5367994D6090586B976C82
+      A56A7E9A8C9FB3B3CFDCBCD3DAC9DBE0D7EBEFDAF4F6D7F2F3DCF2F5CAEBEABB
+      E4E0C4EEEBC5EBE8C4E7E6BAE1DBBCE4DBC0E5E1BADDDAAED5CFB3DDD8BDE1DE
+      BEE0DDC5E9E6C9EBE7C1E1DCB0CDCDA5C3C69CB5BE708492607484566B7F3547
+      5F30465F2D445E2B435D2B435A2A435826405327425221343E20344526445524
+      374322333E29464D2C4A522F474F25384021353925353A36464E45565C5F777C
+      7990958B9EA399ADB4ACC1C5B0C3C5ACBEBFA7BDBEA7BDBFA5BBBEA0B4B5A1B3
+      B5A1B5B69FB4B7A2B3B9A5B6BAA7B8BB9FB1B49BAFB19FB4B7A0B5BA9BB1B39C
+      B1B39AADB092A4A67F92926C7D7C475857384A4A3146451A28220E1B18162A25
+      132C231337301E3D3810242011231D0D1E18142A25182D261B32293546474A5E
+      65586A707F929898ACB3A1B7BDACC3C7BFD0D6BFD5DBB8D3D7B5CBD1B4C9D0BA
+      CFD5BFD4D7BED4D8BCD3D8BDD2D6B9D2D6B5CFD2B2CCD0B6CED0B8D0CFB7D1D1
+      B4D0D2BAD1D2B6CCCCAABFC1A4B6B998ABB070848450655F45585220312E0F1E
+      1A1A322C16312813302B153A3010261C1429231A3833102920132E25122B2517
+      302A0E1F1911271E16312A0C2C27183E3A12251F08100D1A403C21453F121C18
+      303C3A576A6661706D96A9AAC0CDCECCCECFD5D7D7E2EAEAE6F1F1E9ECEDE4EA
+      E8E3EEEAEEFAF9EFFBFCECF6F7E9F4F2E4F2EFD9E6E5D4E3E2D5E4E4DBE8E8D9
+      E8E5DEECEAE1EBEBDDEBECD8E5E6CDD2D3C4C8C7AEB6B78993935355544A5855
+      3549430F1C162139342337371126200D23180F291F172C28182C28142522081B
+      13112B26203634122A280F2C2613241B0D1C181E3B3419362E1C2E28283D3425
+      362D34463D51675D607D706381746D8D7F799C8E81A0938CA89D91ACA092AAA0
+      92ACA390AAA48EA9A18AA99D7D9E8F7C9B8A87A99C83A5977495826E8B7C6281
+      735C7B6F536B63344944213A31243F3619312911221C0F1C150C1C13172D281F
+      3B3915312A14322813261F12272B1C3B4114332C0F27231733332241440E1A18
+      0F271B21463C1E40382C453D4B625D4F635E7B9392ADC8C9B4CAC9C2D8D6CFE6
+      E5D1EAE8CCE5E5C7E3E3C5E1E0C6E1E0C7DFE0C9DEDCCBE2DCCBE3DFC7E0DCCB
+      E2E0CDE4E5C1DDDDB9D8D7BEDAD7C2DBDAC6DDDDCCE3E4C0D9DAAFC9CAA1BABB
+      839C9A4D5C594753503E5452244443162C2A0E231B1028230F2119153027102C
+      24102723183B351D4E490C2B260A15100A140F0B261B1942371C3C3910312913
+      32280C1A1419262131413C43575453656376837FA4B7AEB5C7C3B7C0BFC3CDCA
+      D1DBD8DCE5E2E2E5E4E2E5E4E4E7E7E7E9E8E6E8E8E5E6E6E3E4E4E1E3E3D2DA
+      D9C3CCCCB8BEBEB3C0BCA8BEBB809594576A654357523C504E2B4F4819382C10
+      1F18152C2217362B122E280E1E1915251C142D23123028143B3318302D101916
+      0E1813080D0907100909130D0E2117162C2622362C2C3E333847434A58586173
+      727083827F949091A4A39FB0B19FB2B2A0B4B7A5B9BBA9BCBCABBCC0A8B9BBA1
+      B6B79AAFB198ABAA8FA3A27E92917385866373734B58563544422A3833202A24
+      18221B122217101F150F21131022140E21170D1F14121E130E1B12111F151024
+      161023131027161225160E23131029161328140C26150F281511281810291312
+      25121224161526111126160D26160F2A180C27160B24120C1F110F2A180F2819
+      0F2A160D2A160C26180D2A170925150E281608270E0C26140A23120924120725
+      0B0827140822110A22120920140D250F08240D08270C0A231109221409210B0B
+      270E09230E0A220F0B231108230D09240B08250E09241208210C08210E051D0A
+      081E0B0A220B081E0D081F0D081E0C06200F0A1F0D08200B0C210E081F0B0922
+      0E082111051E0D08210E08230C08220D08200F081F0C08230D081F0A0C1E0B08
+      1D0D091E0B0B200B081E0E081E13081E0D07200D071B0D071B0C081F0B081E0A
+      081E0B071D0B081B0B081E0D0A1F0B061B0C081E0C041D0D081E0C071E0A031E
+      0B071B0B081F06091E090B1D0B081909081B0B061A0B071A0B081B0B071B0C07
+      1D0D091B0D081B0C081B0D081B0D081A0D071D0D061B0D071E0F091E0D091D0D
+      081B0D081B0E051A0C0A1E160A1D13081B11081B110B1D120D1B13091D160B19
+      160D1A0E0D1A0C0C180C0D18140B14140C160C1013130B1A13111D15121B170D
+      1E16112018131D17111A140D19160E1916111A15151D16111B170E1816101816
+      0F1B160F1D18111F1B111F18111E18121F1D17262117242115211F1524241723
+      231F272416241A1C292416281F14231C1E2B26162624192F29172224121E1D1A
+      242317262511211D15211E111F1D121F1B1328243247403841411529261C2D32
+      1226241225231424241B2C2C162C29182D2A243A33213A35192D2D1B2F311F31
+      37172B2B1D2D2B1D302C2737361F3B3BE0E16D89E37995E97C97E9708BE4728B
+      E6728DE7708BE87691EA7590E86F8AE87491EA7490E87795EB7995EB7B96EC77
+      91EB7896EC7897ED748FEA758FEC7796EC7798EB7593E77A94E87B98E97290E3
+      718CE2728CDF708CDD6C87D86D88D46984D0617DCA627CC76580C66980C56077
+      BD5974B85D75B65A6DB05A6CAF5B6EAE576BAA5467A64F63A04C5FA04B5F9F49
+      5E9D4E629E52659F53659C54669752648D6F83A26D7FA06879998D9FB6A0B1C4
+      98A7BC96A5BA96A6B998A8BB9EABBE9DA9BA9CA9B99AA5B296A4B393A4B85F6E
+      8853647F6478934F607E4C5D7E46587C45587E48597D4354783F50773D4F773A
+      4C73404F75404E773A49763E4E7846557D41527C43547F465783415684435683
+      52648D5564864352704E607D728A9E748A9F6F8299889FAE93ACB68BA3AD88A1
+      AE85A0AD879FAA869EA7859CA8879DAA889FA88AA0A68BA1A7738593697B9077
+      879C5E70894756764D5C7F5D6D995666974C5F93485B914A5C904B5C8D495C8E
+      495C8F4B5C8F4A5E90485E92495D944B5F964F61984D61984B619A4C60964F61
+      965568935B6E945C6D9B68789C798AA27789A17B89A47A89A47A8AA276879F6A
+      7D97687C956A7E986A7E9A687F9A5E7395586C9B5066914E668E5E71A1546BA3
+      4F67A55D72AB6075AB5E73A9566DA6536AA5566DA65A70A85C70A85D73A85D72
+      A85A6FA75C73A75D75A75A70A6576DA5576EA4586FA3576EA3576EA55B70A55E
+      74A65B72A46177A56377A65A70A45B6F9D5E719A63789F7189AB6982A26E86A4
+      8AA2B88CA4B789A0B2869FB1849EB0829CAF849DB07F9CAE819BAD849CAC809C
+      AB7591A55E76955C76935C7693465F83425B82415D843C58823C5B843E577F3B
+      5479314A6B3147683755733050692C4665334E672A425932596F2B4856243849
+      274659263B471F2F3D1F404B2947512D4751263D482B4C53253F3E2333382235
+      39294447294C47274244283F49253C403147453246454154545667695D707259
+      6A6C556667576768566C6F5E767958696C516165556C6C596C6E485A5B364D4C
+      3247432D46411F383419312B0E27210F2D240F241D17302C16332B0C19130D1E
+      180F27200A1A130C241B1D453D17372F0817100C201B18383012282009201511
+      211F142A2F1A3F4D224246172A231428201C3A34374F4B3D54513A4E49546060
+      6F81845E7374556B6F5A73785D797D5A70745E7375687C7D616E72647A7E637A
+      7B3E59533A544E4356542C443F213E361E3731163B311A40331D493C15372C16
+      2E2A142C27081711132D271F463C0E31250C261A12342C285A521C3A310E2C24
+      16332E1A3530122A231226221435311E4D441E413C1C2E2C0919121840372356
+      4E1A433B132C27132D2716382E183B3621474B2543411F3734364F4D4F67663D
+      53544D605B7D8E8B7E8B897D8B897983817983807A88848496917B8685788483
+      7F908E86999760726D3A4F494F6460384845203B321F3B33182E2508130B0713
+      0B13352818392E12231D081912162E27192F280C1A110E1F161839321A383722
+      3B3B081A1013362C1A3335193234122F2C112D240C29201E3E361C3A2F0F241D
+      0E271A162D250F1F170D20160F292114332C14312913291F21453C223C341925
+      1D283931324A432D47412A39332A433C2E544C22332D1E2F27223C331D342D0A
+      1A110A161119312C25413C16302D18302B19342D152C251C383312201C10271C
+      17372F183833183A3219362D11251A0C20161936281B40340C1912152E252B60
+      5B163430081910153B2F19473C132C240804020C1F171A413D274E531F353311
+      1B1629403A4F69643A5149475D59758D8C76918E6B827C6C827D6A817E66837E
+      68827E6478765E78765A6D6C6176764D6363364F473D5A54405956213630112A
+      220E302914332A0B251A081811153129173932162F2A0718100E2B1C112B2511
+      28200A1E1319302C203D371B493F16433D193A341723230D281E1B483C164139
+      09342A1437310D251D1126201626200E251B1A3C3811292608160C1C38321D42
+      3F1C362F28433E1D342D1F3634223D352A3F3627302A252C28273D3820333019
+      2C241D483D1B403810201C112A221A383514302B1337291C372F1524220D3328
+      143B2F1C37301A2F2C0C221916372C152F2B18322D21433B142B241630271D47
+      411A32301F352E101D1B0B1C120F1A140B13100B13110C130F10121010150C0E
+      150D0D120F0F16110D120E0E140F1014110D140F121511141714101714131917
+      12191612171111171214171313171316180F141614181D10181E131B211B231F
+      1A1A1B1A191E15171D12161B11191E161B22161B1D12171A1215191212191514
+      1713121912121A140E1812131912101D14111B11141C11161D12141D11121C15
+      141D15151E1A1823171820191A23171A2116171E16151E181826281B27261626
+      1C172118182018151E1E101D18101D16141E171220130C21160F1E131120130D
+      200F0C20120F21160E20110C20130C1E150C20150F23170E24130E21160C2014
+      0D200E0B200E0D22130E20140D21110B21140A220E0920110B2215091E110B20
+      0E091E0D081F0D081E0F0A1E1108200D081E0D081E0F0A1F0B0A1F0D091B0D08
+      200D061E0D082011071B0C081E0D091F0D071E0E081D0B0B1F0B09210A081B0C
+      071A0C081B0C091B0D0A1E0808200D031E0B081B0D081F0B061E0D0B1D0E081B
+      0A071D0B061E08081E0C081A0C081A0E071B0D081B0C081B0D061A0C0B1D0F07
+      1A0B081D11081A0B081E0E0B1B0C0D1E0F081D0F0C1B12081E0D0A1E0B0B1E12
+      0B1E140B1E160E1E0D0C1E0E0E1B120A1D12081B12081A0D06170F081B0D081B
+      0E08190D0917160B1616081A17131D1E0B17130919160B1916101E1D101B1813
+      1D1A111E191118160E12120E1516111E1C14211A17211B141F1614211C121E1A
+      1A2417121E1B111B1A131F181B201E101F16131E17171F1E17201E15201D171B
+      19151D1910201915211D1822221D3029172B281C342D162A2F1B2D2E1D322E1F
+      3530263A361A322C2638331F362D22332F29383222312E2037341D37361F3935
+      203433152B2E19322D2239322033321A342F2038342136313F4D4C3D514E203A
+      3C243D3F253D42213A3A1D36301F38341D3434203A39253D3E253E3B233F371E
+      3A35233B38273D3E213C39263C38273B392C423DE3E56E89E47690E77690E673
+      8EE67590E77891E9758FE87491EA7791E9728BE87492EB7793E97C99EB7692EA
+      7691EB7893EB809AEF7998ED7591EB7793EB7998ED7897EC7894EA7B95EB7E9A
+      ED7796E87390E56B87E26E8AE07390E07691DC718DD96682D2627ECF6883CD65
+      80C9617CC6627BC2637BC05D73B95B71B75D71B7596EB1546BAE5066AA5368AA
+      4E67A84E63A45366A5566AA5576BA55B71A8586CA45A6CA354679F4D61984E63
+      9B475D964C63964D63955369985A6E986173996072985A6A914E608643547F41
+      5585384E804357854F6591485C8B51648F54678E4F638A4D628B4B5F89485A87
+      455885465987465B8B455B8B4A5D8C495B88495C874456864456884455874353
+      8540528744558C45588D43578E45599144588F3D4E8D3B4A9139478D42519048
+      589241518E3C4D8C45558C44558A3C4D85404F874252864053864253863E4F82
+      4155823F517D3C4C7B394B7C3E4E8545568D4B5E9851659E5165A15165A15166
+      A05266A152659F5368A25368A14E64A14F65A35367A45469A5556AA45469A55A
+      6CAA5E71AD5F74B36076B65972B25D75B55B74B76279BB647BBD5F78BF5C77BC
+      6079BC647DBD637CBD5B76BC5571BA5771BC5C77BE5D78BD5C76BE607BBC5C76
+      B65B74B7647BB6647BB55973B45A72B56078B85E77B65C78B8667EB96E82B964
+      7CB9617ABA687EBB6B84BC647DB9617AB7657DB7677EB76B84B6657CB55E78B4
+      5F79B2637BB26179B05D77AD5972A85871AA6378AD667AAE5B75AF5B75AF687C
+      B05B76AF536FAE5A75AF5C77AF5B76AE5B79AD5D78AB5A76AB5774A95672A853
+      70A74E69A24F6BA2516DA0506FA15273A14C69974C6A9949689246658D4B6D95
+      435D883D5A813B577C39547639597A385B7E395B813855762E455F2F516B3056
+      6F2D4D632D4F62253543233949305D6B2E4E5B2E4D5A2F545B325259233E4029
+      4148324B51203A3A1B37352448462A4F502143401935371B363317342F122A24
+      1934322037320E271F1B403720413F27514C1E3B350D231E17372E1B3F32102C
+      240C2621102A210C1A15142A2515372D123228183A2F173329132B24172F2C0B
+      241B0F201A1125201A343013282215312A15433911362A1731250E30230E291F
+      0D261E0E1E130B1718183941204A4716382C091F1815372D193B2F183E311F41
+      370A130F192D28233A36101D18132D221F413A132B2A15393024463B13232017
+      3D3B1E423D122D2113362B18322F10282117322A16332A15332B1C3D3218372D
+      1F4C3F29514A1A34310B181013211B132B2315332C19382F1130271F4F432B59
+      4C1F413A193633213F3A1B2F291227201A413A285245244D461E3B3B152D2312
+      221C122C2718393020443E172C280D201C0A1A121D3C381E464115322C132C28
+      112D2A214541112F230B261B15291F0D20160A201615221C192822213F39193A
+      320E251B10281E1D4439254B401A39301839351E403B15392E153D3216362E17
+      28200D1F160C251A133127274B420C170E0F2B1C1631290E1F170F261B16362E
+      2342431F3A411028251437291E3939213B3C1E4944193E3211291D1F4B3A153D
+      2F153326112E2217352C223E3B10201F10241C1332251C3E3619332D1F423717
+      352A06170E1A352B18332D1A3E3618352F0A1811183C2F174536193E301F4739
+      13332816342A0C2A1D1E41371E3A331A3A331938321F3B370D231C1D3D312039
+      350D211823453F18322B122E1F193A311530261E4137193E330D2F21192D2121
+      3A311E483D144333133B2D153B2F183E341228210B1911133E2E173E34214845
+      1E433B112A1F142E241F4D3F184C3D1641371D444B19423F0D2D20192F241F38
+      2F24463E20413B1B4039244949193331193533152F2A0918110D2E22154F431B
+      3A3712272815382E0E2A1C12372A102E2814352E1A4B3D1C46390F231C0D281D
+      12322D1A423C0B211910241E19392F19493B143D32254C412642400918131031
+      261E4E46144338173C37204E47173C350921171B3D30143B3014393116282910
+      2D250E2B1F18312B1C3B370D291D164536153B331839310F201C0817100D281A
+      0F2B220B1E171C4F44144741112F291A383017302C153228112D1E132B241C36
+      2F0F271D122F2518372F193F3A162B29192D2C091E1C17382E20433B14302711
+      221C193935122E2C182C28182723111E17121D17121A19111D1B171C1A1A2116
+      181B1B101910111A10131810131D131418111018150F16121118101518121317
+      111113101015101013110C131210140F0E120F100F0B0F150A12150F11131012
+      140F12170D12160E11160B0F1407121610121611141513151712171713121A12
+      151B14131714121910111914181C15161A17151F1915211514211B19221E1C20
+      191C261617211B161D1812201A18231F19211D1B201A1F2517151A162E383736
+      4431192B160B100D111414181B1A151915141916101612141A17162119172416
+      152117182617172016172119141F16161F16131B15131E12121E19111B161319
+      170B1A13121B1115171311190B11160D11160D0E130D10180D13150D0E16110E
+      1B14131B0F121A12141A181620181523161622161424160F23150B1E0E0D1E0D
+      111F140F1B0F0E1B0B0B1B0D091B120C1A0B0B1F130B1F1409200D091E0F091E
+      0F081E0F081E0D091D0E0D1B0B0B1E0F0B21130A1B0E08190D091B0C0C1A0E0B
+      1B130A1D12081B15081A140F1A110E1D150A1D120B1F120D1E160C1B150F1B16
+      101A130F1D0E0E19150D191608180F131712121D16101B140F190F09160D0D17
+      11101B1425332E1B251B141B110E16130F1B16111E1A0B1B1E131E1B131E1915
+      222414231D10211E13221C14212215241F1626231425211626211A27261A2624
+      1B252314211E10241D151E1B121D1D0F1A19131E1D12211C14211F1624211523
+      221625241825231625231D2B27172A251C2C28172B291D2B261A28241C2A2818
+      2824182926172826182A2A1B302A25302C2336372239351C322D213A36243A34
+      243934243B37203835263B38233C36263C36223934273A392A3A392037332239
+      39293D38253736253A381F3F36223D3D253A35244038233D39263C393B53503D
+      4D47223D3B1F3C3D203B3824363A273D39213A372038341F3A39273E3526443C
+      263D3A2A403D28413630413C2A463C2F433C283E3A31413D676A728BE4758DE7
+      7089E3738EE87993E97995E97690E87690E7778FE97890EB7390EA7792EA7D96
+      EB7996EB7893EB7D95EB7B93EB7592EB7692EB7893EB7796EB7B99ED7B99EC78
+      94EA7C98ED7B97EC7794E8708EE56C8AE27492E37591E0728EDE6D89D86582D5
+      6785D36785D1637ECB667DC76980C96177C05F75C05B73BD5D74BA536DB6536C
+      B55B72B75870B4596FB2596EB15B71B16174B06175AF5A70AB5D70A752659F48
+      5D964B5F994A5F97495E95516698526897586E985E719960739752628B415380
+      394B7D445988465E8D485C8F526697596F9B586E9A5D709C5F739C5A709B5B71
+      9C5B709D51669552669851669A4C639A4D639A52669A5064974D629652679A55
+      6A9D5166994C61974C5F95485A924B5F944D62934A5E9140538D35468D384891
+      4151913E4C8F3F4F8F3A498B3A4C8B3C508B40528A394B87374A883E4F884253
+      8A41558A435788485D894A5C884555853D4D7C3C4A783E4E7D4152864D5F944F
+      609B5569A75E72B45B72B55870B35A70B3586EB2576EB15A71B2586FB25871B5
+      556EB3566EB45871B45870B55A70B65B72B65C73B65E74B75D76B85B75B85E75
+      B55F78B65F78B85873B7526DB3556FB45A74B76078B85874B95471B85674B75D
+      78BA6780C0667FC16881C26981C4647EC5627FC66480C56F88C76482C36782C4
+      6984C46C86C8738DCD718ACA6C86C8728CC96F89C86F88C66E88C36D87C46D86
+      C46B86C36580BE637EBC5F7BBA627CB96880B86980B76980B65F7BB35C77B060
+      79AD5E77AD5772AB5D76AE5E76AE5873AD5772AB5973AA5871A85771A75A72A6
+      5872A6516EA4516CA34E69A0516BA15571A55D7AA85C74A15573A25475A2516E
+      9A51749D4E6E974867904B6A92435F863F628B4164964367903B597B3756773B
+      5E793A5978375C79355C732E47592B4353315463325969335B6D2E50572A4A51
+      29464D27434D2D484F1932322240422646442246421F433C24414118312F142B
+      2911242315302D18332D132B2510211E1124241E423E1A38320F2B27112B240D
+      20190E29220C27210D231D102724122F2817342B0F2D2115312B24433C14322A
+      173131193A301335281737301C33311A352C112D270D2B25183B301533281231
+      250E2C22112F23102E210E1E1910221D163A2E0F312412352D193D3310281C0B
+      291E1A423818332A0A16111A38361A332A091A1411332D17332F122F26193C31
+      0A17110F271F1D494019322A102D271F42401B3F37122D24152F26132A210E2C
+      25132F2F1F423C1E4B3F1F403810231C13262010261F0F26292A4B4F1E38310F
+      2C20295E50244D46132E271C403A1C3B37182F260D2F22173B2F274F4B1E3D39
+      13241C0F1D1A163631102C24284543233E380C1F170D1B1B1E3A3B1F3F3A1229
+      24122221162E2A244C441D45380821170C291C12362B112A201229211E362F16
+      332B173D31132B211631261A3C2F194038172D2813332E274D45122C1F113125
+      1631261F362C193A2F020A06132A202F5D4F1B322912261F153124194335163C
+      352040402D4F4D1F48461E4549193634244036182F23244D3C1B44341B342A1A
+      3B2D103225193C311A372D132B1F17332E15302C122B20102D1F2147421F463D
+      1636290E241B091B1115362B19342E17362F22444010221E0D271B1640301E48
+      3B214B451233291F40371B40391C403919342B1333251D4639244D4416302D0E
+      22182B434313261F2646392142361136281F463A25473D14362A144233103325
+      182F242A43421227220C291B1B47381C4D4116403414372D163027122F24194A
+      381B4B40183930163F311C3F350E2B211134251F433C1C434014352D11342810
+      241A182F252A5251243A3C183830204040142B2717392F193730081D140D281C
+      18493C1B4A432744441A3832102A200D251C1732291D3F351D4C3E1C4F432345
+      3E18382E1B3C362047461B443A0B2C200F312314453510382A1F4835234A3E11
+      2A2212342A1A413C10332A123027133A2E204D42163A321B4E3F194736294743
+      1C282809180F2243341D3B3320413D0E2B2417382C1A3F350D2F2419453A132F
+      28020D05142E2416322C1D4D44284845162E28153328143C321C4B3D1437291C
+      3D31224D44153A2C123A2A1135291D473E1A3E39203F3D122527132D28172F25
+      162B1F122219182621122119131C1514191410191215231A121D16121B16141B
+      13161A0E1117131014120F1410151511121911171B14191C121B2016151C1019
+      1B1421201B2523222325262021222324232121201A201E282F2B151C17151A1C
+      10191D151C1E12171A171E200D1713121A160F17111218180C18130F1C1F101B
+      18151F2110150E0C110B0D0E0A0B0F0E130E0E141D18111A150A170D10180B0A
+      140B0D160B0F160E1119171A272F102630030C17080F14131714111B150F1817
+      27352D303B29474B383A40391B20160100000D0F111315121517170E0B0D0A0D
+      06060906020302030402080B030304020200010200000F18120E130C11160D0E
+      12110D0F0D0A0C03080904090A0D0705060A130A0A140E080F0E000000100C0E
+      0A100C0D0E0B07090B0B120D11120E0B0F0C080001080A09070A090A09090A15
+      0A0E130B0A100A0E150F0B100D0F150B1C261A0B170F142418162A1B12201511
+      1F0E0E1B0C0E1E16151D140F190B13170916170F11160C1317111119110F160B
+      0E14111112130C120F0F130D0B13120F130F0D130F0B120D0B130A0A120D0B12
+      130A0F0E0C0F0B0D0E060B100C090E080A0F080D0C0C0B0D0D10120D11140B0D
+      14130B130F0D171732433B202C17090A050D131417231A1A2822172724192A29
+      1A2B29152823192C28162D24182A241C2F291A322F1C2B221F29251B322D1B2D
+      2E192F2A202D2F172F34163130202F2E202D2B1B2D2D1C2C2E1729271D333219
+      2D281A2B2920302C18302A20312D2033312839342639352A3E3B1E3933243936
+      263532233434202F2C1E322D2037311F343324353124393420342E2B3D3A2442
+      3D2339332C3D34263D2F283F352B3C382C423A2A3E332C3B3226372E273E322B
+      3F3A283F3C2D40372D3D382A403C2C433E2A3F3C2A443D2E413C233B37203F38
+      3D514E46534E25403A30423F2440392740392B3B33283C3B2A3F382644392B40
+      3931433D2E40353343402D403B31423A34463A35453B35483E36473D331C7892
+      E4788FE6758BE6748BE8748DE7738FE67791E7788EE8748BE7738DE77490E875
+      91EA7993E87B96EB7893EB7993EB7C96EB7895EC7790EA7891EA7995EB809BEE
+      84A0F07995EB7691EB7B95EB7894E97494E9718DE47691E4738FE46E8BE26C8B
+      E06785D96A87D9708CD86B87D56881CF6A82CE5C77C75E78C65B77C55C78C55F
+      77C35E76C06279C05F77C05C75BE5E75BC647BBE687EBE677DB96075B5576EAF
+      5268A65166A24E64A05168A25166A05870A2576E9F6077A26378A161759E495E
+      8E3D54873D51874E63954F689A5970A25A72A35D75A6657CAB637BAB637BAD61
+      77AB5E76A95F76AA6179AA637AAD5C73A95B71A95A71AA6278AC6275AB5A71AA
+      5A72A8546BA44E64A25168A451669E5267A152669F4F639E445999405799394E
+      9B3F509D475A9B41549847579A4656973F50923B4E90364B8F3F519143589541
+      5693455895465C97445A964559924D5F944C5B9251649650608E4F5F8D4A5886
+      44548045528347558B4E5F9E5569AF647BC0647EC9657DC7647DC6607AC4607A
+      C55F7AC45E79C4617CC4607AC45B76C35F7BC3607CC3627CC45F7BC4607CC567
+      80C4657FC35F79C3607BC35875C25875C0607BC25E78C35976C15E7CC2607EC6
+      617EC66682C86D87CC6D87CD6885CF6786CF6784CD6A88D0738DD5728ED76E8B
+      D7728ED77793DA7791D9708BD46E8BD47792D87B97D8728FD5718CD16F8DCF70
+      8DCF708ECE6F8ACD708BCC718CCB6C88C9718BC9748BC66D87C36A84C16681BF
+      6681BD6480BC607DBA627FB96883BB6B84BD6B84BC6984BB6983BB6881B86580
+      B75E7BB45673B15F7AB3627DB35E79B15877AF5776AF5C7AB35572AC546FA857
+      77AD5878AC5275A8547AAA5478A754729F5071974C749F5175A34D6E943E5B7E
+      426589456E8D4266853B5D7D3758743252692E49612F546835657A325F742D52
+      5E2D4651345A653459632C4B521F3C3E254247253E411D33381E3839264D4829
+      4E481B3232192F2E1A3934132B251324221C2F2C132826153C351A3C36183631
+      12362E13352B14322C1A413B0F35290E30271237321D3933132F23132A261736
+      320E2A1F1436321534300B1C130F302515322812241C103B32153D3216322C1F
+      4037122C220B201A1230201333281A382E0F211916392E1030220C2E241B4E43
+      0E281E0D2118183F33173E31092018122E28193A300E281C0E2920122C241738
+      2D1C5042112B210B22191B4137162E250C27201E473E1E55451440331B3A3012
+      36290B271F1736311F423A1538301739331733291A312A102D22163C3621494D
+      21423A0A1D151A413826564911312719484222504B10251E0D2E2216372E1D3A
+      3724463D112F250F2A23213F3923403A2D4F4A1C3E3511281F19322F224B4A21
+      4741132E291029251D3C371A3832173F3313362A06201214312715352B0D2D20
+      13372B1535291A392D1132261643351A443527534F1F3431132B222753451734
+      2A17392C142F230F1F17225041214B3D1B3E31244D3E1F423E172E2A1A3F3117
+      40300E231A152C272F534D2D6559245F5A183B35193E2F22403B264239254C3D
+      1F4F4621443A0F1A131A3E341B3E2F0F2A1E12292916322B1B4531133828254F
+      4B1F443B1641311A40340E1C150E22171B39301D3A31254C431B3C33102E210D
+      221623453C28514F1A45371F443E20403C21433A1A3B2E1535281F4F3F144336
+      2649481527202B514E1E3C3B091A0F234336254F451A4133224437102F211342
+      301C4335172E2726504B1F423A10261C183A2D194F3C16382B1B3B310E221C16
+      35261E534330655B2750490D2B201C473C0D2E220E291A1847371A423913392C
+      1031250B20180A23170A30221D453B1C443A264A451D3733143F31194D3D0C2D
+      241E39311C3E33174F3C1A4E41183C38224E471940350B21171B3327233F390B
+      2C2129544B23443B22413A102B281B453B1C42390621161742341A4335204A44
+      193432122D1E28604F1D4D4910312915322906160F1C37311C3B3A0931221A47
+      34335B562033320E1B1321494419443A153A301B443A0E30251431250C2C210D
+      3E2F173B3107120D10211A1326210F291F29413C264A3F1F52461C423C20483D
+      142B23172B1F21493D22443B183D300F3B30214B411542361D403A284B4E1834
+      3118413520423A20382F1F2D2C0E1C14132A1C121C190D1A13153527142F260A
+      1513101A16151B1315171410171412171311141210130E10130C121311171B12
+      161B121718171B1B0F2524122A291E3031253B382C4041303D3F303D3F2F3237
+      24343A2B4749394A52464F5C535460583C56473D51413741343B463D36413943
+      534C5C6054555B4D21291A080D06070C0A161818393E39505E4D273624050903
+      050706040C0A060B08080B0B050C0E2437383F5662638A9147615B161B12161E
+      19171B1A4042414C523F5A5C4C878372928B72948F73282F1C11141225272782
+      7E764247395E5F598680746F6E593E443450523E676B54676B52080B01070B09
+      080A0915171634332C3D3C3145483C44433350513E20200E0B0C081A1B195E5C
+      50141B0E0E0F0B1819193E433A070A010D0E0B1B21226A636260625562615763
+      5C4F2F35251F231A1C221C171D160D140E030302201F1B11180E1B23281E2824
+      1622150D1811161A1A3C4340625E5754524B5B5B4C444737444536494B3E292F
+      1E132116182518161D0F1519150B1B161219120C0E04060C090A0E0D0B10090A
+      10060B0C0A0E0D0D0E0F0C0E0F0B0F0E09080E09080C0A080D0D080C0B080D0B
+      080C0C080C0A050C090E181637483A1F2F1E111312101A161E27281929261C2F
+      2A1C2F2A1C2F2A1B302D19302E1D2D27202F2B192D2A162C28172C271B282719
+      3235172C2C1C303018303219302C17332E1F35321E3130192B301A322D203631
+      1A2F291C342C17302C1F373721383A2237331E2D321B3230223631263C342335
+      3424363229393A283A392335302838372637332835302633302436332D3A3B29
+      3A3525352B293A322C3A302A3C38314233313F38313736283D392A3A372F3C32
+      293D2E253D3728403D2D3A2F2F3A332C40362C403D31423E2D3F352A41393145
+      3C2D423E40544A4B574C273D3A333E3C2F423D34403E2E403834403E30403931
+      48352D3E3731423935473C34483E34483938474239443F3A453B384A3F3A4A38
+      66657B92E77D95E7778EE47289E4748BE67790E6738EE4738FE87590E86F8AE6
+      7793EA7896E97E98EB7993EA7690EA748FE87892E97C92EB7891EB7890E97E97
+      EB7D98EB809AEE7D99EF7995EC7793EB7893EB7897EB7390E67794E66D8DE268
+      86DF6A89E16A87DE6B88DC6F8ADD6B86D96582D46A86D4617CCE5F7BCC607BCD
+      5A76CB6680CB667DC9657DC7657DC9617BC8667EC97088CD6983C76882C1677E
+      BE5B72B7576DB0586DAF536AAA556DAD5E75AF637CAF5C75AA657BAD6A7FAA5B
+      719F465C92415A933D55934E679F5670A75B75AA6C84B46880B56B85B86D88BB
+      6F88BC6F88BD5F79B4516DAD5A75AF5F79B5607CB66580B76881B86078B2566E
+      AF5C75B26981B86079B2546FAC576FAC4C63A65166A7566DAB5266A94A62A63C
+      53A0364BA24053A54355A24155A03E539F4559A147599F43569B3B509A3F539B
+      4556994C619F4D63A3485E9E4F66A14B609D4C619D4C619C52659E56679B4F60
+      985362994C5E9341558C3B4B853A4A83394B883E51935067AC5F77C36882D269
+      86D46985D46885D46885D26B86D26C86D06683CE6884D16884D06482CF6582CF
+      6A83D06580CF6583CF6482CF627DCF5E7DCC6783CD6682CD6682D06B87D1698A
+      D26584CE6E8AD16E8BD36E8BD6728FD76D8DD86C8DD9708FDC7492DF7792DE72
+      8FDF7793E17F9AE47C9AE57191E07492DF7492DF7A97E17696DE7696DD7D9ADC
+      7997DC708FD97491D97A96DA7A94D87992D47491D46D8BD16B87D06E8BCE738C
+      CE728BCE718DCD6F8ACA7189C8778FCA6C8ACA728CC97690C8728FC8718EC96E
+      8AC76C89C46484C06D89C47791C4718CC36B88C06484C06286BE6081BC6083BE
+      5F7EB65B7AB36184BC5D7EB5597DB4577DB45476AA5677A85479A65077A5547A
+      A755779E507095547B9E4976994570963A628437516F395A753E6D8641758B3B
+      6D813B6474355E6A38616C385E6A2B515625464C23454E2D50532C494E1E3E40
+      20403F234343274E4D1D3D3A143A371D474318322E19373418342F112E28153A
+      3214352E173C3422584A1640391F4A491440360E32271034311A3C3A1C3F3611
+      2F2617453813352712342B1D473E1D48390F36260F342C0F2D29133E311E513F
+      15362C1C3B35193D341742351237261233272653451834280C281D113429143A
+      312D685C2451420F201716372C183B3012362A13342C18352D0E251B0E2E210F
+      3126163C321B4C401D4B3C0F2E231431291C3A2E143329193E361F5545184C3D
+      1C42381744370D2E22112C201B3C32234C40183B311A372D162D25143324285B
+      4E1F4D3E1A40321840341A42372A57481B4238255A521D4F420E2F2314322516
+      3A2F20484028594C123C2C1940361D3A39324B482141391E493F193B30152C26
+      2F555429554C1B3933132C26193C36112A2917392C1A46380F30261833292142
+      36092B1F1334271A40311D49390C291D12362A0D2C201D372E2A4E4C15383116
+      41321C4637123428153D34193D3725473F19392C1A402F2456472553491F453D
+      173C301C4235163B2A183629274F4A19423B1C42311A3D2C0D30212147422B50
+      52203F3724564E1D443C152F262041360E20140B17111A3731244A3E1C463717
+      4033245A5320453F0C291E1A4536122B200B1B1319463B194536194136183F31
+      1B40330F1E161C392F25564C153E2E163A30224A3E224C3F183B3118392A1E4E
+      3A2153411A3C361F443927554F284D4D0C22182A473D20463F1E40300F251A17
+      38281F504117352B11291F255F52284C43101C14122B1F174839194636183B2E
+      1B43330F3627143E33346059306B6114372D1C473B13372C0A22191142311A3C
+      3014403313362A0C1B13142A1D09150B184234205E512652491C3C3312392B0F
+      392614443B1C3E371635271345331551411C443C17403517483612302313211B
+      23463F163A2F1F52481E49421F45411C433B1E4B3E14423312433316382B1743
+      322D69611735350A190B1648362362542158461D3F391927291229271F46401E
+      3F350F3323193F36102822122D20265756204D46133529123E2E195946164034
+      18392F1436291743361C463F0A2B241532291430260E272624433F295A522758
+      5019372F10281D192B1F153529335D5525433A072D1E1952421C4339162C2822
+      45431838311640362659541E4B441D3C3510211715392D23424116322B1A332B
+      0A1C1418382F2040351A281A191D121B1A1A161B13161D14151A1A1618171416
+      131C1E1A1A1C14161A1A171D16141C131A181313141014170A13140C1A1C0F17
+      1B0A1D1F0D1E1D0C1D1E0E1F220E2027142927142D33202934222D341C3B412B
+      424B344447314448344D4A3546473711130B0D0E0A1B1B16222317181E14131A
+      0D090E0B050B080B0D0B10120D0D0D0C0F0E0D1312120E0F0A0B120A1823161C
+      26181C2417171E1A4D4D4B55574528311E020A000B0F040C0D0311181312160E
+      111211080F030E0E080F0D080C09040D10050D15080C12040A0F000B1202181D
+      0B090E09050B09181B1B262A1D4B4B375654415B56413D4024161B0B080C060B
+      0D0B312F1D2828161E1F151A180F0E0C02110D090A0C060B0D0915150A4B513C
+      918F6D8F89688F90655653392025182328182A2F22A3A18F7C7D63080D022130
+      2B202B1B1A251611150E232123B6AA9C989972999B7D93956C706E4F6061434B
+      5337494F37313A292A3B2925311F1A2217252F2B181E16080C02050704070B0A
+      080C0B080C0908070A0405010405030206050306060607030609060306050509
+      04050505020405080B09080C0D171E17434B3B262D1A090F08121E182D373220
+      2D2E13292815322C15312F17312C1C2F2D1C2D2A1B2D2A1A2D28192A2B1D302E
+      1A2D2B1C312E1430321A30371E312D1A352F1835301E353721393B1D34341C35
+      321B36312238321E3632203A37203835203B3821393524393823393320352F28
+      39312C3A352A3732233334213832263A3424322E2B3A322D3C32303A34283A30
+      2D3E3A2F3C382A3A33313F3A33413937453B36453837423B3B413B38403A3945
+      3D3B4237314035303F3934433936463837453A33463834443E32433D33403727
+      3D35354D4331473C4753474F5A4731483C32483F32443C33443C33483C364740
+      32413E31463C313C39394A3E3B483E3C44413D473A394B423B4C473B47423D47
+      4139453DB7CD758DE77991E6768EE3738AE4768EE77690E6708AE4748DE77C95
+      E9758DE77590E87997E87993EA7891EB7791E97791EA738BE6738BE67893EB77
+      93EB7C95EB7590EA7995EB819BEC8099ED7693EB7390EA7391EA7590E77791E7
+      6F8FE46585DD7290E37692E56B87DC6F88DD718CDD6783D66A84D66985D55D7B
+      CF5E7AD0607BD16A86D4647FCF6882D26F88D56781D16B84D16F87D16D84CF69
+      81C7617BC26076BF5A72B66178B95A72B66077B8667FBA6B82BB6681B76780B4
+      7286B45A72A445609948619C47619F5069A56680B4637EB56E89BD7B92C4748F
+      C26885BE6A84BD6F87BE7490C66F8CC66786C06585BF6C89C36F88C26A85C167
+      81C0617CBC5977B65F77B65E75B45C76B55B74B35871B3526CB14A65AC5069AD
+      5469AF4A62B04158AB4B5FAE5267AF4E63AB4056A34156A43B50A033479D4155
+      A54A5DA74258A1485BA3485DA44760A54F66A84F66A65068A4586EA8536AA457
+      6BA45769A04D5F98485A96415493394B8E3B4C8D3E50903C4D8A45568D50609A
+      546AA95A72BA6982CE6E8BDA728EDF728EDE6B88DB6888D96D8AD96C88D86383
+      D76280D66682D86A86D76888D76785D76B87D86D8CD86989D76D89D87692DA70
+      90D96486D76889D76F8ED9718DDD7491DF708EDE7693E17895E37092E47394E6
+      7594E47996E67B99E87C9CE87A9AE87899E87396E87B9AE87D9DE97D9CE884A4
+      E87999E67998E4819CE5839EE67B99E47594DD7693D97793DB7694DD7492D977
+      92D87A95D87992D87694D87895D8839BD6849DD67C98D4839CD47A97D17494D2
+      7391CF708DCC738FCD6E8DCB7393CF7491CE6F8DCB6C8DCB6E8FCB7091CC7194
+      CC7395CA6B8FC86989C1678DC6668AC16284BE6082BD5C81BA5A7BB25778AD53
+      7DB2547EB1597CAB5274A15179A4547FA7477398436C913C5E7F3D5E7B3F617C
+      4260793B53683C5D704275883F6B7C3B636F2C505923474D2B515B335B622D56
+      5C2B585922423E1936352154551F47411D4242337071254C460D1E1D193F3A15
+      322A11231C1135291D403620493E1D4A3F10322C1D54491D5442102F22173A32
+      153B32163F3820574B1D4C3A122A221C3A31265B4B16473A1237351E4A43163D
+      3014413726554D1C433B1E4539102E1F0F2415102D231C48391F443808211811
+      332923483D2A605522493C11241C0F2A1F102C201536281F52431F4239153429
+      133B2C0F35261D493F20443C14382B0E2E22143126214E422B514B122F291640
+      33265748214D401F524215423410362B17473B15382C16372A213F35122E2214
+      2E2333544E2E5E4F194531113A2C194B3D2353491E453D205442124B3A1A4B3D
+      1738281C4439284D471D43370B201414352A163D371F403C1D39321C483C1D44
+      370C1C19234545254C45194339163E341535331E3D3E123628103A271541341E
+      3F3521483B173F33112E210D2E201747381948381D45370B231B0F2014254948
+      2759541D59431E503F15362C183E321E4D42284F46111F170B23192355431F51
+      3F2E5C4F2748401E433A19503C2659462D544D163930132C1F11372418463816
+      3D351E3F3920423A26483E205143225B4E2048400C1B12101D12183931214F41
+      224B3D0F2C1E215B4C295F54102E22183A2D1634281030241C4C3D1D4F412352
+      4F143D331C42351D2E271232281F504415382E1C3E381E463A18493A1E4D4216
+      3B311332241E4636224E431D463A234D411F4A421E423C1739311D4535143729
+      0B1F151839272052451B4135132E201F574417443610312316241D1B46392661
+      4F1942311D4B3A1B44352457491D413B254E421E5343164037235A4D16433613
+      382A1D4A3B1E473E1A493D0A261C0C17100E1E161838291C594622605117332A
+      133B2B0F2D1F1A483818443917342A0E36250C3B2E16433A19443A0C271C101A
+      13233F3818473D123E312551471A463B2860562B554F1F4B3C07211615372910
+      3727113124285F5426574C0D211713402E1E57462155452A575320433E163429
+      224D422B5B521B3C311C423919342B11251A18493D245E501F41391033251446
+      361752421A4F42183F3214332B274B431B483D12382D193A310D2E2A183E361E
+      3E3328544A2D5852223B2D1F3C2D1F3D312C5146254F4014402F1C564817493D
+      254138263E411633331330261A42361A4A3D184235162B251D4136173F371C42
+      381E322F090E0A14281B295A4C1F39351C24181E211D1F251D202B1D24291E1F
+      271B1822151B22181B1F1A1D201C1E25191D271E23271821261B21271823271F
+      22261B141B0A0B0F040B0C0A080C080A0C06090B060A0B0A1216121B21181621
+      151621151E21151D22161B2012181B0E191D1620291F1F261F20231D1B1E1918
+      201C162116181F14171D16171E16151F1D1F241F1A1A181F1F1D20251F1F271B
+      262826252C21222F23191E1E4F565A555C4837422A1522141B1F16161E171019
+      1610130F1012111A1A18161A13141B14181E1615140D0E100A0F100B0F120A0B
+      100B0D1008080A060E1613151A16181D141E1F161A1F13171E13141B0C141D13
+      131611111716161E13171E121517121014140D13120E120F0E100D0E140F1616
+      141618150F0F060B0E020D0F001D1B1123281B2527180B0E0504040015180813
+      191134403A364131202C17151E19071006151206191B05181E05212611252B17
+      28301A2A2F192930162028161E25161D26141B21131C2015181B0C0809040507
+      05080C0B0B100E0E130B0D0F08080606070503030404080906060B0802050603
+      07060206040405060309030506080D100C2025194B51402C311C0203000B1916
+      2D3B312A362A1B3026172D2D1A2F301A2F2B1F33311C2F2A1C362F1F312D1F31
+      2E1B302C20302B1C2F2E1E34322535342337361A3837213A39233A361F37391B
+      3831223633293937293B32263C362C3C39213E35263E39323D3E2B423B2B3C31
+      293A352B3A352C3C38313E332A342D2A393331403931433534443C36493B3544
+      362F433335443E37443E39413D2B3A39313F3A3C463B34453B3540333B463538
+      483B3945383542393A453B3C473C3747363540352F3F313E48383244353A4A3C
+      33443533443C33483E39473E49554E4F5D4834453E3646433A453A384A393B4B
+      3E3C4A3E3C4B3F3F49423C493F3A4B3C364A353D4C3C3E493E3E4A40404C3D3F
+      4D3E3B483E35483DDEE4758DE48095E87C93E6738BE37289E2768EE6778FE476
+      8EE47E96E9778FE4738BE47995E97792EA7791EA7691EA7995EB728EE8708BE4
+      7891E97691EA7893EB7B96EC7C98EB7B96E97993E97996EB7692E96E8BE66F8E
+      E66E8AE16E8BE26C8BE16F8EE17795E37490E26E8CDF768FE16D86DC6582D865
+      83D75E7FD5607DD46A85D86883D6627FD36C89D7728BDA6983D66F89D87089D5
+      6D86D26C85D1647BC95F7AC55A74BE677FC3627DC2667EC16F89C4708BC4728C
+      C26E86B95F76B0536FA84D68A45068A65B76B15A74AE6E87BC708AC3718FC37B
+      97C9728DC4718CC66381BE5C78BC7592CD7998D06D8CC9718EC97390CB7491CC
+      6E8AC96884C46881C06682C16884C35A74BC4B68B55771B95771B8536FB7536E
+      B4506CB24861B3455EB75168B94E64B4536CB65872B84C62AF3E54A8334AA237
+      4AA3465DAB4C64AE4B64AD435AA9465DAB4D65AD4B62AA4B64AA536EAD5169A9
+      546DAB5D74AC5B70A7586BA252669D4E619C50649E4A5E9A4C5D9750629B4C5D
+      975062985366984E61964E619E576EB0647BC76F8DDC7996E87A96EA7593E56E
+      8DE06C8CE06C8BE16A88DE6E8DE06D8DE16C8CE16B8CE16F8FE07090E07190E1
+      6B8EDE6889DE6889DF6A8BE0688AE17192E47292E57896E97896E97290E76F91
+      E77395E77594E87E9CEB7C9FEC7899EB7C99E983A0EE7F9FEE7F9EED7C9CED7A
+      9AED7796EA7B99EC86A2EE86A2EB829FEA7C98E87494E57998E57B97E47E99E0
+      7C98E07593DF7592DD849CE07A98DF7E9AE0849EDE7998DA7E9ADA819BDA7D99
+      D97493D77693D77C98D97B97D57B96D47192D16587D0688AD06B8ED27493D26F
+      8FD06C8ED06D8CCD6E8CCD6F90CF678BC9668BC96D92CC6A8DC56488C15E84BE
+      6083BE618CC05784B75476AE5577AA4E72A55074A44B769C4F799E4A75984266
+      89455F81374C6A35455F364F6937637F3D72883766702E505B31565E335D6834
+      5C66284F552856592547431F49441F4D4A2654502D59552359582A635C1C3B35
+      16423C2C655C1C3D310C3427254B411E372F1A3C36102E231D4B3C16483A1033
+      24103023143A2E143930174D442157481635291628231A372F15423A184B4422
+      514615332C163B332A574E194B3F1D51411D433010281A0C251A143A2B0F3527
+      0B24191632271A392D1B4D3F2A61511E4A3B1231230E2C1C0D33261D5444265B
+      4D1D44381536280A2118163A3324403D193F341F4C3D1342331A45391E413B24
+      474018382C1337271D473C235443204F410C342A1343321F4B3E1439301E3D2F
+      173A2E213F36204136153C2D1237282252431B52412A6C5B2460521847392052
+      45194E3E123E2D285D501F3E3510281D0C18110D211719443A19403614322918
+      413816382E1C312F234D50265958183F38122F261E3D39234243163D30143324
+      0E36241335241B45332A564C14362B0E281E0A2C1F17563F1A4C3A18352B0C1E
+      141E423A23534A1C523D113A2D1B3A33122B201B453825473F1D392B1942341F
+      45391B45382B584E315E582A4D45183C2F14423434665B2A51470E3424163D2C
+      214F3E174837254C472C554F204134123D2D2565532A5B511737260C23151C3C
+      3C1635321E483A102A1D1E453A29594F1A443319493A1530240B1E14123A291C
+      50453062621333291137262849441B383314463A1C4944285E57163E33153D2D
+      163E2E1235291D3B2F143223164233173E311437291F50402150451840371E41
+      331A4A36245A4529594824554A1C4035152A1C173B2D163F301D4C3B1729200C
+      1A121832242145381D49371E4834256052295B5A15332A1843311B473A154131
+      1747371232251946381E4F431A45371C4C3D10312812231A102C21123C2C164C
+      3C23483E123E2C1C4D3C1B362B163F3311382B162E210B2E210D3E30255F5219
+      3B32111D1416342627635026594819352F193E3123534F244E4F20433C123224
+      18342916282009221811342A2968591B463D103B2918403416423817463B1D41
+      3E1C3936153C2F1F5B4D21493E28584E194438142D221346361D58481A3C3410
+      291E09291A1342311A5B460A3C2A1032292C4F461C423C0E302615342916362C
+      1136271235251F4B3E3C73663A5F50263D3226483C2F433F19322718412F2052
+      4B164136294E3F345153132F2F0F251C101F14173F30235C511C3E3D0E342615
+      44312648441C34341B332E101F1B183229163A331C28201F221E1F251B242F21
+      272E222429201A1C121F231A1A1E181E271B1B261922292123282120271D1E2B
+      1E2629191F2417191D1311110A0A0B060909050807040B0A0A080B09060A091B
+      1B19181E1623281D21271C242922252B1E22291B25281D27261F252622202321
+      1B1E1B1E221B1D1F1C1E221A181E161F231F1F221C1F231E1C211E1F24191F23
+      1B1C1F1B2B2A26333A2F2230211A1F1D5152545A654F394224152113151E1C16
+      1E160E18160A15130F1611171B16151B16161E16191E160F130A080C06060708
+      070503070908080706080706121513191E1A1A1E17171E19171B16151916151B
+      19141B13171D15191E18131D18191E1D171B16151A1310131110150D10171111
+      1813131B13131D16111B15151D16151A141E241F323731303018111208090F0C
+      151E13151A1337433D3B4B3B21311E151D120F180F0E0F0D0D100B0D0F0B090C
+      06060A03080B03070903060900090A040B0E0A0B12090C0F0C080F0B090F0A08
+      0D09040A0A070C0B030C06070E0A0A0B0A080C0B060A08080B0A080A0B080B06
+      060909050908050C06030B06030905090D0C1114131F271F4B544A2B36250205
+      03101617313C323039271F2C241E2D2D1C2C2E24343120352E23393025373020
+      352F20362E253631243433243839263B362C3B32263A37283C352B3C34263A34
+      283C3A263A38283A35313E3C313D332C41362C3D38283F3B2A423A36433B303F
+      352E4035313F3C2E40333543382D3B322E383329372F31403E3143352E3E3231
+      423736454139493B39473E3C493E3E4D3F3C423E3B453E38473936443E33403A
+      384738394637424A393A433B3F4A3E39433C314635364534313F2D323F333646
+      3838463E37443733433034453D3845414254414F5D503C46383C48403D4A3D30
+      4639384A3C40493F3C4C3E3B4D3E414C3E3E4D3E3D4B3F39433F39463B344A3C
+      3B4F3B41513E3B483F3D4A43D1CF778EE37990E6788FE4748BE3728BE2778EE4
+      7B92E8758DE47C91E67890E6748DE37B96E87C96EB768FE87995EA7C96EB7791
+      E97389E67991EA7992E97895EA7E9AEC7B98EC7997EA7892E87B95E97E99EB77
+      8FE9708DE76E8EE26E89DE7391E3738DE27691E37D99E47591E1728DE06A86DC
+      6583DA5B79D45979D76481D96F8CDE6D88DB6683D86E8BDC7089DC708BDE7491
+      E1738BDC6F89D86986D46981CD6883CD5F7CCA6B84CD6681C96A84C77892CF77
+      90CD748FC76D85BD566FAD4E67A8546FAD566FAF6581BB6784BF6A87C27B95C6
+      7893C8728FC87B98CD7A99D07490CB6381C66180C57A97D2819CD57D9BD27898
+      D27796D27791CD738DCA5E7BC35371BD607BC06580C55D7CC35B77C05471BC51
+      70BC5771BC546EB9516CBB4D65BE5A6FC15E75BF576EBB536BBB4E67B73F55B0
+      3E56B0445AB1465FAF435FAD435AAE3F5CB13F5EB34865B04D68B34E69B14D68
+      AF4862AB475FAA4861A6465EA5485DA34A5D9F485F9E4F62A04C609B4F619B47
+      599542558F4658904D5F9752679D50619B394A8E20337B2A3B893A4FAA506CCB
+      6E8DE67B9AF47C9BF37393EB6B8DE66E90E77090E77291E67797E87695E97F9A
+      EB7896EA7093E86C8EE86C8DE86989E5708EE77296EA7194EB7798EC7596EA75
+      96EB789AEE789BEE7A9BEC7F9FED789BEF7C9DEF7F9EEE799AED7799EC7697EE
+      7291ED7492EB7E9CEE83A1F080A0F07696E87595E97F9DEA7B9BE97B9AE97996
+      E47D9AE584A0E8829FE8809DE7829EE8829EE67B9AE27B97E37997DF7898E077
+      97E17697E0839FE3829EE27896DE7997DB7B98DB7392D87195DA6F91DB6E90D8
+      7291D66D8CD56A89D16B8CD37293D46D92D66A8ED26D8ECD7190D06D8ECC6C8E
+      CA6E91CB6D91CA6589C45981B96083BC6382B55E7DAE5B7CAB5780AE5B84AE52
+      7DA54B739B4A6D913D55723D516E3B59753C6C8B3E788F345E703357642B4654
+      335760305E6325494F2C525D284A511F3F412349461C3F3C1F46401F47421E4F
+      4719483E1F3E39285A4F244F44163A36265756163529153B361F473D10271B14
+      3C381642390F33261B493B173F32102E27174133154335204A411D4237114839
+      1F59481D4D3E12342B16382D143E31205848194B3C21584216442F102E201033
+      26174437153E2E1130231A352A0D2B201F61501F52410F2D1F0C2315153C3221
+      5A51245A49163D2E18393010292210211A24443C1A43361F524222615011382B
+      12382D294B3F162E230B2F211F5C4C2F7260225B49133C3013322A255A512458
+      4D143A2E2252451C392C0E251A11362A20473B184031204D3B2551411C5B4921
+      5947214A3E113E320D36291D4E3F143E30184336122F26091E16244D4421423B
+      0F2921173B33183C33163930325E5D295E551C4F43163F33163B321A3D3B1A44
+      3B20413C0F2A1F0F34251941301C453B153D310E291C0B1D11123A291D4A3C1C
+      483C17362A1D463A173B2E0B23150E34251943351732251E42383A665E193A2C
+      173F2C2053421F483D25483E224F46194238214336183B2E24594C2B5F531033
+      230F33231442322A604E3C6C6A254B4A1D48392553411E493A1F40330F20160E
+      1E141A362E173E33154533133A2A20433C265F581B4C3A0F3A2A143126152821
+      0C1F151C493C23665D1738320D2C23163B35162C241B4B3A1E3A331E584C1F58
+      4721584914403414382A103425183F32123C2C143E2F163527215F4A21514520
+      4C3F1A48391B453426624E1243313562552F57530F2F241336251C3E2F1B4939
+      1B392C17241B233C2F25473D0B1A131434221F543E3471692A60620F33251644
+      3115493716362A1030231546361948370F30231E503D1B3D330B140F1842320E
+      2A1E1C43342C6C5B11382B214A3A1A4236144A3A18554115322519342B154535
+      2464541F51450F1E13080B06336150336E5F10372E1C5343245A511B433C1E43
+      37112F211746361D55430E3B2C133627144B352F73621A3732263A301C4A3D1F
+      4D3C325E5A25474918352E164D3D214B3F2F61581A4E46133B301E5040295F50
+      154235122F23162C1F0D322218584518443712362B16483E244545112A261E4F
+      3F1F4C401231231732241D483D294D413B65542B56461B433631514B131E1A09
+      2816206050183E35194135325753143931143F310F21160C2115215D4920564A
+      143B2F173D30345D601B3A3B17342C17302A0B1A12122C2214291E1F221A1F27
+      19252820222C211E281A191D121E241B1E22151D261A1D2A1A1D281C1F281E24
+      2E1E21251D2128151F2417171A16161D12080503080405070708070605080509
+      0707090D12121A211921281D1D2D1B26291E262F1F232D1E252C1C22291D2427
+      2321262122261B1D211A1E221F1F20211B1E161C1F1B2024171E231A1D231D1B
+      251720231820281D2A301F40433531402D1719164C555058644F36452614250F
+      161E1B171E180F1A150C130E131916151D15162014121E1417201610140A0E0F
+      08050A04050706080609080606090A0B080C080E1714171916151A1413181613
+      1816111B1811180F171E13151817181B19171A181319161118150E150E111713
+      11160F121716121917141B16111816181E141118161C26243B402E3C3A230D10
+      040D0D0B1A1D18121A163E4D4542533C2E371F171E1313170E0B13110B0F0F0B
+      120E081006030A00030705050505040504030505030706040B0C08100B0A0E06
+      0C0E0B090B0A080F06080C0A080D0B090D0A080F06080E08080C0A0A0D060A0C
+      06080C09080D0D090C0A080B06080C0A080B0A0C0E0C0D140C232726404E472B
+      331F070900161916393D37313C3623342D22353020362F2339312A3A36283C39
+      2F3D342C3B362A3F362539302D3D3430413430413934403B323E382C3E372C40
+      3A2F413B2A403731403D313C352C3A323643353144322C423830423F36483A32
+      433436473839483937433A35403E343D382D3B2E323C312D3A302E3E3C39443C
+      39423735413E30423B303E3232433835433538443E3742393843383E473B3C45
+      383E48433D4C473B4A3C3F483B3A443E34443A3D483B3842393A483A3E483D36
+      433636473836473934443731413734453F3C484245524750604B394D3F414E41
+      3B473D2E41383C4B3E3D4B3D3C4B3D3E4D3E3D4B3E3C4C3E3A483E3A47403C4C
+      3E3A4A3B3F483D414C3E3B493B3C4B44234A758FE47088E2758AE3788FE77890
+      E4788FE47991EA788FE4798FE4768FE47690E47993E77791E6758BE47C93E979
+      92EA768EE8768EE87790E77B90E77E96E97D97EB7D99EB7B97EB7D93EA7C93E7
+      7793E77690E7708AE66D8AE3728EE1728FE27590E37790E37690E17690E26D8A
+      DD6E8BDE6B85DB6180DA617FDA6986DB738DDE7590E16785DA6C8AE0748DE174
+      8FE17797E2738DDB768FDA6C87D76882D16880CF6380D06A86D36A85CF6F8BD1
+      7B95D47E95D1738DC86882BF516BAE526DAD5974B45876B6607FBC6C88C47490
+      C87793C77B99D07A95CC7491C87290C96D88C97B97D2738FCB6D89CB7796D088
+      A3D9809DD67590CE7895D0708DC85C7AC25A7DC65979C15572BE6984C96881C6
+      607EC55A76C35874C15975C2546FC0506BC25771C45F76C4576EBF4B63BA3E53
+      B33241AB4159B8425DB43E59B13F59B0445FB34B69B54160B34768B6516CB551
+      6BB54F6BB14A63AD4962AC4159A73B50A33D52A2465BA3485AA240529C3D5193
+      4155963C4F923C4C904252913948882C3B80212E761C2972111A64060E56070F
+      58161F6A273A8A4358AF637DD47D9AEE85A6F67E9EF57695ED7594EB7190EC6D
+      8FEA7495EB7394EB7493ED7293ED7191EB7093EA7898EC7494EE7494EC7594ED
+      7695ED7798EE809FF27495EF7397ED799AF0819EF1809EF07497EC789AEF799B
+      EE7295ED7C9BEE86A5F0819FEE779AEC789BEC7597EB7B9BEC7F9FEC7F9FEC78
+      9AE9809EEA87A6EE84A4EE88A4F185A2EE809EEB7C9BE77494E37F9BE590A9E9
+      8AA7E87E9EE67B9DE685A2E8829EE57F9CE182A0E37E9FE37D9DE17597DE6D8D
+      DC7695DD7598DA7A9ADB7F9CDB7A9BDB7398D87295D86E92D76F92D26C8CCD6A
+      8ECF668ACD6386C9698DCA698BC7698BC46A8FC36286BA6281B55C7DAF587FB0
+      5C87B64F6D9950719C52789D456283415678426982477A90437D903D6C822F55
+      682A495F2D4F5F2F5960274F552C565E274E52244B512B52561F3B3B19403C1C
+      433F1E4B441C473E22494316322D1A3D36224A411C4E4D1E453D17453A235145
+      17312A1C4038204E42103C2F1C4A3B1A4C3D143326132D211134281C4A41112D
+      21205142225B481B53411C4B3E123B2B1646361C55421747360E2C1B0E312219
+      41331D473929584B174536133D2C153A2913332523584A1D4A3B143A2713291F
+      142C232763521D50461950431E4D43183A310A1D141544341A4B3A132F221C49
+      3D17493D163D2E1C332A162C2722564B1A4D401D4A3E1B4C3E173E35193F371A
+      503E235644143529255647193E300E21161130212040311E352B1A413A1D423F
+      15352C163E2E113224144134215D4A184B3A113F301B463C26554A1233291E43
+      3C22514519423617332A193D341D4B3E183D3621483F1F5C501F534817413719
+      4A41153325224E431D4B3B25594F1C453B1A40351F463A173E2F0C211613271B
+      1F493A173F310C21161A4A3B15413217372811342A244E3E274A3D13281F1E42
+      361E44381438261E4E3C204F422B534319392D143E31173E302D493E204B3F1C
+      4E3F113324072B1B123F30245042255346122F24112C1E1F483A194837204B3E
+      162A240D1D1321483B265448112A1F0C2115224F43206A5D1F5844154B371B49
+      3D1C463D102C2210281E255D5327625C1E52481B4C44173E33132E2019362D1D
+      483E225F4A30705D2A65571A4D401D4A3E173D31173C2D1B45371C4F41226052
+      275B511F52412A715A2A645417393014372B1E463B2E605E2A5C560F37251737
+      281F483824493C334B44203C3123483C112922131E161834242C605533726B21
+      50431F503F1642341238251034221952451C5043184131174531205C4B15372E
+      1C4B3B235D4B2F6054306A5E18423315432F14443811413116513D2051432B56
+      4F14392D20544A235450162B21080C091531222269521952451B4D3F205D4F1B
+      4F3F133228112F241C413020544019473A163429154638366B6623414024443B
+      25403A112419275445274D4926504A163E31153A2F205D512359521845362243
+      3920463818513E14413414392A0C291A15392A264F46132B28113F30265D5418
+      3C3B18392B225448113A2923564030625E2E4F4E2C4B3E1E47372054431C5447
+      163530112C201B634C215B4E204D402552501A473F1F5B4913372E152D222A53
+      4219473A2B706020574F2454521C463E20423E1E3736080A040D231614342525
+      241D20231E20261E2526212028191E1F191F231B1F201822231E222621222921
+      22291D22281C1F2B1E2128191B1E1614191116160F1517151215141313111112
+      0E0E140E0B0F0D0B100D151D181E241F202B1F24291C222B1E202B1F242F2223
+      291D212A1F20291E1F261A1E24191C211B2122191921161A24191D24171E231C
+      1D221D1C251A1E201E1D231D2B2D26454C3D3C47301A1F1D4A54505B64533E45
+      2B162012181F191A1D1D101A161117130B1716161E18161E1519221818211510
+      130B11160D0A0B04050A09070908080B06080703080708100F0E141718101B16
+      151B16151A19111713151916171A15171F17181D16161F16151E16151B161014
+      0F0F1514111813101B160F1816151B160C1B141319180F191620241F3E412F35
+      3522110F05080F0C161E1B121716404F444A523E2D3A28171F14131B0B0A1013
+      0B0F0F0D0F0D08100B080B05040502000400030403040303020403050606090C
+      080A0F08080D09090E0B070C04080D0A080B0A0A0E06080D0A080C09080C0807
+      0B0B080C09070D09080D060B0C0B070C0B060C0A060B0A080E0613150E242F2B
+      58615A2E3723080303111B18343D37343A362838352436322D39342D3A342B3B
+      31263D342A41352A3F3D2A3936303D3937443A34403837423A30413636403431
+      423633423B33403C3642383B4336313E39374338303F3C33453B334237324639
+      36483A3B473738413336433034433637433B3041303042332D3B322D33302F34
+      343D453C40483B3B473D334A3D3846353746373D4C3C3A473A364438394B3C3C
+      4B3639473E3A47393D493E3A45383447323847323D453E3D4A3A3545303C473A
+      3E453E3F4B3C3C4A3A3A433D3F473840473C39463A354A3B49534A515C4A3A46
+      3E384B3638453B364140353D3A36473C3C433E414B3D34493E374A413A483B41
+      493E3F4D3E414B4232443C313E373A44383C4A3D7C91768EE6758BE3748DE476
+      91E7758EE2758EE37991E7758DE3738BE47892E8778FE6768DE4758BE4788EE4
+      788BE47992EA7891EA7891E97792E67B8FE77D91E87C93E77E98EA8099EB7992
+      E87C95E7758EE36E89E46F8BE4728EE4748EE2768FE3728AE1728EE07490E26C
+      86DC6B87DB6E8BDD617FDA6381DC6B89DC6582DA738BDC7893E2708AE0708DE1
+      7792E47793E37C98E66E88DB6D87D86D89D76180D2607DD16C87D56C89D66D87
+      D3738DD67D98D77C97D26D87C85973BA536DB15B77B45E7BB75F7DBD6585C16E
+      8AC57691C97696CA7694CE839CD27895CA6B89C46A87C87592CD849FD67998D5
+      708FCD7796D27C9AD57390CD6985C56986C6637FC4607DC66581C6607FC7627E
+      C85F78C5647FC95D76C35776C55977C55674C35674C65F79C86379C6526CBF45
+      5FBB374AB22C3BAA3F55B54A63BA4159B44563B74767B7516FBB506EBC506EBD
+      5D75BD5573B94A68B14A62AD465EA8435AA63A4F9F374C9F3B519F3E539B3C50
+      973C4F924254953E5095394B9034468C2C3A83202D7821307828387C323F8230
+      3F7F2A3A742A377123316A16205C1A246735458F4C61B4697FD37E9AEC7C9DF4
+      6B8FEF7192EE7294EE7595EF7392EF7392EF7798EF7397EE7395ED7495EE7C9A
+      EF799AF07392EE7B99EF789AEF6F96EE7295EE7D9CF084A1F17899EE7496EB78
+      9AEF7695ED799AED86A6F1799CED7C9AEC789BED7899EB80A0F07B9BEE7798EC
+      799AED7E9DEE84A3EF80A0ED81A2F083A2EF809DEC7F9CEA7D9DEB7C9EE983A1
+      E989A4EC7F9CE77A9BE87F9FE87B9CE87B9EE984A0E687A2E5849FE27D9DE27C
+      9BE281A0E480A2E27B9DDF87A4E27FA0DF7699DB7294D96F94D96F92D67596D7
+      7496D66F92D26B92D3668BCB6C92CB7095CB6E96CC6C92C76D8DBF6589B95C80
+      B46281B35E86B45979A75578A35B82A8587FA34A688841607C426C8644718C42
+      6F87396075355C723E6D84386C742854592C555F2B4D53326469326165295051
+      224C482249431D3E39285152305F5A18302D14332A164138204E4920463B1F43
+      35203F34204D3F15463313372D173D33112D23184234163D2A1B362C1E3F3917
+      46370A210F18342B2C574A153E322960501C4F3B103829133F301F4E3E11271B
+      102A1C23473D224B3E245047183C2A173A29132C1F0F3023204C3F1935241336
+      261B3E32152F222D6053244A401547381E544522584D163124123427265E4B20
+      453617423934736827544527413A2E554B20554B26544F1F433B11372A164336
+      264F3F174630143C2C162D241D44382363531135240D27161732283056532155
+      5F1E51561C43370C291D1033241B4433205546236053225F4F1F42341A3B3117
+      443B1C4A3E1E54441E4C3E12342A0F221C1A4336163F3412322A1C443C225348
+      1C433C174A3F0F33230D30211B503F2A655918443615423618382B1F523E2158
+      44112B21193A2F1B473611221616463A206250163C2E1C433A18332824503F24
+      52441E3D321B413317453215422F113426204737123D2D1C513F133C2B29433C
+      2746401544341A503E174A371E4537265F53215D49193C2D193F311137281743
+      33296C5A265D4C0A1E12203E312347411728221322161B43351B534114413017
+      44352D6C60265A4E1D433814382C173D371850401D533F29685A24524A0D1A15
+      1729232B4A420E291C2653433C6E632661522059491A42331C3E3114392B1E4D
+      4031645D112F2419382928634E2869553A615B315650174F3E1B453C20524C1C
+      54411E4434172B2112281D2F53452B473E0D261B1D44381A3026182D201F5545
+      2A62561F423A1242341641321131211025171542341542381A4B3B194B3A2056
+      4529584821423A1B4A3C254D3E245A4E18493A103E2C1C5E4F1C4C3E12332420
+      5A49235D53173A2E173A3710302A102217111D150C2618174B381142321F3D33
+      21483C0C35270C3627194031193129112116132A2015322827524F2C5254204F
+      491943373B5B5B1932321C483A274D4A214B451B3C31174334235B502A59541B
+      483A1E4C3D17382A174B3B174E3F19493A173E2D0B25162052431E4A3F103928
+      1540341D4B450C21191A3329203C33174A342654532546443662581C3D301B46
+      371E5A4B1B4035183B2E1447341B5B4716463A1E50471D4440184C3F1D524820
+      483E35534E255149154F3E18513F224D411E4636325C5B30595E0D16120B1E11
+      14291D1C21191E23191E24211F271A20251419211E1C201E1E1E1422271F2124
+      2325271E1D2B1D1F2A1C1D2516222618191D1315170E141A162F312D3C383138
+      40302B352121271B1D23161B211625272222251E1A231B22241E21281B21291C
+      262D21262D1A202B1A1E271F1E23192021171B201618231917201720211B1C25
+      1921261D1F291D2025181E271A22261B2B312D474C44434A3B1B1D164D5B5356
+      5F49394824142216161E171E2017151D180F1A160E18151D1E19191E161B1F18
+      1C201710120F14180E1A1F1A2026221F241B1C1F161517110A100D11190E1419
+      13131916151B161A1E16171B14101816121B15131F1A1820161B1F161C221615
+      1E161217110F160F1016160E1615111A18151E160E1916121D16151A1125291D
+      41442F363D2512150B100F0E1B1F16151D1546504C485640323D28202716151B
+      110D13130E120E1213110E0F0B0D0F0D0A0F0C0D0F0D080C0C07090805090607
+      0A08080C0B0E0E0B0A0F08080C0C080F0B090D0C0A0F0D080F0B0C12090A0F0B
+      0A0C0B080C0B080F0E0B0D0B0B0C0B090C0B0A0E0C080C0B080C0B0B100B171E
+      112C3027515B4A303A23080502141A18354132353F332D373026362C25392E31
+      3D35293B34313B36314338314236343E3A2E3E362F44333141332E3F352F3D32
+      2F41362C3D3531443235443432453736413930403631403336443934463A3247
+      3934443A35463933443735453D30423D31433C33433833443533413139423A2F
+      3A342533302A3A2F39493F3246353A433B37443539463938453635412F334137
+      41493E3E49383540303B463A3C433D313C32334037334438374537343F333C48
+      3A3844323945393B4A373D49393D453E3C463D38473D394739394A3649594A55
+      61513C474038473A38463B424B3E3B473939463E38453E3B4A3C3C473B3D463E
+      434E40434E3F3C4C3D414C3C3E4A42313C303A443B3346357878768DE6748EE4
+      768EE4778FE67890E4758DE47990E4778FE6748AE4798EE77990E7778EE4788E
+      E67890E77990E47B92E8748BE6758DE77791E7788FE77B92E78098E88196E982
+      98EB7892E77891E4778DE3708AE36E88E1728BE47992E4748BDF758DE2748FE1
+      7490E26C87DA6480D96C88DF6482DA6383DB6082DA627FD8748DDF7992E47891
+      E4738FE1748FE17490E17C97E96E88DE647FDA5F7FD65B7CD46A86D96B87D872
+      8FDA738FD87E99DD819ADA748FCF6280C44C68B55E78BA617EBC5E7ABE637EC0
+      7290C97896CC7693CC7897CD7C99D07695CD7996CD6D8AC86D8BC76F8DC97492
+      D07D9BD5809ED87695D37692CE7591CC6683C55A77BF6482C56581C76079C367
+      83C96C88CD6483CC617CC8526DC05A79C75F7DC85671C45673C75A75CA6279C8
+      556EC03C53B6384AB63D51B5415BB64F69BD4964B74969BC4B6CBE5270C05B78
+      C25A77C05E78C05C77BA526DB54C66B2435AA93E54A53B4FA0374B9B3B509B34
+      4995374B953B4D9538499234448E2C3E892437812C3A8433428B3B4B91394A8E
+      36488D3C4D933E50933E5095384A8D2E3D852A38811E2B7217226B22307A354A
+      9A5774C97899EC82A0FA7898F47897F07797ED7798F07698F17797F07999F177
+      9AF17497F17395EE7393EF7697EF6F95ED6D92EE7496EB7B9BEE7B9BEE7498ED
+      7898EE7596EC7B9DEF80A0EF7393EB7C9BEF809EF07697EE809EF0779AEE7395
+      EA7998EB7E9CED86A3EF82A2EF7B9BEB7D9DEB7D9DE87798EA84A0EF819FEC7B
+      9DEB7E9FEB7D9FEC86A5F089A6EE7C9DEB7B9CEA819EEA819EE8819FE485A2E7
+      8AA9EC82A1E87C9FE484A3E484A0E37B9CE27798E07797DE7397DA7497DC7395
+      DA7092DA799CDA799DDA779CDA7899D5789ED57599CD6E90C76A90CA6C8EC363
+      87BA648BC06183B65F83B1587CA9577CA95F83AB577EA2537D9C486286446389
+      4A7391466F863F6C84345B6F2F4F603C73802E5D682B53602C545D3565692755
+      5523555124514820423B14212328565434625B1B38331F4E43184A3E235C501C
+      493A173B2E1A3B301C4739226955194A3E133D311A453B20463C12312319352D
+      224B42173C2A0D220F1524243D595527493F245A4A1C533F1646361E493C1334
+      26183326081A0F223933203E35214C4117382717312425433A0C2D2220534721
+      3B2E0B1A111532261532242B5652224A3F153C2B18392D173B331A3E320D261B
+      1F493B1E44360E211A2457482D5A4B2E47402F5D5222504221473E28594B1A41
+      321E54432A4C4215362914433620443E193B34205D4B25624C0E24171334261C
+      4D412345472A5F591A4F3E173A2F173F331D3E3516352D245C502E695B285344
+      142A2317463F23544B173E30184037204B4112342910392C15382E204A3F163B
+      30113126174336193B321B4E3E1937280C2F1D185543184B362366511642310E
+      22162259461A4031113125194535153727134436235B471943321F524A183A37
+      1A382C29635226554A214438143628194D3B174234153325154431256C551238
+      241C3D3126554A235A451745331842332652452F74602565501D41351B46381D
+      4D3C2054411D483B27614E20503E11291F32544F283E370E221613392B123124
+      17281E263C31224B41225D4C2142391734281D4D40184C3A113C291E49352048
+      441E38361738271D352E182A231F413C2E5C58194A3A1E503D2450431E483915
+      37292743392C4A44213E332238291E392A0925192A5148234C43205E48204C3B
+      1C473E1A4A3C205140133B2B143C2D183C2F28544619382A1D362C172D251F3C
+      2E2F706129685B1B473A17513E17503D173E2F11241A0B2317234D4028554617
+      41311929212133252E5A4B1841361221171A503F2669551B4C3B256F5B1A4940
+      101E181742322F685E1F4D4115412F0D26190B2319122D21213E321C33270B32
+      23113F2F1B392C0E312417493B20524423524511201A111E161D3A2B29554A17
+      3C35123B30164134275B5325524E1A493E225C571D423D122017193829235046
+      2250491D4C3E163E2E1232221D513E1B4D40144032173F30113725225647234F
+      41194D3B1D4E3F1D574F183C3B183025294C4015473E26514F23443F375F5A29
+      4841153D312056481940330C291E173C2D1745341D68541C4C4211332E0C2D22
+      133B2E1C4B3B273F391B4A3E205644174435113B2E112F2128514F36686A173B
+      3510231A1327191921161D201A21242220241E20261820241A2429231C231823
+      2822202A17262C24242A21202A1D20251822261B1D2216151A11222725343A2E
+      343B2B3C3C2B2F351F272416191E0F13160D1417151D221A20231F20231F2028
+      1922281923291C1F271C1F271D1F27192025191B25171721191C2019171D1820
+      21231F221C1D221A21231F1E2023171F181C1F1B292D29475042424E3C1F261A
+      515A55555F503C4729142011141F18192317141B17141E180E1816191F1B1520
+      141B21181A2116141513141812282B24282C2223291D13190D12140D11150B0B
+      120B161B1A151D161420141419161B1F17111A11171B16171E1C1A1E14202518
+      1C2216171E150F17121013120C17120D1713111616181E17111916111B18181B
+      1523271C41452D34382211190B111011171F1C161F1148504F50554736432C1B
+      2516171B160F14150E160B15160D0D0F0D0D1011151914171A131118120C120A
+      0B0E06080C0A0A0E0B0B0F0A080E0B060D0C080F0C0B0F0C0A0E0B0B100D0E10
+      0B0B0F0B080C060B0D0C080D0A0B10090B0E080B0B0C0B0C090F0E09080E0C0C
+      1009151A0E2E372E575945323829020304151D1939433734422E3039302A3B32
+      2D3A33313A2F2F3D312B3E2B2D3F2D344134333D2D333F33363B313643363040
+      3335462F3641332E3C332A3B3136413B304737304134303D32303D373C453D38
+      4234343F3635454035433B38443C343E39343D3236413839473C344738384636
+      363E37303A341E2A222E38323846313B47343445373748383B473D3B463D3847
+      3836443A3E48403E473C40473D3C443B3C463C3E493C3B463A39433E3C48353B
+      46363E483C3D48383D4A393B483B3A47393C4C3E3F473C3C4B3E3E4D3E404C3E
+      46574A555F4A3C493C3F4C413E49403B483B3A47393E473E3D493E3E4E403E4B
+      383C4839404D3F3E4D3D3C4A3A39493B3A4437363F3337483E37493C7978728B
+      E47590E67C91E7768BE4758EE6738AE4748BE67993E87890E77B91E67992E978
+      8EE4778EE47C96EA8197E87990E4758AE4778FE77790E7788FE67990E47B91E7
+      8199EB849BEC7B91E87089E16F88E1788FE46F88DF6F88E37690E36D87DF738F
+      E27590E36E8BE16682DA5B79D66E89DF6985DB4F75D5557AD96482DA6E89DF79
+      92E47B96E4728EE3738DE1748FE07690E26F89DD617FDA6B8BDD6987DA6985D9
+      6E8ADA7796DF7795DC7D98DD849CDA7D96D36381C1516CB45B78BA5C79BD6985
+      C36382C16E8EC87996CD7B98D07797CF7897CE7996CD6F8EC86987C66C8AC872
+      8FCC7795D27896D27999D57E9BD67692CD708EC96483C45776BE5573BF6381C7
+      5F7DC45F7EC6617FC85E7FC95A7CC54F6DC05570C3637FCA617CC94F6CC3526D
+      C5546EC24C65B93B51B5364AB7445ABA4661B94C6BBE4866BA506EC15273C055
+      75C35B76C15573BC4C6AB7506AB54B69B23F5EAC3E56A7425BAB3F57A93A4EA0
+      3445972B3C903042932B3E8E2136862838892E3F8D31448F38499133478F3446
+      91344795314493283C8F3145963749983443953445953143903447923548922E
+      3F8B2B3A872738884054A5576EC36785D97999EB84A1F582A0F8789AF27091EF
+      7093F07090EE6D8EED7093ED7091ED7395EC7498EE799AF07B9BEF799BEE779B
+      F07295ED7899EE85A1F07C9BEF7697EC7395EB7999EE7C9CF0809FF17395EC73
+      93EA7597EB819FEF81A3EE7698EA7999EA7498E87B9AE87D9BEB84A2ED819FEF
+      7B9BEC82A1EB82A1ED87A5F084A3EE7C9BEB7C9BE787A2EB7797E8799CEA8EAC
+      EF85A4EC7E9FE881A1E687A5E992AEEC8FABE87698DF7E9BE37D9DE2799ADF72
+      93DE7799DF7B99DA7799DB769BDC7397D97293D46B90D27298D3698BCA668DCB
+      698EC76286C0658DC26289BD648ABE597EAF5E82AE5B83AC5C80A556759A4C6C
+      905171994F7697416A8444718D436A8032465431505E356B7A2E626D254D5020
+      41442F60633670712B615B284D4B2E4E4F285A53274F471A3E3A27695E1E5342
+      1A4C3E23574B1E493E102D240F2B1E173F3422504918483C2062552B615A1D41
+      35132D1F18362B1F473A091D112037362F4C44214538123B2F1744371C4A3B23
+      554414382C163F310E27171B322B20463C1F57471233241A2D2631554E163C2C
+      1B4C3B173E2F183328182F2211261D214E4F27655717413217362D1431241540
+      311744330D2216172B23132118080D0914291F2E49422F554C20403022483D32
+      6A63244D43183A30284E46193C300F2F22306A642A564E113227225744183829
+      0C1F1513291D1F423523594A1F53442C5D501E483A253F382D51462361511E4C
+      451E44391E342B17323022524A174134224D4627534C1742351846380C2D241C
+      493E1F4D41101F191233271B46391B4C3B214A3D1025171A523E1A533E245A47
+      236353183C2F132F24103426113425214839234E3E11352611291A1534252055
+      4E245C52162D2317382C1E4E41224C4221463B174B381E5A481B3A2D18312521
+      5B4823533F20503E225E51204E3F173A29122D231C453D1F4E431F5241143D2E
+      194032225A461D5944204F401743321C473B17443C2D55511B2F260B1B0F1C52
+      41144838202F262A4C3F193D32143E301C42391E2D222A4D3E1F4F431E564616
+      382820433E2A545221564A21413B2E48402B5952295F5E10251C183B2B294D46
+      203B2F1B413026483B284C4524443D132519213A3120393022463B173F341C54
+      3F235443173E2F153B2A1545351842312A564621493E12382A1B483523423723
+      3B32203F332E514A2A55492559471B4A38175440266D591C4F400E23162A5243
+      23493F0D1E1517211817271F1C4B3E194F3E112B20213F332F5E541F443B173D
+      2C1D4D3C204E401B57432E6D62164739143E2B1435271642321D4335203B3313
+      241F173E2F123C2B0C291C1A443820554A295C541C59461F463E1D29241B3A2E
+      154C3C1443381647371E5049124038174234205A5023625819493F1840342045
+      3A17433719473D2752471A4336173A2B184B3A1A5B45205545162D280E221637
+      635424433C0E3C2819604C1952471A3C3517453C113E2F21554F205047204439
+      284E4420473A2055491D51461746371337271441330E2C1F134D3B17594F1A4E
+      481330230C281D16392C2B4E46204134184638225C4F1D5448114334133D3425
+      504A2A5F5D1422220B150A0F190C161B141A1E161A2116181E13232516282C23
+      23281A2A291F2025111C22172027162025191F241C21251E262C1D2122163838
+      2C3A4130333B273234233535273537272124170F1A0D0C120B2023211F281D22
+      292220241E232D1F222D21222B1F22281E202B1A1D26161B251A182216181F12
+      1B1E17181B16171E151018141A1D16191B141A1E16171E1D262B2649553F3E4F
+      311F28174752505A634C38442313220F141B1611161519211C17261B111A1112
+      1916161916131B1A20231F1518142124252833242831221D2818181B141C1B16
+      1418120B130C10170F1D1F18181D17151D11161A12171A16131A16151D12171D
+      16162118151B161519150F16110812110D141111170D0D130F0F16150C151411
+      140D0D140E1E251C4047333E3F2514170B0C0F0E191E181B21174A5550515443
+      3B462E26291B161B0D1719141518131514120F0F0D1318141519141417121215
+      0F0D130E0A0E0B090C06080C090B100C0B0F0C090C0B0A0F0B0E0D0B0C0C0B0B
+      0F0B0D0E0A0B0C0B0A0C080A0B08090E0A090D090A0C0A0C0C080A0C0A080D06
+      080C090B0F0F151A142D332A5A5E4E353A270405011719153C453A3C45312F3D
+      2E28352D2E3C372D37333441322D41302F4035334336323D31393B2E42433C37
+      423730412F30432A3844383145362A413031443A3449373A44383C443A3A4438
+      3945333C483B3C473A38463D37473F3C463D33463731432E3644363849353C47
+      343D47353E47373A3A302E322B313C2F3849333C4B3C3244373D45353C463D3C
+      46413B49383E4D393C463940483C3E493B3F463A3A433B3C4A3E3B46383B423B
+      3745333D483540473C3847363E453A35453E3645363E4A3F42493E3E4F3E3B48
+      3B3E493A485D4F515E503D4A3B434D3E4449413C483E3C48423C483E37473A40
+      4C3E3E4C3B3D4B393E4E3D3F4C403A493D3847383C443B384234444C3D40493C
+      5252778EE77389E4768BE47C90E7798FE8768DE6778EE97991E8788FE7758BE4
+      7C93E97C91E7788EE4788EE67C8FE67990E3768DE47C90E8798FE47D91E67C90
+      E47C92E97E96EB8298EA7892E6758EE4768EE3768EE2758DE0728BE27B93E473
+      8BE06D87DF758FE2738BE06786DA5C7CD86B86DD6683DA4F75D56586DD6B88DD
+      6B87DE708BE37792E4748FE47B96E77992E2758EE0708ADE6581DA7089DC6E88
+      DB6C88DB748FDF7493E17696DD849BDF8196D7738BCB5874BE5571B95B76BC60
+      7ABE6C86C26D8DC86E8EC87896CC7492CC7B99D07695CD708ECB6B8AC96A89C7
+      738ECC7693D07998D37896D27B9BD5829FD57695CC6F8BC96583C25C7EC05977
+      C15574C05A7CC56281C76480C75F7CC75876C44C6EC15977C75F79C8617DCA5B
+      79C95770C14F68BC3F56B53B51B7374CB5475EBA4761BC4765BD496BC05371C2
+      5273C05677C35470BF5774BF4B69B64661B1445EAE3B52A7364BA32C3E9A3045
+      9F3548A332459D2E429B283B932D3F953C519D445CA240549C3F549D425AA23C
+      539D3E53A34159A7435CA7394E9F3548A035479D34479C374C9C3348982E4095
+      3C50A037489631419535489630418C34438C3445902E4096475DB35C78D06E8A
+      E4809EF3809FF47897F07898EF7598EE6F91ED7092EC7597ED7798F07699EE73
+      97ED7093EE7495ED7392EB7090EB7393EB7799ED7698ED7799EC7E9EEE7898EC
+      7293EB7595EB7E9EF086A5F0779AEB7597EA7598EA779BEA7D9DEB7D9DEB82A0
+      ED7899EA7B9DE984A2ED7999EB7493E77897E8799CEA7999E87B9AE9799BEA85
+      A4EE81A0EB82A0E888A3EA87A5EC87A5EC7E9EE76E90DE7999E482A2E881A1E4
+      829FE27C9CE28AA6E47D9DDB7597DD779ADB7296D8799CD9769BD86B92D36991
+      CF7399D37398CE698AC56789C3658DC3628AC06187B8597EAE547AAA577CA752
+      6B964968904D719A4D769949708F446D873E627737556A3752623B6E78407D88
+      31565A2F4D5131656641797E295254204A4A2959531F413B275D5328594C1B3C
+      361F4440225D53174C3E1E4A4120453D18382818352A1D3F381D473A1F5F4F23
+      61542763532046350E261B16382E22423D224C4414342E173B2F1435271D3E33
+      133B2B2151412754461139281B423019382E1D3C3118483D1F57481F433A1C3D
+      31173D2C184A37235D481A463918392C173027173B35236B572D5F4E20463A1A
+      513E13413020574717382A10261B1A3E3621463E13251B1E39302E5A54234337
+      275042336B63326459204A3E173B351C3F3313382A3275612B6054204D47183E
+      30122B1D172B231E2F281E4135174134153E2E295E4F153B2B233A3230544B19
+      443622514419443913332611282117433819483C2F625727534C1C5344173C2D
+      112C2616393223544B225148113028193B2F1B4D3D27574F183126173F2D1748
+      371A3E3321574A2D6E5D244F3F1943342753451B41341C463919382C09160D13
+      3E2E19473C1E4F3E204B3B163228173B2C1C453C20473D1538271844341C392A
+      29392D1833272041351A3E311E5A48143F30153325224E3E1F594A19423A204F
+      3F1A4D3C1641321446342D6A561F614C17483315362826615724565327504311
+      23160B271619483725483E1F4E4321463D24423824574A132B2326382C235040
+      2262511F41391D3229264335264941213D37324C432F5A4F255E5A183D371A3E
+      2F2653481E39301730242957482E59511A3D3E10251C2C4A4620383123493A28
+      5D521F503F21574E1C503E1A4A361043321D493A2C574A31605220453A173729
+      2249382A4A3E2A453E314C4625443D275C4F102F240C301F266553296A5A1333
+      251737281846370C1E1612281D1B33291E483D1E51431A372C202D262A4C431E
+      3F3B091B0E112616143324234E421856481D5B49174E4009261D1D3F30204B40
+      173A320E272217423218382A16281D13342620574627665917453B1B3D332B4F
+      4517382D1144351747401B423E174D41174D3D1135251E56442168561B514224
+      5346224D41133E2D2761502C61541E41351D4232134839145545295F4F1D3131
+      0E211B29534B29494B102F2416473519372A102016163D322253451D473E1C4D
+      3E234A431C4B48174D3B205C4B175049154738154235153C30173A2C19513E2A
+      7062235F5811352C1A473A173E3A16332E2E5A4B183B3126514A25534B154534
+      1C554524514A2E5E5F1F4B471C382B1C251E1F282423251E20231D23281F2329
+      1C2E34242A321D2D2F24363329293124273328262B241D26232025241A1E1B23
+      241B2C362628352828312624291E2D2F213F3F31323424151E14141A161B1F1F
+      1A23241E241F20271E20262423282122251F1F211C1D221620271C292C251720
+      1F1F2422171D1B171B161B1D0F171A14191716202025111A1A192524202B2648
+      53423D4E381F292246514F5A64504349361F282117212114201F1622221E2921
+      151D1615222717191A171F19161D11171B161E231B26291E21211E20211B181D
+      1721261D171E1211160B12181617201A1C2516252B222023181A201716191416
+      1B0E191E16121A15111B14141B151414160F171310150F151912171E1A121B1C
+      111B1F0E1B1D0C1B161A2B253B423739402711180D0D1414161E1A20251C4453
+      50505B473A4226202D1418201310161411160D0D0F0D110F12111515151B1A15
+      141815191716191610120F0E120C070C04080C0B080E0D0B0F0B090B0B080D0E
+      090F0D0B0C0B080C0B0A0D06080706080C080507040909090909090607080309
+      06020A060807080C0C0B171F162A3324505C48323924050500181A193E45393B
+      422F33412F303A2A313A302D3531333D302C3A2F304333364436313F32363B39
+      313B3036403733403E273D363441333A41363A473A3545353C44363B44393846
+      353A41303A44333948383943393D48393A463A3944393B463A37474236443C40
+      443E39483F3C4938394733324136263E2D2E3A363C44383644323C46363C4937
+      3B44383842353442313B46353C48393F4A3D3F4C3D3C473B444B3E3B483D3645
+      3C3444383A46373749383C4A3E3A473C39483D3B483A3B4A3E3F4B3E3C4A393C
+      4D393C4B3C404B3C4857485560493C4738424D41464C413E4B3D3B4B393D473D
+      3E493E3C4B3E3E4C3F464E3F434F3E444C3E3D4838394B3A3A4637333F31404E
+      3B3E4D3B3C3A758AE47389E4758DE47990E77B90E8778EE47D95EA7D91E97991
+      E6748AE37C91E77C95E8788FE6758BE67890E78095E4798FE47E92E77C92E67C
+      92E87D90E68296E98197EB8096E97D93E7788FE4748BE1768DE07C90E47992E3
+      7890E3738DDF7088DE758FE1778FE16E86DD6682DA6C85DB728EE06788DF708B
+      E0758EE0738EE16C89E1738DE47C96E67E99E8768FE3728ADC6B86DA6981DA6D
+      86DB6F8BDC6E89DB6F8DDF7593E07893DD859CDE869BD86980C64B6AB8617EC0
+      607ABE6A87C46683C37492CC7897CE7695CF7390CC7792CC7797CF6E8FCA6585
+      C56A88C87495CF7B99D37795D27B98D47B9BD585A1D67997CB728BC66A85C262
+      80C1627FC2506DBE5A7CC66786CA6381C65974C25570C35473C55776C76480CC
+      6280CC5A78C8566DC0425BB73B53B93C52BC3B4FB5485FBA4968BF496AC04F6D
+      C15573C15778C45274C34D6DBF5774BE4B6AB6415EAF415BAC485FAF4D65B240
+      59A94057AA4A62B24762B04D6AB44D65B3445EB23D55A73C549D3C509A33489B
+      3C52A53F5AAA3E56A93B54A83E59AA3E56A83E53A93E54AA4159AE445CAB4057
+      A8374BA232469B3F52A33A4B9C35499A364A9A3C4E9B3647972D3C8C1E2C7826
+      38863548973F54A9556EC66A85DE7D9DF185A2F8819FF57C9BF27093EE6E91ED
+      7295ED6D90EC7092EB7497EB6C8EEB7495EC7B9DEE7093EC7291EB7B9AEC799B
+      EC7E9DEF7698ED6E91EB80A1EE779AEB7796EB7597E97698EB82A1ED80A0ED7C
+      9FEB6F93E76E8FE47D9EEB7699EA6F8FE47D9CEB82A2EC7D9DE97698E8809FEC
+      89A8F0799AE97092E4819EE8829EEB809EEC7598E86F90E37697E889A5EB84A3
+      E78CABEA86A2E47D9CE286A0E1819FDF779BDF799ADE87A4DE87A5DD7498D76D
+      90D3789BD47295CE7296D07398CF6C8FC8678DC57297C6668ABA5E7CB0617FAE
+      5476A54F6D9A526E9C557CA65481A3466B8B446D8C456F8C426E873750612D47
+      5735616E365E6A3A5760305154295151355E5F366C6C1E4C40193A35225B5424
+      52471F36353D656B42756B103A2B204E4632685A1F3B2C173E31123B2B1B3024
+      26524722625532746222513E0D2D2011231D1C3F381B4C4119413E2A5D52214B
+      3D14392B1441301C4D3E194238112C1E133126295F51183B2A1C3C311E504025
+      51450D30241330221737271C4F3D2B5B50285950204E40153021133C2B275B49
+      23473B1A453C163A321740361E4338194033184238286B592A5E4F19382E1D53
+      422D534C1E3B2D2755451E483B23575028524A17392A1C3F322043372552462B
+      5E592F695A1833271630272E4E4719342A1F392E1730241B3E310D2316253D33
+      3A685D1A3F331842371F43381231231343331D48391943342555492450482056
+      462145391B383517413716463A1A47401F4A412342381330282C5C58284C4311
+      271B1633271E3E321B41321D5A43205A441F5442154F3E215B49174637295347
+      20443C1C4A3A1B4E3E255A4725614918412F183F2E1C403A1337342859491732
+      24132719293F3217241A162019204840195141113A29173C2D25564426635328
+      5B52234B431B4A3C114330134230245547224E431E5344143B28285F52234C48
+      28493F2C574C172F231326181D3E2C204C3F346261223D381E4B3D2044381121
+      171B3E2E245E4B214139233B361932241E34271B2F251E342A1D3F35235A522C
+      5E562755452259452D534820342B1A45352450452A5D592C5B533865641D3F3B
+      12322629574A1D46371D4A401B4A391A41301F44372853472C62571C3E332240
+      2F233731122F211D45382E49452E47422250421D5A491D4D3E0D211614402F23
+      6351215B49133B2B0C3324173C2E0F2B1E1D372A2142352C6659234B3F20463C
+      1F504811403218463315261B121E1418322B1E483E1D50431C544412402F1E36
+      2A1D493F204B3F1C3E371744370F291F1D2B25132C1F14402B114A3E1D544718
+      382E184B391A4B39113C2F193F391D413C1D51441844371131271237251F523E
+      1B4938274F4430685B235D4B1D52442B4D46172A2015382A235248143D320F22
+      171A40361E524F2D5252305358204546162C1F1422160E271C143E2F244D4616
+      3E380E3A2E25555623505318473B164A3A1A5545174E3D174E43113C2F1B4436
+      1E514026635426695D174C46235048285F561943392245361A3F30174D401F50
+      4918382D244A3E285C56275956184036274D442D4943253D312B3A2C2931242D
+      3529313A2D313A26303624313829313C2F2B3C312E3C36323D3536483B28362B
+      46493E454A36393D2E202A22313A2D293929253124393D303B42291620141417
+      14171F1E374C5133484229362A252B252C332C20291D27291E2127211B222138
+      4E5037535A36505A27382E191F1B3131282E31241117163142544964664A6662
+      39493F444F3B3E4B3B212A214B52545A6451595E4F4C59543343413648442130
+      241F2C26141E1D465B6E505D543D3B2E272D1C292F242628221D20182F332B2B
+      3229171D0F2129181D221A21251A1A1D1B222525292D2323281D252F232C3326
+      292B1F161D132225210D150B0E180D171A161F242222271F232A1D191E151E28
+      243C50545370733A524E3A59593E4E4B3D453239412A1F292945606B2C403922
+      29194B534E4B554239432B212A1418211630464E202A24111B170D1411151B1D
+      4154643D4F593340401B24221216120F140D0C0F0608101631393E11160B0B12
+      041823291D27261419150D13110A0F080D0C0D0E0E0A0B0F08080C0B080B0A0B
+      0C0B0B0E0B070A0B080B080B0E0C161A162B3125565E4A333D24040500151716
+      3D423B3A41352D3A28353D353341342E3A302E3A33313A35343F31303F2F3140
+      302A3B2C23352C2E3E32374238363F353743343E473C3B453B32463230432D38
+      45393B43303C47393948333A472F3C463D3C4A3E3C4B3837453C33483A3C493D
+      3843393C463A3E483C434B3E3D4734313C2F2733283139363545363141313949
+      3037443831433A3646363A3D2E3642303945373B48363C4A3C3844373947393E
+      453B3E48423F4A3E3C483C37463A3646393D4B3F3B473B3B4535414939404A38
+      3E4B3E404A3D3C4A3E3C443B445645555E493D46374047413D493C3B4838414A
+      383D463A3D483B3545393C463F3C473C3B4D3C3848333C45313C483836473433
+      3F30384234394334A6AB7890E6778EE6778EE67890E77D93EA788EE7798FE87D
+      90E97991E8778EE4768AE47E93EA7C92E8788FE68197E98196E6798FE67B90E6
+      8093E77C93E87D93E88496E98193E97C92E77D8FE4768AE2758EE3768AE0788B
+      E07C92E37993E4778DE07088DD728BE07B90E26B83DB6280DB6C87DD758DE26F
+      8AE1708BE07891E47C97E6758FE3748EE47D97E87B95E46F8BE06C86DA6E87DA
+      6A86DB6F8BE06E89DD6E8ADF748FDF7B98E17B96DF819ADE7C95D65B75C25571
+      BE6B87C46581C2708ECA708DCB728FCA809DD37998D27793CF7897CD7898CF6D
+      8DC96D8AC86A86C87393CF7592D07998D47D9BD57998D4809CD47D99CE6583C1
+      607ABC627EC05C7CC05775C15A78C56180C85774C1506EC04D6DC0516FC65473
+      C66381CB6682CB5870C55066C03C53B4354CB63F57C1455FBF445DB75571C457
+      73C7526FC45578C65678C45473C04F6FBD4F6BBA4462B23C59AA3C57AA3F5AAB
+      3F54A74257AA506BB75773B9546EB7475FAF4660B04C6AB74661B2384EA33A4F
+      A33E57A93B54AC435EAF4962B0425DB1415DB24A64B44760AF425CB14A66B53E
+      59AE3A52AA435BAB4159A93B51A53C53A4374B9F36489F33459D21338E314599
+      2D41912436862537861A2A7A1927782132863749A4536BC55E79D46E8DE47699
+      F17B9DF580A0F8799CF37092ED6D8EEB7093EB7B9BEE7295EC6B8BEB7393EB73
+      96EB7396EB7497EC6C90E97598EA7496E86E91E67496E96F92E67E9EEB7D9EEC
+      7C9EEC7B9CEB789BE780A0EC7292EA7092E67C9DEA7B9CEB7D9DEA7D9CEA809E
+      EB809EEB7998E87B9AE882A1EB7E9DE87698E97696E87495E77D9DEB86A5EA7D
+      9EE6809FE67C9BE47796E37C9CE387A6E789A6E7789ADF7697DD7697DA7C9EDB
+      80A0DC7EA0DC7D9CD87393D07496D0789BD27699D26C8DC46E92C56385BC5E7C
+      B35678AE5B81B25C7DA8557DAA5A86AF5881A3507593486F8C466E884573873C
+      6173355066345263265159325660374E54203F3F2850513D6F762C53501C4944
+      275D571B3D351C413D497677547D77194033194239245143163A281A4C3D1649
+      38152F25476A6961A299265C4B11321F102B20113228194E3F1A493A17403736
+      75652B5E4C13413319513D2056461C41371531220F30243479632A523F1B473A
+      2554421F443C1E493A112F1F132B1E1946373C716D2E5C581F423B2040351736
+      24205545234D4016352E14352D0F2F231D3D30285C49265542173D3030695B27
+      53481C4C3D27534821473D1747341A392B234A43356C6118443418392E294339
+      2A5248204E412B66571940310E231F336560244A3C19382C1F3C301D3F321A34
+      282B494033625A1C4E4014483A12382B0E29191742342C51481F3A2F19423721
+      52471B43361F3A342446481D504318483915302B22474226564A0B2217113126
+      224C3E24483D102B210F2316162D201F4F3D225141285B5023615130735F1D47
+      38194B3E2E6D5D112A1E2048391F513E296E58275E50285749173C3717363330
+      7665275F4E19382A1A43351B2F231B2F2420514821574A2B4F4022403220513F
+      397363346F6422534B214C3E1B513F1D52402C69561F463B204B46163D2C234B
+      3E27544E21403933665F2C5E5316291E1427192046372A665A1D3F3813261C1E
+      3C2E1730240C26181C3C2F26463835594F1E42381C372A23392E203831265145
+      2C6A5D29524E2550461E3F32233B2E1E3C301B403128544C2A514A22453C2B53
+      4A3064591C493E214A392245381C4437173A2A101E1424433836645D204B411C
+      403325403437534C1C362C1C3A2E346054315E56204D3D184F3C1D5240133628
+      174C3816503D2056431F54421246351C3E2E1633241736261E3F3127594B234C
+      4228544B2E625F15482F215D48152C2413281B234A421B3F3A18473D1A43331B
+      412E214437336257225746284C441B443C1A44361B3E30173227102A1F133D2B
+      194C3E193E3117493512372A113B2C1C4937265F4F18443B19362F1E574A173B
+      2F305447305649213D362F65572F6E5B3171682855521D342A1736271E514218
+      4437101E16245143265F5422463D1D3B3A2A53541D39370F21171026181C402F
+      2244432043402054412A6156215046164A3F17493F1C5645194A3B1A50440E33
+      23194F3C2A5E53285E551C52411A55491E514C214742235C4E22443615322211
+      48341C5C4F265A5320352E163A2B2D6C6521363717251C22342E263E3A283735
+      232B23262A252B3A36313F2F36422B333A2D2F362F243929152C241F32272F3A
+      2B1F28234D4C45545443484B3725291B253027203123202C243A3E3044462B14
+      1A0B161E121118111220262840422D423D2C423831443D1A2F22272D1C1F2417
+      1A2221445D642F4A402F423B1C3422181F183038232E311C080E112D494C3349
+      452644362C413B4C523E4A5138242F1F545C56656A57434E392F3A2C1F36352C
+      424122332A27382B121F1933494E4D5548434828272F1F262F1B2D302328342F
+      415450414B4B26332C1E2316222919171B161B20151A1D243E474C3A4C4F3949
+      472B382A252B21161F1D3A4E4A0B12091218151318163F4C4823292224281E13
+      1B1A41515A39534F3552543452532143423E473D3E492F3A422C1C2523374F59
+      354C47282D1C4D544E4D57453E452E26301F171E182E453C1B2D1F172119141B
+      1610181C425B63375356485B5D1D281F1C21181319120E0F0D03070626353413
+      1E0E080C0317242C1627291419160D0D0C080A08080C0B060B09080C09080B08
+      060B09030A08070A06070A09060B09070C0B151D152D3728545C483238240305
+      031119163C443A3942312E382C2C3A30303A2E303A2A333F33353F3731413231
+      402F364431303B2B23362E303C383444303742343C49353746333B453A374438
+      3543363543363C443439443A3441343942343B443D35413636443737443D3843
+      3A3E4A3A3A453D3644363A443940463D3540352E3A2E2B33272B3A2B3A453936
+      473A31483535453D334437384238343E3338453638483B38493B374334313F34
+      2F40333443373B463739463B3A42393743333B463D39473C3E4A3D3A45393C46
+      373C483536463737473A3A48393C47374B574155604A3F4C3A3F483F3C493C39
+      4A3635433237423A323F3536403C333C353644343344363545323C4835414A39
+      364634313F32334235304230C9D97990E47990E7798FE8738AE6788FE87C91E9
+      778EE7798FE87B90E97990E9788FE68195EA7D91E87C92E68297E97E93E9798E
+      E6788BE47D91E77D93E68197E98497E98195E8798FE47C8FE2758ADF7890E376
+      8AE0788DE07B91E4778FE2758DDF7288DD708ADE738ADF7087DF6A82DE748DE1
+      7589DE748AE0738BE0728BE27D97E97C95E77791E4758FE47790E27793E26D87
+      DC6A83DA6B86DC7991E4768FE0708FE17993E4859CE48099E0849CDF6B85CF4F
+      6ABE5C77C16985C36986C46B87C97691CD7793CB7898CF809DD4819DD57D9ACF
+      7998CF6787C8708ECA6F8ECB7392CE7591D07C9BD5809DD5819FD6809CD37690
+      C7607EBC5976B85573BA5474BF617EC4617DC4607CC55773C04A69C04A6AC44A
+      6AC55B79C9627DC76079C6536CC34460BC3C53B63146B43C51BD445FC0445EBC
+      5E76C5607AC95273C65477C55475C15774C1526FBE4364B64161B23B53AB3C54
+      AE3B52A8394CA4384B9F4059A7465FAA4B62AE4C64B43C54AE3F55AC4963B752
+      6DBD3D54AC435CB24B68B84B64B64961B44B68B84D6AB84A65B74661B54963B6
+      4C6AB84464B73C5AAF3D57AB425CB03B54A9334AA5384DA52F459D334BA53649
+      A231429B32449D30419924389122348D273A8B1C2F7E172476111E6E16227322
+      32813347994159AF4C65C05C7AD67597EB7497F17498F17595F06B8EEB6F92EB
+      7495EC7498EB6E91E9698FE76E93E77597E86F92E7789AEB7395E97395E8789B
+      E97898E97697E97396E87D9EEB6F92E86D8EE77898EA7E9DEB7B9CEB7899E96D
+      8FE47495E87D9BEB82A1E97D9EEA6E90E47696E47595E6789AE87C9CE87B9CE8
+      81A1E87D9CE77395E37495E3779AE47E9EE4799DE7809DE47D9ADE698DDA7396
+      DE809FDB7E9DDC7E9FDC799BD97697D47696D07C99D27999CF7498CC789DD077
+      9AC86D8FBD5B7EAF5980B05E83B06288B35F88AF50789B4F7796466A87476D87
+      467085416A7C406A7E416272385C642F565A3651562C45431B3B3A2D5B5F3361
+      6132605B25544B17372F254C46356662325D541F493C29534B3E6058234D3E21
+      503F1B4A3B1B433D6598915991840C2F21153B2A183B2D18413821574930685B
+      214D3E19453628554E4D78732B5E492870612D6A562548381A43342B6E573557
+      4A143227194F3D1E4A3F2851421D40321A3E31224B4131635A2857492446442F
+      60651A45332156483065581D48391A3D3313372B11382A18392D204F3E174C3B
+      2A544A2E5A521D4E42285F4F205342174131264A3E2C5C4C2651431D4C3D1436
+      261F3D302A5A4C245544174839204F3D1E40393261601F413411281B16372A17
+      3E2E19392D1C4A3C295E502B6357216452184838163426183F333B64612D4C47
+      1B473C2054441A50401C3E342E4D4921493E1F4A3E244E491B3D381D5241215A
+      44133122123223214D3F205A47163C2B203227284C402A4C4030514C3C66622B
+      5C4C173C2D16403128745E15392A1333282557471F4E3D2453492044401A3B2F
+      1C3F37183D33285C4A204F3E1745341F45351C35281D3A2C20392E3251483055
+      4921463A365C553370641B56481946342455441C493B225B462C65541F4B421B
+      413023483C26544E29544B1E4D422D685821403313281E265D47356D5E204C45
+      214035173424183728112A1E1E493A173426234B3D315F53213C342C493F3450
+      462F5A4F2C6B602459502C5954183F3717382F173027152C2237655D2C4E4817
+      2F221A382D2D5D4F295E521438291E48381F5B4722513F152C1F223E332F5D53
+      17453720503E2A50443C554E2940391A2D231935253360542957481E5A471E5D
+      4C204838295B47276350133527154133174F3E173D2D132D211735252B4E402D
+      51462E4F483D6E663666601036261F574321473A152C212D685921564B24665A
+      19493F1F362C2C4F412E57501E5348204C422348421C4E3E174032214E42193C
+      341F46371953421C4E401642371A4437112C1E11483317544419504023453A17
+      3A2D1A38301C3D3727483F1E342C1C433521534135806C31766D275048113227
+      143729235C4C112F29112420215948215948244D4F1E5147235349203B39203F
+      39193A30183B301B42351B483A245648143C2F17493D1E463C18483A18473E1C
+      52452142391B39302451462252491B3C2F235B48204D48122B2820493D21493B
+      112C211648371D5C492D6E64265C560B1F1620473A2749471D2D25202A252439
+      353C5453303C371A2721394640313B2F3A4035313F2D33423626372A2B35292C
+      3D2E2537272631284244394D573D3B482A1F271D28312B2A33242D34242D3623
+      3F422E202413172013131711181B242A3D412B47402D423D26342920291E2D32
+      23232A1E1B201A637A78263B2F2F4236293B27151E183338262C322509141216
+      32373150493A574C384D434B54434952343030235256565B644C5666542D4334
+      2335362D4945243A32313D3216251C283E40525A433131183235242E3624151E
+      1621373A283E4B31484F3759553C534F1B271A1A1F161D211A14181817223241
+      5666263C3C273627202C1F141B1E3C575D09180C12150E141A15364A521C271B
+      2B2B1D0E1A19345366314B4C365453314F4A2E4A48374843404A33403F281822
+      183145554253502B2C1E4B524B555C443C47352A35191A221A35473E1A241617
+      1D1411180E0D1B1A28413E3143403549493444422D342E1A1F160B130C070C06
+      0B1715161F16060A041927291A27261218160B1212070B0A060A05090C0B050A
+      0A080C08040908080A0A070B08080A05060C06080A0B161E152830234D554431
+      341D0204001216163F4533354130324032313E2E343D2D2C3A2C313B35314136
+      363F33323F33333F34343B2F2E3833313A363A443A3744353A453D3443313945
+      3732463A30453232423C36403A374137394538364236333E3A363C3B26352B30
+      3F2E364030374030333E30383A372C3C2F3941303542332A37311E2422273426
+      3645363947352F4032334335364039303D332F3D2D373F39304036314136353F
+      333A403133403235423836403C29413537433C37413836423638433A3C453738
+      403A37433A36453A3243332E3C30313F323C4539465242515C483C45353E4C3F
+      3746393444343A47353A49363A45313B47313D4E3C39453C3C463E3845363C4A
+      38484F40414D3E3C4D3D3F4B3E3C4A3BC8DC768BE6788FE77B91EA778EE7778D
+      E77991EA768EE87990E77D92E8798FE68097E98298EA7E93E97D92E88095E880
+      95EB7D91E87B8FE47C93E77E92E78297E97E93E77E92E88196E8758AE26F86E1
+      798FE37990E1778BE0788FE07B8FE27588DE7086DC758BDE6B85DB6980DC6F86
+      DE768EE2758BDE7B91E17992E4748FE47690E67E96EA7E97E67691E4728ADF77
+      90E2708ADE6E86DC768BE2758FE27691E27490E27996E4869CE67E96DF7E98DC
+      617CCB4D6BBD6480C36C87C76D8DC86B8AC67591CD7592CD819DD585A2D67C9B
+      D27995CE7591CC6987C77091CC7999D07592CF7B98D3809ED5809ED484A0D584
+      9DCF6F88C25B78B9637FBD5673B85673BE5A78C16681C6617FC45474C34461C0
+      3E5CC34768C6647FCB697FCA5F77C65068C04159B84054B8394CB83B50B74A64
+      C0556FC45F7ACA5978C95070C44F6FC25878C55877C5516FBD4362B2415DB436
+      4FAF3950AE3E56AB4159AB455FAA445DAB435BA8455FA9546CB94860B73C53B0
+      4660BC506CBF4C66B94A66BA546DBC556FBF4766B9496ABD5571BE4F6AB94A66
+      B94865B54463B74566B83A57A92C49A63B59AC3D57AF3951AB3B52AA3C55AB34
+      4BA5374AA73247A32D409F3246A33246A32B3D9B293B97263891293B901E2D83
+      1A287A1A247313206D0D19650E196117267133489A4863B85E79D56B8BE4779B
+      F17397EF6F92EC7392EA6C8EE66F93E77497E87093E87595E87696E96C8EE875
+      98EB7697EA7696E97092E86F90E87395E96C8FE97799EB789AEA7899EB7395E8
+      6588E27797E87899EB7697E8819EE97899E76F91E77090E37D9BE8789BE97497
+      E67898E4789BE77091E2698BDE6D91DE799AE37596DF7697DE84A0E27899DF76
+      99DF89A5E47B9BDA7B9ADA82A0D9809ED47698CF7B9BD3809ED2829FD07C9DCD
+      7396C96C92C56A90BE6586B45F83B16188B16589B1567CA4537C9F5B8AA95B87
+      A65076904061773F5E71406975416A75426A763D656F3C646D324F512C46452C
+      615F21504A22433E224C4620423915352D204E4520514413473C26615B467A6C
+      2C5D4C26473D1D3A2E244137244D411E4A391A4334194C3B1D4E3E2A55482047
+      3E295F56347D68366A5B355F565B817E40655B2861531E5341254A40264D3F21
+      56441C44371C3B2C1239291C43361D46381B3A2D18433529574921483E2C574F
+      2048412E736C2C705D295A4E2B5D521C48381E4337275D4E1F463D13261E123E
+      2F2863502F524C2E514B265B4F316E602050412D564920483E1B4A391A433525
+      473C1D3A2B173E2E2456471C53431948381A3E30234D413C706C1A423511281C
+      2041341847351943321B493A3370622B66601C4B40224A3C203D34244C42386C
+      68234C4418473920514121604C1C5040396561254B4210312920494327524C22
+      463D2555411F4B3D1C3D31193A2A1D44332352442D4E47304D452139302E4F4E
+      426D6E2C4B421F493A1D49381E533F1736260F3525296855205442295A4E2449
+      451B423428625323463E172C21173E2A1A4D3B1C40311C34282B473D243B3522
+      4039395E54203C3327423B3770641F5B4B144333234F402552431E52411A4F3C
+      204D3E1B443620473C31514B2351442864532B624E274F3E19342620503E3974
+      62245147214C3E18392C17362A15231A15392A1A403118382A2E5548314E4539
+      5B542F50442E5E4E306C5E28514C1D433C1D433325483F214539204A37204E3E
+      284F441C372D1D40351D4F3E2056451E46361B4E3A2766522C635221483B2C50
+      412C4E4317362A214B3C203C32243E37203D331F382C15291C233E342A5C4C32
+      7C66296B59285D493A6C5E224F3F1640301948381E57442056441B433412251A
+      334A3E3D565335565443786F2B60530B271E173E2E22493A17251C1A513F226D
+      5D174F3F1D403331554E2F5C531B3A351B4136235747264F4B244C421F423A1C
+      4A3D173A3213392B1C463B163229153D331C51400F291E173B2D154033205541
+      306E632542451C2C28112C2215332915271D1F4131265346225143367E6C2A68
+      6010392F1132231942331741340B221A0722161E52422F686311453817433423
+      52472B625E1F5148174030174332123E311B4F421B483E264D49283E3D11281B
+      19382A1734272047393F5658183A3320554717302A345B492B544C1630261B33
+      272055471F493E194B3A26735B1E625625645F1D3B33153D2B264C4433382F35
+      3B333640353242353A413C313E34373D303441353C48353A3D2B3A4437353F37
+      323F293141363147393041333C44344C4F3A41472B27312733413E37443B3541
+      3B39483B38483A3C49312B3017161E150D161532454F3A5D6234555231433A26
+      30232A33211F281A1B1F1B364C503B56543B5347223823171F1633372A313524
+      1517152835353A494431443D3A483A444F3D4B533A2E3123525E595E65544757
+      411F382B243E3C335052283B3631402C18251F2B464A4A5D4C2229123133242A
+      36261D261E385560445D62374F4E2B4841334B4A2439310E18152026211D211B
+      0F1818203139274342283B2D252F1B141F233C5A640D160C10161610181A3246
+      4C24312426291E101B1F304F5F3C545B3752513A565830504C32493E3D4A3239
+      43271F271C334952334E4B253122505548505943434D342F3925182016313C33
+      182219171E19111A16162523243838283B41323F44304141263D3E25302D1215
+      1210120D0A0E0609100B050C0617221F1D27231116130B0F0B060B0904070809
+      0C09070C09030A05080D0C070C09070904070606090C03090A0B171814273027
+      504F4A3037240404000B16163C453B3E43372D3A2C313D342F392C2F3A2C2F3C
+      33323F332F3E2E353F332D3A2B2F3A36313D3C3A433637392E39403A35403932
+      3F2F33423531402E3544333C48363D47363B4837354639344333384838394832
+      3141363542363447352E393235443537463A3A403E3440323B403A343B30252C
+      273139293A463A3A4B3C3A4A3D3C49373843382F40363A463A414C3B3C473C33
+      44343A44333B46383F46393C433B3743323C47303F463A3C44393F483D354537
+      3C493935433B33442F344535314033353C32313E32323E314C594462664F424A
+      3D40483939463A3545373949383C4639323F2D3941363B48393B4B3E32443534
+      4234424B3D44513F404F3B48503F4B51433E4A3CE5E6768DE9758BE7778DE77D
+      95EB788FEA798FE97E92EA7C91E77D92EA778DE67D92E78598EA8297EB8295E9
+      7E93EB7D92EA7B91E67C91E68096EA8093E88597EA7D91E67689E48498EB788F
+      E67086E0778AE1768BE1788EE2778DDF7D90E37688DF748ADF7489DD7087DB60
+      7DDA6986DE7389DF758BE07C93E67B95E77892E67991E78096EA7B96E7748FE4
+      6A86DD6F88DE748FE1758EE0748BE16787DF6F8BE07893E47592E18099E4859B
+      E36F88D4506BC25571C16D89C96E8BCA708ECA7391CA7997D07695D0809ED580
+      9ED57C99D07692CC6986C66A88C87392CD7C9BD47897D47C9BD3819ED5819FD7
+      819CD3879FCF6F8BC25978B95F79BA5976BC5470BD5A77C2637FC65A79C25473
+      C4374FBA2941BA516DCA627CC86680CB5B75C54D64BF3D4EB54151B84155BE48
+      61BF5971C55A75C7607DCC5F7DCF5878CA5070C65475C55171C0496BBC4864B7
+      4962B6415AB5455BB14861AF435CAE445DAC445DAE4863B13F56A94A64B64A65
+      BE5774C7627ACA576FC3526FC0516EBF4C68BA526CBE4D6ABE4B6ABC506CBE50
+      6DBC506ABC4D69BC4B68B93C5CB13959AE3B5AB24360B34664B84462B84B65BC
+      435AB53C52AC2B43A5354DAA344CA73046A73045A62B41A3293C9F283B9A2D3F
+      992438952030891C2C8722358E1D2F841A2A7619277118287520307822347E2E
+      4693445DB65875CD6C8FE27292EB7598EE7499F07396EE6D92EB6C8EE66B8BE4
+      6B8FE77396E96E8FE76B8DE76F91E97493EB7496EA7092E87597E97395E77091
+      E66D90E77999EB7B98EA7798E97E9EEB7B99E86F91E47291E47E9CEB7596E772
+      95E47493E37E9DE87497E46C8FDD6D90DF779BE26F91DB668BD77898DF829FE2
+      7699DA789AD97C9AD97B99D6809DD57E9ED37C9ECF7B9CCD82A3D281A5D0789C
+      C96E8EBD7092C37C9FC8799DC4789BC06C8EB35C81A95C86B16188AC57799B50
+      77985A8AA7598DA54B768B476A7A4569753D68733B666F3C656C38666F3C6871
+      40646B2E5F5F285C59275B542B635B2353491D4D3E275B511C5248175A4C387D
+      73548680417D6F35665D2853431E3D34446D6D3C6A5F265446436F663D6F682F
+      60511F4C3D234E422C6E5F2E70632A5A4A32564E4F766F447F6B1F4C3B1A3D31
+      234C40295C52386C5E21473614362717402E1633241A36281A44352C5D48285A
+      5035615E21493B17412E22544535645A20413A123224245042255D4C21454018
+      32271634251D483A2F59503E60552D5C4F205A4E2A56513861592C5F551D4734
+      174134295C5020382D17382A1E5D49225F4C2356461E4838264E402E635A2355
+      48214736203E332150422754471A3A2F1C4B3C265E501B4B3D20463B223A341E
+      3E33285A4C1E493D1747382051421E4C41284F4525514A265E51174339173E35
+      2B5C532F4E4416392B2056472353421438281B33252A5143234E401D352B2A4A
+      42457E7637696437605A2B68551F4D3C1B382A183427173B2A23594530685936
+      6C5E3361581B382D2553422255451745351432241F4C3B255C481D3E322F4F48
+      2541391C35292C4B4031524A2950421846372553461B372C2040362A5A4C1850
+      3E18433316392A2151401F483D214D411C4634245445284D4027443926463C35
+      655E3B86732D705A2452402352452D544919392A0F2719183928203B2E2A4C3F
+      21433536554C33504B265A4A245E4F27494121433C1B362B254037203D2F1A42
+      30173E2D28594924433D193C2F1949342D6051284E44174231163828255C4B1F
+      50422147392D5C501D47391833252642391E473E163C2F2345371C3C2D20372B
+      1F4334204A381F4536296955316A601232271C4231194A371F493A265747265D
+      4B183226324C3F4565682B4A4F2F55502864522257450F302314312315241915
+      3928216D591E55471C31253659522D504F375A57285148184C3C1F4E45295146
+      2D5248173B2F173D3111382A204749091E16153625225A48173D2F152A221D44
+      33184231255352205155264F4717392B173F312C493E2A483E2C534928413B29
+      5345205E51173F361B483C13392A163E2B1C52411A4A3A2550462359561E4B42
+      1F49401845371C42312361502A635A203B35184B392065521E524426504A2241
+      3C1748322057451228220F2418203A3217372E256C591A463E2142343966691A
+      413A152F23133B2C245348224C3F2362531E5E542B57522959531E504632453C
+      2F3A252D3A282C33252C3A2A3040342F3F322C382A3740373D4B383B452F3D43
+      3B3243422C403929433D30423527332C494F3D464B31363E1D2A3022353C362B
+      36313745423547442F45363842303F40321F25170F180D1B2D2A3956592A4947
+      2A403E2033242736232530240D1B1F3B5F6F538291375658284535171F1A313A
+      27313A2413160F24332E3F55564C686D475D57404D3E444A3B2F3324545B5264
+      6855515C442E3F31324032354A393440343E47351D2A1E2642442436241B2018
+      202A1E151D18202C373E56613C5B5B324B47263D40284345324A4C23332E1D23
+      1E232A2219221A1E27273750532F3F331F2B190B1B1C3A576008170D0B141113
+      1714273434242A23272B1B151F23486474355357345055334F51304A47324B3F
+      39472F3F452B252C242F3C4231403B1F2D1A50554E565947434C31323C281824
+      162534281B2416141A0F151B1C2233382C3F3F2B424228393926343B2B3E4936
+      474F202A2118220F0C1309070B0A080C09161F1E1A23211116140F1211080B0B
+      080A06080705070C0B060B0A030A06080A09080B09040C08080B090B0B0B171B
+      16262F244D59482C38220205020B1817384338384435313C2F373F332F372A30
+      3B32324030334033333F34334035353B363543303B4137373E383346363A4436
+      3A443735423734423634433337453637463436443A3A493B3847393945393B46
+      353947342F3D2E3B453939463638473B38463637433638433831423839473C31
+      3D32252D2430352C39453B42493E3C473A3C4B3838453D32433A3D4937414638
+      3C463937453A39453637423A3543363A433C3646393A44383945363843353D46
+      3938463534443B3845383844382C38332C392D2D3A352B382E3744354A54435C
+      634A3E4A36414D3D3D4A383C48323B49373340352942333C473B3C4A3B364A39
+      3A43353B47383B473A3F4A3E3F4E40434F3E3C483D3B4C409EA4768EE9748BE8
+      788FE98196EB7E93EC7E93EB8496EC8093EA7D95EB7D93EB7B8FE68597EB8196
+      EB8196ED8597ED7890E97890E97C91E78193E88193E97D91E88195E77588E179
+      8EE47B8FE4778BDF7B8DE27486DF758BDF798EE1788DE17388DD788DE1748ADC
+      657EDA617CDD6E87DF748ADE6C85DE7890E47C93E67D96E88099E98097E77C92
+      E46F88E16987DD7089DE7790E36D88DE6D87DD6E8BE1708BE27C98E67D9AE47C
+      97E4849AE2637CCC516DC36482C86F8ACA6C89C87693CD7895CF7999D27B9CD0
+      7D9BD27B98D07D99D47792CD6987C77592CF7593D07C9BD47C9BD47E9CD5809E
+      D47D9CD5819DD3809ACB6481BC5273B5566FB6556FBA5A76BF607AC2607AC453
+      6FBE516EC34663C3394EC1516ACC627ACB657EC95671C2445BBD394BB64559BC
+      4660C1506CC45873C65A79CA6481CF5C7DCD5476C85779C95978C7506EBE496A
+      BD4764B94F68B74F68B64D64B44F66B14764B2445EAE455EAE435EAF4B64B442
+      5FB5516FC75E78CD637CC95871C35471C35474C44D6BC0506DC0526DC1516EC0
+      5470C1516FC04B6BBC4C69BC4662B74160B64868BA5170C14463BA3C5DB6516F
+      C2526EC35874C5465FB6334DAB354FB03E57B4364DAC334AA92F49AA2D46A62E
+      44A33043A623389A243899283E9B273E98263C9220328B2D4193425AA6374D9A
+      2C438E25398320337E3147983047963951A2506DC35775CE6485DA7598EB7397
+      F07297F0789BF17093EB6C8DE76E8FE87693EB7898EB678AE46C8EE47393E875
+      96E97596E87493E67797EB7E9CEE7C9AEB6E8BE36E90E4698DE27798E76B8EE1
+      6B8EE37393E27C9CE76D92E06589DA799BE47597DF6D90D86589D26A8FD27799
+      D67395D26F91CD7D9BD27D9CD07C9ECE7498C77598C57599C77D9EC77E9EC46D
+      91BE6F96C1769AC4789EC4789AC26F93BD6B93BA6A90B66D90B46E96B66590AF
+      5C83A85E81A46691AC6291A96998AF6796AC5982974973864F809345757D3C6C
+      785587915F8B93497681467C844C8D8E4688863C7A6F2B6A5A346C6536636647
+      878362A097537C7E4377785E9895467A6F274F506D98A297BFBE72A29F5B8280
+      4875753873692B5E4C335D553960602D65612E665D3C6E5F3E6E604C8878275C
+      4A19392F2B5D533C786E376B5B2E6251215A4312382420493A2859482F625024
+      503E30615534625A24483C17302625453D306055285646214E3E276149174939
+      1A403B244E40204636214A3F407069395E522B5446265F522E635522493C204E
+      421742302457462D6A5D22453D1F3B2D204C3B2E64583060541E493B2C5F5425
+      5B4A2054431A3C2D233D332C554E2E5D58244B411D4436184432205745204D41
+      25423729493E2A51472059461E5B481D534325554C275245183D301D4337204A
+      3E15392E1C54442F665E397064266652143F2C1434261C4237205240234B3C1B
+      2C222342363C70651F43392955461B5E481E5D4E17352C254A3A255443315447
+      36554A386E5F2E6457264A3F204E3C164E3A276854255443143324234F3F244C
+      3F203F331E372A13281A213E32335A51285A49204E3E294E461D362B1E42341D
+      473E154335215743174536194B3A1D4D3F1B513F19443221473D355A52284740
+      355750517E844688833A8D761E463A25463A234E3F255D4A27604B1634252741
+      352A4C3E19392C3762542A4C3F1B4D412562543362542F574E1D413620413325
+      45381E4738234B3D386E593C7061285045214D3B315D5130565217402C133021
+      1C4639204B3C2047391E483B2252431B3D2E2244392555491436291A3E2F1432
+      221836283057483055461F403039766236716522504219352618463421534415
+      3B2D255E472E4F4A2E4C43456E6A355B5A2C56512F6D5B27614E194B3C1C4436
+      0E20160B20131446361B53452E554B3659523860553E6963275C54173F331F44
+      3917352B173A2D19463612342711352820484B1B4243132B251C3C2C17473714
+      2F23133C291F5D4A20524C1D4740215549225E4F205B4742756B37645A326660
+      2544432C594A2F695A224947284D4A1D4434163D2C1B513E1E59453468642C56
+      5B1E443F1D4D421E42352037271F503C36756C2C4C4514392D27785F2A765F20
+      514616322D0F4029266A55214D4617332D1537291E3428163C2D23504428534F
+      306468214A470F3A271D4D3C234E4429463E2C524B28514E2F605E356F722142
+      3E223226223A2624372C23352C29362A2A3B3631453A243322374431424A3C3D
+      452E464A3E31453D28413B2D443B243424363D2C464A33333D1B1F2814262D26
+      2A33272C372F24322D364641293D333B4639414B39293023172314171F16283E
+      3E3548502D4D42253D282F3423252F25161F2250747A2D5454304D49223B2F15
+      1D1B353A32313A24191E122B3939345550436862334E493F4D3E3F49332F3424
+      585E565F6953515C442D3B332E453238443A3A4638364635172A1E2C413E2030
+      1C1624170D190E08141936465D2F454A384D573042473746513145422F44492E
+      46491F2A23222C1D212C1E121B1230444936473E1F2A1D141F243C55690C1313
+      11160E12161A263534202D24292C21121D1F395161314B50334D54314F4B2C47
+      4932483E3C47393941262A32252F4A4F384940232F1F4C524F545649434B3235
+      3C2A222C1628301F1E1D0D0A0E030D1816313C422C34313137363045412B3C49
+      2C464B3149513F4A44282D1F13180E0C120C090C09111A1A1C2321151A160812
+      11080C0B0A0A06080A0A080909080A08080B09080A06080A09060A0905070608
+      0B09151A14272C234F59442B351E0205010C14153943383A432F304031353E2F
+      303A28353A2A374132324133333F353A453E3B43373B42323740303843373146
+      3238423236443A3846343A49313B45323C442E35432E35483936423739473636
+      46373B483D3442373140313442303746393B493B344438323A29313F313A453C
+      3B4534323F3022322A2D382F31412A3D47373B483A3945323E4A333846313845
+      3C3C463E3C46373E473C3143343C4735374A3C40483C3948363A45393941323A
+      42343D4A393C46353C453B3948393A4A3A343E332C392B2833272E392C3A452E
+      4C533E5A604E434B3E414D3F3D4A3938443139453939463831402F2F40353C4C
+      3E414C3E3D473B3240363749373D47353D483A3E48343A49383946343433768D
+      E87B92EA778FEA8195EE8193ED7D93EB7D93EB8298ED8095EB8195EA8195E984
+      96EB8597EC8496ED869AEE8499F07B8FEA7991E98295E98295E98095E97D93E9
+      7588E27588E2788BE37587DF7B8EE2758ADF7287DE7C90E4768AE07286DC788A
+      DF758BDD5976D95F77DE7287DF7689DE6C87DE758EE27D95E67C93E7849BE986
+      9BE97E91E37790E2708DE17089DF7890E2728BE16C87DD7793E47B95E67C98E7
+      849DE97B95E2738ADA5C74CB5C7CC86786CA6F8BCB6E8ECA7693CF7997D07796
+      D0819FD57E9BD47B9AD07490CC7490CD6F8ECA7492CD7595D2819DD77E9DD47E
+      9CD489A5DA86A1D486A0D27B93C55B77B55674B5566FB95771BA5E7ABE617CC1
+      637DC5546FC0506CC34B65C6455BC84961CB5C76CA6178C4556EC33E54BA384D
+      B6415ABD4C69C65B79CA5677C95A7ACD617ECF607FCC5777CA5E7DCB5C7AC84D
+      6BBE4868BA4A6ABD4D68B7536BB84C69B54763B0445FAF3C57A94760AF5066B5
+      4C68B84965BA4D68C05F79CC5A75C6607CC95F7CC8506EC15270C25978C5526D
+      C24A69C14B6AC04A68BE516FC04F6CBE526FBF5371C25373C95C7DD04F6FC540
+      5FB94A6BC0506CC25776C74564BE3F5AB53652B33852B53A53B43C53B23A54B3
+      3A53B3364EB0314BAE2C43A72C43A82F49A93650A9354FA93753A8536EB44962
+      A8374E9C3954A2374E9C3A529D2A408B1E32781F3578293D8818286F21357531
+      478F3E57A44F6BB85A77C86788DA7393E6799BEB7C9CEE769BEF6D90EA7291E8
+      7291E46F91E46D8FE87693E96C8EE36B8DE06485DA7092E26C8FDF6D91E1638A
+      E16387DF7293E47495E36E8FDD6589DA7B99E07799DB7093D47597CF7095CB73
+      95C77B9AC77295C46C90C27799C57DA0C8759AC07397BA7597BE779AC17496BD
+      7698BE7699BF7E9FC389A9CA86A4C6789BC0789EC07399B7789FBE82A4C0779D
+      B96A8FA96E92AF7098B36D95AF6990AB658FAB6F97AF5B7A914166775887A258
+      8E9C467D8056838C51798555828D4175784A7588567D8E4D7D845186855F928F
+      4978785F8F9862918C5B828B517D8B78A8AE6A9798558796B1D2D9D4E8E8B2D1
+      D693BAB97BA6A9639C9B37605B41737443746C4774736B9E9D6CA2974C867F45
+      777C578E8F4D75764779774C87833766603C766D3C806D2955472E5D55326459
+      3265562853433E6F6543766D2C51442241432A504C2B5F522E625B457D72316A
+      57215046427976478378245346386262517D7F38645A204B392257452C645317
+      4134214A3E23493E205243255D522660542B61532C4F47436E6C51827A265444
+      255B4B1E5646245D4E2F5B522F5549396D5B38716C2B5C542E5E4E26614F2049
+      3F2C5448336556356859396C632F6853265A482E635832625B30685D36685B18
+      382F1B52422559472551464476764F827C2A69541A4A38183E2F1A4436225040
+      355A50314F422755401E51411B372A132B1B1D4D3C21564A1F453B2D55463062
+      5354807E3E5D5A2A59472960531B524121503B305F4C29695527614C1C3B2C27
+      42362351401332251A382D1F4233224434204E3E2D61532A4E422C5D5220443A
+      1D44331943351C46361E5640164E3C1B4A3A2A6A5D265D511D5E4A37756A4168
+      612D564939685B50707442746E2A665B21453D183425193E2B20524127665824
+      483F3C5A5338594E305B4F417E71285342285447306A5A2B6453204F3E183F2E
+      2B54463A665E2654482E5C4E3166502B5F4B2F5A4F295148335F573C76682559
+      45214E3E234B3C204334295D472055422B62531C3B2F16312425634E184A3A1B
+      4D3D122A1D18352433625237685E33605242826F3678632C6352173227112D1E
+      1C4F3D1540302F65533B5F6139565439625B38655A2B5B4A2961501647371B59
+      46184232122518132F231C493C2460503E716B3D66633C695D2C564C0D221B1B
+      413120504217362F142C2223513E1F4F3F163D2D12362C173D4224474B244F41
+      205A4B13382E1036241B5541246C5E2E6A61204E3F1F4A3C2C63534A83783A6C
+      61356E652F615E22493E33604F3C736E325A57224F42265C4C296A54245B4B29
+      53522C52531B483D1F5F4E274E442B3C371E372A387A64386D601F493C235F4C
+      265C4F2F76642A5A5318392B112C2015392E1A4A3E1B4132213A2D2743362665
+      5335766F2E6C632D6257284D3E14332B21453E29463B39574C2C594F1E615538
+      7C6F355C4A3448373043363C513E34463D344C3D2B4935405D4C53795F394935
+      404E3540452E424E3C35503E324F3E4C61533B3F2E50513C32391F1118050C13
+      0F1E2826353935323D332A39302B3D373C4B42304136334135313A2A292B1D1C
+      201A1C292F2C4954517A7438563D27311B303C2D1B26243C544E344F50395154
+      2B4439121D192B372B3339270F160E354D5743645B3B605D48645E444E3D434E
+      39293128555B5863685654645944625F3254553C605E33483F3C4839212C2931
+      3F3D222F1E1620150A0F0B05090E17273337545B35505839515A304848364B54
+      3A50623A5260525E582A32232931241F271A1726252E3F3B222C1D1921274355
+      63141A0E0E120F101616313A3B263324272C1F131B1C354C5B3B575B3C575F3B
+      5C5734514C3348433848333A43282C332A344950354A3E28322345514A5B5A45
+      454D38373B2D292F1920251613170B06070503050C293A3835433F2E3A372133
+      303A4E56283D3E2E43423C423B2E3B2A1A23160C140F070F0C0E1B1618241F11
+      16150E0F0F080B09050B0A040A08030708070C08040908060909050706060709
+      070706090C0A151B15262B24505B482C371F0305020B161538443C3C452C2E41
+      292F3A2E343A33353A35383E333A44373D4634333F383C422C363C313F423B38
+      463935442E31412835473935403133412C3946303A41303844333A44363B4637
+      3144343242313C47363C47343B49343C473C3C43383C45363A4331393F2C2F3F
+      2F384535344631354637393E3528362F32463741473D3A41323B45333D473136
+      453333433736463A3F4A373F463B3A453A3C443831463435463737453241473A
+      3645362F3D31303F303740323F493B3744333B453A3741312B392C343A31313A
+      333D493A4D55415C654F3C4639414A3F3D483C3A44393747303A45312F3D2E2A
+      3F2F394A3B394B3A39443731413231462F3C473333432B3240263742363A4836
+      2F2F7B91EB8499ED7B91EB798FEB7E96EE7891EB778DEA8297ED8597EB8093EB
+      8499ED7E93EA8497ED879AEF829AEF8196EF7D92EB7B91EA8095E98295E88597
+      EC7C92ED7588E47587E27589E27486DE788AE2748AE1778AE07D92E4768BDF72
+      83DC7689DE748BDD6B80DB6C82DE7489DF798DE1748AE1748BE17C95E77B92E8
+      8097E88096E7778DE0768EE2758BE16C87DD708ADE7790E4708BE17793E7809A
+      EA809BEA809BE87995E26B86D85B76CB6783CD6E88CC728ECD7491CF7593D076
+      95D27998D484A1D77B98D07B98D07390CA6F8EC9708EC97493CD7D9BD3809CD4
+      809DD57C9BD587A4D88AA3D5849BCE778EC2617CB75A76B6526DB65771BA5C77
+      BE637EC4647FC35F78C3506AC54760C64863CA4C69CB5970C8647DC8536AC33F
+      56BA3F57BD455EC0516DC65B7CCC5B7ACD607ECF5B79CA5F7ECD5E7DD25C7ACB
+      5878C44B6ABC5975C4607DC7526CBA576EBD4B68B6415BAF415BAE4660B24561
+      B14763B54D6BB94F6CBD526DBF5975C3617ECC5E79C8637EC95975C7516DC24F
+      6DC35473C74C69C14866C04766C34D6EC45A79C95776C75E7FCE5E7ED45879CF
+      5979CE5A7ACB5373C55270C64C6CC44464BE415EB8425FBE3E59B93B54B73D57
+      B73D59B63850B63B54B63C56B63953B3334CAF3852B1445FB64661B54D6CB662
+      7DBA3B53A0405BAA3E59A63955A63C5AA7304696334A98344F9C294390293F87
+      21367C1E2D6E1D2F6A182964172A66283E7F465FA9415CA54763A85573BA6681
+      C96F8AD67490DD6E90DF6C8EDE6B8BDC6786D76986D86A8BD9618AC45C83C060
+      82C16487CC7495DD7291DD6C8DDE6486DA7897DC7798D37696CC7597CB6F92C3
+      7292C07696C27393BE6C8FBC7597C081A2C6799CBF5F85934B707E6B8EA97598
+      B87799C082A1C5799CB680A0C086A3C1789AB26791A04781846498A36F9DB16D
+      A4B86698AC709CA7658A955B81935578875175895B889B6395A26D93A5547780
+      4270815C969F53878E6090995887904F7D7F3366605E89A361899B3F6A756FA1
+      AA699B9F4F7A76426E6D4F7A7F60909B6490A2698D986C919B5A878887B9BDC3
+      DEDFC6E0E3DAF1EF9ABBBA6E9D9D5B7D7E43656F65999F81A9AFCAE4E7A0C2BE
+      60969954899A8AABB8B8D7DB648F913F656B527D81699599558784508E8D6590
+      986E93976A9A93426B663F6C6F6495986187886A919A6A908C56817F547A855F
+      89923C6C6D376261416E748AB9BA75A19F93BABE9ABCC038665F1C4D3B1C4D41
+      376B642E5E5A3C6A643D736B20494035635E3E7171487F81417675619796528A
+      812F5D552D5A512B645E4D8D85669C9840736B42867A3D83773D6E683F6F6826
+      6A5F3D716F3F696541807431706139736B396C6321453E34605B3C6B683A6161
+      41786F376C693C7776386E663E6A66548384376C5B2C635126554B2E5B4F1B51
+      3C2F63524B796E3E6D633C7C6E327064294E491732291F4337204739275E4E45
+      817640776E4D897F275A4B295E52498F85377168366E6242796E235B4C2E6F5F
+      346C5F326457285D4E2454432C534E244D41204E3C2C5B4A30544E2D50482B5E
+      52214B41173E2F19503D2F7662225142245B49366D6032615A336C68387D6D41
+      7E77558A884F8B813C605B456B694B837E3E6E6A386E6824564C23574526624E
+      2F6E603B6A6250787A49746E447A6C4F85802C574A2141321940303570643B75
+      6E2A534B2B4E433966582C56482C5A4E2A5A4F224A3C264F3E28574647766C3D
+      66613A6D603E776C2154421D433632605332735F2F65571A3D31224233306457
+      1F604C2C5B5026403A234538396659427169447C723A786B326A5D265F52264E
+      471941331C5643144637326B59416D694C6D6D43737434645A3C695645766B35
+      6A642F6D652C63562F63543F6F6933635B29695B3C736A4675734F7E802D5456
+      1C38332354403A756931635F325A542A4A402F705A2F6F5A1F4C42306363366A
+      712D65583277652C6A60204C3F1640301E60502A63552B59472040361D413648
+      796F4D7A753C6A5F3B6D6620493F25523E3970692C6A683E898052918D386C68
+      2864552862591C494624564A326F601F463A2E4C46274740255F4832665E2759
+      472F6E5A22453F26604C37766C163B330B1F14153E291E5C49193D3037544A36
+      57502F75602B6E5F2D6C5F38796E3061572A4746335958315D50416C5F3A776B
+      2D6A5D244C3B253A281E32212637291624171F2C1D44544C354C372C483A3559
+      482F49353F4C3B3C4635465D573651433D5A4A3B4C3A3947354146362B301E10
+      0F0D1115162028272F382B2B34291F35262A372E303939233A362B3F412D3B2E
+      373827232B1D16201A32555D3A666328422C2C371C28362715251D2F42412D47
+      422746432A4C3E14161330342A3B3E260E15082E46543C6D6C3A696339524F45
+      4D3E455237253322545D5663685861665B435E5A334D4F3042473748473D4B44
+      1E25222D37302C3527232722080F1115262C2740523F616428494838545B2F4A
+      4B3A5664456A7C4760725C756E31432C2733242A2F23182118151E1D22272217
+      1F212E3F3E0B180C0E19120C16121C3431202F24262F1D171B183C5364395664
+      39535B3852603C5A5F3C54533D463539442D262D2A3D4E523C4F48232F1F4251
+      44505B4B454F3B393F2B2D31191E2516151A0D171F1E2F363926323127343226
+      3831273831283431223732263632242727353E3A202C1F151A14111611111312
+      151B1E0F140F0E0E0C050A0A040A06080906070B08030605080909070905080B
+      09060706080B06070B0A131A16262F22515C4527341C0305010B100F353F383A
+      4032313B2D313B2A2739292A3A2F394332313E2C323E30373F32364132394132
+      3A3F37374035303F2F34442D323E2F2E3F323141353140332F41333543333742
+      33314033303B33333E353440313A443137432E3743353343343A45343244332F
+      3F2F2F3D2C3240322E3C29303D322E37282733242E3C2C334033364030374231
+      313F2E3843353341383445373C45313D4635364231374232324130323F352D3F
+      313542343444372F4133313E27303D2630412C313A2D334335333F2E2E392B2F
+      3B37333D363944384A53405961503C44363946333C483A35453A2E422C334531
+      2F3B2C2D3D313644343446373B453A353A2D323F313540333746353143313141
+      3635433563637C93EB7E96EE7C93EE7C90EB8096EE7B93EE758BEA8095ED899C
+      F08299EE869AEE8093EC8195ED879BEF869AF08095EB7D95EB7E95EC7E93EC7D
+      91E98597EA8698F07C8FE87588E27285E17689E1778AE2778BE4798DDF8293E3
+      7E91E27082DB7286DC778FDF6F85DA7589DE788DE1788BE17E92E6778DE27E96
+      E67D95E67E93E87C92E4758ADF7489E07890E2748EE06D88DF748DE1748EE278
+      95E77B99EA819CEB8099E77590DF617CD45C78CD6E88D2738DCF728DCD708FCE
+      7797D37E9CD77B98D3829FD77C9AD27B98CF7692CB6E8BC97693CF7696D0819E
+      D6819ED67C9BD5809CD687A2D686A1D37D96CA6C86BE5A78B55876B75271B554
+      73B95F79C1637DC15E75BF5F7AC54F6DC64863C64963CA516ACB5771C95E76C8
+      485EBF415ABF4866C2516BC45875C95A7CCE5E7DD06380D35E7CCE5B7ACF6081
+      D25577C65476C35674C45E7CC65977C4506ABC4F6BB94762B5435EB34663B549
+      62B4506CBA4764B94664B94766BD5470C35A77C35C78C55676C5516EC25C78C8
+      5C75C74B68C14A6AC3546EC6556EC25573C75476CD5C7CCE5978CA5B7ED06688
+      D86181D45C7DD05877CB5674C55170C34564BD3D5BB93F5DBD435FBD4361BD42
+      5EBE405EBC405CBC3E59BA405DBA4461BC4260BA405CB74A68BA516CBC5A76BE
+      617ABA5870B14A64AC516CB44762AE4865B02F4A9A304A9F445FAC3852A33650
+      9B425BA4334A95334B95273E87263E8524397E2C4486264087172A6E111F5417
+      2456273972354A87435EA34A68A9516CA85571B17289C67992CC6A87BE5585A4
+      6D96A6537A89416C80537C9B6082AE6682B96D88C56D8AC05C81AB6586B46B8B
+      B96B8DBA7291BD7493BD6B8DB77395B8789BB66C8FB56A8BB1597F7F456E7565
+      898C5B7D85678DAA759BB46A929A7CA2B67EA4B7619192507778315A51568389
+      659599578F983C768152818B5F8586578189557F8E4F778457818F4D878C538E
+      91426A69436C764A87905C92A46F9BA45A8893598388416F6C3971763C737840
+      737E48818F7DB1BC6C938B3E736E53888E97BDC6C6E2E6A6C2CDCEE0E7A7BCB2
+      5A858BB5D4DADBEFF2D6E9E46D918D477C7898C5CC809BA69CBFCAD6ECF1C3E0
+      DA6B968E4A787870A5B0C3D9DEDAE9EC96B2B96C8A9594BABA91BCBF70A0A25B
+      969896C0CBBAD4D888B6B4739E9D5573809DC0C4A5C4C99EC7CBA1C6BC55807A
+      7DAEA967959751808667909A627C84B0CBD5C5DDE1A2C6C492BDBE77A4A46495
+      8D4C787C72A3A889B0B6517376436F7297BBC097BAB76996965A858960919364
+      9091557C7C456A6B385E5B3F716F669D9A699C9A669B9B579290518A8C6C99A3
+      56818E3C7585619BA35B8F8E4573755689885B8D8C477577446A6F588289406D
+      744C707D4C76766CA1A776ABB1598689547D854B797D4B817A427F733C6C6C3D
+      6D6B42766F4A7C765A8E87639695548B8E5B93925886874C75773763613A6966
+      3C6E685995966CA0A33262522D61533D7471457F7C3C70725690905988894477
+      743A776C3A716A4F85854C837E488278497F7F2B62593F80725A8A8941626648
+      78773C6D6B4B7D7C3568622F74653B81743666623C76724F8B893F6F74559696
+      639D9672999C76A2A95E96955B9096548B8D518685598685659E9B598D924378
+      7669A29D4477765A8F9072A5A84D838035635B3F6F6E2F645820503F2A5A4F40
+      6A68527F83396E69336058355A532B4D403B635A2C5C5339635D3462533A6A58
+      45716A4A6F725F928E5E9B9B3A6F6C4A7A735B868B497C7D3C746C3971684B77
+      7251878641817746797D558D985C92994D75725C90903678713677663F796D30
+      685A5383805E9392447A71679895679799477573678D89598987447E7E64989A
+      729DA43C656B4A7F7F6CA3AC558A925383804B7F833A6F6D3C706B537F7D618E
+      9552808C3A6B6B40766955888540696E588D96568392437A724882773B706E49
+      857F55868B2D60583B7D6C3E817835776D2D665A2C695F326F6338786D447375
+      37655B40766D467C7737665A325E54366460366561406C6C3563603B7F776193
+      9C40696B397463346E69326D662E625B214A402A5141355E57386B642D6C5836
+      6B63366A5F2F6658396058234A3E2B6B5A306F661D3D33244D3A3A816F387363
+      39665943767133625A34655B40756F4D87864F81845B80834D7D844B827D5388
+      7A49787739564C2C4131263A2C2C3E2A2438262433232134241F35272A3D3430
+      483B2A3F2A2F432D424D3A3C443131493D334B4137533E354436464E3A454C39
+      2F35241F25191C26252F3C3731423928383023362A2432282D3D3F2A4045344F
+      5B314D483B41322D35231D241613261E415C603047312D3924273226171E1D39
+      53623459562E4E49204232141D1625332D343C2B15180B22343C3D666C30595F
+      3651533F5243424D392934264C5456666D6054624F3B564C3A53532F4343263A
+      383D4D3D1C2919303A2A333524292A242831352F4A502B4E54486A6532504E2E
+      4F553C576C41657A4462744A66716E7E7A616E571E23152A3328202318161A14
+      21271F191F212F483F0F180E111311101613233633202C23282F1F151D153C56
+      6B3A576B3E59683A596C3A5461384D4A3C44393C452F2931283B4A4B3D4F4529
+      36243C4A3E4B5D48454D383C44282A2F1A1921150D19142C3434343E3725312E
+      27312F18282226342822312B1C282916232320252A282F2F5960561B1E14191E
+      1410120C0A0C0D1316160A0D0C080D0B080506080709030906070B0906070607
+      0904030909030906050706080B08131914222D2444554425341C020501060D0A
+      323C33303D3225382B273329273128293628333A31363C33303F31343E39333D
+      34303C2F3140312F3D2D283A272E3A24313B2D32402E363A31394133363F2A2D
+      3A2C2A3C2E2B3E2B2B3E2B2736272C3C34313D33363F2E3A4336313E33324137
+      343F33363C31384134313A2C353F313138342E38302836282E3A2E333F35343D
+      35364130343E31354436303729383E303C43343D453435423534423536433536
+      3F312D3930313B2F3140322F3D34333D35323D3037412E343A2C353E3034402B
+      353E2D2D3B2B34433B323E3042503E575B4B3A44383D44363C4B393E4C343D46
+      3E3443333843343744353845363342343A4A38364537374535303E312D3F2C2B
+      3926313D2A293924AD927E93EE7E93EE7D92EE7B90ED8298F0829AF17891EB80
+      96EC869CF18498EF8C9EF18298EE7B91EC869AEE8698EF8196EF8298EC8498EF
+      8196EE788FE97C90E78698ED8295EB7689E37487E0798EE37588E0788DE27589
+      DE7C8FE08092E3768AE07083DC7589DE7085DB7B8EE07C90E37589E07C92E47E
+      93E48498E48096E37E93E77B90E4748ADF768DDF7990E17691E3728BE1748DE2
+      7490E47795E77896E9819AEB8499E7738DDE5B75D05E79CF738ED37591D27390
+      D07592CF7897D27E9CD47997D2809DD682A0D77C9BD07390CA6D8BC87896D27D
+      9AD3819FD686A2DA829FD6809DD485A1D689A3D57C95C6627FB85776B65C78B8
+      5674B85975BA637FC05F79C05A73C05B76C3516EC54A68C9445FCB516ACC5F78
+      CA5870C4465EC0435BBD526FC45774C85876CA5E7ED26480D4627FD25C7ECF5E
+      7ED26383D05878C95A78C95878C85073C1536FC1546DC04159B14861B44A68B6
+      4B68B74C6AB84864B84F6DBD4F6EBF4A69BE4766BD516EC1536EC05874C45774
+      C64869C34C6AC3546CC24D68C05A78C75670C1546DC25C7CCC5879CA5C7CCE5E
+      7ED05678CD5A7CD06182D35C7CCF4C6CC24A65BD4A68C0415EBF4865C44664BE
+      4462BE4866C24C6BC24462BF4664BF425FBA4B69C14C6ABF516FC05471BF536F
+      B7637EC05E79BD4B64B0516AB55973B75470B74F6BB13C54A4425FAC4A6AB343
+      5EAA4C66AE4461A63D5AA53954A3344F9A2C47963C59A438529F28439128408D
+      2D418D2D4289273C831D307423387829407D22366F1F33662B3F6D3D517F4961
+      8E526B9169809A6C889F5E7F95577F8F60858F6381835F7A835F7C8B52767856
+      737C627E956B88A46583A36A87AC7797B07592996C88876587997597B1668B8D
+      6A8E9B7799AC7797A26D979A6C98A384A5AE84A4AA779AA0749A9C6A8F934973
+      6E3B6469568084749CA46D999D598D9865959D6C979B6396A2679CA36EA4AF74
+      A3A9538684487A846D99A245737D5882926A929A668A98668E954F8080205051
+      38646C507E8D90B8C6E1F2F5A5BBB0345B5B427785B1D5DEF7FDFEC5DEDEE3F4
+      FAE1EDEBB1CECCCEE6E7DBEFF0DAEAEBA0BBBD77969269999DCEE7E9C6DEE0DC
+      EEF0B8CDC4648E907C9B9986AAAEE5F8FBDAE9EBEBF7FAE1F1F2B7DAD78EBBB9
+      92BBBC629A9A98C5C9D6EAEABBD2D6AFCACC98B4C0E6F7F5A7C3C1ABCED384AE
+      A534625A477A766F9D9F7C9FA393BBC1D1E7EBCFE1E6E5F5F5B5D1CB48776C49
+      7F85A0CFD7C3D9DA84AEB2B4DAE0B1C0C6B1C7C9B5DBDE94C0BC77A8A35C8F8B
+      47797D9DC3C8AFCBD2668A8F5E89895581806691905F8B8B558583507E7A5180
+      8152909561929B678B98598189467C7A86B1B58AB1B0426C69547F8465959A8A
+      B6C26F97A36597A3749DA6658D92507C8364939D7599A257858B5B889B40656F
+      64969B4D77806D929A6C989D639697729C9F537C7E5786867DA9A95A81885C83
+      9386B2BE65938D588283729D9C43736A4F807F618F9250747552797D3D66635E
+      8D8D759EA4527A7853828374A0A55C898849747849777E4878774C7C7878A3A7
+      86ADB24974754976775C8E9561979D537E853D636E567F87759FA57BA5AE648F
+      9981ADB298C0C38FB8BA76A3A96BA3AB5A909C5A8B8C6193915987866E9F9A97
+      BFC49BC2CA9DC9D3608893699AA0A8CDCF87B3B64C838364979C619796548580
+      4F7C81305C595A8D8B518D8E4A8D905F8B925480894C838D49767757858C5989
+      8E558283548184406B6F59858962979C578F9388B1B285B1BA5A83905B8E8F5E
+      8F8B456C6C4D81886B979F49737C3C6C76517F8854797E6295984C8284669F97
+      659D9872A4A4A2C3C77EA3AAA7C5C8EBF9F9B3C3D4577C9A527D7C658F84406F
+      755A8B97649099466B7535595F57878F618D99446B6B60939963909752797C5E
+      89846A9A9F5C8E953A63663E6D714A797F2A4A4C386A695A899355777E4F767E
+      41707A396869648E934F7887305658365D5A4F81813C66683C6A643360584274
+      696498A7446B743657563156522D554E3D6A605C8D8E598E9658858D3C52522F
+      5555568290467678447D77507F8548827D5485874A747854868842686F386A5D
+      508D8444757A427A734B82854F838B3F7A783B6D6B487E81538A8D4A6E784475
+      735E96986391966A9D9B5F888B5F8A906B87936E878E73979B7B989F7B979F6F
+      959B61908D4B6B6C3B5042334737344C382C442D2D41282539251F3725172C23
+      1531251D3425314C3C3143323E4A3935432B32452E24402B192A22434A3E4D4F
+      3D474A2E3036272A3A3E36443E2C382D2B3C2F293D37253B33263D35253B3A21
+      3D402B4E563C6B6F213A2E3443291D2F1C15231A24403F1E38322632252E3A38
+      17292F355C6E30556056858F294E430E19162E332C3139241720151C3039325B
+      602F5C653F6D74374C423A4A362532264C5D5A5A6B5A586556415957364F5338
+      4D5831484835473A2134233037242D312323261F333F3E2E4E482A4C4B375958
+      3D5F5E49697357748F9EB3CEDAEEF3A5B9B3727C6C7C837345533F2A3021272D
+      242023191B2316121E21475A5A151A0911160D1116142735312831242D2F2316
+      1B1D445C76475E733C55693C56683A50593A4C433B44313C442C313C2E505F64
+      3E54512939283F493F505A4A49513C393E2628301A0C1A113C4C555F686C414B
+      444B5453525A57414E42333D2D232D21202B241F2823232624212A284C545027
+      2C1F20251811170F0B0D0B111611080E0B050906080A08070606070A08060A06
+      070606030606030505080606030A0605090A141915232A2751594B2332180304
+      03090C0D313B31293C2C2B302729362A2637292A3527303B37333B36313D2F30
+      4035343A34303B2A313A2F313E2C2C3E2A30402F2D3A32313C39343D31374438
+      353F312E3B2C2B3A2D2A3A2A293D292B3B2C313B32393E323B4234374232353F
+      3037402F313D2A303D2B313E31333F30393F34313A312E382B2E37263A413539
+      3E34313A263040292D392D313C2F2D39282E3828353F32313B2B313B2E2F3934
+      333D352F3D28303C2F2F4031314033313F362B3A303A4232344230323F303241
+      30313B31343C30353C2E3B4237313C2B404B415156423D473B3640343B42313A
+      442E344631313E2F3340323E46313E46303C47313A4532313F333C44392A3929
+      273A2A2130212A35251B2A185E597C91ED8296EF8195F07B91F17D93EF889DF2
+      7E95EE7D95EE869BF18799F0899AEF889DF38097F28497EE879BF18298F18496
+      ED8697EE8698EF8196EB7C90E87E91E98295EC798EE8778AE1798BE1788BE278
+      8BE17487DE798DE07B8EE07689DF7587DE788DE1778BE17387DC788EE2798DE3
+      778AE27E93E68598E77D91E1768ADF758BE37289E1778EDF748AE0708ADF738D
+      E0758FE47691E67B96E8809BEB7E97E87C93E46B85DA5775D0607DCD748DD378
+      92D47593D47897D47C99D3819ED5819FD7809CD6809DD57C99D06E8BC86E8DCA
+      7596D0809DD4819FD686A3DA88A5D8819FD57B9BD386A2D27690C25A75B4607D
+      BA5F7CB95671B6637DBE6681C05E77C05975C1556FC24C66C64A66CA4463C951
+      6CCD657DCB516AC14B64C14B65C2546EC6637CCE617CCF6181D46985D6647FD5
+      5E7DD05B7DD0607FD25B79CC637FCD5B77CA5471C5526EBF536DBF455BB34F66
+      B74D68B74D69B95271C03F60B74B6BBE5571C15270C04565BA4A6BC05170C056
+      73C25976C74D6EC44F6EC55069C24F68C04D6BC1526FC2506BC04F6BBE4D6CC2
+      5575CB5374CA4161C25271CB5C7CCE5978CE5677CB4464BF4D6AC1536FC64764
+      C34F6EC64D6EC64B69C34765C14C6AC34A69C34969BF5070C45170C2526FBC63
+      7FC56780C35973BA4F6BB75971B8566EB3607CBA5874B8516EB45671B95874BA
+      4D69B4506AB1506AB14765B04460AC3E57A84260AC3E5EAC4565B43C55A93851
+      A33954A63A56A9405CA83A539F3E57A3314C962C448D364D9332498C1D306826
+      3B71395089243666213152374E6D405576506586556F8C5E798D5F7E875B7876
+      5E7976617C7C627F7D6785876C898C6C898D6E8B8F7390906E8B89728E917390
+      976F9291789A9C789BAF7B9DB585A4AF82A8AB84A8AC81A6AB7BA0B07DA0A97D
+      A1A7759A9F5781846C939C779EA27698A078A2B378A4B478A4AA73A5AC70A2AC
+      72A6B37EAFB662989B6A9DAA77A8B0659299628E9C67979F6A939B658D926B91
+      986E91966B90905C7F8EC2DCE7F3F9FBE5EEEB6F8B8458808794BAC4E0F3F4CB
+      E0DED6EAEDE2EFF0D9ECEBCDE4E1D7EDEDE4EFF1D7E7ECE3EDEBAFC5C7E2F3F3
+      E5F2F4E4F6F9E4EDEBD0E5E9CDE3E1BBD6D8EBF7F9DAEDEDEDF8F9DCEEEDC8DD
+      DEB4D1D5BAD8DA98C0C4C0DEE0D8E9E7E2F4F9D9E7EAB9D2D8F3FEFECCE0E1D2
+      E6E7B7D2CD85A6A255747A8CB0B6B6D1D689B4B5C8E1E2E3F0F1E2F3F1A6C7C8
+      6E9E9A49747C93B9C2EFFBFDA3C0C789B7BEE5F7FBEAF7F65389812A5C5D6EA0
+      A4669B953F6F73ABD4DBB7DDE187B8BC66979C87B1B484B3B25E93965E91914A
+      7576517D7A48817E7BACB090B6BF62939C4D83879BCCCDA2C6C6487371589798
+      4F90927BADB89ABBC294B8BF8ABABF4A7C76365A6372A4B389B4B86096965283
+      92557F8D91B3BD789DA5629392598F8B5A928F8DB7B7658F8C436F6964989C5B
+      889680A3AF8DBABA80AAA96A939548767154807F699BA375A6AF5F868B527E7F
+      547A7767969589B7BC76A1A76CA0A76FA1A24B79744B7C7C749EA55B78816D93
+      93BBD7DA84A1A73C5C603C6A624C817E7BA1A956788074A0AC67999C5E8D8787
+      B8BCA0C8CCB4D0D2BCDADF88B4B879A8AF74A8B2547D9041696B669C9D639599
+      52888587B8B88DB7BC6FA6AA6C9AA092B3B7CAE2E49BC1C852898B7EAFB589AF
+      B78AB0B76C96A450797D638F925382955085926595976EA3B875ACC36F959A7E
+      A3A96A9DA656908D5B908D517A7A3A6460578A8B59888489B6B28ABAC0526F7D
+      50717675A2A66B9296658D956B939D55787D2A4B463D656856858E6D989D4B65
+      6A4D77757BACB380BAC3BAE2E6CCE2E4CFE7E8EDFAFAA6C2CF658AA9658F9A6B
+      958F527C7187ACAA7EA6B25F8F9C53768146646B44778345757A58858C679697
+      577E7C5882816698A24F75786B9298528195437083476F743C68643569635882
+      89406164406A666690A3609BA55B859D3855684D7581496D7742605F314A4835
+      4C46597E7F5F90986F96A7567A8047746C3B59552D544B609192538580598D8F
+      425559375F5E6496A44361694A76745F8790598B8D6D9CA4749FAA668E9D4371
+      7673A6A76389974B787D5689914D829342797F4D878C598B92628B966FA2B256
+      86A35A819965909D79A4B07B99A5799EA3779FAA7498A77EA1A39EBAC58EA8B2
+      63817A5976684762553C53472E40302F3D2E283C2B2B3E322E3F302D3E323B55
+      4C2E4B3D2F564128433134513B314530444E3538472E374D372C4931303E2D58
+      5942484B334C4C2F2C382C314B4536575229403721393525393026392F293E38
+      2A3F3A26454223434334696D284A4439452C313B2223331F2E454F44626A2432
+      1F313E3B15292E2F4D61407887508B991E4A3D0E1A1631372A3A3524151D1725
+      3E502D545D28505B3A656A3C503F3D493B202F24465354646D5F5B6555395052
+      3B54543C50543549483241342533232B34262D301E293029344B493B56524465
+      634968643A56534963735A6F8ED3E0F2E4F1EDBFCBC0757D6E848B807B8D7243
+      4D362E3727272A24181F160F1E1F6B7C78111A060E160D131916303B392B3229
+      22301C111918425568586F77727F81707E7C3953514152413A473037412B3541
+      3952615E4C5C512838253F4D4744544344503F323D2A26301C343F42727F8DBC
+      BEB98C967A8288809C9D9197978560715834432E3442342D3928252F26111A15
+      4D5E542C352B232D1B191F1212170B0C0E0C0B0F0C070C06080706060A090709
+      09030606030505070A06080706070909030505020A060C18152024284B504323
+      2A13050501080C0B23312D29382A2935262934242B322D2D342D30392F333B30
+      2D382E2C392C303C2C2A3A21283A2A313A3329392B26352427382D26372B303E
+      352E3E29313D2C2836262A38272736272836292838282B3929303B2C343F302A
+      392B263A262C38252B39292F3A2C2F3A2B2F392C2A382C27352A2B35262E3627
+      2A3524283925303A292F3B282B392C29362725312327352B2833292331252938
+      2928352928382C2A3A2A2B3A2827382A303F2B34412A2B3A272939282A3A282B
+      3A28303E262B3A2C27362C2F3C28333C2A353D2B37423649534230402C2E432C
+      2E3A2D2C3B2B2E3D2C2A34292F3A2D343E2D2E36272738262B3B2731402F2F3F
+      2E2E3B2B263628232D22202A24202C26493E7D93EE8296EF7C93F17C95F27C92
+      F08599F18699EF879BF18A9CF3899AF1899CF28A9CF48C9FF58596F18799F184
+      9AF07E93ED8295EB8597ED859AED7D93E97E90EA7E92E97C8FE77C90E47689E2
+      7789E27689E0768BE1788DE17D8EE07486DC788BE27B8FE47C92E47689E07B8E
+      E2798DE17688E17C92E48297E88296E67B8DE3768BE07287E0778DE27B90E375
+      8BE07087DF6E88E07993E7859CEB879FEB7993E4748EE1627FD75978D06E87D6
+      748BD47791D47793D57C9AD5829FD6819ED6819FD886A1D8849DD37792CC6C89
+      C87491CC819FD3829FD6819FD781A0D887A3D787A2D686A2D68CA4D26E88BD56
+      73B15C78B75C77B7536EB5627EBE6580C1607CC05571C04C68C34D66C64C69C8
+      4A6ACE5973CE667DCA526CC34862C1526BC4566FC6607CD06583D66281D56685
+      D66180D6617FD36180D06180D26783D05F7ACB5C79CA4F6CC04965BD516CBD4A
+      65B74C69BC4964BA4B68BA5170C04565BD4A68BE4A68BE4968BC5673C25A78C6
+      5773C54F6DC25573C35C75C26179C8516EC45270C54F6EC44D6AC04F6BC14968
+      BF3D5DBD4365C45776CA5877CC4D6DC95573CB5A7CCF5675CB4C6CC44A6BC452
+      6FC65270C64D6EC65071C85270C94C6DC44F6FC45073C74A6CC34F71C15778C4
+      5F7AC46780C76F86C75B73BD4F6CBE526DBA5C74BA627DBC627ABD5771BA5871
+      BA526CB64F6AB55976BC4964B33E5DB13C5AAF425DAF4361B14768B74463B53D
+      5BAE405AAE3D5BAE3856AC415EAE4660AF536EB24460A5465EA74963A5425DA0
+      364D933E57963B4F8D3C518D314A7F2339652033561520402D3E603044682A41
+      5D4F6C745B76755F7A7F6280806482816380816A898E7391957292916D909173
+      9597769697789C9C7B9FA2799CA07398A9799BAC789CA5749B9C769FA279A0AF
+      75A0A776A2A77BA4AA79A4A975A3AC70A1A7749FA5749FA4749CAB65979A6293
+      996B98A57DAAB779ABB875ACB574A2AC6B9EA773A4AB709FAC6C99A06E989B6D
+      939A6E969C7EA4A5779D986D929ACAE0EBE6F9FBE7F1ED879E9291B3B6CADFE4
+      DCEEEFDAE9ECE3F2F2DEEEF0E0EFF2DAE9EBD9ECEFE9F6F5DAECEEEDFCFAE1F2
+      F3E8F6F5DCEDEDE3F4F8E2F1F2E6F6F5E8F3F2DAEBEFE8F5F5D8ECEFE7F6F4D9
+      ECEBEBF7F8E2EEF1E2F0F1D9E9EAECF9FCBCCFC886B0B6E7F7FAE1EFF1EAF6F4
+      E0EFF1E8F6F5DEF0F0E7F4F4D4E1E0DAECECCEE1E1A6C4C6D9ECECDDEFF1E9F6
+      F4B7D1D6BBD8E0BCD8DAD1E4E8E1F1F2D9ECEEC3DCDCD4EAEBF1FAFA97BAB96C
+      909892B4BA97BDBC76A1A296C4C8B7DCDE98BFC486B2B6C1DEE3B1CECC79ABAF
+      81B1B872A0AAA0C2C794BBBD7EABA8679FA480AEB780AFB3ADD7DADEEDF0A0C0
+      C16EABAE69A1A784AFB8C6E0E4EEF7FA7BA0A342707169909166969F74AFB261
+      A4A76B9F9F67989AC0DEE4AFCECE548F8D39767858999B89BFC2528A8329574C
+      4D808B6FA5B18CBDC2B7D7D7BAD6DA6292933C6F6C7DA8AF538592609AA06FA0
+      A75E8A937BAAB1A3D0D2BBDADC7BA9AE7DB3B86BA2A55586836F9E9D75A6AB4F
+      818989BEC4CEECF094BCC1437372356A5B5A978E89AEB551858580BCB75E9291
+      2C5756416C6E90BEC2DCF4F3E5F3F69CC2C97BA9B745767E75A6A98DB7BC88B1
+      BE69929F5A858D85B3BA94BAC05B959D75ADB2DBECEFDCEFF36B92975C8889A2
+      C6C79AC1C6ACCFD597BDC69CC1C9B8CFD986A6B781A9B3739DA3588E9F77A5B0
+      B7D8D6A0C2C65A989A508F8C5E888B658D915882854F7A7E759C9792C1C46B9E
+      A260898E3F6C74588E9A7BACB09CC3C87BA6AF456F753A6B5F629A9F558DA054
+      89916D8F9282A2A294B7BC6AA1AAA3D2D0D2E9E9DDF0F0E5EFF1BFD6DBB2D1D9
+      B3D2DE6E919857837D86AEAF7BABB36EA9AF779CAC4B6B73406F73567E886282
+      87557C7D4B70715783876EA1AB77A4B35B8F99438292629DAE518992487E7F41
+      777447868D3C525546746F66A4BA335F6248858E5996A95186954A7980559897
+      335E5A485E574F80845C9DA763929F395E5A27574834605D3A6B6655888D386A
+      686EA6AE6B8DA42F565A37625D3C625E548281588691245C57286D633D7A7F64
+      8B9D2A55555B9395537C8C315B5753828F488592659DA4588990457F874A8392
+      467481659AA677A2B553747A6D9290728F9674969A88AEB96C909A739B9A94BB
+      C689A4AF596E6253695034443034422F30382D313A312F3D3137423232393031
+      38344B5E52385037223623243A2B2E3C2931442E404B3A3B402E3B4B3936473A
+      414D3E59593B524E29353A27364C4C3B5750314A434B5E5D324944324A433B4F
+      4C38504E38504F375A542E494739595B3150423C4A373D432F3038251E281F23
+      29222E34282C3A34122B2F405E6C34666C3C767E33635A0F15112C342C303824
+      161A1536556C4777813566683A62683D51493641372A322249545261685F646F
+      6547605B4561684465663854473747361C2A1F202B221F291F2E3E4851686A49
+      6161445F5D5065644A666B526B6E586D71A7B7B78F9D868A9A83778673708574
+      66766F627366333D293035221F2A1D10191C8695972B32140C0F0B111615434F
+      5231392E2A2D1E181D1A4355638F9D9BC2BEB49C9F89505A505662533C473037
+      402A2837244A5551617461374434424A4A4B595147523C343F302F382B7D8186
+      6C7673A7AFA6ADB19CB0B4A4ABB098A2A687465A3E3344353340362234282230
+      2A1E2521545D54151E161E291E212119171D110B0F0A050D0C030B0808090803
+      0605060A0B050906060905050706050A06050905040706020906111812202923
+      454F3A1E2616080C0B0D100D1E2625272C281F2A242C372A2A322A252F272A38
+      2A2B372A242F24263325283824253421223A2D283A282233271F302526342820
+      352721322C293229252C1E252C24242F251E2C21232D1E253124222C24203324
+      263325243024223727233425243022252B1E233023202D23192A27212C241727
+      21222C261D27162132231A2A21213321242C1F1F2B221520211824241A292417
+      26211C25231F29211724211825241724211A291F2231241B2C1C1E2F1D1A2625
+      18281818231A202C211A281818271D1522161C2A211A2C1E25361E2A3B2E1629
+      1E182C1F17211C15251D1D2B211B251B1C1F191B291D1B2D1F1B2A1D172A2619
+      26211D2C241A291B16291D1524211A221917231AECEB8297F08296EF7B91F17C
+      93F07D96F18097F28A9BF18DA0F2899BF18698F0899DF3859AF3879CF48899F1
+      8796F1879BEF869AEF8597EC8297EC859BEE8498ED8295EB7D90E9778AE67E92
+      E87C90E4788AE07689E0768AE1778DE0778AE07587DF7688DF778BE17C90E480
+      90E37E90E27B8EE3778BE28092E47E91E47B8FE4778AE37387DF7389DD7587DE
+      7588DD778DE1778FE3728AE17C93E6899EE98AA0EA7D96E4738ADE5F7AD5617E
+      D46D87D86E89D77591D67E9BD87C99D7819CD7809FD57D9CD584A0D6809BD274
+      8ECA6C8AC97B97CE829DD57E9CD77D9ED97B9DD785A3D98AA5D888A0D3869BCC
+      6A83B95270B15674B65A75B6556FB65B77BE6683C36580C45773C24B64C5526B
+      CC4665C94C6CCD637CCD6A7FCB5570C24665C0526DC55875CA6280D46483D761
+      80D56686D86586D85F7FD36583D56482D46580D05B77CC5979CA4A6BC14660BA
+      4C65BC536EBF5271C04F6FC24969BF4463BA4A6AC04C6ABE4C6CC1516DC24F6B
+      BC5873C05673C55473C6516EC25773C1506DC14666C15573C85574C74968C047
+      66BF4F6CC34F6DC34F6BC55775CC5A7ACF587ACF5979D26080D65173CB4D6CC4
+      5978CC506FC95474C85273C84C6BC75373C95C7ECC4C6DC35B78C86583CC5F7C
+      C75E7CC65E7ECA5877C66179C55F7AC55771C34862B74F6ABF647FC35774BA47
+      62B8546FBF4965B5506BB84A69B84260B33C56B13E5BB7405FB53E5CB33F5FB6
+      3E5DB63F5DB64462B63955B1344FAC374FAE415CB1415DAF4661B0516AB24961
+      A8465EA6445EA641579B3B51933D54983F54933C50892D437320335D2B3E6B1C
+      2D572139632038592E475D46626C5A777E6480836A86886C898B6D8B8E728F95
+      709395749898789B9F76999A789A9C7C9D9F7B9C9C769B9A75989C799EA0769D
+      9D749FA377A5A976A4A973A0A973A1A76FA0A670A1A6709FA56A9B9A6B95A460
+      8F975F9DA26B9EA47B9DA37CA0AB7EA4AA799DA5779DA57399A06B939C639296
+      6493966A939961899053808352818457878FC5DEEBEBF9FBE2EDE77E978D8CB1
+      B5DAEEF1EAF7F8D8E9EBE5F3F5DDEDEDDDEFF2E3F1F2DBEDF1E6F4F3DAEAEBE9
+      F7F4DAEDEDEAF7F6DBEDECE5F4F6E1EFEFDCEFF0E4F3F2E0EEF3E9F5F8D8EBEE
+      E8F6F4D9EBEBEAF7F6DDEEEEE6F7F6E5F3F1EAF7F9CDDCD997B6BDE1F1F2E0EF
+      F1EBF7F5DDEDEFEAF7F8DEEDF0E9F7F9E7F7F5E3F4F4E2EFF0D9E9EDEBF7F9D9
+      E9EDE7F5F5DCEEEFEFF9FDDDF0F1E8F6F6E0EDEEE1F3F3E6F4F1DDEEF0EAF6F5
+      D7E8EBE8F3F4DBEAECF0FBFEC4D9D98DB0B4C3E3E4D0EAEBCCE1DFDAECEFEDF8
+      FAD5E6E9D3E4E6C5DEE1E5F2F6CBE0E1CEE2E1ABC6C9C8E0E4D6E4E8D8E8EEE7
+      F7F8CDE0E3CCE0E2CFE2E6D8E9EDDAEDEEECF7F8A4BEC1A8C3CAD2E4E4B0C9C5
+      ADCACE88B2BCBDDFDDD1E4E6D4E8EADBEDEDBDD5D981AEB39CC5C992B2B42F68
+      6C3576749EBFC0A5C4C3B1D1D0F3FEFFC5DDDB90AFB09CBDBEC9E2E48DAEB29D
+      C5C38DB2B198BAC088B3B8A6D0D0E5F5F691B7B9B7D9DC9BC4C8B1D2D3B6D5DA
+      94BABD8FB0B5C1DEE3C1D8DA6B98984277774C807C93BDBEA1C0C95F8B9077AE
+      AF9DC1C28DACAEA5BFC298BFC6DBF3F3E8F5F4CFE4E6A7C7CE5C878BA5C4BEE0
+      F0EFDDEBEEC3D8DABCD2D981AAB0BADDDE9EBEC59CC1C2DCF3F0E3F2F1C2D4D7
+      98B9B9C0DDDFCFE5E7E3F2F2C4DEDFBADBDAE8FAFBB3CEDAABCDD9C0DBE190AE
+      BDA4C0C5DEF1F2BED6DC9EC0C5ADCBCF9CC0C576ADB48AB4C157868891BBB5BA
+      D9DEA3C0C4A8CCCD82AEB484A5B194BBBE92BCBD6D9DA0638F916A90896E9BA3
+      608A994A7A7A9AC2C1D2E9EBE0ECEEB2C9CECAE2E1CEE4E4D8EAECE3F0F1E3F2
+      F2E0EFF1DAEAEEA4B2B775958CCADEDD707F873154514370723B4F51303C3752
+      6A6B5A838742646C3D57584F7D7E608E9B537A88376865356863436C6F3B6E78
+      3C7A81427D7E426F7140504E395E562A5F641F453E3B6C6C45737C43828C3E7C
+      8E3B77832D5351394F48466D6D467C8833666820403916332C27535834696C2E
+      666B30666B53838E5192A629686A24453E3D69633B7475387786396B71356568
+      3B808958919F4F7E85396A66577E7E5B7D7F63838D65888D6598A54D88984579
+      8746839052838B658288708E92708D8F6E898E6C8A8F7695997D9EA975909875
+      95987C9B9D87A0A575887C5C6D50363D2431381F2D34253C49423B493F2D3D30
+      364031323E2E2F4033324128343B292C3A29293E31344233404D3C3F44313C4B
+      393949314B504250573E464726282A21405E52314D3D3C594F2B40383657523C
+      605B2C48432B403E2D463E2D4B43263C342A41432F4B4A30453E43513B383F2A
+      20301D1D231B25312429352C1122242E51662F616C285E683159540B160D2E2D
+      2C313528181B154561834C8A893C6E6E3B656D3A4F473B41372B332449525065
+      6B63616E614D64633C606A46707852665A37452E1D29182128241C2525455565
+      546E746B8A8F7C9897647C7F8DA09A60736D73868594A59734412E4B554B5566
+      527277726B7C8390A39B303F222C3B212931251419165B6564232C16080E0912
+      1814323E3D293225242B1E191E1635423E2A3A2C3C4838575D4F737364535941
+      3841303B42282C3021727E7E9CA6983C422C434C41535C4C494D3A353D292B34
+      28999B98727673B5B9ACB7B6A3BBBC9FC6C8AA86886C42553E2F473D283F3B25
+      3C3717291C21302A303B3315231813150E21281A1C241412190B0B0D06080706
+      040606080A0803060603060503050A07050A0205040606050507060309060F15
+      121B24243C4A3E151D0E0D130F060F0D0D1A1611211A131F191823211B271719
+      26181A2516111E13151E16121D1A111B1A151D16141B11111D19101B19131E16
+      111E16111D1A0F1B18141B17111B160D1D17101E16141E1B111E1A131916111B
+      16172016152013111E18121F1B122218141B160C1D160F1E150F1D180F1A160F
+      1D160D18150B130E0E18140F1B170E1B160917140D16121018160615130A1715
+      0E19160D18150A16160B17171019150B19160815150B1A140F1E1C11201C0B1B
+      170B1B170E1E16101B16111E1D0F1A1A0C191A11221C0C1B160F1B1814251B16
+      2A240F251A111F160F1E190B1B17111D15101F180D1B1116201B0E211417221B
+      0B1E1C1020220F1E19111F1C0E231D14252411221C0D231F92818095F08095F1
+      8197F18597F28498F28599F4899DF48AA0F3889CF0869AF18DA1F3899DF1889C
+      F5899CF28598F1879BF18C9DF08799EF8296ED8598F08699ED8699EB7E91EA75
+      87E4798DE47C90E6798BE2768AE1798EE47C90E37386DE7889E17588E0768ADF
+      798BE2798DE0798EE3778BE37C8EE48493E68493E47588DE7085DC7588DF758A
+      E07588DE7286DB768BE17991E47691E67B93E68298E78199E97991E2758BDE5B
+      75D26681D86D87D86E8DD77491D8819CDA819ED9809ED7819ED684A0D67C9AD2
+      7695CD6D8AC7708FCC809CD4829FD77C9ED77D9FD97E9FD787A4D98AA4D6859C
+      D08197C86A83B85676B55473B65671B6607ABC627CBE6A85C3617CC15771C34D
+      6AC94C68CA4665CB5473CF6179CC627AC85A76C54F6EC55573CA597ACD6280D3
+      6685D76683D86181D7698AD96685D86485D96281D46581D35A79CE5574CA4F69
+      C2506BBF4969C0526DC15E77C55676C54C6FC44466BF4868C05A79C64D6ABE53
+      6FC2516FC0516EBF4C6BC05573C45B78C4526DC04365BE506FC24866BE4B6BC2
+      516FC24C6CC24B6AC2506DC15576CA5879D0597CD3597CD46282D75F80D35475
+      CC5777CD5B7ACC5373C85776CD5273C95271CB5979CC5577C95977C9637FCA77
+      90D37690D46B86CF5777C8607DCB5777C95470C55971C74F69BF4B66BF546FC0
+      506BBD3E59B94866BE4568B84665B84261B4425FB2425CB63C5AB83A5AB53E5C
+      B6415FB93F5DB83954B4425EB93F5BB83C59B53C59B33550AF3B57B43E5AB344
+      5DB0435BAC475FAE4760AC3A4FA24256A0394F9A3D53973A4E8E2B3E7C324883
+      1C316920356A263D6F182B531122441D3150253D572F475F4763726B8A917798
+      9B75989B78999C7C9C9F799B9B7B9B9B79999C799EA37B9FA07BA0A37CA0A47D
+      A1A779A0A57CA3A578A3A876A3AA78A3AE77A9A972A2A3729AA26D99A26B9C9C
+      6E9AA76B979F6BA1A76C9FA76799996E98A06D96976D98996F9A99648F8D5986
+      844F7D7F5C8B936FA2A775ABAE6DA6A766A0A5639DA7C5E0ECEBF8FAE2EDE780
+      978D8EB2B5D6EBEFE7F6F5D6E9EBE5F3F5DDEDEEDEF0F3DEF0F1DCEEF1E9F3F3
+      D9EAECE9F7F5DAECEDE9F5F8DCEDEDE5F6F8E3F1F0DDF0F1E3F2F1DEEEF3EAF7
+      F8D8EAEEEAF7F5DAECECE8F7F5DCEDEEE5F4F5E2F1EFE0F0F1E6F4F5E9F4F5E8
+      F4F5DAEBEFE7F7F5DAEDEFEAF7F9DAEDEEE5F3F4E0F1EFDCF0F0E2F0F1DCEEF1
+      E8F5F5DAEBECE6F5F5D9ECEDEBF7F8DDEDEFE5F5F4DEEDEDDDEFF0E2F2F0DDEF
+      F0E7F7F5DCEEF1EAF7F8DAEDF0EDF9FCDDECEEE6F2F5CBE4E7D8EBEDEFF7F9DE
+      EFF2E6F3F5DEF2F1EFFAFAE0F1F1EEF9FBDEEFF1EAF7FBDDF0F3DEF2F5E9F5F5
+      E2F0F3E1F1F2E2EDF0ECF7F9DBEEF0E9F7F6DAEAECE5F5F5DEEEF1E7F6F9E5F1
+      F4EBF7F9EBF5FAD3E2E8E2F2F0E3F3F2E8F8F8E0EFF1F3FDFFE1EEEDECF8F9DE
+      E9EA93B4BF9AC0C8E7F7F9EBF7F8E1EFF1EBF7F6DBEEEDF0FAFDE3F0F1EAF7F8
+      E7F6F5E6F7F5E6F3F3E0EFF0DAE8EBCFE4E6E5F7F6CDE7EAE3F3F3D2E8EBE2F3
+      F4D8ECECE3F5F5EBF7F9E7F5F6DEEAEBC2D8DAA3C4CDA5C9CCD9EBEED5E7EBCA
+      DEE0CBE0E1DAEDEED8E9EBE7F7FAC5E4E4D6EDEDE9F6F8E5F2F4E9F4F4CEDEE0
+      E8F5F8E2F2F1ECFAFAE9F7F5EDF7F5C9DCDED1EBEBE5F3F6E3EFF1E2F3F2DEEC
+      EDF2FAFDDAEAEBE3F1F2DDEDEEEBF7F9DEEFF1DCEEF1DCEFECC9DFE4C9E0E3DE
+      EFEFEBF7F8E2F2F0ECFAFBDEF0F2EEF7F8EBF7FBB6CDCF85B4B67BB1BA5A9092
+      B8DAD8E8F4F6E4F3F4EBF9FBD7E8EBE7F3F4D4E5E7CDDEDFC0D1D3CBE3E1D4E7
+      E9BFD1D5D4DFE0D8E6E4D4E6E7D6EAECECF8F9E0EFEFEBF7F9DAEAEDE0EFF1E0
+      F0F1E1F2F1E6F6F9EEFCFEE2E8E8A2B8ACF2FEFE7978810D0B062B4638334848
+      4A59584B646547696B42636847606341595931403C29322C374639334435242C
+      20384A443B524C344E44364139343C3334483E344C492B413D3B50522E38332E
+      5048335F63344443485E5A467D84487477467177326B69336963305555335E65
+      3052503857543953503C53504165633B645D456061406360467D7C487A845A7A
+      7E5C747753798052818464898F547474658185708E9067868B6C85896182875B
+      808B6D89916A9198669296728B926E878C7090936F909676929975919867888C
+      728D8E7690997E979C90A6AB798B83646F553D462A3037232E3426303C353342
+      38313F3A274031253A2426371D2A3A27303F262E3F2C283D2731422F3E4C3B3E
+      473642564544523D54553F484D3935381E313C2B2D44362C453A2C463E2E4C45
+      30535133514A2F474532514C2F4A49324A452B46402E4C5430505E294C503C4A
+      3C3C48312B382420271B1F271E30382D1F2C2A31536A41788B396F74274B3E0D
+      17132C2F2C3135241E1E15364E59275A59386E7D39606A3B4F4349513B2B2F23
+      515654636B5E606C634F6565577786526E72445D4735442F212D161A1F172F38
+      43495C6C97A8B298A99B6F87725C6F623A4A413E524C6C7D7FB3B9AE5360516B
+      756A74807379817F87989CC9D1C7444F3328351F3234261F2A1B1D281B1A220B
+      0B0F0F1015131B2D26273126272A1B191E17324343313D2D293B2E303A2B3C3F
+      2C33442D31422E323E262731244A605F6477653D482D39443C535F4E46513A32
+      43312E332589887C6A7665A0AD9B989E806C6F50565E484955403A4937253931
+      2D413E304E4B29413E20322B202D221A221A0E151118251A202717171E120F14
+      0B090B0505090604070505070806070602070604090602060407050603060603
+      05080B141420231B333E320B130B02050408070B060F0C081311080F11030F0C
+      060F0C0D171308130F0818160C140D0F1E1C15211F1522231421211622221D2A
+      261C28221727251F2F2B202B2A20312F1C2D2D21302F1F342F1928222136321C
+      2C2E20342828342729352724332822392F213B2E26372D23352B2C382F314436
+      324037263935304339435349394938273A2A293E3A3D544F485A544455493E50
+      4833443F3E4A483E524C3F544F3649472E423A404E4340534C46514B363D353F
+      48413E51454A5A51414F48354C4137483F384E3F354B40253A2D1F3527243A31
+      253F3A4357513F544833493A273C2F33443A485D513D5144374A3D3E4E423C4E
+      41475D4F374A383A4F453F5A553F5548485B4C4C6053495C524C5B503B368195
+      F18196F28197F38799F5879AF2879AF48A9DF88A9EF58498F0889DF38EA2F68C
+      9FF5899BF58A9CF58496F18095F18195EF8698EC8598EE8799F1889BF08496EB
+      798DE47688E4788AE6788AE4798BE47D90E47D91E7798EE37589E07D91E47789
+      E27486DE798BE27C8DE37C8EE3798DE38090E68797E88597E6798DE16F82DB75
+      88DE7588DE7088DE7086DD768AE0788EE2768FE47C96E88199EA7891E7758AE0
+      6B83D95A75D26D85DA708BD96F8DD87B98DA7D99DA86A2DA819FD97E9BD689A2
+      D7849CD3738FC96B8AC77592CF7D9BD47E9FD6799DD57C9FD785A3D98CA4DA89
+      A3D4869ECF7E96C6667EB55976B55977B85F7ABA627EBE607CBA6782C16782C5
+      536FC34A66C84D6ACB4A66CD546FD0637CCC5C75C5536CC25670C85979CE5C7D
+      D06581D66786D86D8BDB6381D96585D96989DA6A87DA6682D86783D4607CCD59
+      77CB546DC2536FC45574C44B6CC05777C75975C44F6BC14C6CC54F6DC34D6BBE
+      536FC04464BC4A6CC35370C44564BD4966BC5670C15874C24D6BBF516FC04D6F
+      BE4C6EC15B76C7546FC35373C75474CA5778CB5A79CF5A7DD65E7ED86283D65E
+      80D05174C8607ECE6281D25574C95A79CC5777CD5375CB597DCF6687D06F8BD3
+      6A85CF6D87D06A86D46482D75C7ACF5A78C85573C6526BC4506AC54B69C34964
+      BF4761BD445EB93B54B94260BE4666BC4764B84864B9415DB5425EB53F60B83C
+      5DB83F60B73C5AB53954B43E5AB4435BB44762B94A6ABD3E5AB43852B34865B9
+      4861B34B61B24A62B34D65B24B64B24059AB4054A33B529F415BA3364C932A3F
+      862E44891A306E243C7628427D20366C192F611D356113254A17294E1F34551F
+      344E3C596B739A997DA4A481A5A884A6AA81A3A680A2A27EA2A57CA3A781A4AA
+      81A4AA7CA2A97CA4A87CA3A576A0A578A5AC77A5AC76A4AB74A2A677A2A674A1
+      A86EA0A06F9CA7749EA66D99A06C99A56A9EA0699CA5659EA3679C9F699B9B67
+      999A65969666939866979C6EA4A770A4A96E9FA35F9195609AA6C8E3EDEBF7FA
+      E0EBE87C968D8FB2B5D7EAF0E7F5F6DAEAEBE5F3F5DDEDF0E0F1F2E0F0F1DAEF
+      F1E9F6F5D8EAEBE8F7F5DAECECE9F7F6DDEDEEE5F7F6E4F1F1E0F0F1E4F2F1E0
+      EEF1EAF6F6DAEBEFEAF7F5DAEDEEE7F6F6DDEEEEE6F5F5E3F1F0E0F1F2E5F3F4
+      E0F0F1EAF6F5DDEDF0E5F6F4CDE4E4DDF4F5CAE5E4D8EFF0D8EBEBCFE7E8DEF0
+      F0DAEDF0E9F7F8DAECEDE7F5F3D8ECEEE7F5F8DBEDECE5F4F3DEEEEDDEF0F1E2
+      F1EFDEEFF1E9F6F5DAECEDE5F3F4D9EBEEEBF7F6DBEDEBE8F7F8CCE5E7D2E9ED
+      E5F2F4DEEFF3E5F3F4D8ECEDE9F5F6DAEDEEE8F7F8DBECEFE5F3F6D2E9EBDAED
+      F0E0F0EFDAEFF1E5F2F3DAEBECE5F3F2D8E9ECE5F3F5DAEBECE3F3F4DCEDEFE4
+      F4F4DAECF0DBEDF1E0EFF1DBEDEEEBF7F8DDEFEFEBF7F6E0EDEEE9F7F9E0F0F0
+      E5F4F4E5F5F3EFFAFCF0F8FAE1F2F1E8F6F5DEEEF0EAF6F6DAEDECE8F7F6DBEE
+      EDE6F5F5E0F0EFE5F6F5E5F3F5DDEEF0E9F7F8DBF2F2E4F4F4DAEEF0E5F7F6D8
+      EEEFE5F7F8DBEEEEE5F7F5E0F1F1DCEFF0E8F6F5E9F7F6E6F7FAD9F0F1ECFCFD
+      D3EAEBE7FAFBD9EDEBE0F3F3E0F1F1DAEDEDCDE8EADAEFEFE9F4F5DCEFF1EBF8
+      F9E7F6F5EDF9FCDDEDF0E6F6F5DBEDEFE8F5F4E0F1F1D9EDF0E0F2F3DDF0F0E7
+      F3F5DDEDEFE9F6F8E3F0F1ECF7F6DBECEDE5F5F6DDEFF0E5F4F5E1EFF1E2F1F1
+      EAF7F5E2F0F1EBF7F8DEEFEFE8F6FADEEEF1EBF7F5DEF0F0E4F2F2D5E3E4C2DA
+      DEBDD1D7D8ECEDEBF9FADCEFF0EAF7F8DEEEF0EBF7F8E4F1F1F0FAFDE9F7F8E8
+      F8F8EAF5F6EBF8FAEFFAFAE7F5F4E3F5F8D4EAECECF7F6DAEDEDE6F6F5E0F0F1
+      E7F5F6E3F0F1E4F1F1E7F5F8E9F9FAD9E3E19EB3ABE7F7F67B808B181E162931
+      25303D384C64653E5659455D5D3C514F5277843B444232392A2D362A2E33292E
+      372D364134303B2D2E342732362B2E362A2D362B2E352934392F373B3031392D
+      333B3031392E353B2F373D323C4C413F5953394B4138473E40534A405A4F3E53
+      493E50493F4C41414A3E444C403D493C3D473B41483E404D433F5044495D5144
+      51473D4B3E42524649534C4B5E544B625A556B65546B6B556D6D5B7676617F84
+      65828769868D6C8A916D868E69868D6C8B8D6E8D9173909977959D728F956C89
+      8E728F92738E91708E957C99A08AA4A87889836570533A492D2D382331362432
+      362F344C413C543E2B432B2D3E312C412D2D442E2C402E294732293C2A2F3C30
+      444B3E3A412B4047364B514453573C3F42282F302747606024463A395F644873
+      7D395F5E2D545A3A5C603451532A4548405F69385B623150612C55642E5A652F
+      62682E4F453D503D3A412C27322520261C2635252432272B4A4F406968305D53
+      26493B0B160A272F27273224192517223C421A485031627648808E3B5549444D
+      372329193F4E49636C615A6B5E4562614B6A683C4E4334433435422F2A34231B
+      211735464C3B4D506F7D775F6D56525F4E4C59414B5C45535E52787A76A8B3AA
+      81897C5B65597785776F75686471625C6E5647533D313C232A371D2632271C26
+      1E0F161210150D11150F243536222C29262F1A141D0D32463E3D4C3C37403131
+      4532354734364532343D29353B27242F22778788ABB9B349573D3445384C5E4C
+      424F3C313C2E3134369D9E98647664809283A3A68E96967C8A8B7A696F603F50
+      493A535220382E243C30223A3123302A323D3617241A0F130F161E16262F1E1B
+      221515180F0B0E0A060705040706050606060706070904060703020706080506
+      0305060506080D131217211C3541352F3A372736342C3C3535443C203626293E
+      3737494040514C3241353D4A3F3845434F5E503C493D2D3E362B3C3F41575144
+      51482D3A35263D323951424D5E533B4B3A313F3130433641524437493A2C3A2E
+      344134434C484656413143353748373A4B3D4551423C4D3A3143323645373948
+      3A42554A33453431403C2F3F303F5345364C3A1A3A24334E3E3345364A5F4C48
+      5B473A50423A47433D4A45506052394A3D3A4B42394A4147534B42554837493A
+      32423A314A403E50435961514957444156433A493B435644364637192C1F263A
+      2B1F332334494144554930443521342B2B4234475A4F4B62544C5D5047534944
+      52454250414F5F54455A4C4557484C624E424F435564564D5F53435343495648
+      4D398799F38195F27B91F28093F3889BF4879BF2889BF4869BF58098F2879BF1
+      8C9FF58EA0F98C9EF58A9EF58093F08497F18599F18699EE8899ED8698F08597
+      F07E92EB798EE77689E4798BE6798BE48191E68090E68092E77D90E67387E07C
+      91E47C8FE27989E08292E78293E77E8FE27E90E37B8EE48193E48092E3778BE1
+      7386DD7286DC7386DC7087DF7086DE7588DE7D91E47B90E48296EA8299E97D95
+      E4768DE0647FD6637DD56D87DA748FDB7591DA7897D97698D87D9EDA809EDA82
+      9CD78DA3D8829CD0708BC96D8BCB7998D07E9CD281A0D7809ED785A4DA86A4D9
+      87A2D789A2D4889FCD778FC1627DB55371B45A77B95F7AB9627EBD637FBD6981
+      C16781C4516DC14A65C74F69CB4F6BCE5771D0627DCD546DC4536CC55876CA60
+      7FD0607ED46783D86E8ADB6D8BDC6D8ADC6685DA6788DA6785D96F8BDA6B85D5
+      677FD25E78CA546EC34D69C35473C55270C45777C95671C6566FC34665BE3C5F
+      C04261BF4D6BC24B68BE4A69C0506EC1516DBF506DBF4D6CBE516EBE5E79C152
+      70BF4D6CBC5770C15F7CCA5A76CA5B78CA5E7DCE617ECF5E7CCF5476CE5B7DD3
+      5B7DD25F7FD0597CC95A7CC9607DCB5C79CF5574CB5979CE6182D06788D07290
+      D77490D66C88D3617FCE6580D25F79CE5576CA5774C65870C34763BE4262BD4C
+      6AC24763BF3D5AB73D57B63F5CBE415EBF3F5CB64864BA4765BA3D5DB54B6AB9
+      4D6DBE516CBC4F68B6445FB24863B85268B75064B54963B8445EB44B62B74C64
+      B54A65B34C64B2435BAE425AB0435DAE405AAB425AAC394FA43851A43B53A237
+      4D992B408D2F4692293F8B2B438C36509A324B9C364FA6324EA72A4395334B97
+      3750962137630E1E3931495A73989D80A4A988ACAF84A6AA81A4A47DA2A4799F
+      A3789FA079A0A2799FA0789F9F749B99729C9B749FA46E9A9D6E9BA26D9A9D6D
+      999A6D989C6996956A92976C979B6A95986D959F6790906290955C8F91588585
+      547F7F557E7E618B916C9DA4679A9B699D9C65989963969560918F6196A3C8E2
+      EBE8F5F9DCE7E47C978E8FB3B6D6E9EFE7F5F8DAEAEBE5F3F5DCECF0E0F2F3E1
+      F1F0DAEFF0E7F4F4D8EBECE9F7F5DAECEBE8F7F5DDEEEEE5F6F5E3EFF1E0F0F1
+      E4F3F2E0EFF1EAF6F5DBECEFEAF7F5D9EDEEE7F6F6DDEEEEE7F5F6E3F1F1E2F2
+      F3E5F2F2DAEEF1E9F7F5DDEDF1E5F6F4CBE0DED1E7E6CCE2DFCFE6E4D3E6E3CD
+      E4E2D3E6E7DCEEF1EAF7F8DAEDEFE7F4F4DAEDEEE9F5F9DCEDEEE5F4F4DEEFEE
+      DEF1F2E2F1EFDDEFF1E8F6F6DAEDEDE5F3F4D9EAEEEAF7F9DAECECE5F4F5CDE4
+      E7D2E9ECE5F2F2E1EFF2E5F3F4D9ECEDE8F6F8DAEDEFE8F7F8DCECEEE6F5F5D1
+      E6E7D7EDEFE1F2F1DCEFF1E4F3F4DAECEDE6F3F3DAEAEDE4F3F4D8EBEBE5F3F5
+      DAEBEDE1F3F3DDEDEFDCEDF0E0EFF1D8E9ECE8F4F6DEEEEFEAF7F6DCEDEEEBF7
+      F8DCEDEEE4F3F2E2EFEEE3F3F5E8F6F4DDEEEEE7F4F3DCF0F1EAF7F8DAECEDE9
+      F6F5DBEDECE5F5F5DDEDEFE3F3F3E2F1F1DAEDEFE4F3F3DAEEF0E5F5F5D7EBEE
+      E5F6F6D7ECEDE5F4F6DAECEFE2F4F5E1F0F1DDEEF1E4F3F3E3F2F2D7EDEDB6D7
+      DAC9E8ECB7D7D9C3E3E1B9D7D7C6DFDDD5E9E9DAEEEFCAE6EADAF0F0E9F5F5DE
+      EFF0EAF6F8DEEEEFEAF7F9DEEEF0E8F7F5E0EDF0E5F3F3D8EBECD6ECEFDEF0F1
+      DAEFEEE7F3F5DBEEEFE9F7F8DCECEEE8F5F5DDEDEDE5F4F5DDEEEFE3F3F3E3F2
+      F3E2F0F2E7F5F5DEEFEFE8F6F5DDEDEEE8F7F9DEEEF0E8F6F5DCEDEBE7F7F5E7
+      F4F4E3F3F5EEF9FDE2F2F4E6F5F4DBEDEFE6F5F6D9EBEDE6F3F5E0EDEEE8F5F6
+      DEEDF0E1F1F2E5F2F2E2F0F1E5F2F4DEEEEFDEF0F2D5E9EBEBF7F5DAEBEEE5F5
+      F5E1EFEFE6F4F5E5F0F1E5F0F2E7F5F8E7F9FAD8E2E2A0B2ABE9F7F87C818917
+      1E162632272C372D2D383227342B34453C2C3930355557313D362C362A28352B
+      2E382E323A30313B312C372B2D372B2D352C2E372D2F382E2E362D31392F2F3A
+      30333E34313C32333C32363D33323D332F382E303428353C31394035383E3339
+      3F353541353944373D4A3E3D4C3F3B4A3E3C4A3E3C463C3B463D3E4A3F3D4B3F
+      3C463D3E4A3F3C493F3D4A403E4A3F424F43424F473F4E463E4D444350474957
+      51495C56485D584A615B4D645D4C645E4F6A65516C6957736D55716D58777363
+      818565818B6B87906C8B916D8F9179979B829B9C6F7E72676F573C452C333923
+      2B34202C372B2F453534503A33513D2A412F2F47342D483331493D314D3C2C42
+      2D33403041493E384030454836555543535537393A1F435756426664314E4537
+      5562426E763C5C57305153365B633050523C666C2F626B315B693466763C6C71
+      5687873C6D6A406B643D4D3C434732303722222F1927332A243A2C2637282847
+      362E554C2448370A1008242A24263727171B16426888518FA42A637D437A873E
+      544A46513B262B1A3E5149666C66636F58485C49405A4F3E523E394531323F32
+      1E2D1F1E28222E3A3126352B374C3D44503D3C4934394D3D374C3C3545395964
+      64B6BDB36C74634A57495E6F5A485C3D3F4D342F463B37422D33463228382629
+      3524242C21141A160B140C0F0F12233434202D221F2B1E0B1B122B403E364F44
+      3D4C3D3D523E384B37324330323D2B333B29262C23747A83F6F9F35E69473C47
+      3E545F4F4C543A313A232D342FA8A8A7646963B8BBB6B3B29BA3A999B0B199BA
+      BAA6AAAE9D486660405343314438283E302E3D343144391626160D190B131B17
+      1D292420251A171E151116160607060606060605060405030306060306060306
+      060805050306040105050B1412161B1A424D452C3E353D473F394D3D303E302B
+      3831364A3C3C4F4240553F37483E38463A3C443B3D4F412F3A2E2E3E303C4C42
+      40544738493A313A362335323C524E4659432F402D34402739473349594C3341
+      2E2E382F38483A425645485B453145343F4C3D3C4A405666574659453C4E4133
+      45384050424A57503A4A433F4B403C493C4F5F514A5B4B384A3A41513E445244
+      505D53485B454050403C493A3D4D425361483C4D3D4150493F4C424B5B4F4559
+      45404E3D3D5142384D3F4056455663514B5A4C475A4B374B3E3F57484556423A
+      483D384C3E2C3C2A475449535F4C3A4C3A283C333C4B3A4550475A6954546352
+      4554454555443E504254665950644F4B5D50576657374A37576A555768524D5C
+      474F5B484E4D8299F28193F37E96F57E95F38A9DF6889DF5879AF4869CF5859C
+      F5889DF3879BF38FA1F891A3F98C9FF58297EE8699F18799F18799F08496EC81
+      92EB8092EE8297EE7E93EE7387E77588E37C8FE48092E77C8FE47C8DE48798E9
+      8495E37989E07E8FE38092E4798AE27789E17B8FE37D8FE27C8EE17D8FE2788A
+      DD7689DE7386DE7488DD7387DD7386DF7488DD7588DD7E92E48095E68093E778
+      8DE27E96E3768DDE637CD86580D96C86D77791DA7D9ADD7092D97C9BDA7C9BD8
+      84A0D987A1D7869FD57C98CE6C88C96D8BCC7C9AD3819ED584A2D984A1D984A1
+      D886A3D9849FD4819ACF8197C97288BC637EB85875B8617AB85F7AB66480BF63
+      7EBE627EBF647EC45471C5526FC9526ECB5573D25E77D05F7CCB5571C65570C9
+      6080CE607DCD6685D66685D9738EDD708DDE708EDF6D8BE06C8ADC6D8BDA7089
+      D9758BD76A82D35C79CA546FC65670C65473C65977CA5775C95271C95371C84B
+      6BC44669C64565C25470C6536DC54A66BE4C6CC05373C15775C15575C24F6CBD
+      4C69BC5676C44F6EC24865BF516FC65978CB5575C95876CA5675C95775CB5671
+      CA5576CA597CD05E7ED26282CF5F7CC95C79C7617FCD5C7CCE5778CD6E8BD864
+      85D26C88D37791D87490D9607FCE637ECC657EC95A79C55673C35973C44D68BF
+      4563BC516DBF4964BD3953B53E5ABA4865C14160BD4665BE4F68BD465EB44563
+      B6546FBC536CB85A71BA5A6DB55168B45068B65165B5556BB65166B44A5FB154
+      6CB74D66B3445DB14760B03F57AC3A54AE3550AB405AAF4660B13A53AA3E57AC
+      3C54A6405BAA354DA43149A33850A8364FAE3C54B53E57BC405BBF3E56BE3E5A
+      C0425DC0405BBC3D59B1304C90203968324B6172969B7C9FA58AAEB38EB1B487
+      AAAC87A8AB82A5A97DA5A884A9AB7DA5A87BA5A579A3A576A0A573A0A2729EA5
+      729FA66E9D9F6E9B9F6995976A93976D9B9D6B9A9969919967999A6492975E87
+      8C5881845682835381805383815B8B8D608D8D5783835585835887845885815E
+      9199CBE3ECE7F5F9DAE7E17C978E8FB3B9D7E9F1E7F4F6D9E8EBE5F3F6DEEDF2
+      E1F2F4E1F0EFDCEDF0EAF4F4D9EBEDE9F7F5DAECEBE8F7F5DDEEEEE5F6F6E2EE
+      F0DEF0F1E4F3F2E2EFF3EBF7F6DAECEFEAF7F6DAEDEEE8F7F6DDEDEEE7F5F6E3
+      F2F1E2F2F3E5F1F1DBEEF1E9F7F5DCECF0EFFDFDE1EBE9E3E7E4F2F3F2ECF0EF
+      F0F3F1E3EEEED5E6EADDEFF2EAF7F8DBEDEFE9F7F5DBEDF0EAF6FADCEDEEE5F5
+      F5E1F0F1E0F1F2E5F3F1E0F0F1E8F6F6DAEDEDE5F4F4D9ECEDEBF7F9DAEBEEE5
+      F4F5CCE4E7D3E9ECE5F3F2E0EFF2E5F3F4D8ECECE8F6F8DBEDEFE8F7F8DCEDEF
+      E7F5F8CFE4E6D6EAEDE2F2F2DDEFF2E5F3F5DAEDEEE6F3F4DAEBEEE5F6F5DAEC
+      EDE7F3F5DCECEEE3F2F3DEEDF0E0EDF1E3F0F2DAEAECE9F5F5E0F0EFEBF7F9DC
+      EEEEEBF7F9DDEDEEE4F4F2E3F0F0E3F3F6E6F4F4DDEDF0E8F4F5DEF0F3EAF7F9
+      DAEDEEEAF7F6DBEEEDE6F6F6E0EFF1E3F3F3E2F1F1DBEEEEE5F3F4DAEEF0E5F5
+      F5D8ECEFE5F6F6D6EDEEE5F5F6DCEDEFE4F4F5E3F0F1DCEEF0E4F3F3E2F2F2E9
+      F7F9CBDBDCCBDAD9D3E2DED1E1DBD0DFDED0E4E4D3E7E7D9EEEEC9E6E9DAF0F0
+      EAF6F5DDEFF0E8F5F6DDEDEEEBF7F9E2EFF1EAF7F6E1EEF1E5F3F3D8EBECD7ED
+      F0DEF0F2DCEFF0E8F5F5DBEEEFEAF7F8DCEDEEE5F5F5E0EDEDE8F5F6E0EFEFE5
+      F3F3E3F2F3E1EFF1E5F4F3DEEFEFE7F6F5DDEDEEE9F7F9DEEEEEE9F6F5E0EDF0
+      E5F4F5E3F1F1E5F3F4E6F3F5E1EFF2E8F4F6DAEDEFE8F6F8DAECEEE6F4F5DEED
+      EEE7F4F5DEEDF0E1F2F2E4F1F1E2F0F1E6F3F5E1F0F0DEF0F3D5E9EBEBF7F6DA
+      EBEEE5F5F5E1EFF0E5F3F5E5F0F2E6F1F2E5F6F9E6F9FADBE3E3A2B4AEE9F7F6
+      787E87121910262F26252D22232C2026302323291F242B21262F252A3129222A
+      222A3128313A302E392D2E372B30382E2E372D313A3030382F30392F2F382E31
+      3A30313B312F3B31313C32323C32313A30333E333742383742383A453B3B453B
+      3740363642383B463C3B473E3B453D3742393643383641383742383A493C3D4B
+      3E3E483E3B463D3B463D3C473E404C41405044404E433E4E433F4D443E4A4240
+      4D42404E423E4C40404C41404C413F4D41414D41404D423F4B43414C43475650
+      536C66607A7D647F866381886787896A87887797998AA3A7707E736A71533F48
+      2B3337242C34292F3D392F4C3D2843313552403A594A3955472E452627392322
+      3A2938463A3C443C3E493A3E4634494F3E52543A4448283033233F504B3C544C
+      31524E324F53446669355D5434555231555A35666B4176803C777E40747A4373
+      6E355E5431504B3E615B334C483E534E444D383A41272B3525202D1F212C2329
+      362F314C3F395C572C4D3E0B130A232B242E38261A261A193E47478AA36C9FBE
+      376C6C3D52403D4B36202D19454D4F636E61616D5E4A6458435E55465E49313F
+      29313F2C202F1F28393438474438493C3446363C4E4A43564C3950393B4D3A36
+      4638616A6CA2B29F4851393D4B3B505C564F5F413E4B40384A3B3F4B3C3C4B38
+      2D36272A342125301F191E13171D1111140D253A381F322423291A151A163241
+      3E455E503D56433C5A443C533A3846322D3C28343D24262C1F606C73C4CBC143
+      52353A494755614B50533B353D2A27312E78817F636D6ABFC5BFC5C2A9C8C5AF
+      BDC3A7B8BDA4AAAD8E505B43405D504157482132272F3C325368621D2D1D1016
+      0A151D1D1A1F1720271E1C1F1F1618110B0F0B030A0606050303050405060605
+      05040305040305030405030406030B100F171E1C3E4B3F354335354433424B42
+      344534293F383C4743404F3F4456433C4D40374D3E3545384252442E422E3346
+      33354534455D4F3F4F3F2C44352E3F323E5241505D503548372F3F302E473651
+      6253444A3A2E36282F3C2E4D5D494655453849373F4D40364C3B4D6557475E4C
+      3E504334493C384F40515F544150423E514233443C5465544A61503448374359
+      413F51424F645A495C50445343414F423B4F414F625343513E4354473E4F404A
+      5A494D5C4F47564847594A424D43435240586650505C43495D493B4B3E3B5049
+      4959423E543E4050403D4D3E47594751635646554537493A404D4745574B5669
+      5B556150485B404B5A4B4654485868544B5F4C535D4C506153455E525A655A57
+      685155614C536151615C879CF58598F58499F88296F3889CF5869BF88C9DF889
+      9DF6879BF5889CF5829AF48C9FF68FA1FA879BF58599F28296F17E92EE7E93F0
+      8297EF8293EC8293EE899BF17689E76F81E47789E67688E37B8FE67E92E7798D
+      E28093E68497E47D8DE3788AE27B8FE37B8DE4788AE17C90E37589E07788E07C
+      8EE27385DC6E7FDB6F81DB7587DC6F83DC6C80DC7589DF7589E07D91E47E93E4
+      8196E6788FE1738ADD7087DB677EDA5F7DD76D8ADA7D96DC809BDF7798DB7E9C
+      DA809CDA86A0DA88A4D8829BD07D97CC6B89C77390CF819DD4819ED684A2D982
+      A1D881A0D785A1D787A2D6829BD07E93C96D86B96680B75F79B85F79B7607DBA
+      6581BF637EBE5C78BF617AC45773C8516FCC4564CB4C6AD0627ED3637ECB5873
+      C55674C8627FD26280D3698AD9728FDC7590DC6E8BDB6D89DE7390E17591DF6C
+      88DA738DDA758AD5637DCA5B77CA5773C95A77C95B7ACC5E7DCF5977CC5674C8
+      5373C94C6DC7516DC5536EC75A75CA4F6CC5556FC54A66C04D6BBF506FC25470
+      C45775C45576C75373CA5271C84C6EC85476CD5C7ED05174CA5475C95A78CB5A
+      79CE5C7CD35476CC5B7CCD6382D36485D65B79CB5B77C85E7DCC5E7ECB587ACC
+      6F8DD96583D3728ED57C98D9728FD75F7ECA5375C45B79C2627AC35B77C45773
+      C2556EC1556FC1526CBA475FB83C56BA4664C04768C14A6AC14B6ABE4F68B84D
+      63B3516CB9556CB7566AB4536BB3586DB4576DB54B62B34F62B05265B14D62B1
+      485FB0475EB04A63B43E5BB23C56B0435DB34461B5405FB64D6BBA5470B95168
+      B74B66B3415BAF364FAE314CAC3049AA3951B43A53B93C53BA415CBC445DB948
+      5EB9425DB7405CB73E59B53D59B74663BE4463B935519536536C6C919280A8AB
+      87B1AF81ACAC85ADB087ACAE87AEAF7BA6A678A5A777A8AA78A5A67BA8A979A6
+      A672A0A077A6A879A6A77DA8A890B3B78CADAB87A8A584ADB086B0B78CB2B581
+      ABAA84ABB082AFB27EACAE7BAAAC76A4A66E999A739EA276A5A36B979A6B9798
+      66939061919ACBE2ECE6F7FADCE7E27D968E91B6BCD5EBF0E9F5F8D7E8EBE3F3
+      F4DCEDEEE0F1F3E0EEEFDCEDF1E8F3F4D9EBECEAF7F6DAEDEDEAF7F5DEEDEEE6
+      F6F5E2EEEFDDEFF1E3F2F1E2F1F3EAF6F5DAEBEEEBF7F6DAEDEEEAF7F8DDEEEE
+      E6F5F6E2F1F0E2F3F3E5F3F1DAEFF1E9F6F5DCEDF0F0FDFDE0E9E6ECEDEBF7F7
+      F6F4F6F4F6F7F5DAEBE9D6E9EBE2F0F2EBF7F6DCEDEEE8F7F5DCEEF0EBF7FADB
+      EDEEE5F5F5E2F0F0E1F2F2E5F3F2DEF1F1E5F4F4DAEDEEE6F5F5DBEBEDEAF7F9
+      DAEBEDE5F4F5CBE4E7D3EAEDE5F2F1E0EFF1E6F3F4DAEBEDE9F6F8DBEDEFE9F7
+      F8DBEDEFEAF7F8D0E4E7D7EBEEE3F2F2DDEEF1E5F3F5DBEEEDE8F4F3DAEBEFE7
+      F5F8DAEDEDE7F4F5DDEDEFE4F2F4E0EDF1E0EFF2E3F1F2DAEAEDE9F5F5E0F0EF
+      EBF7F9DEEEF0EBF7F8DDEDEEE5F5F4E4F2F1E3F3F5E6F4F5E0EFF1E9F5F5DEF0
+      F1EAF7F9DCEDEEEAF6F8DEEFF0E7F6F6E0EFF1E5F4F4E3F2F1DBEEEFE5F3F3DB
+      EFF1E6F6F6D9EDEFE6F7F8DAEDEEE6F5F6DCEDF1E5F5F5E2F1F1DEEFF0E5F3F4
+      DEF2F2F0FEFFDAE3E1E7E7E1F6F4F1F2F3EFEBF0EEDDECECDCEDEDD8ECEDC8E6
+      E8DAEFF1EAF7F8DEEFEFE8F5F6DDEEEFEBF7F9E1EFF1EAF7F6E1EFF1E5F3F3D8
+      ECECD7EDF0E0F1F3DBEFF0E9F5F5DDEEEFEBF5F6DAECEDE6F5F5DDEDEEE7F5F6
+      E1EFF1E5F3F3E3F1F2E1F0F1E7F5F5E0F0F1EAF6F5DEEDEEEAF7FADDEFF0E8F6
+      F5E0EEF0E5F4F5E4F2F2E4F3F3E5F3F3E0EFF1EAF6F8DDEDF0E9F6F6DAECEEE6
+      F4F6DDEDEEE5F4F5E0EEF0E2F2F2E4F0F2E0F0F0E6F3F4E2EFF1DDEFF1D3E9EB
+      EBF7F6DBECECE6F4F5E1EEEFE5F4F4E5F1F1E5F2F1E7F6F9E8F9FADCE4E4A2B4
+      ACE7F7F57C8089161812283126262F23232C22242D24262C24252C2424291F22
+      282127312731392F2C372D2933282E372A303A2F2D352C2C342A30392E353F34
+      333E34333E34364036343D333641373944393641363641373643393643393842
+      37364137344036344036374237354036364138354037343F35343F3535403636
+      433939463C36433938443A3743393A453C3B483C39483C37463A3A46393C493E
+      39463D3C47413C47403E4C413E4B423D4A403F4B41424D4342514744564F4F61
+      5E60757460797A5E77765F76755F7776607A7C647F8473909687A1A66D7F7861
+      6C5641482E3238212D33283C50523A5A49334B35374B3A37594A466855517054
+      354A3E31453D3C4D4355685A3F4B363A4131484D3F484A30353D2431413F3A52
+      51304A424C746F40685F3F6456427161446B6151767F4A80893C6B683C737643
+      756F396153374B4337494532464039524A39564F42503F434934343E2C223022
+      1A241C273B362D4C3F32504E4B6E5F020A012129232A3824181F162B485A4778
+      92407D964D828B40564E424D3E232A1A414C486C6D6369705D4F6A5D4B63553D
+      47302D3623303E2A202D21283C3B3C4E3E3B4D3E384E43384B3E3A4A3337483A
+      3C4B3D3B4D4153646499A195323E243847395A635A4A5A403D534741594B384E
+      3C364934202A182B3925273522212A1B1B22160E160D1B292619282121281C19
+      1E152C3A38354E4037503F3A5340314534333F2F2D392B31392621282198A0A3
+      64715A2B3C293B4B3E5760514A543C353E282431283A49444C65617287766476
+      5E4F5F4B3D4D393A4731323D281C2716191F1815211A0F1A121019161A261B17
+      281B0B150D11151212160E171E1623271C1A201611150B080C05080B05080C0B
+      080A09070C0A080B0B080A09040C090309060E120F131E1C414C443844373946
+      32454B443B443A333D363D4B3E405143485A443B4B3D3C524134473943564536
+      42333B4A3E33483E505C5040503C3146393343333C54424C5F4B3A4638384736
+      3B4A404D604F3C4E3831443A3849405563514C5F4F384A3B41503F4154435461
+      515260503E4E3C3F4E374754404D5C52424E3F4052444554484F60505261533A
+      4B3E4359454B5E4E566458516051414C44435544465A494D604C414F3D3C5043
+      4154494F5F4F4D61533C5943465B514152414D564558684C466145415C484152
+      444F5B4F4A5F4A4654414151403F5242505B50556456435A473A4A3A40534E4A
+      5C4C5866545764504756424B5D4F49594B596857526256495B4B536352475B4C
+      55685759665350615053654C454C8499F88298F88196F6869AF8869CF5889DF8
+      8A9DF88C9EF6899BF58C9FF9859CF6889CF68E9FFA899EFA869AF58296F18195
+      F38095F48496EF8697EE8595EF8697F1798BE67282E2788AE6798DE7798EE67E
+      91E77B8EE6778BE37E92E6798DE3788BE4808FE48192E68091E48495E47485DB
+      7381DC798AE1697CDA6278DA697CDA697DD86A7DDB677EDC6E82DE7789E17B8E
+      E37D91E47C92E28093E47387DD6E83DA6A80D96582DA7390DE7C96DE7D97DB81
+      9DDD84A0DC82A1DA829ED889A3D7829BCE708DC86D8ACA7C98D2819FD5809FD5
+      82A0D885A2D886A3D985A1D889A4D8889ED07E95C36780B5637FB75E79B75F7C
+      B85E7AB9617DBD6380C05F7CC1607DC45C7AC9486ACB4160CD5271D36281D269
+      81CD5A76C65F7ACE617ED46786D86D8DDA7793DF7690DF6D8ADC6C89DE7391DE
+      6F8BDB7791DD738BDA6A81D2637ECC5B78CC5371C95B79CE6481D25B79CC627E
+      CF5571CA4B66C65373CB5676CC4C69C85977CC5878CB4F70C75678C85370C642
+      62C14665C24564C14A6CC45674CB5E7CD35A7AD26182D66283D75A7DD5587CCF
+      5E7ECD6987D56788D66689D76685D56281CF6C89D45F80CF4A6BC55C79CC6582
+      CE6485D06486D06381CF7692D97C96DA6783CB5F7DC75373C3516EBC5F79C262
+      7CC45671BE5976C4586FBF5066B8425EB74A6AC25170C54566C44969C04966BA
+      4B63B75168B2536CB85369B55468B14C63B04D60AF566AB2516AB5425BAB4459
+      A9415AAE405DB33C57B1405FB84F6DBE4A65B7516BBA5A77C15E78C1516BBA4F
+      6BB8536BB74D65B1374EA72741A42F49AC374FB7394FBD3E57BC3C56B93C56B8
+      435DB74A61B74762B9425FB7405DB43C5AB23D57B1445EB24968BE3E5EAE2B4A
+      73416B7169988E79A49D73ABA76EA1966F96955598A45F9392668A8C5B939253
+      9386558A8963939A6697916A929079A19F6C9B976EA2A46198975C8A866A9795
+      669B98669D9D649D9A65A198699B99749F9C77A3A770A8A86EABA670ABA96DA6
+      A972ABAB6099905B939AC9E2EDE5F5F9DAE6E27E988E93B9BED1E9EEE8F4F6D6
+      E7EAE2F3F3DCEDECE0F1F3DEEEF1DBEFF2E6F3F2D9ECECE9F7F8DAEBEDE9F7F5
+      DEEEEEE7F7F6E2EFEFDCEFF1E2F1F0E0F0F1E7F4F5DBECEFEAF7F5DAEDEEE9F7
+      F8DCEEEEE5F5F5E0F1EFE2F3F2E5F3F0DBEEF1EAF5F5DAEDF0EEFBFDDCE8E4EB
+      EDEBF7F7F5F6F5F3F6F5F3DAEAE8D8EBEBE1F1F4EBF7F8DCEDEEE9F6F5DCEEF1
+      EBF7F9DBEDEEE5F5F5E1EFF0DEF2F1E5F3F3DEF1F1E5F3F3D8EDEEE7F5F5DAEB
+      EEEBF7F9D9EBEBE6F5F5CEE4E7D3E9EDE5F2F1E1F0F1E7F3F4DAEAEDE8F5F6DA
+      EDEDE8F6F8DBEDEEEAF7F8CFE4E6D4EBEEE2F1F1DDEEF1E5F3F5DCEEEDE7F3F4
+      DBECEFE6F5F6DAEDEEE8F5F8DDEEF1E3F3F3E2EEF1DDEFF1E4F2F4DAEBEEEAF6
+      F5E0F0F0EBF7FAE0EFF1EBF7F8DEEFEFE5F4F5E5F3F2E4F4F4E7F4F5E0F0F1E8
+      F5F5DEF0F0EBF7F9DCEDEDE9F7F9E1EFF1E8F7F8DEEFF0E5F5F5E3F2F2DDEFEF
+      E5F3F4DBEFF1E7F6F6D8EDEFE7F7F8DBEDEDE6F6F6DDEEF0E5F6F6E2F1F1DDEF
+      F0E5F3F3DEF2F2EDFCFFD8E4E1E7E8E4ECF1EEEEF0EEEAEEECDAE9E9DCEDEED8
+      EDEFC6E4E6DAEFF1EAF7F8E1F0F0E9F6F8DDEDEFEBF7F9E1F1F1E9F7F9E0EEF0
+      E5F3F2D7ECEDD7EDF1E3F1F3DEEFF0E9F4F5DEEDEEEBF6F8DAECEDE7F5F5DBEE
+      EFE5F5F5DEEEF1E4F3F3E4F2F4E2F1F1E7F5F5DEF0F1EAF6F5DDEDEEE9F7FADC
+      EEF1E7F5F4DEEEEFE5F4F5E4F0F2E3F3F2E6F3F4E0EFF0E9F5F5DDEDF0EAF6F8
+      DBEDEFE6F3F5DCEDEEE5F5F5E0EEEFE2F1F2E5F1F2DEEFEFE6F3F4E2EFF1DBEF
+      F0D2E7EBEBF7F8DCEDECE7F4F5E1EEEFE5F4F4E5F2F1E2F2F1EAF6F9E9F9FADC
+      E5E4A1B4ABE4F6F482858E181D172C372C303A2F2F3A2F2B372D2B382D2D392E
+      2B372D2F3B302F3D3229362D2B342B2C34292B34292932282832282730272731
+      262C372B2F392D323C30343F33353F35323D33344035343D33313B32313C3336
+      3E3537403635413837433A343F35343D33374036364036343D34353E35363F35
+      333C33333D35343F3634403738433937423737423737463B3B493E39473D3C48
+      3E3D4A3F3A483E39453E3C49403C4B403A473C3542353540363C4A4043554E4B
+      605B5169665069654B62604A615E4F6663536869556E725B7678607678778B8B
+      6C7F72606854424C2C30361B2A34233E5453344F3F2E4836324B3B314D3D3255
+      4136553C2840332A42321E39232F3D26414B363A4330494C3D3F43252E311B4A
+      5D613F5F5D3554553C6A61315A4738574A2F4D4A38554E507374386A66487C7F
+      3F7875396B6531524C3149433C504B394741384C4A37524C3F5249484D3C3747
+      3027362519261E2336333C5B5734625B305B4507120422292423301E1A221B36
+      526231697E246071457C893E57543E4D3E2E31233F48486D6F656C7060556C58
+      4157443642292B322234402E202B16323D3A43524A3D4F423752402D463A3644
+      3E354A353C4F43455555455B6272887C31412B2B3A2B585F564A5A493E57503F
+      574F314C3E31422E1F2516232C212B342428311D1C271A0F1A13162122182624
+      202419151D12243A373149382C3F3132463A32493B3644362F3B2B2D3924232B
+      223C4B4429351C2E382536443855605048563B313F242230233C4B4B53635B72
+      8773445B4E416050445444414C3C2735260A1A161116140C130F0B120F0E1011
+      111513131E1C0A120F0F120F121514080E0D191F1B1A22171719110F140D080C
+      0B080C0B050E0B070D0A060C0A020A06080C0B040B0609120C131D1B40494032
+      3E343E49473D4A3E3C4B3A313F2C384D413C554B4C5C473F4C403F54443F4D3E
+      4657453347393D493E4350444C595341513B384A373A4A394354474556413748
+      3434493E394B48525E4F3C4D3D304230405243505F52505F503C4D4046534543
+      5448586656515E5041523F3C4C3B485C4952614F40533F425543455949556252
+      5064503A4C42405643475C4C5064575161524751484857404756475465574452
+      4745524842554550624F58624F4557474F6052434E3D4A5748556256495F4847
+      5D4E3E4F424D5E4C5461504856434253443C4E3E495E4B536658465A4736493A
+      425647475A455663565263504B5C474A5C4F435B4C586A55536651475B4E4D62
+      544B5C4E586957596957546154525E5249457D96F8849BFA8198F8849AFA8CA1
+      F98CA0F9879BF98A9DF88C9FF989A1FA879CF68A9FF98FA2FA8EA1F8859AF282
+      96F1889BF48296F18599EE8698EC8797EF8192EC7E91EC7487E47485E47989E8
+      8193E98092E6798DE77688E48295E87B8FE4788DE37D8DE37C8EE47789E18292
+      E4778BE16E7FDA7282DD5E71D6546AD45F75D95F74D86579DA6A7FDE6A7FDB77
+      89E07588E0778BE0778DE2788EE17489DF697EDA627CD86C87DC7991DE7795DD
+      7593DC809CDE86A2DE86A3D989A1D88EA3D67E98CC6A86C6708ECB7B9BD37E9E
+      D6819FD884A2D985A2D986A3D888A2D78AA1D3889FCB7C92BF677FB5607EB55A
+      76B4667FBA607CBA5B78B86683C16481C5617FC56482CC5779CF5979D06480D2
+      6986D06582CD5A7AC85C7CCF6481D66C89D87893DD738FDF728FE0708EE0748F
+      E07892DF7792DE7D97E16C85D8607ACE607ACC5B78CB5877CB607CCD6E88D367
+      85D45371CC4A6ACC4763C94A66CA5B75CE5573CC506FCC5576CF4063C54163C3
+      5478CD5F7FCD5575CA4B6EC9486AC45270C85576CF5F80D56285D96283D86282
+      D66180D25F80D25E7ECF6180CF6D89D56E8FD96385D65675CD6280D05979CC4F
+      6DC55F7DCD6485D06586D25C7FCE6989D47D97DA5F80C85575C3677FCA506BBC
+      5676BF5C76C05971BD5874BF586FB95164B74A64BC5A78C55575C64A6BC54968
+      BF4769BC4965B74B62B14C64B44A62B23F59A8425AAA3A51A74059AA4D6CB643
+      63B63E57B14560B74665BA4464BC4766BF5374C35570BD5A73BF5B77C05B77BF
+      5871BC566FB74A65B44660B03349A62F47AC384FBA3C54C03C51BC3C53BA3C57
+      B93D59B63C57B54461B84962B9465FB7425FB63D5BB23C57AE405CAF405BAB44
+      5EB3415FB92C4A892B4C5A5281765B9D96579D925A99904BA0A7519A98558883
+      4D928941877E428A8C49999C4B837E4D7C7560979650918F409AA8348F9A3E7D
+      784989833C868B3689973889892F73664270684B7D78417A76427E75417C6F3C
+      6C614478764F8F8D3F8071468385C4DFEBE5F5FAD2E3DF77958792B8BAD1E7EF
+      E7F3F6D6E7EBE2F3F5DCEEF0E0F1F5DEEEF1DAEDF1E8F4F3D9ECECE8F7F8DAEB
+      EDE9F7F5DCEDECE6F7F6E1EFEFDDEFF1E4F2F1DEF1F1E7F5F5D9EAEEE8F7F5D8
+      EBECE7F7F6DAEDECE5F5F8E0F0F0E0F1F1E4F3EFDAEDF0E9F6F5D8E9EFEFFCFF
+      D9E7E2E2E7E3F1F4F3EEF1EFF1F3F1DAE9E8D7E9ECDEF1F4EAF7F9DAECEDE8F6
+      F5DAEDF1E9F6F8DCEDEEE6F5F5E2F0F1E1F3F3E5F3F4DDF1F1E9F5F5DAEDEFE5
+      F6F5D8ECEEEBF7F9D9EAEBE3F3F3CCE4E7D3EAEDE5F2F1E1F1F3E6F3F3D9EBED
+      E8F5F8DAECEDEAF7F9DBEDEEEBF7F8CDE0E3D2E8EBDDF2F1DDEFF1E6F3F5DCED
+      EFE5F3F4DAEDEDE6F6F6DAEDEEE7F4F5DBEDF0E2F3F3E3EEF1DDEEF1E5F3F4DA
+      EBEEEAF6F5E1F1F1EBF8FBDEF0F1EBF8F8DDF0F0E4F5F5E4F3F2E4F4F5E7F4F5
+      DEEFF1E7F4F5DDF1F1EAF7F9DAECECE8F7F9DDEEEFE7F6F6E0F0F1E3F4F4E3F3
+      F1DEEFEFE5F4F4DBEEF1E6F6F6D8EDEFE7F6F8DAEDEDE7F7F6DDEFEFE5F4F5E3
+      F1F3DEEFF0E5F3F4DDF0F1EEFAFFD9E3E0E7E8E4EEF1EDEFEFEDEAEEEBDAEAE9
+      DAEDEDD5EAECC4E4E4DAEFF1E9F7F6E1F0F0EAF7F8DEEFF0ECF7FAE2F1F1E9F7
+      F9E0EEF1E4F2F1D5EAEBD6ECEDE3F1F1DDEDF1E8F3F5DDEEEFEDF7FADCEDEFE8
+      F6F6DDEEEFE5F6F5E0F0F1E3F3F3E4F3F4E2F0F1E7F4F5DDEFF0E8F5F5DDEEEF
+      EAF7FADDEEF1E8F5F3DEEDEEE5F3F4E4F0F1E4F3F2E6F3F4E2F0F0E8F5F5DBED
+      F0E9F6F8DBEDEFE8F5F5E0EEF0E6F4F6E0EEEFE2F1F1E5F0F2DEEFEFE6F3F5E3
+      F1F2D9EEEED0E7EAEEF7FADCEDECE7F4F5E2EFF1E6F3F5E5F2F2E1F2F3E9F7F9
+      EAFAFBE0E7E8A1B6AAE3F6F281868E151B1628342B24312725312826332A2436
+      2C25362C23332924342A24342A21302625312729332B26312924332826342A29
+      342B26322A29352C2B382E2E3B312D39302E3A322B393028342A2E382D36453C
+      3C4A403E4E423C4B423B48413C4A423C49403C473E3C493F3C483E3A473C3C49
+      3E3B483C35423735413637433A39463F3D4A413D4A3F3C483E3B493F3C4A413A
+      463E3C4B413D4D423C4B433C493F3C4A3F3C4B413C463E424D47485A58556E6D
+      5C7576596C6D536669566B6C54696B556A6C576C6F566C6C566A6E5B6D726171
+      6E7E928F6A7C726166524148243636262C342531463A29422E223A302D42361D
+      38262943332D493C345343405C4C2B3E2F2F372C414735434B383E463433381F
+      25382D3A524C3651474062542E4E3B315544314F48334C44314D45365B53476C
+      653C605B2E524A3B59533652532C474737515D37525734515134485040525345
+      5242474B33353A282030262C4549365D5B395D523C624B020E021E2824283223
+      15211A2C45514D8297438091427D8F385958424D3E292C19414B476B6F60676F
+      5B556B58394A382D341E252F1E303E2E1F2D18313F393F5553405C54354C3731
+      48313343322F472C36463E5A6D6C4C5C576D8775314433344334535E55435B49
+      415E553A53433A5044404B391B2514171F16282B2428301E252C1C1821172030
+      2717261D1D2817171F1424332E3343354251494C564F3346373C493D2D3A2930
+      392320291C1F2D2121291A3136233E483958615448573A333C242A3126555E60
+      5E685A778A78616C5B4F5F4941523F465B442D3A250C150E1117120D130F1015
+      0F0B0F0F0B131217221A0B120B0B0F0D0A10110B0F0D0D0F121C2119181D1114
+      160B0A0E09080C0D0A0C0B080B0A080C08030909060A0807060A0B0F0F121E1D
+      444E4A303E303C4D403E4A403948332D3D2C3F4F454057484B59473C4E3E3D51
+      3E3E4A3E4A57423649373A4C3E3D4F414C5C513E523D3A493A404C3B4254434D
+      5A403548383B4C403B4E3F50604C3D4E392F422D405444525D4F4B5C4737493A
+      475740445542516554505B48384E473A4E3F465B4F5462504150433E53454156
+      485663575662543B4A3A455543445B49546A565361514B57474757474B564959
+      685B4956494652454852494F5F52586A584857494D5C523C4F3C475549546452
+      485E4B4959493D4E4247574E526350475645434F3C3E4C3A485B4C5766554959
+      483B4E3E4652434955455569595363504B604C4D5E4C435D4C53695951635049
+      5D4A556454445C4A576954596B55556651515E58473F8095F6879DFB859CF985
+      9AF990A2FA8A9DFB869BFA889EFA8EA1FA899EF989A0F98FA3FB91A4FA8EA1F9
+      8A9DF58499F1869BF28093EF8095EF8597EE8A9BF08091EB7889EB788AE97889
+      E87485E48192EA7C8FE67C90E78295E98296E97E91E67E90E48092E47887E174
+      85DE7588E06B7FDE6275DA6979DB6175D85466D4526AD4556BD75C71DA6379DC
+      6B7FDC7486E16D83DD6B82DC748BE16E83DB7083DD647CDA617AD67288DB7E96
+      E07795DD7C99DF829CDD849FDC8DA5DC8EA5D9869BD07591C96C8BC97492CE79
+      99D47E9DD584A0D987A4DA82A1D884A1D78CA5D788A0CF819BC9738BBD6A82B5
+      6782B95F78B5637CB95F7DBC5A77B96682C06A85C46682C56E89CD6580CD6D89
+      D3708BD27089CF6681CC5E7CCC5879CD6685D66F8DDA708EDC7490DF7390E075
+      90E07390E17692E18098E3768DDC627DD3637ED25C76CA647ECD6682CF5C7ACE
+      6981D06B85D54F6FCD4D6CCE4561C94C68CA5E74CE5A73CE4C6BCF4D6CCC4C6A
+      C94B6CCC4769C95677CC5C7FD05879CF5779CD5A7CD05476CF5478D25376D057
+      79D4577AD44D70CE5577D25F7DD0627FCE5A7CCE5479D0587ED35B7ED55475CF
+      6380D35C7CCA5375CA6080CE6080CD5F85D3678AD47793D5607EC75575C3607E
+      C65874BF5E7CC35670BC566FBE536DBA586EB55165B4536FBF5776C25475C54C
+      6DC64766BE4564B84461B44059AB4763B23D5BAF324FAA344EAB3C5BB03E5DB3
+      4564BC4F71C24868BE516EC15874C2516DC05875C34F6FC35573C25C77C15673
+      C05473BE5A73BE5870B84662B33854AF3149AF3A4EBE4056C24259C1415ABE3F
+      59BC3F5BBC405CB93D5AB63F60B84963B74A63B44363B53F5FB33C5BAE3F59AB
+      445BAC3F5BAA3B55A7425EB635509F14254020463D377D693F8B6F42876E468E
+      77408972387D65347C6A3B8E7D3B957F327C642B6A542F74643B87752B826E2C
+      8575296E5F2D7463317E6E35877D388E8737877D3478622A74642F857438816F
+      40887D42887541897D458D843C8775448A8BC1DEECE6F4FAD4E1DE758E858FB8
+      BCD0EDF2EAFBFDD3EAEFE9FAFDDEF1F3E2F4F9E2F4F3DAF2F4EBFAFAD6EEEFED
+      FCFDDAEEF1ECFBFCDDF0F1EAFCFEE3F3F4DCF3F5E1F7F4DEF2F5EBF7FAD7ECEF
+      EDFBFCD7ECEEEAFAFBDAEDEFE6F7FBE2F3F2DDF4F5E6F5F4D6EFF1E8F7FBD6EA
+      F0F0FEFFE4F2F1E1EDEDE5F1F0E4F1F1E7F3F1DCEEECDAEDEBD9EFF3EAFAFBDA
+      ECF0EBFAFBDBEEF2EBF9FCDDEEF1E6F7FAE2F2F2E2F4F5E6F5F5E2F3F4ECF7F9
+      DAEDF1E9F7FAD9EDF0EBF9FCD9EAEFE1F4F4CBE5EAD2EBEFE4F2F1E1F0F2E5F3
+      F2D7E9ECE9F6F6DAECEEE9F7F9DAECEEEBF7FACADFE1CCE6E9DCEFF1DBEEF1E8
+      F3F5DDECEEE8F3F5DAEDF1E9F7F6DAECEDE6F5F8DEEDF0E6F3F5E3F0F2DEEEF1
+      E6F3F5DCEBEFEBF6F6E1F0F0F0F9FADDEEF0ECF7FAE1EFF0E5F5F4E5F3F2E5F4
+      F4E7F5F5DEEFF0E9F6F4E0EFF0EBF7FAD9EAEAE9F7F6DBEDECE5F4F5E2EEF0E5
+      F3F3E3F1F1DCEFEEE6F3F5DCEDF0E8F6F5D9ECECE9F6F8DBEAEDE6F5F5DEEEEE
+      E6F5F5E3F0F2DDEEEFE5F2F3DDEEEFEFFBFDDAE7E4DAE4E0E7EDEBE9EBEBE3EB
+      EADAEAE9DAEAEBD2E7EBC3E4E4DAEEEFEBF6F8DEEFEFEAF7F8DEEFF0EBF7FAE1
+      F0F1E9F7F8DDEDF1E3F1F1D6E9EAD2ECEBDBF0F1DBEDF0E8F3F5DCEEEEEBF7FA
+      DAEDEDE6F4F5DDECEEE5F5F6DEEFF0E3F2F1E6F3F4E2F0F0E7F6F5DDEEF0E8F5
+      F5DBEDEEEAF7FAE0EEF1E7F5F6DCEDEEE3F3F4E5F2F2E5F3F2E6F4F4DEEFF0EA
+      F6F6DBEDF0E7F5F8DAECECE6F5F4DEEEEFE7F4F6E1EDEFE0F0F1E5F0F3DEEEEF
+      E8F3F4E3EFF2DAEEEFD1E7EAEEF7F9DEEDEBE7F5F5E2EFF0E7F3F5E5F2F2E2F2
+      F1E8F6FAE6F7F9DBE4E49CB1A9DAF1ED8D969B31372C424B3E41473B41483C42
+      4C3E434C3E454E3F454F40454E3F454E3F4750424855454B574A4A54474A5447
+      50594B4C56484B55484F574B515C504C564A4F574C525C4E4C56494D5F55485C
+      552E38322631272535282B3F3537494137484137494036493E35483D33453B34
+      463C36483F35494130443936473B3B4A3F44514748564B4652493E4B423E4A41
+      414F444554474B5B4F4B5B514F5D525361545462565B6B605F756F6F8D8D84A1
+      A586A2A782A0A47D9FA389A5A889A2A689A5AA90A6AB92A5A989A3A286A0A080
+      9E9F9AB2B588999A5B665A5C694F3D4830323527232C29344A41273B2B293A33
+      1F37292F44362B41312C4739324D3F334B3B2E3F2C2D3A2D40483C404C37444D
+      322728172D41404A71652E533B2D4B3B253F31223B2E354D493347423E594B31
+      4D413B6062375958314F4A314E4B2F494343687E44748531535932515B3A5C71
+      4B6A6E334B3E52593E343F292035221E312B3651573454442640261014041C25
+      222732221C22162742504588A04182953E7A84335956424B3D232D1B464D4E67
+      716664715E4A624928361F1E23161921192B3C2C1D2A1C2F43414C686247625B
+      6670634C57445B6551656D584654458F9A908C99807E93833C493A49554A747E
+      733F50403E5B584B6463466855374C381824150E13112D39342328192B2A1E1B
+      221C16221C1D281B1C23211717192D353043473E3241343C4B3C4C5D48596853
+      313A2B2B3724222B191C26160E130D293A293B47384F5B4755573F2E3C24323D
+      31A3A0986E7565758071677461586551616C5E525C4B2B321A0A0F0B080F0C08
+      0F0D0B100E0C0F0D0B0F0D161D180F100D0D0F0C090D0B090F0D080E080F160D
+      151D13121D140E130C080C0A080B0B080908060A060705090509040307060C10
+      0D141B163E48413142363D4D423D4B3E3A4B3A293D2D3E4F4445594A495B4841
+      4E3F46554839493F485647324838384E3F455243505F5242513E3748383C4E3E
+      4653484657413C4A383A4B3E3F4E445061543C4B3D33423542514250624F495C
+      4E3949394456474353445664534B5C494253433B513D4C5A4B5161513F4D3E45
+      534945564A5668575261553A4E3C43554C485D4F576656506250465542475A43
+      4A5A4B5B6A59475B4E4655494B564C4F5E5156655549594A485C4B41543E4253
+      44515F544B5E4F495C4E43503C4C5D4551604F4755453D4E3E3A4F3B485E4852
+      65534B5C443A4937444F4145554856695B526550445B454C5E4A455B49546857
+      5364564B6149566553475B4B566A5A556857596552536150B0A68096F88298FB
+      869DFB849CF9889DFA8A9EFA8EA2FC8EA5FA8A9DFA8A9FFA899FFA8DA2FB8FA1
+      FA8A9CF5899BF68297F28095F08093F07D92EC8498EF8798ED8192EA798AEA77
+      88E87688E4778AE48193E88191E88192E88496E97C8FE48291E67C8DE37D91E4
+      7D8BE17889E1697ADE6676DB5C6FD7556BD6546CD64F66D44F64D45069D6536A
+      D96178DC5F76DC6C82E1657CDC6177DA778BDE6F82DC677CD96A80DA697FD875
+      8BDB7C95DE7D98DE829CDE849CDC869FDA8CA8DB8AA5D78097CC6C89C66C8DCC
+      7897D07E9DD584A2D886A3D989A4DA89A4D986A3D887A2D5849DCD7B95C56C81
+      B86480B65F7CB65B77B55C7AB96180BD5A79BC6A83C16985C26987C76F89CB6A
+      85CC708BD0708BD26D88CF6C86CF5B7DCE5E80D36C89D8708FDD6E8BDC7891E0
+      8099E37993E1728FE07993E07D95DF6A80D55A76CD5776CB5A76CB6C86D37089
+      D5637FD25774CC6580D24F73CE5F7ED35A75CB506CCC4863CD4A66CC4769CC4A
+      6ACD5B76D24B6ACF4769CE5578D25F80D55474CD5174CC5176CF5B7CD56182D8
+      597DD54970CF567DD56283DA587AD75A7ED45F7FD35C7DD4587CD45A7FD76688
+      DA6788DA5E80D65F7DD55975CE5676CB5F81CF6185CF6789D36A88D0647FC86B
+      87CD5579C55C7DC35974C14A66B94A66B74D6ABA425BB14D68B65170BD5875C2
+      5475C55171C84666BC3D5BAF3C5BAC3755AE4262B74468BC4565BD4364BE506E
+      C0466ABE4C6CC35674C55778C75273C45677C65270C3607EC55E7DC95370C460
+      7CC45976C0506DBA506CB8415FB53C5BB13850AE374EB83E53C64159C3445DC3
+      415CBF425DBD3F5BBC3E5CBA405EB63F5EB64966B74969B54969B54464B43C5D
+      AC3E59A7415AAA405AAB3E56A63C50A3405AAE3A54A3182C5013262A315B4B41
+      806941836A3B785D3C775D3B795E3C7D62407D61347454307054306E53326F4C
+      3371513075552B6C4E306E55347A5A2D7857347D633C83733B7E64306C503076
+      5D36836E337D68367D65317F632E745B2B765A3C8884BDDBECE8F4FADDE6E479
+      918D76A3AA9AC4C7B7D9DA9EC5C6B4D5D6A6CCCBB1D3D5B1D1CFAAD0D0B7DAD9
+      A4CBCCC0DEDFA5C9CBBCDEDDA5CBCBB8DDDDAFD1D2A5CFCDA8D1CDA6D0D2C0E3
+      E0B0D3D4CAE7E4A7CFCCBFE1DEA7CECAB5DBDAB0D4D0ABD5D4BDDBD8A7D1CDBD
+      DEDBAACFCECAE7E6BEDEDCCCEBEDB6D9D7C6E6E8C4E2E1BFE0DFBCDDDAADD3D5
+      CAE7E8B3D3D6CAE7E9B5D5D7CCEAEBBAD9D9C8E7E8BEE0DDBADEDEC3E4E2C0E0
+      E0D2EDEBB9DCDDD0EBEBB7D9D9CFECECB6D7DABFE4E4B0D7DAC1E2E6E4F3F3E2
+      F1F1E7F3F4DAEAEDE8F5F5DBEBEEE9F7FADAECEFEBF7FAC4DDDEC1E4E7C9E6E8
+      C5E7EAD6F0F2CAE6E6D9F3F3C3E2E4DCF4F4C6E4E4D4F1F4CAE5E9D5EDF1D0EC
+      EBCEE9EAD9F1F3CBE6E8DEF5F4CCE8E8E4F8FAC9E7E8E0F7FAD3E9EDD9F3F4DA
+      F0F1DAF0F0DAF2F3D0EAEBDDF5F4CEE7EADDF7FAC6E5E4DCF4F5CCE8E9D8F3F5
+      D2ECEDD6F0F2D6EEF1CAE9E9D8F1F2C9E8EBDBF7F6C9E6E6E0F7F6CEE7EADAF4
+      F5D1ECEBDAF3F2D5EFEECBEAEBD4EFF1CBE8EBE0F7FAD1ECEBDAF2F2CEE8EAD8
+      F0F2CAE7E8D3EEEECEE7EAC2E4E6BEE7E9DCEDEFEFF7F6DCEFEEEAF7F8DEEDEF
+      EAF7FAE1F0F1E9F7F8E1EDF0E1EEF0CFE9ECD1EEF1DBF4F4D4EDECE4F7FAD6EC
+      EFE8FBFFD4ECEDE1F7F6D5EEEFDCF7FAD7F0F2DBF4F5E2F7FADAF3F3E3FAFBD8
+      F1F2E7F9FDD5EEF1E7FCFEDAF1F1E5FAFCD9F2F1E0F7FAE1F6F6DEF6F5E3F8FA
+      D7F1F2E6FBFCD2EDEFE2F8FBD5EEEEE5F9FADDF3F2E6F8FADEF2F3DDF4F4E5F6
+      F9DEF3F3EAF9FADEF1F5DCF3F6CFE7ECECF7F6DDEBEAE7F4F4E2EFF0E7F3F5E5
+      F1F2E2F0F1E7F5F9E4F7F6DAE4E3A1B1A9DCF0EB9EA5A7464B3B575F4C5B5E4E
+      5A614F525A4654594659604C575F4B575F4B59614F565D4B545D4A535E4B5762
+      4E5C65515C63515A61505E64546068555B6551606A56656C5A6165545A6A5969
+      82774C5E5930353035382C353D3139483D43554A48595243564C475D514B6154
+      495F544A5E5341554E374B4534473E3F514558665A6A7466606C605A695D5A69
+      5D57655754625569786A6C7C6E66766C6173636C7D6B80928693ABA69CB4B499
+      B2B2A2B7B4A0B1B099AFAE98B0AFA4BAB6A2B6B19DB2AF9DB2ACA6BAB6A8BEBE
+      9DB3B19CB2AFB2C1C4848E8F60655A646A53424B2F30361E25312433483E3951
+      3E223C2931483F3C513F384F3A3144312B4028283D27273A2C29382C3D4A3E46
+      4D383B462E2D3730455A573956493E5D4B3E57482A4C372A4638223F312F4E48
+      3A6561395D4C3551493C5E543650452F4C4739534F365D65456E80325155394F
+      564468763E6262344C3E38422E3C4331293525213023283B3D3B565931524307
+      0F0317241D252F241E2418263A446198A94B79896C8B8C475D4B3F4A3826301D
+      404A47676E64696F5D797F632C3717151B13151B19263A321A252445565D636F
+      66626E6498988C8D8B78929180847D6A70716465736C596F626F82715A655D4A
+      533F676E65757C6A7B8276999F8F5A685643553E1B2314070A0860686C1E200C
+      273122273022172116171E191C24161B1B184F5356B3AE9F766D5540462C394B
+      3C3546342D36232B39211E29161E2116090B062D38283E47384B564351544238
+      422F363A30B2B0A77E7F6D6674665B665546484141493D595E521E1E16020504
+      070A0B050706030506040506020A09111F1808140D0A0D0D080B05060A080B0D
+      06030D05131E1311180F14130E070B0B000408000001080906080C0A070A0902
+      0B080B120F171D17404E403647373E51403C4E3F3D49392A3F2838523D425347
+      4A5A4A384A423D53443B4B3F475B4B3847333C4C433C513A4A5E4C4456493B46
+      393C4C3F435A4B4B5B4940493D414F42444C3F555F503E4B3A39463D4250424D
+      5E50525D4F3F4C4047574B4554455A68564F5E5045553E41523D475A49556054
+      42534342544444594A5968585665543A4E413E5244455B485466515062534355
+      454A604E4A57505968584C5D4A4B594E45564A4D61525469524B60454D5A4A42
+      54403F52415463554F5C4B4A5A45435344475C4B5662544D594B445342414F3E
+      515E505766584D5E4F3F4C3C415443425749556A57586654475C47475D4A4759
+      4A556956536551495F49506355425948536A575868565262514F605149497D96
+      FA7E98FA869CFB859DFB859EFB899FFB8FA3FD8FA5FB859BFA889FFC8A9FFB89
+      9FF8899FF8899DF98A9DF68599F58192F18093F07D92ED849AEC8798EC8292EC
+      7B8AEB7786E77788E67C8FE87D90E48291E78493E98295E97D8DE38191E47588
+      E2798BE47485E1677DE05E75DE586EDA5063D5475ED3465DD2475FD34B60D34C
+      62D54C62D75C75DD546DDA566CD95B74DA5C73D96F81DE6F81DD6479D8637AD7
+      6981DA778EDE7991DE8099DE849EDC829EDA8EA5DC8AA3D9879ED37993C96A87
+      C67290CE7D9BD284A1D688A4DA84A2DA799DD882A2D886A2D788A2D5879FCC7D
+      96C46F87BC647FB65876B45775B45775B76280BE607EBD6B85C16D88C76C8ACA
+      6585C96D8BCD728DD06D89D06D88CE6D88D26382D06787D76D8BD97591DD738E
+      DD7792E07C97E07C96E17993E17C95E0768FDA6781D35E79CD5E79CB6780D06E
+      88D56D86D66D88D75977CD657FD25B79CF6480D26A82D44A65C93A54C64C68CE
+      4D6BCE5471D45876D44C69CC5271D2587AD46282D76485D75276D04D74D25B7F
+      D76486DA6788DA5C82D8557DD66687D97492E16387DE6083DA6B8ADC6488DA61
+      83D96183D86A8DDA698BDC5476D66280D45F7ED0587ACD6687D26286D46082CF
+      6786D0708BD45F7FC96988CC516FBF4462BC4664B8506DC14361BC4F6EC25073
+      C35877C55577C65677C43D5DB43653AC4564B7486DC14466C04B6CC14F6FC55C
+      7ECA6482CC5777CA5273C65B7AC85B78C65979C95B7FCC5477C85777C55F7CC6
+      5270C35975C25C78C2526DBD4D69B64261B5405EB43D54B33A4FBE4359CA455C
+      C9435DC6445DC4415CC13F5AC03B56B73A57B23E5DB44561B34969B44B6AB54B
+      68B34460AE3E5CA83F5AA63F59A83F57A93F56A53A519D3A54A73C5BA8274077
+      182A471A35393365513C795F4383683F806039775A37765734735137775D3C7E
+      663B80613D7F5F3E81623F88683C82623679563577553475573476593A7F6040
+      83663F7F6137785E33765A3671543070503876552D6A493B7A78C5E1F1E5F4FA
+      D9E5E27B8E877C9DA08CAAAA88ABAA8DABA788ABAA88AAA88DABA988ACA68CA9
+      A491ADA690ABA68EAAA787A49F87A8A387A5A387A8A285A9A284A5A081A5A086
+      ACA88CB1A98CAAA88CB1A988ABA58CAFA884A69F88A9A586AAA487ABA78FB1AA
+      89AAA38FAFA88FAEA894B2AC8FB1A993B9B18CAEA990B4AE8FB4AC89B1AA8AB0
+      AE89ADA991B2AC89AEA990B1AF89AAA58DB2AC88ABA68FB1AA8FB3AE89B0AA8D
+      B3AE90B4B097BAB590B3AF96B9B08CB1AA96B8B58DB0AB88B3B384A4A0C0D5D5
+      E6F7FAE3F3F2E6F3F3DAEAEDE8F6F5DAEBEEE8F6F8DBEDEFEBF8FAD8E4E4AFCE
+      CB94C1BC94BBB999C2BD99BEB89EC4BE92BAB4A7CAC799BCBA9DC0BE97BDBC9A
+      C4C1A0C5C1A1C4C1A6C9C49DC0BCA7CBC69BBFBEA8CFCBA2C4BFACD0CCA4C7C4
+      A8CBCBA6CCC8AACCC9B2CFCDA5C8C6ABCECD9EC3C1A6CBC79BBFBAAFCFCAA4C7
+      C4A6CAC89EC6C3A2CAC7A6C9C79DC3BFA6C9C696BFBCA8D0CA9EC0BDA6CAC69D
+      C2BDA2C6C49BC3BEA6CAC5AACEC9A3C8C6A3C8C69ABFBEA7CDCD99C3C1ABD0CD
+      9BC1C0A6CBCC9DC2C2A1C7C59CC4C18EB4B1A3C2BFE2F2F3EDF7F9E0F1EFE9F7
+      F6DEEEEFEAF7FAE2F0F1EAF7F9E1EFF1DCEDEFBAD9DAA7CECEADD2D0A1C9C6AA
+      D2D09BC4C1ABD2D09CC5C3B2D2D0A4C8C4A6CCC8A5CAC5A8CBC7ADD1CEA6CBC5
+      B7D7D2A6CAC8B8D7D7A6C8C5B3D2D3AACDCBB3D5D4ABCBCBABCDCDABCECFA4CA
+      CAAFD2D3A3C7CAB2D4D6A2C7C7B2D2D5A8CCCAB2D9D8A7D0CFB4DADAAFD3D4AD
+      D1D3B4D6D8A8CFCBB5D7DAAACDCEA3D0CAB9DAD8F1F8FAE0EDEDE8F5F5E3EFF1
+      E8F3F5E5F2F3E3F1F2E9F7FAE8FAFAE3EAEAA7B9AFE3F0ECA1A8A93D45364D57
+      484A53443A4538334136425749576A5E58695E54645953655A5165594F605450
+      625553665853695A53685B5A6C615C706563756963736465786B586E62566D5E
+      6175665A6D624D6258556C6363776A6A7E71667C6E6175685F776D60776B637A
+      6D627A6C637A6F657D7161796C4A645B4C63577E8F816F85773E574C354B3E3B
+      5A47384F452C413C44576355667F5262785163785669886F83AE7B96BC88ABBA
+      97BBBF9DC4C8A3C9CEA4C9D0A6CCD5ADCFD8AAD0D9A0C8D09DC2C8A8CED3AFD2
+      DD8EB2B8A0C0BCB8CDCD96ABAE7D9393697772636B58444C32283621222A2431
+      443E3D4B482B3B312C43382F3C3129372B3A4C4331462C213223293C2F2F3E31
+      3C4A3B404E393F4A3422312932555141685D446B61405D5E49776835604F345B
+      4B3E655B4A76693F6456546D603E5649425A512E50574162623E534C516E6C3C
+      5D5836535243686F4266663651491B22164349323C452C303A26334744567881
+      3E625B00070018241D21321F1B26182A3E4F4F79895C8990B7BAAA606A4E424E
+      39212C1C3D4741646D62707165A29D7D2732160F130C14181730342E14231A57
+      5F627C8774828376939980777E69868373A7A58FBCB4A2AFAB916D705DA4A599
+      757C6257635379807ACCC7B3C1B799A6A480676F5A6475571A250F080B0D4F57
+      572C39191D2A1921301E132116181E171D231C110F169D98A6CBC4AB7D826441
+      4F3D3B4C393F59422939252A35221C26181419120C100C282D273B443A49594B
+      53573F373F26313A2EA39E9D94987FA3A590A3A28EABA991747C64A5A397AFAB
+      915A6044484E42454B4037433538483332413B242F2B080E0B17201F262F271F
+      2B2420302831473C172217171E1311150C0A17152A3E446A75740103010E120D
+      0F130F0E120B0F140D1319163B46403149373C4F3F4150423D4C3B24402E394E
+      424954474F5C4A3D4E3F44564A3C4B44495A493449353B4C3E3C524147605344
+      54413B493B424E414559474655413F4B3C43503E3A4A3E5460533D4C3E3A4739
+      4250425261525361523C4A3D495C4F4656485563574D5F4B4659423F523E4B5B
+      45556555424B4742564845594A596859576550435142405445465B484D634F4F
+      62524357474B5C474A5A4A596858515D494B5B4A46594B4F5F5656625A4A5D49
+      51635642574346574A54635353594F4F574B4452404B5C4E5663554C5B4C4551
+      43384B3D4F5D5155665655624A3C4940425144445443596C605563534C563F53
+      5B4E4D5B48566D594B635253605455635540524855685A566951556451475C47
+      56548099FB7D97FA869CFC889FFD859DFC879DFD8A9FFE8DA2FE8AA0FA8C9FFB
+      8C9FFC8C9FFB889DFA899BFA8C9EFA859AF98092F28597F08195EF879AEF899A
+      F18191ED7583E77583E7788AE87C8FE98291E7808FE97D8FE98596E98091E479
+      8BE37288E36E81E25A6DDD5069DB4F69DB3C55D63A4CD23F53D33F55D33D56D3
+      415AD44157D34159D65269DC566CDA465BD2536BD95C77DB5870DA6278DE5971
+      D65B73D5647ED8708BDB7B93DE7E97DD859DDD879FDA8DA4DA88A0D7859CD06F
+      8BC56D89C87C9AD0809CD487A3D88CA9DA85A4DA6E98D481A4D989A3D7869FD0
+      829AC87E95C2758DBC6580B45774B24F6CB35674B65B79BA617DBF6782C16F8A
+      C96F8DCB6687C97090D06F8DD06A88D2708DD26D89D36586D46C89D9728EDA77
+      92DC7896E17795DE7995E07895E37B93E27991DF768EDA6D87D75B78CD6681D3
+      6F86D27287D46E87D56786D3627FD2617CCF607ACE6B83D46783D3526FCC5570
+      D0516CCD4F6BCD5B77D35E7CD55774CE6480D5617FD66985D76E8BDA6282D951
+      74D05C80D8678ADC6687D96989D96085DA4F75D3597DD56F8FDD698ADB6186D9
+      6487DA6385D95F81D76182D96587DA6083D95F7ED26F8BD66285D2587ACD5C7F
+      CD6D8DD46588D56D8AD4738DD26681CC5376C85979CB5676C86181CF5575C95B
+      7ACC5879CA587AC75B7DC85C7EC4486ABE4163BF5273C7597CCA5576CA5675CA
+      5B7CCB6C89D26686CF6183D05476C95C7DCB5A78CB5C7ACD5E80D0597DCC5671
+      C55E7AC85879C75470C2647DC85B78C34C66B64862B5465FB44057B64156C54A
+      5FCD4D61CD4A61CA4A63CA4963C7425CC23C57BC3653B13954AF405CAF4A65AF
+      516DB04D6BB04562AB455FAB445FAA4461A93F5DA73D57A53C54A23A509D374F
+      9D3951A8354FA3243B7617284729494A386D573C775B3B786136775A31705033
+      6C513A755D3A7A5D4183643C7F66377F643B86643E82663A795E357755347556
+      357A5B39806641876C3D82653C836B45837448876B4285642F684F3C7575C1DD
+      EBE2F2F6D4E3DC869586728A877B9B9D77999674928B7E9B98809997809B9379
+      9D95809D9898ACA496A8A0829E99869F98809D92849D93829B928CA6A28DA9A4
+      93ADA694A59B728A7D758F866F8B7F7E978D7C968C7E998F869C93849D92809C
+      95799D998EAAA378958B6F877C6C867D708A80758F8479968E78958E758E886F
+      8987809A9893AB9F7795897E9A92819A93849D957D9A927E9A9578938C7C9790
+      8DA4A0889F9A7E999379978F79958F75908B7C989278938D7B968B6D898499A8
+      A2E3EDECE4F3F6E3F2F3E5F3F3D9EBECE9F5F5DAEBEEE8F6F6DAEDEDE8F7F9F3
+      F7F5A0AFA7618076809E9A86A6A585A19C88A6A485A39F809E9A8AA8A590A8A2
+      8DA49F80A19D88A4A388A1A289A4A38FACAA84A3A38DA8A7809D9691A59C7D97
+      8D78968E75928D75958D7E9A937D9992819C977B9790799A957C9D988CA8A378
+      9792768D8576908974938B77979075918D76958E7796907290887C968B8EA5A0
+      7D9D9782A09B7D9A98789893819D987B999378958E7E979090A29C75918D7599
+      957BA19D85A8A486A6A38DAAA784A3A0799D9887A096B4C0B6E1F4F5E8F7F9E1
+      F0F0E9F6F8DEEDEFE9F7F9E2F0F1EAF7F8E1EFF2E8F3F5BBC4C16E8B816E9289
+      7492897292876E928B6D8F8775959079989290A69F879F9979999278938C7693
+      8B7996907D99917D9B927E9B95809E978CA29C78968F75968D7C999177978E79
+      9A93769792759792779993789C967E9D9787A19B809C9773958C77988F7B9B95
+      7C9C977E9C97809D97809F96809E987E9D96849E93C1D5D0F3FEFFDEEDEEE7F5
+      F4E2EFF0E6F3F3E5F3F2E4F3F2EAF7FAE7F9FAE1E9E9A5B7AFE2F1F0939DA428
+      332939473C30403528372B334136475E505A6E615F6E625F6E62596D615A7063
+      6070646070645B7064566E625970645B716458706362776A6C7E726A7E746179
+      71627C71677F7261776A5C71645A7365647D6F637C6E61796B64796D5F776A62
+      786C667A6F637C715B796D607A6E617C6F58776C4D665F425B4E2D42361C2B23
+      23382C2D4639202F2A252A2B35393F20242C171E2424303D445171516388546D
+      7E546F68567569577A74577F7C608988638E8E648F8F56808173A0A29EC3C58E
+      AAB34A6166334B434A6A5D58767158717476918E65786D676D543E4D3328361C
+      272B23303A3431413233432C354029394635404F433144353C4F45374D3A4059
+      4341553C3D4534414E3D3A4431243C3A325954415E5541615B385B555C817642
+      715A345F4F436660355E4C37554A314C3A3C4D4A2E4A4835565231504936514F
+      30463F354D4832514C3E5C6230504E2F4A3D1B2B223C44352C3F1F20301B283E
+      3A365960325F58000B021A231F242C231D211A203D4C5B889D437E8676938656
+      6A533C4A351B2618444349636A60747469B2AF8C20241614161412181627332D
+      181E1659636AA3A599999A849A997D878673979D8CBFB3A3C2BAA3BFB999918B
+      75A5A3979B9B80555C53A1A9A0BAB89AB3AA8F9D9B7C727F6CA1A3811A251305
+      07094C555137442721311E21301B1520131112111C222212141A52545D666E5B
+      4D573E4552446774643D5C452C3D2F2233241C261810160D080C0D242F2A313A
+      3459615650593C3C3F272E392DACADA67C7D69AAA393B8B195A39D7C353A1FA4
+      9F95BAAE953039232D3D34373E3442503E2F3A26465C4F283A2B081204161B16
+      3A413C4B5445415A49505E4E242B17161D1312160D0D0E0F01040C7082760003
+      000F16160F16151418130E120D0E15143C4D45354435405142404E3F414E3D31
+      3F363C4B3E49564A4F5F4F3F4F3E4154483C4B414A5B4A3846363C503E3F5340
+      495F534755413C453A4352453C554943594A3B493C45513C42503E5061533D4E
+      4137483C3C51494C61564C5F4E394C394A5B4A4251445A6C5D5463524957444C
+      554A505B4852654E47574047543F4C5A4B5C65595B6456424B3E445248475649
+      5866534F5F4F3F5744495F4C4A5B4B5E6A5D515F49425443475B4A4F61535668
+      574F5F4C4C5F5047534449574B5263514A5F4E4F5E4F4253444B5B4E58645549
+      5F4C41544C3E4D424D5D4F5768574F60503C513C3C4F3E42544E5A6B5E576553
+      4B5D474D604E4D5A47596A5754685E4D5F535665584A564C576855596A575966
+      564B5D4F494B829AFA829AFB859BFC859CFB859DFC879DFC8A9EFD8D9FFD879F
+      FB8CA0FB8A9DFB8C9FFC8EA0FD889AFA8698F88599F58198F28496F0889AEF86
+      97F08295EE8092EC6E7EE47282E7788EE9798BE88193EA7E90E77B8BE47E91E4
+      7C91E47487E36577E05469DB4960DA425BDA364DD62C45D5263DCE2B3FCE3245
+      D23349D0344CD03147D2364DD74660DA4C65D84056D54861DA546CD9536BD757
+      70D9566DD6576ED45F7AD86781DA788FDD809ADD829CDC879EDA8CA3D7889FD3
+      7993C9738EC9738EC97C99CE819CD38AA6DB8CAADB87A4D885A3D887A3D988A2
+      D589A0CF7D95C57C95BF778EB9617DB4516EB14B68B45A76B75B7ABA5F7CBF65
+      82C16785C46F8BCB738FCE708ECF6A8ACE6B8AD26D8BD26B89D06385D36B89D9
+      728EDA7491DC7E9BE37C98E27895E17893E1758FE0768EDB6C86D6607CD2607C
+      CF6C87D96D88D76781D27087D56580D06C88D56582D2637ED26680D24C6EC757
+      76CE657FD65675D25775D05B79CF6B87D86281D65F7CCE607DD56181D86B88D7
+      7290DB5C7FD75779D56687DB6787DA6182D55E7FD6577CD55A7DD56A8ADA6689
+      DA6081D76587D96488DA5E80D55778D36586DA6385D95F7DD06180CF6589D760
+      83D45B7ECE5E82D06082D06D8DD76687D56280CC5C78CA5C7AD05F7FCC6B87D0
+      6582D26080D06282CE5E7ECB5374C55F80CD6583D05275C95174CB5477CD597C
+      D0587ACE6587D26282D25C7FCF6385D05578CB587CCF5578CF607FD36081D461
+      82CF5E78CA5B79C86581CA5C78C85974C5526DBE4F64B74D65B64A64B44057B6
+      445BC84B61CF4D64CE4F65CF4D65CD4F66CD4760C7405CC23451B42E49A93951
+      A94961AC556EAB516EAE4966AB4862AB4862A94662AB405CA83C56A43A55A23A
+      52A236519D314B9B334C9D3B54A7354F9B2439711C304F3B6961437F643D7962
+      3F7C68417D653C776143816645856D42816C47826D4A897244866F3F83684086
+      643E806842836936775B35795E3C83683D876E41857A51957F458D6F32715541
+      7E76BDD6E0E9F3F3DAE7DF8C9883667C726985857E98956E887E708880819793
+      7C978E809A9182A09BA7BAB397A89D7B9A9289A89F87A49A7C998E7791897D9A
+      9587A8A393AFA99EAB9D819586849A8E84988B879E918DA2978FA49A98ABA299
+      ADA28EA2987896968FA9A56F8B8161736672877C73877D7B8E8180978C869C92
+      889B917D93898FA49CA5B4AA819A8F7D978F88A29B8CA59F86A19A88A39C829D
+      967590888FA39C94A59B829A93809B9787A09B8098937C938C7D968E869F9880
+      9B93A1B0AAE0ECEDE4F3F6E1F1F3E4F2F3D9ECECE9F4F5DAECEEE8F6F5DAEDEC
+      E7F4F8F1F7F5ACB6AF637A7277908C92ACAC8AA2A387A19C8FA8A0869D9784A2
+      9F9BB4AC93A8A482A19C7C9B95829E99849F9A88A5A085A19A87A39D87A19B96
+      ABA2899B8F879B91849B90829A90849A908CA49C92ABA390A99B809B957E9B99
+      86A19A63858363796C788F847891867C968C869C95819A92809992849C9391A1
+      9992ABA582A299829F9987A29F849D967D99927C979075938B7E9A8F9DAFA684
+      978F7D958D7C9791829E97879F988CA29B8CA59F7D9C978AA197C3D1C8E3F5F6
+      E8F7F8DEEFF0EAF7F9DEEDEFE9F7F8E1F0F1EAF7F8E1EFF1EBF9FAC1C7C3647A
+      6E738B85788F87778B837B958F849B967D939074908894A9A28A9F9B77958F81
+      9B957E9990829A957C97907C998D7E9A92809E9798AAA37D9087728D817C938B
+      7B95897E978E88A097869D97809A9272908E65888686A19A76908F6B81787C92
+      847990877D989088A198879F958AA39C90AAA3819E9698ADA5D9E7E4F0FDFDE0
+      ECEDE7F5F3E3F1F1E7F4F5E6F3F2E4F2F1EAF7FAE9F8FBE0E8E9A2B7ACE3F3F1
+      8A8E9711181522322825362B36453A354439485F52576C605E6E625F6F63566B
+      5E5C70636374685E70645B71655771645970635C71645F74665E75665E766960
+      786E60786E647D71667C6F5F786A5F75695C7165637A6E647E715F766B5F776C
+      637D6F667E7360796E6B817675877D5A7568607A716C887F495955121511242F
+      242B372B2D3B2E2F3D312F3A2C424635444835383E2D2C32231B2016303D3139
+      473A3E4F3A404F3F3E4C403E4D40425144414F413F4D3F394539394639819B8E
+      C4DEDB818D922A29263D46383C473D3D493F505C546370655863555A614F4549
+      2F2B352320261B2B2C2825342B36463D27412B2B3B2A3447353A513F435E574A
+      6E613C624C2F4A363E48364A503E3F452D2C4B4A3B5B553F6656385C4A2D5442
+      3151473863564A7366456B5B4A6F625171603F524C3E524C3C5956425C593E5E
+      593C5C523F55543A51533150563250523A5E5F35575019261D3D4835353E2D27
+      35221C2B303C5B6C3C635E000700151F1D20291D192316243945527C8B4B7D81
+      568F903C64503B4D32242D1E35413E676F69677358485534141F110C160F0E17
+      162F382D20231A767780CDC3AFA7A08697937784836EB3AFA0CCC1AAC8BEA8C8
+      BEA39995738D90766F7759556054999C8EBBB49FC0B99B8F9276ADB7A093996C
+      1D250D060A06535D5B525A40222718202718171E150F1816152519101B154054
+      556A7F6C6E745B45513A5065577D8A75303E2525362219261811150C0B0C0A21
+      2B22344033535E53525A3E333E242C352A9E998E939377AAA498CABC999D9A6D
+      4C4E385A5541444B35363F2939423235402B2D3525292F212032251529160812
+      060E10111D1F1E141E141E251E1D281F1B231B151E121218110E0F0E00060A38
+      4247030A0A06101509100F1217150F130F0A141131413B3546373D53433D4A40
+      3F4E3F353D343C523F48504755604C3E4F3F4455453D4D3F4A5C4F364635394E
+      3E4052434F5B4E4055493D4A3D3E5240395347405A49344A3B3E4F423F4D424D
+      5E533E4E413647403B4F494A5E504B5F4F394B3A4A594E485643586652506049
+      49594448564B4C5E4355645240513F4755454C594A55665A5264534253474459
+      4F3E564855685D4D6254415547455D4A43594855695749604B435345425B4A4F
+      5F55566558535E534C5B45495B434857485061524B5E4E4C595343574A455B4E
+      5563574F5F4E445A453D513B4C5E4A5665544F63513C523E3C4C3E4B554A5A65
+      5E5969524B5F474C5D4B4252425F685A5763575364585065554A5E4F55685455
+      695A58645D525E4C9769869CFC869CFA879BFD8299FC889FFD8CA2FC8599FA87
+      9CFC88A1FD8A9FFC8EA1FD90A4FC94A8FB889CFA8095F5889CF5879DF38196F1
+      8597F18495EF8297F07D8FEB6F80E46D81E4788FE98091EA8293EA7B8FE47E91
+      E47D90E47B8DE7667CE14B62DC3E56DC354EDA2A41D42035D02239D21F37CC1E
+      31C9283ACF2A42CF3148D23248D22C43D2364FD9435FD83F5BD53B54D44661D6
+      5066D6556CD7526BD5526CD5637CDA6A83DC738BDC7E97DB819ADA87A0D98EA3
+      D68DA1D2748BC46B86C47692CB859FD386A1D57D9FD57C9CD587A2D884A0D684
+      A1D78AA4D48CA1CF7E97C67C93BE748BB85776B24969B0506CB3617DB8627FBD
+      6482C16787C36986C46C8AC87592CF6E8DCE6A8BD07292D56C89D2728DD56B87
+      D26986D46F8EDA7693DE829DE47393E17693E17B95E0748FE0748DDB637FCF5C
+      7CD06681D66B82D86480D66B86D46C83D26780D26F8AD76786D45B79CE5A79CF
+      5A79CF637ECF647ED55A78D5627ED4637FD45F7DD36280D65B7DD05A7CD26383
+      D9607ED4587AD05A81D85E7FD76180D76B8ADB6080D66381D76A89DA6687DA60
+      81D76485DA6588DA5E81D86487D96181D7597CD36585D86485D96080D45B80D0
+      5E83D56988D86B88D86588D06989D66A8DDA5076CF5F7CCC6F88D56080D4607D
+      CC6C85D26483D56585D26B87CF5376CA587ACD6282D36180CF6180D35E7FD358
+      7AD26183D55A7ECF6B8AD66686D66787D56C89D56080CE5C7CCF5A7ACE6281D0
+      6582D3607FCF6482CE617CC8657ECA6A83CD5875C64B68BE4760B9556EBD4D66
+      B53E54B3465DC84B62D24962CF4F65D25168D35069D04965CC435EC63957C126
+      44AC233B9A3A50A24F66A7556CA84D66A94B64A84963A84661AB455FAB3E59A6
+      3852A238519F35509D35509A354E9A324B9B3550A33A54A7354F95223C65365E
+      61447F6A427A6A477E723F7C653E7D68417D663C775F42836D42816F3A7C653F
+      826947856E427F6B3D7F663C7A603A78613C7D65357A60397C6D41826A46856A
+      397A5F498D85CBE2ECF1F9FAD9E7DD8A9A846A7E7257716D678785698177536D
+      6165817D67837D5F776B5F7E7498B0A9889D9158767163837D63867E64837C5C
+      7A715A776B5F7A717597929CAEA46A7F6E64796C667A6D64796D677E716B8275
+      6D8577728D808FA59B86A3A091AEAA79989262796E5A71645C74695A74665E76
+      68627A6C697E715A7162738D83A5B7AF678276617D7269877E6A877C65837869
+      87806A887D627E73889F968CA1966A857D67857D6C88806D867F678278668680
+      75989680A1A0A3B4AFDCEAE9E5F4F8E2F1F4E5F3F4D9EBEBE9F5F5DAECEEE8F6
+      F5DAEDEBE7F5F8F0F7F5B8C5C0738E85637C7378968F7C9B936E8D817C9A917B
+      968D75938C9DB3AC879D967491896F8E836D8E836C8D846B8B84709189758F88
+      7B9890A0B3AA7C8F837490837C92877C95876D8A7C7693867D998F85A09588A8
+      A287A9A690A8A06F8A855F77696D857872887C6A8375759184769284728A7E72
+      8D8194AB9F829A906C877D6D877D708B81738F85708B836F8A806C897E78958B
+      A3BAAF859F927792877893887D988E7D988E809B9087A1968AA9A398B0A9C2CF
+      C7E5F5F6E9F7F8DEEFF0EAF7F8E0EEEFE9F7F9E1F0F1EBF7F8DEEFF1E8F7F6C5
+      CFCA6F8B837B9B91829D967D958C809E9285A59D7D9A917D9A8D9CB1AA869D96
+      6F90857898907B9A907E9A927D9B9278988B738F867D9D95A1B3AA82988B7792
+      847E978C819A8F7B968887A0928AA19588A39681A0A06D909091AAA5879D9A6D
+      857C758E7F778F837790847E9A8D809E8F7D9B8F849E958CA89DACBEB4D7E4E0
+      EEFCFDE0EDEEE8F6F3E3F1F1E7F4F4E6F3F2E5F3F2EBF7FAE8F8FBE3EBEBA4B9
+      ACE5F3F18D8E9810161429382D313F343D483C3C483A495F53566D615A6F6259
+      6E61596E615E70636075685A73656274685F75685871645B716461786B61796C
+      61776D5F776C5C7669627A6C667C6F5F766B5B74695E746A61786D617A6E5E77
+      6B5F766B65796F6680745F7A6F6E877A7D8F85647D71657E7669877C5C70683B
+      42393C473B3C483C3A463C424C453D44383C43353C3F305B6654596459384139
+      4453454F5D4E4D5B4C4F5B514F5A5257645A5B695A5764595F6D635A685B758E
+      8396AFAA849898546566485B544C5B544859524D5F5857645D6D7C735C695E58
+      644B424D2E2B331C20271C26302B32443F415C4C3A563E3244333C4C3C2B4837
+      365A4E395644374C343B48373C4932414E394249351830283048323151423F5F
+      5A305249294C3D25483A395C55527C654569594668533A524840534C3D59553A
+      55503855504C70663C57583F5B5B3D61643D656C416C693251471625183C4734
+      2D351D21302B142836243E53618287020C00191E1921262220221E2435406689
+      99649296477A7E3755473C4932282F1C293C38656C6570785A253718111D110D
+      120B1215162E392B1D24198A7F86CAC1A9BEB49DC3B9A2CABCA6CEC0A8CFC0A6
+      C9BEA3CAC2A7BDB69BB2AA8D898F7E6A765E6E7765B8B7A3C2BC9FA49F88D5CD
+      B4ADAB7521250902000376797A3F4C2E2229161A2814131D110C160B0C1B1110
+      2216545B575861402E37212B38245A685146503320331E20312320221A0B120D
+      090A06212824313C3454604C525B3E39422A323524BBB1A47774526E6E564345
+      2F2E3118242411222A16131E0C0B140A0B15080810080B120F0B0F0B09160D12
+      251C090F08090E0C0B0F090A0C0D070E0B0B140E1119111017130E150E090E0B
+      080F0D040F0A0B0F0B12191413190E14170D11130C080C11353A3631463A3B4F
+      3F4053413F4D413143353D4E41485547555F523E4F424457453C4F3D4B5E5037
+      493F364B4344534A4A594F3F54443B493B4654474050414759453C4C3E425345
+      3D4D435161533F504130453D404F444C604F4C604A3C4A394B5C4945533E576B
+      5550614E45534547554A4C5E4B526255495643465548435C4754625352655540
+      533E4B5749475A484D645E4D6150415540506357495A4A5F695A465A4447554A
+      4D5A4F4D6152546956505F4C4D5D4C455A40465A4E54625653634F4A5C514453
+      444B614C5165525261504557473C4F3E4F5E4C5F66535164523C4E433A4D3C45
+      56495C6C5D5668534F5F4C4F6053425C495B685B546A58496152576557445D4F
+      546958576A5D55645251614A9769869DFF889DFD869BFD859CFE879DFD8EA3FD
+      889FFA879DFB8EA2FD8FA2FD8EA3FD8FA5FD94A9FC899DF88193F58699F4889C
+      F58296F18295F28495EF8799F18191ED7589E67086E47085E47E90E88797EA81
+      93E97B8FE47588E4697CE34964DA3751DC2D47DC243DD82036D31A30CB2034CE
+      2137CD2136CA253BCC2A43D02C45D53954D63A57D42B44CF374ED64562D63954
+      D03E5AD4415BD54861D74C65D5566FD6667FDA6680D86D87DA7892DA8098D98A
+      A1D891A3D3869BCC6C86C16F8BC67B99CE819ED485A1D6769AD07599D288A6DA
+      84A1D789A5D78DA4D3859DCB889DCA748BB9647EB25470B14464AF5370B5617C
+      B8657FBE6D89C46986C46B89C76E8DCA708FCC738FD06587CF5981CC6B8AD46E
+      8AD46E89D46E8AD77390DD7693DE829DE47893E17D99E47B97DF748EDC6782D7
+      617DCF6E8BDA6985D96780D66782D5728AD66A82D46D85D36F88D36F88D3617E
+      CE607DD26685D65270CD5C77D3587AD45C7AD45B79D55074D0496DCE5C7ED461
+      7FD46787D96285DA5176CF5378D36988DB5A7DD75F81D86B87DA6C8ADA6D8BDB
+      6B8DDD5C80D85477D25E82D66183D76281D65E82D7557DD5587ED66989D96587
+      D97291DB6283D36082D66486D76987D46F8FDA7697DF668BDA4B6DC6738AD66B
+      89D76581CE6C86D36282D26281CF6C87CE597ACF5376CD5F7ED26382D36382D3
+      6382D66082D66E8ED96685D66582D46B8AD76C8BD7708DD66C88D56180D35E7C
+      D0617DCE6581D0617FCF5E7DCD647FCD647ACB6580CD617ACA5976C6506CC054
+      6BBF5369BA3C4FAF4053BE4860CD4961D25066D2546BD5546CD44F6AD04B66CD
+      4463CA3453BF162D981325843246964D62A45569A55166A74D68AA4A63AB4964
+      AE4360AB3B55A53B54A33850A036509C334F9A324E9B354F9C37509C3A55A635
+      51962A446D3D6C6A46857147866E3C74623E7F664081663B765A3C7A633D7E68
+      3D836B3A8168367A633B7E64397E613C8269478A763F856E3C7F683A776A3B7D
+      653B79613376594B8D84D0E7F1F1FAFAD7E4DA8A96836C827659746B627F7D67
+      827F566E635A746D647D76597065526F6A92A9A4889C8D556F6B5F786F647F77
+      637F775B766B5F766A5A70696F8E8E96AA9D596C5B55685A596A5D56665B566A
+      5D596E60566A5B566C62859B928AAAA790AFAA7D9D9560756A50625552685B4F
+      64584B60524B5F5354685B465B4C5F756CA3B4AC638172587369627A73617C71
+      5A756C5C786F627D7359756E84999284958C546D63577064566D65596F6A5E75
+      6D617974607A7265817DA0AFAADEEBEAE5F6F9E1F0F3E5F3F3DAEBEBE8F4F5D9
+      EBEDE6F6F5DAECEDE8F6F9F0F7F6BAC6C16D8A84576E6660797269867E647D73
+      65827E637E77607D7296AAA2768B84637F776A837F617D75647F76637C75617D
+      74658078728D8494A69A586A5D50695B53685B576C6053665A54685D54685D5F
+      746A77999382A6A499B1AC728D895266594F655854695E4C61564F6558556A5D
+      546357506155889A8E73877D556E6659736B5E776D5A746C5B756B5E786D5E77
+      6F6D877F9AAEA56E857A617A6E627D71697F766C837C6C867E6B817877918B9A
+      AFA4C3D0C6E5F5F6EAF7F8E1EFF0EBF7F9DEEEF0E9F7F8E1F0F1EAF7F9E0F0F1
+      EBF7F9C3CDC85F766D617A716078726378715F776C5C786E617A72647E739AAA
+      A47788815A74665B776C5B766D627A736078715E776C567064708B7F99A99F5A
+      6A60516558536A5F556C61576C5F586E61566B5E6E887884A39F6C8E8C91AAA5
+      80969251655E53665A566A5E53665A51685A546D5F556A5E5165586A8577B1C0
+      B5D9E7E3EFFCFEE0EEEFE7F5F4E3F0F1E5F3F3E6F3F3E4F3F2EAF7FAE8F9FAE3
+      EBEBA7B9AFE5F4F08D929B0F17152333272E3B303E483C3C4A3D496155556C61
+      596F63586F63566E61586E625C71665B736561766863786B5B75665770645F76
+      6A657D71637D72617A6D5C776B61796C647C6E5F766C5C756A61796D61796E5F
+      796C5B766B5E766E657E726A82766781786581786581766F867A6D837E658176
+      5F79714965634664614F6D6B4D736E547478445653383E304B4E4081897A6973
+      664A5E555A7876547472556F6F556B6A58706F5A73725A77725F7E7F5C797A5B
+      7774597573526B6A425A5745605E506F6C506C68567672597C776483837B9692
+      65786D656D59454E3227301B1E251D29352E3751473C5241284128314335293C
+      2F3450433A5D521D371E3A4536444A353D4832464F3A414835293A2A2F4B3F37
+      4E4334564C345A5A41625B2D513E3A5F51386254426859435F51445C5A4D6261
+      43615B64898463878343666044635E425B5A43655F4666633C5F5F33544E1623
+      173A48342D3923202C32112A400C1E404B6476000600151E1C1D25221E1E1A20
+      3545699BB06A97995B857E4862543B493423341A2C3937636F6B6F7A61243416
+      0C140D0B0C0B10131426372A171E138E8288D2C7B2D2C1A9CFC3A6CFC4A7D0BE
+      A3D4C1A5CEC0A7D0C2A8DBCCB2C6BA9BA1A2897D81668A8977BFB9A7B5AE9199
+      987CD4CAB1A8A56E192109020102808381283812172113162116131912081009
+      0A120C0514061F2D2A3C472E2F37273339273136221D2816232D22252D231623
+      1811140E0C0E0C232C2536403457614C525643353D242D37269C9C8E8A876677
+      7D6A9C9675413E252028142533211822160C170D13190D0D160C0A120E0C0F0D
+      111713141F140B12060F0D0D0D0F0E080E06030D08080F0B101B14142015111F
+      14172116151F161520170F130C15140F0D16091114140E130D060D06353E3A37
+      45374753423B4E433B5042324135404C414C574B4C604C4051404353473C4C40
+      4D60563C4B483C4E453F554A4B5B573F5A4B374D3E42564244554A455648414C
+      3E4453503B4E434C5F55405344394A3C424F42505F4C545F473B4C3E44564B3E
+      5242586957556355435644475C4B4B5D4F5766564A5947435647455949586456
+      59665346574349594B4552475C665B5061524956444D634C4B5E4B5F6A5B4B5B
+      454057424357444F5D4F5865564C5F4750634E485C4A475A495764565360504B
+      5F4A41544349594F5265554F5E4F4957454452404D604E5A6955566356425143
+      3D4B403D514A5F6C5E5768574C5E4E4A5E4B4F59495C6D5A57685552644C556A
+      544A604C546557586A5A5566555262539769869DFE879EFD88A0FD889FFE899D
+      FD8FA4FD8AA1FC859AFC8A9DFB8DA0FD8DA3FC8CA2FB96A6FE8E9FFA8197F47D
+      93F2889BF58495F08599F18496ED8697ED8698EC7283E47486E4788BE77E8FE9
+      8090E87D8FE96F83E16377DF4D64DD354FD92942DA213ADA2036D61E35D01A2C
+      C81C31CA1F31C92436CB2B46CF354ED42E45D52D47D2405CD64968D73048CE43
+      5DD74866D6415CD4354CCE3950D6465FD4526AD45C79D7617ED7647ED66E89D8
+      7B93D7889DD48A9ED07690C56380BE7691CA849ED2819ED3809FD6789BD484A3
+      D889A6DA84A3D68AA3D586A0CF809ACA859BC56E86B5607AB14D69B0425FAF56
+      74B5607EBC5E7CBC6583C06987C56F8DCA6F8ECA6F8DCD7895D46B8DD0567ECB
+      6A8BD4708BD5748FD96F8ED97591DD7E97E17E98E2869DE4859BE37995DE6A85
+      D75875CF5E7CD2748DD9708ADA6682D66B85D46E87D66D86D66E86D37288D067
+      82CD6480D25C79D05173CC587CD45B7CD55E7ED85779D75877D65E7FD86486DA
+      6381D75E7AD46787D97295E15B80D95074D26382DA6282DD607FD96487DA6388
+      DA6B8ADC6A8BDC6389DB597DD75478D46687D76685D75075D04D76D4557AD56D
+      8DDA6F8EDE6188DB6388D86B8EDA6285D66688DA6589D86D8FD9658AD95273CB
+      6783D06C8AD76F89D36B88D26686D36585CF6A88D46180D25C7FD35E7FD46182
+      D65F81D65F80D46B8DD96688D76A88D96B89D97392DA6E8DD96A88D66988D465
+      87D55B78D2667DD4627CD06A83D56783D4627CCD667FCD6179CD5E77C95B78C8
+      5570C4536BC15569BD4357B44155BC435BC74962D05269D4536AD6536CD8576F
+      D6526FD44C6BCF4665CB3150BA10258E0C1E7C283C8C475A9D5365A45165A751
+      65A94D65AA4962AA435FAA3C57A73753A4344E9F334F9B33509B364F9A344E99
+      334D9C3F59A73550952C436C496A6D557D6D567D6F4F76724F7A6C5B81745A82
+      775B827A5E89805F8A7F53807359897A5487734A8372588D7E5286754D87754A
+      82754F86784C8171467763618F8ED0E6F0EAF9FAD6E4DA88917F698074536D62
+      5A746D64817F5E7A735A797166837E5A756A56716D8EA39F859689566F685B79
+      6D637E775E786F5771655E766B58706A6B8B8992A49859685A546A5E5A6E6257
+      6A5E576A5E5B7164566F60576E647B958D86A5A289A9A276988C5971654C6055
+      546D60556D5F52685A4B6356516C5E48635460777199ACA5628274567169607A
+      6F5F7C715B786D5C796D5F7A7355716E79958E81978B5773665C756A5F756C63
+      7C7464817D637E785E776E5E7E769AABA6DEEAEBE4F6F8DEF0F2E5F3F3DAEBEB
+      E6F4F5D9EBECE7F5F6DAECEEE8F6F8F0F7F5B2BFB86E928E637F785E766F657F
+      7A67827A6A8B8669898365827799AAA2758B836181786C8A86627F7867857F67
+      827F5E7D7362837C708A838EA1935B6F61576C61566C5F556D60576E61596F62
+      566E5F63796C78979085A69F97B2AC75958E586E60546C5E556E6252685D5269
+      5B546A5D56655954645884978C738B815771685C766E6179736179715F786B5C
+      786A5A746C6C867C97ABA2748983617C6D5F776961786A62796C6981766A8278
+      748E8693AB9FC0D1C6E3F4F5EAF7F8E1EEF0EBF7FADDEEEFE8F6F6E2F0F1E8F7
+      F8E2F0F1ECF8FAC3CDC960766C65827666817A627A73617871627A735F796F62
+      7E7394A99C7789815B71695E766D5E766E647D73627A7361796F5A776A728B7F
+      92A4995F6B61546459536B5D536C5E566C5F596E62576C5E6A80737C9D956F96
+      8F92ABA7849B98536B60546A5D576C61576D60556C5F5F746661716555695B62
+      7E71A7BAAED5E7E2EFFCFDDEEEEEE6F4F5E4F0F1E5F4F3E6F3F3E3F1F1E9F7FA
+      E8F9FAE2EAEBA5B7B0E0F2EB939EA61E24202F3E323540373E483E394A3E4962
+      54596E635F7066586D62546C60536B60586E64586E625A74655F776A5B756658
+      70645C7168637A6F627D6F60796F59736B5C766A617C6C5F766C5B756B5E786B
+      617C6E5E776B5B746A5E796F6581746A8377667E756C857E738A806681756A85
+      7C637E7560807A56868955898E5A909562979A669FA74C6565424736828D7D99
+      A197696D62394D443B59553A57533B55543854523C5B573D59563F5F5B3B5B56
+      3B57523B5B513D5C5442615B40625941605747665E4C746D5A827D5A7D776687
+      83809B986C7F74616C534853342B2C172229213A52544065552845323A4B401C
+      351E1C321E3F54513D54491C3325393F27404B2E3A4034414D383B472D263729
+      2E493D334D3E2B4E3F376055305B5B3A69681B43382F51484666664364693550
+      4A3F5E603955512F4F4C3468692A4B422C4F5028525332554C3A575F375E6321
+      4A411423193E4337283A1D111E1B0B161E0D1B2412232A1925212E372D2B3227
+      1C2016112B393C788B3369663352473E4E3E33442F26301C2639316473686773
+      58373E220B140B0E100F0D1513273124171B16847A7FD5C5AACCBB9FD0BDA2D2
+      C0A3CFBD9CD0C1A2CDBDA2C8B89BABA383909072AFAC98B2AF8E707557A5A396
+      C1B7A4A29F89B2AF989E9F6C1C230A020305656B69323D1B1A25161F271D1826
+      1C13231A1A23161521141C271C1E261A1F2F211F231B2D342221291C19271A1C
+      2D2217211610120D070A0B282A24313A2C576252535A42333C252A3326B0A6A5
+      ABA89086836CA3967665654B2428160B0E08171E131B1D130E1609131A0E090F
+      0D191B19111713151F1A090F08090E0A080C0B0A0D0A0B0F060B130D0D180E0B
+      160B10131611130D0A120D0A14110B0C0811130C0F130B1013110C0F0D0A0F0A
+      313B3B3A4A3C3B503E3B4F433C4F443246383F4B404A59514C61504450434B52
+      4E3E4B494B5E52444F44404D483C53454D5950465B4B3D4F4249594B40534943
+      5947394C3E48574B3D4D434F605340523E3C4A3B4251404C604E495F4A3D4E43
+      465A514455425A6D585260523F554A4A59514957525866594957444459484457
+      4C53635653685347594346594A425549576A564F65524B564B4F604F495E4C55
+      6A574A5E523C5A494659484F604F5668584C5D4B52604C4D5B5043544A596959
+      525C4F495F4F46544A4B5A455869534C5D5549564740533E4C5B4C5A6A555866
+      573C4D3D384B413D4F49636F5B5466564A5A4A4F615147564B616F5B58695350
+      64515368554D5F4F5768575A6A5758695B5263549769849DFD89A0FD889DFE82
+      9BFE8CA0FC8DA2FD869BFC869BFA8C9FFC8EA2FB91A4FD8EA0FA93A4FD8DA0FD
+      8098F3798FF1889AF58C9BF18699EF8799EF8496EC8195E96F80E27382E37C8D
+      E67B8BE7798BE6788DE6677EE2556CDE3D57DC2D47DD2239D91D33D62034D320
+      34CE1E31CA2033CA2337CA1F32C7293ECF3C56D63C57D63953D53952D05070D8
+      4C68CF3D56D04A69DA4660D54460D33A52D33E57D24560D45877D95E7AD6607D
+      D56B87D7708BD48196CF7D91C87087C16C87C27791C888A0D089A2D37D9DD679
+      9CD787A4D885A3D7829FD48AA2D589A3D0859CC88498C0748AB75976AF4465AE
+      4964AF5874B56381BC6380BA6080C06788C66B89C96A88CA708FD07896D57592
+      D46F8DD46D8BD3708DD67290DA6689D77593DD849AE1819BE1849FE48098E17E
+      96DF637ED45E79CE6E88D7798DD7768DD9708ADB6D87D86C87D56B85D4637FD5
+      5778CC5678CA6180D45B7DD44B6FCD5F7FD65C7ED65E7ED96586DD6987DE6A85
+      DA6C89DC6385DB5F80D86281D86D8DDB6083D95B80DA597DD86B89DE6A8ADD62
+      87DA6989DF6183DB5A82DA5E82DA6689DD5B80D85E7ED66687D86485D95879D3
+      6183DA6E8EDC6A8BDA6288DC6487DA6C8DDA6C8AD96A8BDA6486D85F85D35A80
+      D45F80D36F8DD77090D87691D8738FDA6687D56586D06185D55479D05F81D464
+      85D4587ED55A82D85A80D66789DA6286D96989DA6F8FDC738FDC7390DA6A8BDA
+      6789D76180D46481D5667FD66B83D66C87D56180D25B79CD607ACD5E77CD6078
+      CB6178C85974C55570C5526AC04A61BA4C62C1495FC84B61D05268D65169D653
+      6BD85770D95B74D95771D6516CCF466ACD385AC31730980819742031813C4F98
+      4D60A25466A75268A84C66A94863AA3F5EA83655A53451A236529F33509C334F
+      9A325099334D993A51A03C5AA62B468432456E6585926D909262838E67838F6A
+      86906E8D91708D906E8B8F6F8D8F738A916F888F708B8D6986856986866C8888
+      6686856D8F8D6D8D8D6E8A8C6A818075909CD1E4EEE7F8F9D3E4DA869281697A
+      6F5263575063595A6C635A6A6056695E5C6F66576B5E4F635880968E78887A4C
+      5E53586E61586E65576C5F536659566B5F5263596B837C88978649574A4C6054
+      5062565161534F5C4F5563584D605450625765786C637C74798E83596E614B5F
+      53425347495C4E4A5E504C5D4F42544744594A3D5142576C6387978E576E6255
+      6A5E54665A596D61546B5F536A5E546B604C635A758B8173867A50645A556E65
+      566E665B756E617973536B62576D6556746D99AAA4E1EDEBE1F3F5E0F0F2E5F3
+      F3D9EAEBE6F4F5D9EBECE7F5F5DAECEEE6F5F6F2F9F5A7B6AC607F7F637F7858
+      6F66586F68566F665B756D5B766D5B7D7389A39A697E72536E65607C755B746D
+      5C78725E76715971695C766C667E7487998E54685A50665A4D64565065584C64
+      574C6558506357536A5D658076708F86819B90617971495B53495E524F66584B
+      5E514F60544F61554D5E524C5D517E928773897F546B5E5A6E635B7168627A6E
+      61786D587165586B60667C718EA097697E755F786B607971647F76617A6E6077
+      6A5E7568607A72849A8FBECFC5E0F3F4EAF7F9E2EFF1EBF7F9DDEEEFE8F7F6E2
+      F1F1E9F7F6E2EFF1EEFAFDC9D1CD5A716C5A786D5F796C5B746A59716959746C
+      5973695771668AA09372867E576F655C736B5871695B746C5A756D5E756B566E
+      636986788EA19759685E4F605450635753685A50695A546B5E536A5D5C76686F
+      8D846C918D90A9A479918E50695E4F6658516558566A5E54685A56695D5C7366
+      526C5E546E629BAC9FD9E9E4F0FCFEDEEFEEE5F6F5E3F0F1E4F3F3E5F3F3E3F2
+      F1E9F7FAE7F8FAE3ECEBA4B6AFE1F3EC9298A0111310323F323543383A473B3D
+      4E424F61555A6D62596D62576D62566D62546B60536D60556F625971645A7365
+      587062576F63566F645B756960786D5C766D556F695B766A617A6C596F66576E
+      65647C6F667F7460786F5A7469617C716A81776A817869817872887E70898165
+      827A638177648780556F6C28443E25453E2C4B442F4B462E4B4730433B555D48
+      8797868F9A9074786F262F27111E152431252131242532272B372C27392A233A
+      29293B2E2B3B30283B2E2C403434473B30453B31463B394F413F574E4A645B4C
+      685F5871697C958F6F827A5E664E49533522301A1A281E22433E306054406560
+      2846352E462D2B3D2B182B1A203121313D2D373F2F202A1734432F454B383B48
+      2D0F220F081F1517403415422D1B403115403D154742174E41173A2C2A4B4733
+      6258213D3848605B3E62571746422A545B284D501E3A4133606C2A5E5F275356
+      395561406462192F2327312420261B0D1A0C0C150C030E0E161E1F4C524E0F17
+      114551421E2D17122D3D3B7E9A3170814D63583C503F36422C212D1A24333066
+      6E666776572434160D120B080D0C3E4645202F1E171E16827785DAC8B3D2C0A9
+      CEC1A3D3C2A3D7C3A9D3C3A8CEC2A6D4C2A4D1C2A2CABAA6D3C2A5BAB2917279
+      5B707765A1A18E9AA0897B857696977A1E250E0001015566632F381B191E0B14
+      1F18151F181B251B172117192014171E1216231620322622382C3C5342274127
+      1727161B271B14211611120B060A0A1D2921313A3558635E555E3F383A24242C
+      23B1AAABCCBBA9D4C5A9A29A726B6B554C3F265A5C431B1E13171B0D0E120A08
+      140A0B0F0C0D0E060D16131522150A0F06070D0C080D0C0B120B0F16120B140C
+      0B100A0B0F0B0B140D0E14120F0F0D0A0D0A0A0C0B1D201C1618131516131112
+      0A090C0C32393437483D414F45414D4540524035423A3D4A483C564E51625144
+      5544445547434F484C5C523F50453E4E4146534F4D5C594559493D4C3F445348
+      405248485C453D4F3E465A4C3E4E3E4F63554453433D4C3F4151404D5E4F4F62
+      51404C434B5B4E425547576A5A556553495B4C485A494A574E59665A4B5A4B4C
+      574C4B594F56645456694C455642495A483E594A556A57516454465A4A556151
+      465C495E7054526050425A49475C45536150566457515F51505F4F4F5B484355
+      4758685554654A4D5C4E48564A4C594C4F63554F5D4E4759474452414B5F5058
+      6A5452654F3E51413C50414856485864575364564C604E4F6250435A4A5B695A
+      536855546352586856495D4E5869585A6A595565554D634C976987A0FF90A5FE
+      889CFD849BFE889DFE889EFC859EFC88A0FD8CA1FD8EA0FB91A2FC92A5FD8EA2
+      FA8EA2FE8599F9778BED8093F18497EE8493ED889BF1899AEE8293EB7385E275
+      87E37889E47B8BE77C8BE4788BE4637AE1445EDB2F49D92742DD2036DA1F32D4
+      2033D01D31CB1C30C82739CE2E43CD2B43CB283ECD304BCF3D5BD4516ED94364
+      D0405DD05F7DD84968CE3F5BCF4661D54664D33F5ACF3D57D03751CF4765D74A
+      69D25977D26581D06580CD7289C96C81BF6980BE6F89C28198CD869DCF88A2D5
+      89A5D78DA9D989A5D986A3D48AA4D587A0CE8FA4CE869CC68195BD6F86B4506F
+      AE4061AA526DB2607DBA607AB86682BF6987C36585C36788C86D8ACB7592D076
+      93D47390D26F8BD07491D67490D77896DD678ADA7390DA8299DF89A2E4849DE3
+      7893DD788EDA5C77CD6382D26F89D66F8AD7728ADA728ADA758DDC778ED96580
+      D26581D75F7FD55A7CCF6381D46686D76E8ADB6482DA5C7EDA6485DD6C88E06C
+      8AE06986DE5E7FD86083D96287DA6183D95C7ED56688D86587DA6285DA6687DC
+      6B8BDE6587DA6E8DDE6488DF5A81DA6285DA6385DA6989DB6483D96B89DC6C89
+      DA6B88DA6486DA6687DA6589DA6E90DC6085DA6688DA6D8DDA6D8DDA7090DC6C
+      8EDA6286D85C81D77797DD7591D87892D97591DA5B80D26182D46182D65C80D3
+      5C7FD06E90DB5980D45A81D56087DB6488DA6F90DD6E8DDD6487DA6387D76F8F
+      DA708EDA708FDB5B79D2607FD56583D86682D66C86D66581D25E7ECF6581D265
+      7FD25E79CF6179CD5873C75773C75A73C65469C14B60BF4F65C74C64CB4D66D3
+      506AD7536BD8566FD85C74DA5F78DA5974D84D6DD24468CC3B5CC61A349D0815
+      7217267A3B4C965466A6556BAA4B68A74561A6405DA83D5CA93757A53856A536
+      54A033519D335199304D97334E993B59A436529A293F7A3E5F855E98A56499A5
+      6091A35C91985583895180835080845C8A91608B955F8E95608B8C64898B6389
+      8C6186876A8A8F698F926488876386885F7D836E92A6D6E8F1E8F8F9D7E7DD6E
+      816F768E888FA6A2A0B3AC96AAA597ACA797ACA79CB1AF9BB1AB97AFA9A8BDB6
+      9AB2AA99AFAA99ADA9A0B6B196ADA6A1B6B19BAFA894ACA5A1B8B1A2B8B090A4
+      9A8CA29C98B0A790A6A099ADA694A8A396AAA590A69F90A8A391A9A49CB3AC8D
+      9F97859A938FA19A859B958CA0988A9E978C9F988D9F97879A918C9F989BAFA8
+      90A49B8C9E978D9B938C9C9690A09A899C968F9F9885988F9AADA594A59C8295
+      908AA09B849A95879A97829A9581988E7D958D7D958F91A5A2CDE1E0E3F5F5DE
+      F0F2E5F3F4DAEBEBE5F4F5D9ECEDE7F5F6DAECEEE6F6F6E3EEEBA0B0AA79908E
+      7E978F7C8F847B91877B8B847D8D867888817B908996A9A27D908770827A798B
+      86798B867E91887B8D86798A7F798D8181928898A69D79887D73837673827775
+      837774827676837775837770837870857A788B818A9C90738076727D756C7D72
+      72827773817573827473867773827565796D7D93867C9086677A6F6D81776D80
+      7672867D758B816E857A6F817574867A899B90748578768A80778E8884999382
+      988E7B908672867A6D81777E9187A8BFB7DCF2F3EBF7FAE1EFF1EBF7F9DDEEEF
+      E9F7F8E2F1F1E8F7F6E2F0F2EAF8FAC1CAC863746E667A6F6A7C6F69796F677A
+      7264776E6B7D7363766A86978B74867C61766964786B66786D697D7364776D67
+      79716373696E837689988D616C615865595E6A5F5E6A5F59685B596A5F5A695E
+      63766962756B5C746D798A8364716A526055556155546055566256576357535E
+      53566458526457516053849688D0E6E0EFFDFFE0EFF0E6F5F4E3F0F1E4F3F3E6
+      F3F3E3F1F1EAF7FAE8F8FAE4EDEDA3B7B0E0F1EB9498A210130F1A2418273526
+      4753463D4C404D6054556B5F51695E556E63566E63556B60516A5E526C5F5971
+      645C75695C74665E7465556E625973695E756C61776D5C746B5C756C60786C5A
+      74685F766C698075657E736179715F776D647F726A83786B867F6D887F6F8A7E
+      6F877F69817A66837A65827C4C646039453F4B554F4A554F505B515A635D4B4D
+      49535947869684969C92757D76343B30353C2D585D4960664F61634E4D4E412C
+      34282A35282B3A2D2C3C3028312928312627322624302427352A334236354136
+      3B44393E4A3E4F5C506D7C726671645C61484A513323341B172318213D3D255F
+      511A513C244B3B2B42313548333644313D47323E48333A49333B4332363C2F40
+      453B3C482F102616274A452C534417423331594F1A433D1F4B4B194C3E104031
+      0A392F1F4A3A21433E2D4D4A375C54215151194044284950254653467A8F2554
+      582E545A405C6F2D4B4E20372640503D3B4D3940513C3B462F3642353A453927
+      3423505F503945342F3A240D24272A6A8C3F7C8D8A9E9A67745735422522331C
+      273233646D6B7781632A341610120B0E120D131A16283324181F177E757DE1CD
+      B4D0BDA6D4C5A4D2C2A4D3C4A8D1C3A7CDC4A5D2C3A5CABA98CBBAA4D7C2A5CB
+      C1A08890716C7F6E4B5B54616E6C616E5E8C927F16220D000000999AA4C5BA91
+      181A081A21181C2122202621171F14131B1417261F253A33263F35344A442C44
+      32031701131F14152618141F14080C0B02040818222329322E555E54595F4531
+      3B22242C21ACADB6D8CCB5E2D2B58E8759BCB1956965447378592731180B140A
+      11150B0B1308090E08080F0A0F0F11141A160C0D0A040E0B0D0D0D0B0C0D080E
+      06090C02080D05080C05090B0A0B0F0B0D0F0F0A0B0A090C0B0A090B24291E20
+      241610150A0307083339383746374152404251404052423248343A4D3D435645
+      4D634F4354434A594844523F5061534650403F4E43465444485C53495B4E3948
+      3E4B5B503F534A4C5A4E3C4F424259493F513F4D62544556413C4E3E3D4E404F
+      5E5450614F3E503E4D5C4E475147586A5B576651485743495B434C5B4F556858
+      51634F49564A4F5D4F54635458695544574F475A4E4559455A6A5A5568534D5C
+      435266534B5C4A576A5B4C614E4556474B5C4F4D604F5E6858505E4C4C5F5250
+      5D4E455A495664535464524D5C4C445547515B4B5165565362534B574C415140
+      4F5D4B5A69584F644F4357453E4D3E4655435F715D576654495C4E4B63544759
+      4A606C5A58665650634B56695250614E566958586B5A5A69585868519769869E
+      FE8DA2FE8D9FFD8AA1FD869DFE869DFD849BFC889FFE8AA0FD899FFA8DA0FA92
+      A8FE92A6FD91A2FD879BFA7C90F07B8FEE8196EC8496EC8799F08898EC8091E9
+      7487E2788AE47E90E7798BE67989E4788BE65A74DE3851D72740D9253DDC1F34
+      D71C2DD01E31CD2035CC2A3ECB2E43CC2C43CE2F48CD3751D03A55D2405DD351
+      6CD45E7CD44F6ED3516FD45B77D3526DCD435ECF4A6AD23A54CA3A53CF3650CE
+      3B57D53F5FCE4462CE5270CC5876C65F7AC15C75BA5F79BA778EC48498CA859E
+      CE8CA5D78FA9D68FAAD98CA5D88CA5D687A2D389A3CD8DA3C9859BC4758DB757
+      71A84B69AC4B68B05F78B46582BD607EBC6180BF6D8BC46B89C36787C7708ECE
+      7695D06E8ECD708ED06E8ED27896D97895D96F8DD8708EDA7D97DC819DE3859E
+      E4819BE07B96DF7086D76682D56282CF728AD5728BD7748BD9748BDA6D88DA79
+      8FDA7085D37790DC738EDD5F7ED46180D36C88D77690DE6788DA5A7FDA6A89E0
+      6E8BE26585E16A8AE26B89DD6382DA6788DC6689DB5C81D86688D86B8BDB6E8E
+      E06C8BDF6F8BE0728EE26688DD6C8DE06687DB6988DA6485DA6A89DD6988DB69
+      88DC6C8DDC6A8BDC6A8DDE6283D96F8DDC6D8FDD658ADC698BDA6D8BD96788D9
+      6C8FDD668BDB6B8BDA6D8DDA7897DF7B96DB7B91DA7992DA6283D55A7CD35479
+      CF6082D45C7FD45E83D76085D85E81D5698BDA6D8DDB7090DC7393E06788DA5F
+      82D86E8DDB7390D96D88D65A7CD25B7AD26380D76683D9708ADB6985D35F7DCF
+      6681D55B79D05F7AD2637DCE5A75CA5873C95C75C95C70C4485FBA4C63C35568
+      CA4F63CC4B63D44D66D8546CDA5B74DB5C78DB607CDA5877D8496CD04566CE3E
+      61C9203DA80B1D7D17287E3B4D985368A7546CA84865A8425DA83D5AA73655A5
+      3151A43756A53554A033519C35519C324D9A3852A03C59A4334B922842774070
+      884F8E984A8D9746868738716C2F696435736E3B766F346A6232686B3B75753F
+      7C753A746A396D63366C653C7F7A3E827D3C77743B716F538E9AD7EBF4ECFAFA
+      D7E4DA70897899B8B8CAE5EAE5F7F8CBE1E6DBF1F3D1E8E8DCF0F4D8EDEFD7ED
+      F1E4F2F1CBE4E6E5F9FDD2E9EEEAF9FCC9E3E3E1F4F9DAEBECD8F1F2DAEEEED2
+      E7EDE6F5F5D0E6EAE5F8F6CFE5E9E8F7FBD4E7EBE4F6F9D4EAEAD5EDF1DCEFF0
+      D2EBEBE1F3F2CDE5E7E8F7F9CFE6EBE6F7FAD6EAEEE6F7FADAEDEFE5F7FAD6E8
+      E9C8DEE1EBF7FBD7EBEFE4F5F4CFE6E9E8F7FAD5E7EDE8F7FAD8E9EADAEEF1E0
+      EDEFDBEDF0E4F2F4D2E7E8E4F1F2D1E4E8E5F3F5CDE1E1D8E9EABCD2D4C8DFE1
+      E3F3F2DAEEF1E5F2F3D8EAECE5F4F5D6EBEDE7F4F8D9EBECE8F8FAC6DCE0BED7
+      DBC4DADBC4DBDDD2E3E4C6DDE0D9E8E9CBDFDEDAE9EBCEDEE0DAEBEBCADFDFD3
+      E4E7D0DFE0D3E5E4D7E4E4C8D9DBD6E4E2C4DBDAD7E6E8C8DDDCDAEAECCEDFDF
+      D9E8EBD0E2E3D0E3E3D6E4E4CDE1DFD1E4E2BFD5D4D1E4E2C4DBD9D5E5E4CADD
+      DAD0E4E1C9DCD9D1E4E2CFE0E0C8DDDBD1E0E0BED5D5C2D8D6B5CAC9C6D9DAB5
+      CFCCC6DBDABACFCBC0D6D5C1D5D4BED5D5C3D6D6BBD1CEC4D9D6BACECDCDDEDB
+      C1D4D0CCDEDABED2CFC1D6D7B9CECCA8C2C1B7D1D0DDF1F1EBF7FADCEEEFECF7
+      F8DCEDEFE6F6F8E0EFF1E8F6F8E3F1F2DDF2F1C8D6D6B8C9C9C2D3D4B4C9C8C5
+      D4D7B6CBCAC5D5D7B8C9C8C0D1D2B5C9C8B7CBCAB9CDCCBCCFCDC3D0D2BACECB
+      C5D3D3B4C7C7C2D3D2B4C9C4C2D3D2B5C5C4B6C9C7B8C8C7B5C6C5B7C8C7AAC0
+      BFBACAC6ABC1BCB6C9C6A6BBB9B6C7C3A5B7B2A6B9B3A6BAB4ADBFBCAABAB5A8
+      BCB8AFBDBCA2B6B0A8BCB699ACA5A4B9B4C5DFDCEFFBFDE3EEF1E6F5F5E3F1F1
+      E5F3F3E7F4F5E3F1F1EBF7FAE5F6F9DEE8EBA1B7AEDBEFE8A4AAB12A30283641
+      32545F4F545D534252464D6458546D5F546C5F546A5F576E62576F63576D6452
+      6A60566D6261766C5E7368566E62516C5F5875685F776C657D6F657A6C63776C
+      5C776C5F7A6C6780726D867C647F746079715C776F6380736B867C6A877D6A89
+      7C6C887E6F89836A827C637C745F78747DA89FC8E7E8D9F1F3D6EDF0D5F0EFE9
+      FFFF8D99A43642347B89778490856677713139363C453943513E4150413B4A3C
+      293A2C203124202D2418251D1A271C3B463545483A45493B4D5241414639202A
+      212F42373B4B3F3C4A3F495C506070645961535B614B4D5A3E24301817241B25
+      3C371E5045315F4F16382D142F30123530153A2D2851432545301D2418192116
+      343B3743493F364330173A302150471F45301743391E423E0F2A21153C351442
+      33205550295954154338184A48245C5919474A285F6122575D113D423B5E6D2A
+      5963345B6947686C3C5A61415D591124162333252735252631242532211F2B18
+      2630253240302338252C3B2A242C170D252E2A6E932A606E8A9C9BA0A87D3138
+      1729322421302E5F6C6870795B273016050C05060C0A090D0E1E2426151A1878
+      6F74E2CEB8D3C1AAD5C3A7D3C3A5D3C7A3D5C6A8DAC8ACD5C6A9D1C6A8D7C4A7
+      D4C3A5B5B18D70795D63787287978FBABAA7BBB698C2BB9920220C0203016265
+      644C4A2E0E0F05121B161920161E251A162017131F16161E16455A512F423823
+      3A28081306060B030D1813162216131E12070C0A04050819211F27322D5A5C56
+      5A624B323A2622271D6C6E66948978979175968A6C7E7D608E876E78745B2D30
+      1811190D0D0F050B0C060B0C06090C050B0D080A0C0C080C0B080D0D060C0B08
+      0C09060708060706080903080A05070B08080D090709090A0C0A080A05040A03
+      090A061215080A0D0903090630322F3C4A3E3F4D473F50423C5543314531344B
+      3C40534753654B47564047564B4052414F5F524052423C4F434C5649515B5949
+      5A4B3A4C3E42564C405545535E53424E434C594E3A5041505F54465944414E43
+      3F4F41515F565262533F4E3E4F5E4C445948586B575163514B5948485A4E475C
+      4A5B6B574F5C4F47574F475A4B526558546658465943495B47465B49556A5D59
+      6656475D475160504A5E4F5C6C5B4F60503F5749485E5050614B5268554F604E
+      4D5D4B495E47495A49536E5552614C515E4E49563F495E4B5566555064574656
+      4348554449574F58665B55654F45573E3A4D3B3C4F425A6E5F576555485D4A4A
+      5E504156485A6A5D576B5454664C5B68534A5F4A596D56576656546653546856
+      0000899DFE8CA0FF8CA1FD869CFC879DFD899EFF869CFC889EFC8EA0FD8CA3FB
+      8C9FFA90A3FD91A5FD8D9FF9849AF87990F27E92F08698EF8698EE8899ED8295
+      E87D92E6788AE4788AE48496E97E92E67586E26F83E2546DDF334CD9243CDA22
+      3BDA1F33D51A2DCD1E32CE2136CD2F46CC3249CA334BCF3651D23C59D23E5DD0
+      4B6CD25675CC5875C85C7CCC5877C95B7AC96585CF526FC95677CD4968C93855
+      CB3A56CD3750CE4261CE3452C63D5FC84669C34A68BA5068B65874B97D93C688
+      9DCA869FCE8FA8D691AAD687A3D789A4D689A3D588A3D291A8CE889EC78198BF
+      6F86B3536FA84360A54D69B15875B45C7AB86785C06683BF6785C26E8DC76B8B
+      C86C8ECD7593D37390CF738FD47491D77793D8728FD76F8FD8748ED8819BDF85
+      9FE48099E18198DF7890DA748DDA728BDA728DD57892DB758FDA7890DA798FDA
+      6A83D6748BD8788ED77D97DE728EDC6787DB6583D56581D26986D86D8DDE7090
+      E37390E66E8DE36D8BE46989E36E8DE36B88E0708EE16A8BDE5F83D9668ADB6F
+      8DDC6E8BDD6F8FE17591E47490E46B8BE16E8DDE7792E06987DA557FDA6487DD
+      7492E16789DE6A89DD6A8ADB7092E07495E06686D86A8BDB7796E26A8BDD6A8A
+      DC6687D86285D76C8EDD6A8ADA728FDA7892DF819ADF728DD66F8AD76A8AD95E
+      81D75379CF577DD36186D76185D86389DC6287DA6F8DDC7392DF7392E16A8ADC
+      6B8DDA6A8ADB6A89DD6B8BDA6583D25C7AD36681D86A86D96E8ADB708BDA6986
+      D45E7CD36480D55674CF607CD25E79CD5873CA5A74CB6076CC5B71C7445FBE49
+      61C35468C85366CA465DCC4861D54F68D95A73DB5E78DC617DDD607FDA5A7DD9
+      5074D5466CCF3F63CC2848B20F2689142681384C9B4A61A7455FA9405BA83954
+      A5324FA42A4A9F3251A43856A335539D36549F324E9A334F9C3C539D3A539D2D
+      488B2B4B722F666038756C39756A32715E2C6C5831735E306F5924604E326F60
+      3475622A6E5A2C715B33715D27654F2A6D572B715F2269551F654E397C7AD7ED
+      F6F3FCFCDAE6DB87A095B6D1D2DEF4F6EBF7F8DAECEFEBF8FAE2F1EFE5F6F6E3
+      F3F3E3F3F5EBF7F5DAEEEEEBF9FADCEFF1ECF8FADBEBEBE8F7FAE3F0EFE5F3F5
+      E5F4F3E1F3F5EBF6F5DCEDEFEBF9F6DAEDEEECF7FAE0EEEFE9F8FAE3F1F0E5F4
+      F8E6F5F6E4F5F5EBF8F9DDF0F1ECF8FADEEFF2EDFAFBE2F0F3EBF7FBE2F2F1E9
+      F7FAE3F1F1DCEEF1EEFAFAE1F3F5EBF7FADCEFF1EEFAFCE1F1F3EBF9FBDEEFEE
+      E4F5F6E7F6F5E5F5F6EBF5F9DBF0F1E9F9FADEF0F2EFFBFEE1F1F4EBF9FCE3F1
+      F3E1F0F4DEEDEEDBEEF1E3F3F3D7E9EBE5F3F5D5EAECE7F3F6D7EAEBE5F6F5DA
+      EDEFE5F6FAE2F2F3E1F3F5E9F7FBDCEFF2EBF9FCE0F1F3EEFCFEE1F2F5EFFAFE
+      E2F3F5EBFAFDEAF7F8E8F8FCE9F7FADEEFF1F0FBFAE2F3F3F1FDFFE1F1F1EFFC
+      FFE5F5F6EDFCFDE6F7F5E9F8FAEAF7F9E5F5F5ECF8FDE2F0F3EFFCFDDEEEF0F0
+      FCFEE0F0F1EBFAFDE4F3F3EAF9FBE7F6F6E3F2F1EDF9FCE4F5F4EFFBFBDDF0F0
+      F0FDFFDEF1F1EFFCFFE0F1F2EAF9FCEBF7FAE5F7F8EBF9FAE2F3F2EBFAFCDBEF
+      F1F2FFFFE4F2F4EEFCFFE0EFF2EAF9FBE3F3F3DCEFF1E6F6F8DEEEEFEAF6F6DA
+      EDEEEBF7F8DAEDEFE5F5F6DDEEF0E6F6F8E1EFF0DDEFEFE2F3F3E5F7F6EEFAFB
+      DCEFEFEDFAFBE1F1F1F1FEFFE2F0F1EEFAFEDEEFF0E7F5F8E9F7F9E9F7FAEBF8
+      FDE2F3F5EDFBFCDEF1F1EFFDFFE0F3F3EFFDFFE1F2F1E7F8F9E5F4F5E7F7F9E8
+      F8FADBF1F1EEFAFDDDF2F1EDFBFEDDEDF0EFFCFFE1EFF3E7F7F9E4F4F5E7F7FA
+      E5F3F5E5F5F8E7F7FBDCEEF0EDFAFDD8EAEBE7F5FADCEDEEE9F7F6E0EEF1E5F5
+      F5E2F1F1E4F3F3E5F3F4E1F1F1E9F7FAE5F6F8E2E8EBA4B7B0DBEFE8A3AEB223
+      29213C4B3B6A7C6B5863594A5B4C586C606374686174685C7469577466547064
+      5E756D5F776D5C766B607A6F5A756A546B62627A6E637D6E637D726580776580
+      75678175617D74607C716D877D778A7F73857C6E867F6079716581766E887F6C
+      857A63867E678B8663887F6B8F867EA2A27CA5AA96C1BFCFEAE9D2E8EACEE7E7
+      CDE7E6D9EDF06D6E772C2F20697A6C707F6E666F484C54342E3827202B221E28
+      1E26302321291E181F161419130B0F0C0C130B48553C676E54626651656B5554
+      59473135293843363340343943384855486571665A62585C644A4C5436222D18
+      121E16324C451E3C2B223E32061F18193C362956532A62551E4E371326161A1F
+      151D1E1C313B36424A3E38422D0A1E16203F3B1A3C241334231B352A0B26221C
+      3D3B1C4A3B154B45286263224F4E13423A2C6866236064256669235C59275E6B
+      1C4C5231606B345B6A4C6A6D3C5B53314F47112215212A1C29321D2735212328
+      181C26181720181E251A323A3321291E1C26160B23292A607A3E79906F959292
+      9F812934152A37271B2B28696E6A7278592C3319070C08050A0A0A0C0E1C2427
+      141A127D787CFFF7E7F9EDCDF9EBCCF1E5C2ECE2C0F0E2C4EBDFBFEBDFBFEADA
+      BCE7D8B7A3A37AA6AA8B6673585A6D68415E53889177B7B28E9091691C1F0F0F
+      120B0506030305020C0F0D0C120D11120D121B16121B0F151E14141A12030402
+      050900050902080A08080C090A100E0B15110D1711090F0809050615201B272F
+      274F5D50515D45303B241E28180D170D14180E15170C11140C14150B0D140F0F
+      14110F100C0B0E0B0D0F0B0C0F0D0C12080E0F0B0F100B0D0F080C0F0C0E0D0C
+      0F0F0B13150B10120F0F120B14120D0F0F0C11120B11140B11150C0F140B0F12
+      0A0E120D0D100A0B100D0E150D0C0E0B343A3836463B46514841514442534233
+      4339384B3E3A4E41505D5143504346554B4251455662514C544244524444554A
+      4B5C514C5E4B394C3B455A504554504A61503E4F414C5F50384C3C5162544455
+      434150414150454C5D53526153404F404F61534456435B6A59546456465A4848
+      5B4A495A49596B564F5E4F465A4B485A4B576556566856475B4B495D48485649
+      5C6A5B596959475A4B4A6655495D4F5A6C5B4F61534257474C5E4F4D604E596A
+      524D5F4A4D62524A5C4B4859495869585464524A5E504459494D5C4F5164594F
+      6454485A4944544446594A5964595462534355443F50414153445F6F5F546456
+      505E4F5561564354455B6C5856665951634F5969544D6251546955576B5E5066
+      5A5164560000889EFE8CA1FF8DA5FE899FFD879CFE849AFE849AFB859BFA889D
+      FC8CA4FE899FFB899DFB8DA1FD8C9FF88299F57B90F18193EE8296EE8296EE85
+      97EC8193EB7C90E77587E27B8DE78293E87E90E47588E26579E0425EDC2E48D8
+      2239D62036D71C31D01A2DCE1A2DCB1E30CA2D41CD324ACB344ECC3D5ACF4766
+      C94D6FC74B6EC55273C45B7EC65A7AC56181C85A7DC56285CB668ACC5E80C861
+      83C9496BC65471CB3B56C53956CC3452C63653C63E5FC23C57B8405CB24F6DB6
+      738BC3899DCA89A1CF8AA3D28EA5D38AA3D48CA4D48EA6D28CA4CE8AA0C8879C
+      C57990B96078AB5674AC4764A84D6BAE5A76B55B79B66580BF728DC46987C26E
+      8DC86D8DC97392CE7693D27996D47695D57492D7758FD57892D87995DA7993DE
+      7D97DD849BE07E97DF768FDA768EDB7892DA7E96DB7892DB778FDA8097DD6F87
+      D76C83D56580D37289D7778ED96F89D86B88D7708BDA768FDA708EDA5F7ED674
+      8DDB8095E07E97E8809AEA7793E66F8FE86F8FE96F8DE36E89E27391E45E83DA
+      567CD36487D66788DB7291E37693E47490E37392E46E90E17590E06A88DE5B82
+      DD6E8FE16F8FE0678BDF6E8FE17591E17493E17698E36A8DDE698ADC7795E175
+      95E16D8FE07090E16687DA6C8ADB7791DF7B95E07490DE7792DA6E8BD66686D8
+      6081D76186D75177D06183D8678EDA658BDC6389DE6387DD7792E07492DE7998
+      E16F8EDF6081D96788DB6989DC6789DC6B88D95B79D56381DA768DDD768FDE6F
+      8BDB6F89D95B7AD25779D45B79D4607AD25270CB5775CD6179CF5973CD5873CA
+      516AC6546BC85168CB566BCD5065CC485FD04C65D75670DA5A73DB607ADD6582
+      DF6586DE5F81DA5375D34466CA3D60C73150B9172F9214278729409C3951A83C
+      59AB3A5AAB3553A92C4AA22A479D324EA033519D33519C2E4C992F4E9A39529B
+      3C57A03450992C437E35616A3B7861347760377A663C7F6B387A653981693A7E
+      6C39806B387D69347065367A6239866C3A836C3A796436775F31775E296F5244
+      837EDDF0FBF4FDFDE0E7DE869F90ADD1D2DAF3F5E9F7F5D7EAEDE8F6F6DCEEEC
+      E4F3F5E1F1F1E1F2F4E9F4F3D7ECEBEBF8F6DBEEF0E8F7F6DAECEBE7F5F6DDED
+      ECE2F2F3E2F2F1E0F2F4E6F3F1D7ECEBE8F7F4D7EBEDE8F6F6DBECEDE5F6F6DE
+      EDEDE3F3F5E3F3F1E0F3F3E7F3F4DAEDEEE8F6F5DAEDEFEAF7F9E1EEF1E8F6F8
+      DCEEEDE3F3F4E3F2F1E0F3F2E9F6F5DAEEF0E6F7F3DAEEEFEBF7FADEEFF2E8F6
+      F6DAECEAE0F2F2E5F2F1E1F1F2E5F3F5D7EDEEE4F5F4D9ECECE9F7FADAEDF0E5
+      F5F5DEEDEFE1EFF3DEEDEDDAEDEFE2F2F1D8EAECE5F4F4D7ECEDE6F4F5D9ECEC
+      E5F6F5DDEEEFE2F3F5DEEEF0DEF2F4E5F3F4DAEDF0E6F4F4DCEDEDE9F6F6DBEE
+      F0E9F7F9DBEEF0E3F5F3E3F2EFE2F4F5E1F2F3D8ECEDE6F5F3DDF1F0EBF7F8E1
+      F0EFEBF7FAE1EFF1E7F6F4E3F2F1E5F5F5E6F3F2E1F2F0E8F5F4DEF1F1E9F7F6
+      E0EEEFEAF7FADEEEEEE7F7F6E3F2F1E6F6F5E3F2F1DDF0EFE6F6F5E1F3F3EAF7
+      F5DCEEF0ECF7F9E0F0F0EBF7F9DCEFF0E6F7F8E6F2F3E3F3F1E7F4F4E4F3F1E7
+      F6F5DEF2F1EEFAFBE1F0F1EAF7F9E1F0F1E7F7F6E5F3F3E5F4F5E5F3F5DEEFF1
+      E8F6F8DBEEEFEBF7F8DCEEF0E5F5F6DBEEF1E6F6F8E2F0F2E2EFF1E6F3F4E3F3
+      F4E8F6F4DCEEEEEBF7F8E3F0F1ECF8FAE2EFF0ECF7FAE1F1F1E4F3F1E5F3F3E5
+      F5F5E7F3F5E1F3F3E7F7F5DCEFEDEAF7F6E0F1F1EBF7FAE2EFEFE5F3F2E4F2F1
+      E8F5F6E7F3F4E4F3F3EBF7F6E0F2F1EBF7F9E3F1F0EEFAFCE0F0F1E5F4F3E3F3
+      F2E8F7F8E6F3F3E5F3F4E6F3F5E0EFF1EEF7FAE1EFF0EBF7F8E2F1F0E5F7F5DD
+      EEEFE5F4F4E2EFF2E1F3F3E5F3F3E0F0F0E8F7FAE6F8FBE7EEEFA6B7B1E2F3F0
+      99A0A90D0B0B1722165A6F5D626C5D4A5143525D4F52594C4851463D50443C54
+      493A5047445950495E56425951415A51425B5149615452685F465C57425A5443
+      5C56405B5446605A49625B526B6346605A63746690988381897A646C62657160
+      737E6C7780723B45400B191522362A4B655688AFAC8EBDC5AAD1D2CFE6E4D0E5
+      E4D0E5E4CDE3E3D4E8EBC4D3D597A29CABC5C9B4BFB88179347C7F2C474C3025
+      2F2B2D392B333B2B2C302414150F0F140E0F15100B120B3A47315F654E5F654F
+      565B483C4437445040454E3F3A44393B473C556255748177616D6057654F4A59
+      352D2F18141D0D0C1D0F152F1F1E44303A62501E40302547370C200E0B150B0B
+      130B090F0D0C0E0B333A2E3F4A383C442B0B130B080F091729221931253D636A
+      5983833459471C41311E4A40184A3C2D5C56295648214842255456316062427C
+      7742829020565E39686B26574F3A615D4B685F263A2810160D14180D191F161E
+      291D202821262A1A1D2715171D180F120E1C21171D25160E15140A1516121E1E
+      131A181D231A1F2923272F2427302C6C70686A76562C38190607060A0C080C0C
+      0B1C231E1D27180D130B0E0B080F0D060B0C080B0C0B0C0F04110F0B0F0F0911
+      120B11130B13130B11130C11180C11140B11170F0F140F10140E14180D0F0F09
+      0D120C0A0F0C0A0F0C0C0F0D0D0F0D0F120B0E120F11161115191212190F1215
+      1213180D0E150C10120C10100B0E0F0A1215121013111115121215131515131C
+      271D1D24225465595460472E381E1920150F1D1121271D212719141B13101312
+      121614373C2A111711383E3C5659563E43301E26171218120C0F080E10081114
+      0A0C13090F14090B12050C0C0B100F0D0B0C050C10060B0F080B10090A0D080D
+      0F050B0D060E0F0D0D0C0C0A0A0A0A0D0909090631383133473442504041503E
+      42524733433C39453C3A4F44525F4E3C483A4C5D4E4150435462554654483D52
+      443D54424F6253495C4E3A4D3E485C5243574F4B634C41513E4A5E4F3D4D3D54
+      615744514041513F3D51414C5D4E5362523E4F434A5C48465549596A5B526054
+      4C5E514F5D504A5B4C556955495E4E475C44465C4E5263525A68544A5D48505E
+      4C4656485A6B5A586A5B495D4F56655A4A5C4A5E6D5751624A495A475462504C
+      604E576A5A516149505F4C4C5F48485A4B5A68595266514C60514B59434D5949
+      536C554D6151495C44405640485D505968545364544A5A483A493E3F4E3F5F6B
+      615769554C624F4C6552435B49606E5B55665B55655757685A4D60515C6B5858
+      6B5D5A6C584F66510000849DFD869DFF8AA1FF8EA4FF879DFD7C95FD869DFD8C
+      A1FD889EFD8AA1FD8A9FFB899EFA8DA1FC8C9FF98095F18498F28697EC8095EC
+      7D93EB8093EB8092E98192E97B8BE47688E28193EA7D8FE67386E2647DE23C55
+      DB2B45DA2239D62033D5192ACC2035CF2941CE354BD23C54D43B57CC3D5FC43F
+      5FBE4366BE4B6FC25475C55577C45B7DC86281CD6483CB698ACD5E80CA698BCF
+      6A88CD6B8ECE6487CA6685C95A7CC53C5FC13655C1324DC13751BE3750B63C5A
+      B54D6DB96580BE869BC98AA0CB89A0CB8FA3D08AA2CF8CA3CE8FA5CF879EC887
+      9CC28599BE6C85B25571A94D69A84A63A8526DAE5874B35E79B86783BF6F8BC3
+      708BC56E8AC76E8AC87591CD7592D07696D47C9AD97B99DA7692D67B96DB7E97
+      DE7993DC7995DC8199DE7E96DD7691DD7C96DF8097DE7E97DE728AD77D93DD82
+      97DD6D85D56C86D67690DA758ED9738AD9758DDA6B87D56E8AD9728BD76682D4
+      7895DF849ADC7B91D7778DD97690E07E99E98199ED7591EB7490E9728EE67593
+      E76E91E65880D86287DC708FE4728DE27892E07690E17090E46B8BE36D8EE270
+      91E36286DF6486DF6C8DE06E90E07295E17697E47091E17592E37092E2698EDE
+      7091DE6B8DDD7292E36B8DE26D8EE16C88DC738BDB728FDE7292DD708FDA7490
+      DA6687DA5B7DD86C8BDD5A7FD66081D66788DA6187DB6D90E16588DC7390DF76
+      92DE7693DF7695E26385DE6383DC7391DF6787DC6D8ADD6988DA5A7ED86785DB
+      6D89DC738EDE6988DA5B7ED45F7DD66A85D9637ED35977D05F7AD3607AD45A77
+      D25F78CF5974CD5B75CE5771CE536ED0556BCF4961CC4B64D54D68D8516ADA5B
+      76DF6685E16B89E06787DE5F80DA5275D24566CC3D5EC6324FB9203AA21F399F
+      2C46A73552AB3956AE3855AC3453A92A4A9F29469A314E9F304E9F2E4D9B304F
+      9C35549D3C5AA23B56A32F4589324F73406E60316853316A523065502C635133
+      6E573A7561366D5F366E5A3D74633C745E30735B3479633C79643B7A63377A64
+      317159488783DEF3FDF2FDFDD1E1D576998C9ABEBCBCDBDBE2F8F8D3EBEEE4F7
+      F9D4EDECDEF3F5DAF2F0DAF3F2E5F6F5D1EBEDE6F9F9D4EDEEE5F7FAD4ECEDE5
+      F7F9D8EEEEDBF4F3DCF2F1DCF3F5E5F7F5D1EDEDE7F8FAD4EBEEE8F9FAD7EDEF
+      E5F8FADAEFF1E1F6F8E5F6F5E0F6F8EAF7FAD9EEF0E9FAFAD9EFF1ECFBFDE0F2
+      F4EBFAFDE0F2F1E4F6F8E6F7F5E3F6F6EBFAFCDBF0F1EAF9F9DBF2F3EDFAFEE4
+      F3F8EDFAFDDCEEEFE3F6F8E9F6F6E4F4F8E7F7F9DDF0F4EAF8FADAEEF0EBFAFE
+      DBEFF2E8F7FBE1EFF3E3F3F9E2F1F2DEF3F4E7F4F8D8ECF0E9F8F9DAEDF1E9F9
+      FBD9EEF0E8F8FCDEF2F4E2F7FADEF2F5E2F4F9E7F7FADAEDF2E9F7FADBEFF1EB
+      FAFDDCF1F2EBFBFDDEF2F2E5F7FAE4F4F5E3F6F9E6F5F9DCF0F1E9F7FADDF1F1
+      EEFBFCE1F3F1EFFDFFE1F3F3EAF7FAE6F4F9E8F7FAE9F6F6E2F3F3EBF7FADEF3
+      F5EDFAFDE1F0F1EEFAFDE3F1F2EAF9FAE2F2F3E9F7F9E6F4F5E0F3F4EBF8FAE2
+      F4F5ECFAFBDDF0F2EBFAFDD9F2F1EAFBFDDCF2F2E6F8FAE5F4F5DEF4F5E5F7FA
+      E0F3F4E8F9FADCF1F1F0FCFEDBF2F2EAFAFBDCF2F2E6F8FBE5F5F5E3F5F5E5F6
+      F6DCF1F2EAFAFCDAF2F3ECFCFEDBF1F4E5F7FBDEF3F4E9F9FCE1F3F5E1F3F5E4
+      F4F5E3F4F6ECF9FBDDF1F1EBF9FBE0F2F2EDFBFEE1F0F1EFFAFDE4F2F4E3F4F4
+      E7F5F6E6F7F9ECF7FAE1F3F5EBF7FBDEF1F2EEF9FAE4F1F1ECFAFCE1F0F1E5F5
+      F8E4F4F5E5F6F6E7F4F5E3F3F4ECF8FADEF2F2EBF8FAE2F1F2EEFBFDDEF0F1E6
+      F5F5E6F2F4E8F6F9E5F3F3E5F3F4E9F6F8DEEFF1EDF9FADDEFF0EBF7F9E1F1F3
+      E8F7FBE4F2F5E9F7F8E5F1F4E2F4F5E8F7F6E1F3F3ECFAFCE9FAFDEAF1F3A4B8
+      B1D0E7E1B7C3C46A71696B7C6B82968991A29792A29C8C9C9384938978878181
+      978D8798938696918899938C9D9984979184969086969392A39C90A49B879897
+      899895879892869891899C978C9F9990A2A0899B9996A5A0939C8E7E7F6A8182
+      6E676E58747A6184876F616050565F573D4242303D2B779D938CBAC1B1D7D6D2
+      E7E6D1E5E6D0E4E4CDE4E2CDE3E2D8EFEBE4F7FADEF3FDCDD4CF867E39848334
+      575737232F2B2B392F303C2E2D392C151A130D140D0D140E050A06313E2A5F64
+      4F565D465659485352454A534239473C3A4C41475A4E5F6E6376877E666E665F
+      6550495030262D170F170D202824182C1C18341F1126151937241D38230B1008
+      0F0F0D0B0F08090F04100F0B2F3A2F43513B3B40230B1205080E060B0D0E0F18
+      161A2729152522303F381627230D1F1C0610141426240D221C0C1B1308181406
+      16110E2428081F24071E170B1E17081E130912131119160E190C0F160B10160B
+      11190E171F1620242120291C20281D161D15161D13111B0D171E120D130C0B0F
+      0F0D0E0D14150D1216111518182A2D22212422656F68767E5D2E38160A090A09
+      09060B0C0B161F1B171F161519152327222125271A151C1713141C1D1328241E
+      25241E2B2C252B2C1C35342A32332B36362A3B3B30393C303E403947453D4443
+      31242B121D23151B21131C2115171E141F22161A21161E241618221620201619
+      22161C23162021171A21181F261620201920221E1A1F162021152121121D230D
+      1C2316222C24161F23545D5B5B61432D381B14231111130A090D0D1B251B2B32
+      23212A2F746C5A0F0E050E12090F1B163A4A42222D190F120D09100C07060305
+      06040A0C0C080A0605090409090508090607090A080A06070B060A0B06060702
+      0807030A0905030A05040604080702080A050406060205032D37323C473B404C
+      443D513E4557432D402D37473A3A4C474B5C503C4A394B594E44524753654E46
+      594543524945564C4D60514C5E4F3E4E40495B4F4159485263543D4F444C5F52
+      3B4A3A55615347554A3E4E4143513F525D515561543C4B3F515C524254455469
+      5A51645348564A4B5C4C455A485969564C624E4A5C4A485D485163525968564F
+      5B48525F51435443576D5B5969594D5A4E5263564F5C4F5F6B5854614A4F5C4A
+      535D4A4D614F5668584D60494D5B4B515F4E495A4B5C6B5B5766524D614E495C
+      444B5D47586853556654495C443C533F4A5E5A54665952635545574546503E40
+      4E415F6E615A695751604F53635742594A5569595B69565666525769564C5F50
+      576B55596C5D596A525464540000869DFD89A1FF89A0FF90A3FF8AA0FD7D96FD
+      849BFF8AA1FD889EFD889EFD8DA2FD8EA0FA90A1FC8DA0F97E93EE8197EF8599
+      EF7D93EC7C91EB7E90E97D90E77D90E37C8EE47688E3788AE47E90E77086E25C
+      76E03C54DB263ED81E34D31D31D21729CC2134CA344AD23C54D33B5ACA3E5FC0
+      3E61BC4468BE4A6EC3466AC44A6FC65C80CB5E82CB6285CD6587CF6589D06385
+      CE6688CF698BCF6F90D47996D6668ACE698ACC547AC4486CC03C5BBE314CB635
+      50B63C5AB5536EB95975B87792C592A2CA8DA1CA8CA2CC869FCA879FCA8AA0CB
+      8698C38699BF7D92B85F76A95570AA4963A54962A6546EB05773B35A77B76785
+      BE6783BE6C88C46F8EC96F8EC97591CD7796D27999D77998D77795D57896D676
+      96DA7B97DA819BDD7D97DC859CE1829AE07B95DD7791DA8198E07E97E1748DDA
+      7B93DE7387D86A85D26783D4778EDA738EDA6F89D9738BD7738EDA6986D96782
+      D56685D76383D4647FCA748DD0758BD06D85D27891DD7E98E67793E97390E672
+      90E6728EE67491E87596EB7592EA7593E97391E77695E7728FE4708FE46F8FE4
+      698AE26C8EE26388E05B82DC7495E47697E37292E07697E47390E17392E27395
+      E46B8BDE7091DF6A8BE06C90E36C8FE46B8EE26F90E26E8DDE6D8BDE7492DF6C
+      8AD96D8BD66082D86487DB7492E16A8BDE6282DA708FDF6A89DD7492E27495E1
+      678ADD728FE07B96E16387DB6A8AE17592E47692E0728FE06988DC6685D96687
+      DB6C8BDE6A88DD6E8ADC6D88DA5C7DD5637FD76B85DA6480D65E7CD35B78D45C
+      77D5647DD46D82D46379D25C76CF627CD36078D45A74D3546CD24C66D2465ED3
+      4761D65270DE6080E26C88E16C89E26285DE5A7EDB4B73D33E61C83855C23453
+      BC2F4EB32A49AA2B49A93150AC3553AC3654AB3051A628499D2C479C2E4A9D2F
+      4E9B2F4F9A3A559D3D5AA23D57A3314B902A41722E514B365E4A2E533F244A38
+      234D3B27503B2B59422A534E2B5D4731644F396B58366954316851376D57376D
+      5934715D2C665044817DDBF7FFE3F7FBA0B4A34B6D606B9A8E79A9A298C6C188
+      B7B29CC9C28FBCB691C2BF96C2BA90BFB99ACAC18CBAB49BC8C188BAB49DCAC5
+      8DBAB7A0CAC692BFB898C5BD98C3BA92C2BEA1CFC790BEBAA3D0C993C0B8A8D3
+      CE97C4C0A5D2CA9BC6C2A0CDCBA8D1CBA3D1CFB7DED8A3D0C9B9DEDBA0CECBBB
+      E2DCABD4D0BDE2DEB1D4D0B3D9D7B6DEDAB2DADABFE4E1AAD5D5BEE2DFAAD4D3
+      BFE4E3B3DCDAC1E5E6B3D9D8B5DEDCBEE2DFBAE0E1C5E5E3B2DADAC3E7E7B1D7
+      D8C3E8E8B4DAD9C1E7E8B7DEDDBAE2E1BBDFDEB3DCDCC1E2E3AFD7D8BDE4E1AA
+      D6D6C0E5E7ADD5D3B9E2DFB1DADAB1DDDBB0D7D6B1DADABBE1DFACD6D6BCE1DC
+      A6D1CFBBE2DFAAD1CFBBE2DEAFD6D2B3DBDAB4D8D8B2DBDBBBDFDEB0D6D4BCE3
+      DEA8D6D2C1E5E0AFD8D2C3E8E7B6DCD8BEE4E1BCE1DFBEE4E2C5E7E4B7E0DDC5
+      E7E8BBE0DFCBECEAB7DEDAC9EAE8B9DFDBC3E7E4BADEDCBDE4E0BFE3DFB5DBDB
+      C0E4E3B4DDDAC0E5E1ADD7D4BEE4DFACD7D3BCE1DFB1D7D4B6DEDAB5DBD8ADD7
+      D4B7DDDAACD5D2B8DFDAA7D2CEBAE1DDABD5D2B8DEDAAFD7D4B5DEDCB2DBD9B0
+      DAD8B7DEDAA7D4CFBBE2DEACD5D4BDE3E0ACD5D4B7DFDDAFD8D6B6DEDCB5DBDA
+      B2DCD8B7DEDAB2DAD6BFE4DFAFD9D7C0E4E3B1D7D5C4E7E4B6DBD7C1E5E3BEDF
+      DDBBE0DCBFE2E1BDE1E0C8E7E4BBE1DDCDECEBBCE3E0CEECE8BFE1DECFEDECC5
+      E4E4C8E7E8CAE7E7C8E7E6CDEBEBC4E7E4D7F0EFC5E5E3D2EEEEC3E5E4D8F3F2
+      C6E4E6CAE9E9CBE7E8CEEBEDD4EBEBC9E7E6D4F0F0C8E4E4D9F3F1C8E4E3D7EE
+      EFC8E5E9D2EDF1CAE8EACDEEEBCFEAEBCCEAEBD6EFF1CBE8EAD9F5F5D5F5F5CA
+      D9DA91A8A3ADCCC1ABC7BD9EB7A9B6CDC3BED2CECEE3E1D8F0F1D5EDECD4EAEB
+      C9DEE2DCF3F2DDF1F3D9EDF0DCF0F3DCF1F2DAF0F1DDF3F2DAEEF1DBEFF1DDF2
+      F0DDF0F0E0F2F1DDF2F2DEF2F2DEF1F2DDF2F2DCF1F1E0F3F1E2F4F5CCDEE392
+      978C8889727C816E6F75607C856C7E886CC1D0C75C666F1C302391B8B389B6C0
+      AAD2CED3E9E7D2E6E6CEE4E2CFE4E2D1E5E4D4E6E4D2E8E6DAF1F8CACCC18178
+      2B73792F4C512F262D272B362B2D392E2B392E171F160E140D0D100D02050321
+      311F5E6A525C604963655070705A4B504128382E3C504446574A56685B73837A
+      636F68586349515A3823281713190911150C14180E181E0E1A1D12151E14171B
+      0F13150D14150D11130D120F0D11120E2F3734434B34383F22151D0B0B0F060D
+      120D0D0C0A0E0E06090E05080A040C0F0B0C0F090D120D0B0F06090F0811120A
+      0E100D0B0F0B0B0F0D090E0B0D140C0B0F030B130B11161114171316160F1519
+      0F171B13171B161921161F291F232D1E1D28161C24181A2116181E14171B0E15
+      1D0E1B1D1224271D1E24151B1F111D221B30342320241C6B746E6C7854313A1C
+      080C06030A09060C0C151E1B131B140F17121119160C0F0EA79BABF1E1DEE6D5
+      C4E7DCCAE3D8C6E7DAC9EADAC9E6D5BFE9D8BFE5D7C6E7D7C5E6D3C2E9D6C7EC
+      DBC7B4AB741616000B100B0C0D0B0B0F06090E0B0C0F0B0F0F0B0F0F0B110F0B
+      0F0F0C0F0F090C13060B0D060D0E060B0C06090C08090C040B0C060B0F06080C
+      03080B040D1011283525151E16555D585E66492C32171720140813080B0F0D15
+      16130F0F11545B60A6A58B565C370E130B272B29050E0B080F0D0B0D0B050A06
+      0709040809090A0C0A0B0B09070706080A0A0A0A09080C050A0C06080C090809
+      04040B08030706050908080A09080B0607070603050507070601010326302F39
+      453A414F4C3E4F43475541233A2831453E36493E465E4A3F4D3B44524A3E5142
+      5763504A59413F51444559495165564D5C493F4E3E5564514659485661553C4E
+      4255645337483A4F60534851473F50474551434F5A4A5660553E4C404A5C4948
+      554558695A53634C465C4C4D5D47435748566C58525E4B4B5C4F485A4C576453
+      5665544A5A4F4D605043544857655D586854485F4B51635E465C4B586E585562
+      534C5E4C52625153614E5C6A5352624F515B4B5461534359495C655656645B4D
+      5E51455C4F4856515C6C545A6954495B4A3D5344425F4E576A5B576257465A48
+      4253403B4D3B64715F5668575165565464524456425A6D5F57685A5365585768
+      5A465F4C546A6058665B5665575865570000879FFE88A0FE8CA2FF91A5FE89A1
+      FE8098FD7E97FE859CFD89A0FC8D9EFD8D9FFB8D9EF98EA0FD8EA1F97D8FEB7D
+      8FEB8699EE8095EB7C8FE98092EB7B8EE7788DE2788DE2788BE47587E27E90E8
+      6A7EDF5168DB3952D9233BD51E32D31B2FCE2135D02A3FCD3148CE3753C64161
+      BE486ABD466CC1486DC54D6FC55175C74A73C85177CA5C82CD5880CE5A83CE65
+      8AD36689D26187CF6589D2658AD27797D86D90D56B8AD26C8BD06081CB5276C5
+      3C5DB83650B33B56B44966B65771B7647FBC8498C68C9DC9889EC8889DC78EA0
+      CA889BC57E90BA8898BD7689B35B71A8566CA8435DA34862A8536FAF5C79B661
+      7EB96682BE6B87C16E8AC4708FCA7290CC7592CE7896D37997D47898D67B98D8
+      7C97D87C97DA8099DB859EDF7B95DB8098DD7E97DD7891DA748FDA7691DB8098
+      E18098E17B90DA768AD97287D56B87D87995DB7C93DA748DDC6680D3728AD967
+      86D75F7ED9708DDD7490DF6A86D96382D66F8EDB6D87D86481D46C88D9738DDD
+      7B95E47893E9738EE86E8AE47B97EB7D99EC7593EA7997EB7B96EA7996E97290
+      E46A8EE26589E36C8BE46C8BE16B8EE17796E77896E67591E36F90E17393E46E
+      8FE26D8FE26F8FE17B97E47999E66B8EE26F91E67B9BE87697E46787DF6383DC
+      7290DC6F8BD96986D55F81D75E7FD86689DA6D90E06488DE6A89DD708BDF6F8F
+      DF6E92E16F93E36C8EE17692E06F8FDE557CD76286DB6E8DDE7692E07490E061
+      81DA5F7ED96E88DE708BE16F8BDF6C88DA617ED76280D86A86DA6380D9617ED6
+      5977D4607AD66A7FD76C81D76B80D55A74CE5A75D0637CD5617CD7647CD86478
+      D6596ED54B64D44765D8516EDE6480E06B88E36787E05E80DF5277DA4C70D344
+      65CA3959C2324FB93350B32F4FAE2C4CAC314FAB3653AB3652A93452A72C499D
+      2A479B2B4A9B2E4E983C569B435EA23D5CA2324E962B407826474B274F3C274D
+      3A234D3A25513D2A544127533E28524429544526544027563F2A573E27554028
+      5A462C5E4B30614E25553F3E7575CBE4EABED4CFB8C4BC767F6F788E8585978D
+      899F9681978C899F9284988B849E92899C91879A9088A193819A8B8CA0968199
+      8D88A19280988C88A193849B8E859C90859C927D9A8F859F907B9589819D9074
+      9084819C927591887C998C7C92897C978F7C978C76928D7D9991729188819A93
+      6C8A847B9D90709288799C9072938670968B70968B6F92897C9D8F6B8E837599
+      8C678D81779B8D6D9584779B8F6F91856F938776998C72968B7D9D906E92877B
+      A0936D9086799E936E93887C9E97759A8F759D91759B906D958C7D9E9573938C
+      799B936D90877C9D96729286789C8F74938B70978C73968973958B7B9C907095
+      8B7C9D956B90877B9B92709086799D9173928770938974958B739689789A916E
+      918B779B90698E83789B8F6A8E81779C9172958873988C70988C73998C7B9F91
+      6C9589789D937096897EA3976E9288789D926B9387739B9172968D709789759B
+      8E6D918873988F6A9187779C90698D81759A8C6B8E836D938D668E856A91876C
+      91866A8D7F709385698D7F73968C658A8072988D6A8D816F92866B8D816E9389
+      6C9187668F8372958B658B8172968D6B8D81779A8D678D836E938C6B8E886F92
+      8C70918B6A8E8670938C658A8173978C668D85759A95658B85769B926C908570
+      968B7093896E958B6E958E668F89749B9367928878A0986A928D779E986B958E
+      759E97709B906C9A8E6F9B926D999076A0986C968D7BA49C6B968D76A2986598
+      8B77A4996C998F6D9B906E9B926E9B9279A29B6A988F76A49D6A958E7BA9A067
+      968F76A19C6C9C9570A49A709F9972A39B74A39D6FA19A7CADA76EA29C78AEAE
+      81B1AEADBDB869827C6B988889ADA2B2CBC3CBE4DECCE1E1CBE2DFD3ECEAD0E8
+      E4D0E7E8BAD5D8C9E4E3D1E7E7CCE4E2CFE7E7D2E7E6D2E6E4D4E7E8CFE6E4D0
+      E7E6D3E7E8D2E6E4D3E7E7D1E5E8D5E7EAD5E7E6D3E6E6D4E7E8D3E9E6D1E6E4
+      D8F0F2CEDEDD92928B979B898080726E715D7B8769919A8375757220242477A4
+      A28EB7BFA7CFCBD3EAE9D3E7E6D0E4E3CFE5E4D2E6E6D3E5E4D3E7E4D8EFF5CA
+      CABA9D9138808537464D2D2A38302E3B2F24322723312620271F1418140C100D
+      000101111F106069506C6C5660644F56625135433B1D2D232A3F332D443B3C56
+      4A6C8277626D665B6143565E3824351B19210D11140B1619141F2F24151E1216
+      180D13150C0E0F0B0F0F0C11130B0C120A080C0C29342A36422B313C243C462D
+      3A41272F2D1F323622282B172A2D182B302828323020322920311B2732222931
+      272330242A3729293B2C243528242826212D2420331B202C152228151E241622
+      2616222815242A16212716282C18252816222918252A192C2F1B282816282917
+      26261324241625211627291723221623221635382C3C4123181E1666716A767E
+      5E353E1D0B0B06070C03050C09171E1E1B251B121A0F1519130D0C0B08090C60
+      5C62F0DBD9E2CEB5D9D1B2D9CDACDACCAEDCC8A9DACCABDBCBAEDACAB0D7CBAB
+      D9CCAEE4D3A93135110B0E030A0E0A0B0D0A0B0D0A0A0D08090C0A0B0D0D0A0D
+      0C0F0F0B0D120911120B0E0F0B0C0E0B0B0E060B0F0A0B0E0C0B0C09090E0B0B
+      0E09070E06141614252A23242F1C14211A4B5B5362684A32391A17210F0C100A
+      080D0518190E080C035C5C5B69634F404638151E131C252217221A152116090F
+      05080A06080A05060A06080B08060506070909080909090608050B06080B0509
+      0D08080C06030905080708080A08060908080706060508070706060706050306
+      2935323341384450453C4E424856473041352D453E344C3E4F604F3F4E3B4756
+      49485347526351475A47405742445A4A4B5E544A60493C4F3B46594A4F5F5053
+      61533E53424A5F4B3C4C394F60534256433B4F404254444D5D4C536155404844
+      4D5E4E41504257695D556656485B48495E4E495A425E6B58505D47485C4F495C
+      4758664F5568564659494C5E4A4952425C635F5C6A574A60474F6552485F4857
+      6B564D6452425A49506356525F505A69594F5F504B5B4954604C4C5D45616B58
+      5965574A5D4E485E4F485E5056655A5566534C5E4C3C50424B594C5669595164
+      5741564A3E513E3A4D3D5E6F5E5A66585161515664583E51425A6B5E5B6B5952
+      6051566557495E5156685A5A6B5D576B5A5A69530000879EFF869EFF889FFE8E
+      A3FE8AA1FF819BFD7D96FD849BFE879FFD889EFD8A9FFB8D9CFA899BFB889AF5
+      8091EB7E91EA8597EB8195EA7E91E98598EC798EE67485E17B8EE47C90E4778A
+      E2798DE46B7EDF4961DA2C47D6223AD81E32D61D2FCF2E42D2364FD03E5BC840
+      63BD4466BD4C6DC25175C65377C74D75C85078C9547CC8567DCC5980D06288D2
+      638AD46289D36D90D66A8ED57090D66789D27395D77C9BD97291D5708FD46B8B
+      CF6385CC577AC64060B63754B13D5CB64D6CB85670B56983BA7E95C1899BC78C
+      9CC58E9DC38A9AC18796B98A9AB8657CAC5B77AF566DA7445B9F4862A7516DAC
+      5875B36480BC6983C16F8BC46F8DC66F8DC87491CD7592CC7996D07C97D47796
+      D67C98D7829EDC7E98DA8199DC7E9ADE819CDE7C96DB7791DC7991DA7691DA74
+      90DC7B93DE7E96DE728BDA6983D57087D57E95DE7D96DB758BD77791DE5E7DD4
+      6581D56681D67793E47795E76B88DB7B95E37896E6708FE46C8AE16C88DB738E
+      DA7591DB7793E07591E37996EA7D98ED7291E77B9AEE7898EE7998EB7592E875
+      93E76B8EE45E83E1668AE37698E77592E36B8BE26E90E47C98E77695E66C8EE0
+      7091E16C8FE46A8FE17497E47B99E47598E46B8BE36D8EE47D9DE87492E46585
+      E26B88E16483D87591DC6988D96687DA6080D86788DA6087DA5981DA6385DA74
+      91E37091E1678BE07295E67698E77291E46C8EDF527DD76287DD708FE2738FE1
+      7591E26786DC6181DB6A87DF6B87E1768FE16F8ADD6482DA5C7CD86682DA6B85
+      DB6681D95A77D45B78D6637ED9617DD76A82D66079D24F6BCD5C76D4657DD665
+      7AD86479D8667AD8586DD5415BD24360D75474DD6481E16E8AE36683E15A7CDE
+      5478DA4B71D24062C93452C03653BC3452B5304FB13753B13451AB3351AA3453
+      A92F51A52C4AA026449724429039559945619F3F5FA334519B2A40802C475F25
+      503A26553D23553C24513627503C26533D25533C284F4525523A264F3E27533C
+      27533C25513B26533E2C56431B4633487673EBF1F5E0E5DED2E2DEE7EEECEAEF
+      EFE5EDEEE1ECEBE8EFF1E2EBECDEEAE9DCE7E7DAE7E8D9E8E9D5E7E9D5E6E8DA
+      E6E4D6E5E6D0E0E1D1E2E2D0E2E2CFDFE0D4E2E3D5E5E7D3E4E4D4E3E3D4E4E2
+      D0DDDACBDBDAC5D7D8C9DAD7CCDCDBCDDCDBCFDEDFCFE0DECCDEDDCDDDDACFDB
+      D5CAD8D5CCD8D6CCD8D7CCD9DACCDBDACBDCDACEDBD9D2DDD9D3DCD9CFDAD8CF
+      DDD8D1D9D6D6DAD9CFD8D7CEDAD8CCD8D8CFD9D7CFD9D7CFD9D7CFD9D5CDD9D6
+      CCD6D7C6D4D6CAD5D4CAD4D2CDD5D3D0D5D3CDD7D2CCD7D3D0D8D8D3D7D6D1D7
+      D5CCD7D5CAD7D5D1D7D6CAD5D4CAD7D7D2DBDAD4DCDACEDAD8D2DCD9D3DBD8D0
+      D9D8CEDBD9D0DCDACEDBD9D0DCDAD3DDDCCEDDDCCED9DAD1D9D9D0DBD9CBD6D6
+      CBD7D6C6D5D5CAD8D4CED7D3CED5D4CED4D2CCD6D3CCD7D4CAD5CEC6D3CECAD2
+      CFC9D3CFCBD3CFCBD5D0C9D4D2C9D4D2CBD1CFCDD2CECCD1CDCDD2CECAD1CDCC
+      D1CECCD1CECBCFCCC8D0CBBFCCC4C2D1CBC9D1CFC8D2CFCAD4CDD0D4D0CBD2CE
+      C9D1CDC6D1CBC6CFCBC9D1CEC3CFCBC6D0CDC8D1CDC8D1CDC8D1CCC9D1CDC5D0
+      CBC9D1CACAD0CAC6D0CBC4CFC9C4CCC9C6CFCBC4CFC8C4D0C9C5CDC9C2CCC8BF
+      CBC6BFCBC5C0CDC7C4CDC9C5CDCABEC9C4C0CBC6BFC8C4BEC9C5BBC6C1BBC6C1
+      BAC3BEB9C3BEB7C3C0B5C1BABBC7C1BAC3BFB9C4BEB6C4BDB8C4BFB8BFBAB7C1
+      BCB5C1B9B6C2BAB7C2B9B6C1B5B8BFB8B7BEB8B7BFB8B5BCB6B7C0BAB7BDB6B9
+      C0B9B8BFB8BCC4BFBBC4BEB9C2BDB3BCB8B3BCB6B9C1B9B5BAB5B3BAB5AFB8AB
+      B0BAB0B0B9B1B1BAB5ADB7AEA8B7AAA7B3A9ABB2ABAAB2AAA3AEA6A2B2AA9DAB
+      A59DA8A899A8A4CFD9D5A2A9A77C8A809DB7AAD6EEEED1E7EAC8DEDDBED8D8C3
+      DDDCC0D9DAC0D6D8BED5D3D1E6E7D3E6E7D0E4E0D4E7E6D4E7E4D3E6E4D2E7E6
+      CEE6E4D2E7E7D2E6E7D2E6E3D2E7E4D6E6E8D8E7E8D2E7E4D3E7E7D4E8E8D4E8
+      E7D3E6E6D0E4E2DAF0F1C9D9D9BCC3B8B4B4A87C826F7D896FA5B09ABABEB464
+      625F567D7887B6BAA4CAC8D4EBEBD4E7E7D3E5E4D0E6E6D1E6E6D2E6E4D5E7E6
+      D9EFF8C5CAB79B953D9396404C4F2C1F2D292130262032242237281F2C210C0E
+      0A04030104040116200E3C503A304B37203C291732231836251E3B261C39261E
+      3C2C304B3A5F77695A6960575E49525C3A2A361E1D26120E180A070B0913201C
+      0E140A0E130A10120B0D0F060D0F090E0E0A0D0D0B090C0D233028333D282835
+      1C1D230E151404100F090B0E060C0F080D100A33454C466D782C574E1843351A
+      3F393F656C405F62406B684C7F77365F5E254D51203E3F1C38270B1704101305
+      10130B0F100D0E0F0B0E130A10160C13190D15190E11170F151A0E17180D1617
+      0D11140D0F14090F0F090C0F060C0C040B0D0B1113132B2B293C412419201666
+      6F69747957394123080906080B0B07090B1B211D1E251A14180D12120F110F0B
+      0B0D0F05060658505EECE0D2DED1B6E1D1B3E1D1B5DBCEB2E0D0B3DACEB5DDD1
+      B2D9CDB1F8E9C78E82500304000B1308050D0D060C0D080D0B0A0F02090D0B0C
+      0E0C0D0E060C0F050C0F060D100A0C12060B0E080A0E0B080E0A080B0B0E0F0C
+      080D08080A0B0B16122831260912051C20192728244F5954616A4B353C1C1721
+      0E0E100B0B0B06090A0612160F1518152532313C3F2F17210E050D0908191307
+      170B030A03080C0B060B09020503070708080A05060A09080B06090B06060906
+      080B040A0C06070906060709060706080909080906080906080908060A080807
+      050603032B332C36443B3F504A3A4F45485C48323D3435413C3B49444F605B45
+      5648445444464F4B506458495C4B3F52414457494D61574F5E4C3F4F3E4A5C53
+      46564A5262553C4E43506457384A3E4D5F54485744425344414F424959534D63
+      553C4D3F4D5C5240514756685B53645446594B475D504859475A6D5253614E4C
+      5F474A594958665758655A465A4A53605142524856695D5A6B54505E47566957
+      485B49596D5951644F46574451614F545F4E5B6B5552624F4D5949566253475B
+      485F68585865544A5C52465C4B495B4B576B595365564C5E4B4153434B5C4C56
+      6A585163534B5E4B404D3F3B4A3A5C71635C6B565061515668573E55475B6D5B
+      5A6B575560505769574B6350586A57586C5D58695D576955000089A0FE87A0FF
+      88A0FE8EA2FE8AA1FF849CFD7E98FC849BFE89A0FD889DFD91A5FD90A0FB8797
+      F68596F17E91EB7C91EA8295EC8195ED8196EB7B8FE47B8EE4798BE3788AE379
+      8BE4798BE47687E26A7EDF455FD82943D82139D81B2DD52136D3384FD43C59CA
+      415FBC4263B94266BF4569C14B6EC45578C75983CC5885CE567ECA577ECE5781
+      D0668AD2658BD55E89D46D93D87397D86D8FD57293D77496D7799AD97493D573
+      92D57395D56F8FD26788CD5679C63C5EB43653B04363B74666B55671B27289B9
+      8696C18E9CC28799BA889ABD7B8DB4677DA75E76A85974AA4761A2425A9D4A62
+      A55571B15976B45C78B86D89C3708AC66E8BC8708FC8708FC97793CE7D99D37B
+      97D47493D37997D788A3E0829BDC849EDE7C97DA869DDE819ADD7993DD859ADF
+      7C96DC7690DB8599DF798FD96E87DA657FD3708AD6879CE37388DB7088D9728E
+      DC6683DB6E8ADD748DDE7C92E085A0EB7595E4728DE0748FE27895E67D9AEB7C
+      99E87C9AE47793E37897E37392E46F8DE47C97EA7B9AEB7596EB7B99ED7B98EB
+      7C9AEB6F8FEA6C90E86B8FE87793E77D9BE87E9BE7748FE27996E47E9AE97395
+      E66C8BE0708FE07293E47295E47798E47797E47092E46C8FE47796E47D99E66D
+      90E6698BE37491E26787DA7692DD6487D75377D5567AD86B8ADE6588DC5E83DA
+      6388DF7292E47C99E87797E76D8EE47495E47798E76A8DE26486E1728EE37692
+      E36F8EE0748FE16E8ADE6081DC6787DE6E8AE16D8BE0738DE06C87DC5C7CD861
+      7FDA6786DB607CD85876D75B78D5617CD8657ED8657FD6697FD65E75CF526CCE
+      6079D5657AD75971D46176D6576DD4445CCF415BD44B6ADC5B7AE26785E46986
+      E36281DE5A7EDB5477D64A6DD03E60CA3757C23450B8314FB3334FB2354EAC33
+      51AB3150AA3251A7304EA628459A1530842E479246609F4461A538559D2A4388
+      2B406B224A38204F361F4D35204B301F4932214C372550372B524428543E234D
+      40214F3A255239234F34224E3526513C224C36315B4B9ABAB79AB6AA81A39590
+      B8A792BAAB85B3A67DAE9F85AFA286B4A588BAA882B6A57EB0A47CAEA374A89D
+      76A49D87B7A677AC9D75A99F78ADA278AEA379AEA778ABA67DB4AA7EB8B17DB4
+      AE82B7AB82B1A782B6AF7BB2AB84B6B084B7B37BB6B279B4B179B4B380BAB58D
+      BBB08FBAAE88BAB288BAB58CBFBD86BCB885BAB88FC3C296C6C29CC8C09EC8C2
+      90C1BE8CC2C0A5D0CAACD1C899C7C69BC7CB98C6C599C9C298C8C398C4BE9BC6
+      C09CCBC798C7C890C3C598C8C39BC9C2A8D1C9AACEC5A7CEC7A5C8C3A6C8BEAD
+      CEC4AFCBC299C4BF9ECAC3ADD1C79BC9C398C9C499C5C197C3BC9AC8C0A4C8C1
+      9BC4BE8FBDB78EBAB48FBDB88EC2BA8DC2BA91BFBC8EBFBD8FC2C098C7C396C6
+      C18ABFBE8ABDBC8EBEC092C4C298C8C293C4BE99C8C396C5C39AC6C59BC6C497
+      C7C493C5C289BCB899C8C69DCAC893C3C597C7C7A7CFC9AFD1CCB0D2CEA3C9C7
+      98C5C699C6C89DC8C6A2CAC898C4C297BFBD90BBBC90BEC28EC0C192C5C1ACCD
+      C7A2C5C2A0C7C39DC7C492C1C38DBEC087BBBC8DBABD96C2C497C4C59DC9C89D
+      C9C79EC8C7A0C9C49DCBC79DCAC996C6C692C3C49BCAC79ECECAA2CDC99CC1BE
+      98C2BE9ECCC898C4C193C3C0A1CBC9A7CFCBA2CBC89AC5C398C1C298C0BCA1C7
+      C29CC5C293C1BE92C4C18FBFBD8DBAB694BFBF9BC3C1ABC6C09EB9AF98BDB59A
+      C5C29BC4C3AACECEA1C6C79DC7CBA7CED2B5D1D0B9D1CFBAD5D7B7D8D8ACCFCC
+      B4D5D7B9DADCB4D8DBB1D4DABBDCDAC3DCD7C4DDDCC2DEDABFDBD9BEDCDFC2DE
+      DEC1DFDFBDDCDFCDE5E4CFE3DFD4E4E4D5E6E8CDE4E3D1E4E4CFDFE0CDE0DFD0
+      E4E1DDEAE9E4EBEAD8E4E2D5DFDAE3ECEBEDEFECE2E7E4D1E9EACBE4E4CDE4E3
+      CADEE0C5DBDBC3D9DAC5D8DAD0E4E3D5EBEBD6E8EAD3E7E4D6E8EAD5E9E9D5E9
+      EBD4E9EBD2E8E9D4E9E8D4E8E9D5E7E7D4E9E8D6E8E8D9EBEAD7EAEAD6E9EAD4
+      EAEBD5EAEAD7E9EAD3E6E7D0E7E8D6EFF1D4DFDFBEC2B8BFC6B9B0ACA39A9F8F
+      A4B2A2B0B2A492A2A278A5A7A8D1CDD5EAEAD2E6E6D2E6E6D1E5E4D3E6E6D5E7
+      E7D6E7E7DAF2F8C4C8B8928B3A8E953E484B2717231D1D35241F3A25223D2A1C
+      3020151D131D2C1E2A442F2A49321A3E28153C221A3E221D3C241F43281F452B
+      274F362D533E3C5E4B5E7D6B596C5E5B6149505C3A2B37181D23151F2318202C
+      1B0F14080F10090D10090B0F080F0E0B0D0C0B0B0C0A0B0C080B0C0B20292434
+      3F3030361F171B0E0F0F09080A09090A06080B09060B09080B0A173137345F58
+      375C5336636822504F335F63235D5F2661601E53562A5F66356161081206080F
+      090D100B0E0F0D100F110B0F0F0E100E11100E12140E10120D13151111160C11
+      140A12160C0B120C0F130B0D0F0B080F080E100A090B06151916343A2F383F25
+      161D19656C6875795D3B4425080C05080C040A0A06171B1918201B151B130C12
+      0B0F120C0B0B0A0B0F0D0B0C069B969AEBD6CEE1D4B8E2D3B4E1D2B4E4D2B7E3
+      D4B6DBD4B5EBDCB4CEBD8C22250B110F080D0A06080E0B0B0C090B0C0B0B0B0B
+      070C0B0D0E0C0D0C090A0F090A120B0D0F060C0C0C0C0C09080B0B0B0E0A0D0E
+      090B0D0D0C0C0B05090A22261F17190A030903181E1B24291D445749646B4E3A
+      3C231E25140B10090B0D05080D05100C0A1315133D433D50553F4B4F40010400
+      0A1E160E20170309000C0D08030C01070906060706030A04080A090A090A090B
+      05080906080C060C0B09070C0B080A09080A06090B0608090908060803060403
+      0606080708020100272D273F473C3F4C4A4452484C5C4A343F3638433C424A45
+      4D5F59425344495B4F44514B5561544559483F4F434A594B525F525063523D4E
+      3F4F6052465A4C4D61563E52484A604F3B4B3E5062574456483F524240524048
+      5C4F5164553C4B3C525F4E455642546A53536456455548515F504A5B48576856
+      546250525E5146554554655856645745594A4F61503D50425468565B6A59525F
+      4760644B4D5E4B576E55516851465E4B5064544D6354606959535F4B4D5D4952
+      61504F57455F685E5868564D61494B5D4E4A5D4A5A6A5A55655A495C50435447
+      44594C586958506554495D4A47573F3245365C6D6055695A4B62554F65544259
+      435B6D5B576A5A5163535A6957505F4F596A575B6E5F566B5E5262539769869E
+      FF89A1FE8CA2FE90A5FF889DFD8299FD7C98FD7E99FD889EFD889BFB90A3FD8E
+      A1FA8796F88697F58497EE8496EA7E91E98497EE8496EB798EE37B8EE3798DE4
+      7485E1798BE47486E07486E1697EE14860DA3048D82136D51C31D22F45D63D59
+      CD4061BD3F62B93F63BD4169C1426BC14970C4587CCA5B85CE5883CF5B83CF5A
+      82CF5880CE5A82CE5C85CF628AD5698FD67498DA7497D97799D97798D87296D7
+      7B99D87E9BD97798D77695D46E8BCE6183CB4D74C23654B03D5AB24465B34562
+      AE647CB3778DB78898BE8492B68191B4657CA85068A0667EAA566DA442599D42
+      599D5065A85871B0627DB65E79B86783BE6D88C46C89C76F8EC77491CA7695CD
+      7C9AD47898D47797D37E99D985A0DE829DDC859FDF8199DB7D95DB7C96DE7B92
+      DD7C96DE7893DC728ADA8599E07E91DA758DDA6982D6748BDA8298E27E97E66C
+      85DD6A85DA7B93E6728BE26681DB748EE1738FE26D8BE2819CE9819CEA7693E8
+      7691E97693EA7E9AEB88A2EB7393E36F8FE4829CEB7996E87897EB7493EB8099
+      EB7D99EE7796EB7092E97898EE6D92E77793E78299EA7595E66987E1728EE375
+      92E47091E47696E76F90E27495E47598E67596E47595E36D90E37899E97D9AE8
+      6487DF5980E06E90E47897E46C8BDD6D8BDA6B8BDB5A7EDA567DDB678ADE5F82
+      DB5E81DA6183DD7091E47695E77B99E6799AE87091E67495E47292E4698BE16C
+      8BE3738FE37390E2728FDE758FE06483DD6586E0738EE1708FDF728FDE6F8BDC
+      6080DA5C7DDA6783DA5E7CD95E7DDA6981DA647CD96980DA6780D86C81D87587
+      D95F77CE4F6BCE5E75D45A70D56074D6697CD75569D04359D44B64DA5975E160
+      7FE36986E46A87E36181DF5779DB5274D74F70D44365CC3757C03552B83250B3
+      334EAE3250AC324EAC3351A83051A72F4FA5142F811730803A559D46609F3C5A
+      A22C48902A3E76284D4F25573A234F3727563E276043295C422D5C412A593F28
+      5940295C4528564427533C255038214F38254D342852391C4936315E4E638873
+      597D6557876D5C86695C896A578364597F63577F625E8B6C5F8F715C8B6C5F8B
+      6C5E85665980625E886B62917160906D5F8F6B5E8F6C649774608E6D5A896B60
+      91745B8A6D5B8D6A5F8F6C5C8E6F6293756496745A8D6C5C8F715F8F7155886E
+      57856951795F58896D5B8F725F95755A8E6C568A6B5B90736298756195756092
+      7259896B517E6656856F62987C5A906E57886C5B8B7461927A548369507D6457
+      876C5B8D725C8E7662927C5C917656896F5B907661977F61987E60967D62937E
+      5F907655886D5F8D725E8E7760967865997D669A7E659A7D6295766192766598
+      7C65977862977863987A5B8E725F9073619377629176608E7161957661987860
+      937860927862967A5B8E725F92786296775E8F715E90755F91775E8F7664957C
+      6192785E92755C9175588E715E92765E90765C90745C92785F957D5E92765A8F
+      755E917C568A7353876D578D745F927D5C937A5F917C5F917C5E937C5A8D745A
+      8B745B92765990745E927561957865988060937C5B90775F907C5F8F785F9177
+      5E917756866E57897161967E60987F61987E60967E5A917A5690735A93775E92
+      785B8D725C917761987F649B83619981629881649D8360977C60957A5C957861
+      977A6A9E81679C855F967F588F76598A755B8E78568E785A927A63957859896E
+      598D765A937E5A957D588D78538572528875588F7C60927A5E91785C8E785587
+      745689745A917F5489774B80725182765789745889725E927F5C937D598E785B
+      91846096836097855A93855F9783659A846A9E8867A08969A08F6A9E90649687
+      5F9784659D8872A18D729E8C699384779F8D7BA18E91B8A8A5CDC9BAE0E2B8DE
+      DEB5D9DABCE0E1C0E4E4C0E2E3C0E4E6BDE3E2BDE3E3C0E4E6BBE0E1BCE0E4BD
+      E1E2BADEDFBCE1E2BBE1E2BCE1E1BFE4E3C1E3E3C0E3E7C2E2E3C5E4E4C6E6E6
+      C1E2E3C4E4E4C4E6E4C6E5E7C0E2E3B9DFE0BFE1E4BAE1E4B8D2CDE8EBE4DEE0
+      DD9B9C92949D8DA7B09CB0B7AA93AAA7A7D1D0CDE8E9D3E7E6D2E4E4D1E6E4D3
+      E6E6D5E5E6D6E7E8DDF3FAC1C3B68E85358A903D494F2A1A35201E4226254630
+      2E503B335640375B45335942335C402F563F2D553E2C593C2C5239284E332951
+      362952392B5A3E305E4337634C4A705D4B5F50586550535E3E2D391A0B140415
+      16141B1F1610160610100B100E0B0F0F0D0810050D1006090D09080E0B080C0D
+      2026243440303B3C24171B0E0E1009090908080706080B0B070C0B080A0A0001
+      01344A49556A653F605F1A4E481A56532F707A2A697129696F1C413D000E030B
+      120F0D15130D0F0E0B120B0B100B0F0F0D11120E0F0F0810120B0F0F0E0D120C
+      0E0F0B11100D0F0F0C0E0E0C0D0D0D0C0E0C0C0F0E0C0F0D1E23152B301C1923
+      0F3038271C271E666F6C767A635B5F3A111503030704080909141B171B211F15
+      1A0E090D0B0B120E0A0C0B080A0D0A0F06020A0B525457EBE0D6E1D4B8E0D3B4
+      DCD5B8D9D3B7F3E5C56D6E3B1415000B0F080B0F080B0F0A0C0F090E0E080A0D
+      090B0F0D0A0C090E0F090A0F080B100A090B0B0A0E0D0A0F0B0E0F0D0B0E0A08
+      0C090A0E090B0C0610100E282923161B0C060C02070604161E1B1F282247544C
+      596550373A242828160B14080B0C08080B060B0C090809090B0E0A090D081218
+      0E333E3017281808190A090B06080A06090A0408070607070608090609090508
+      0A08090906080909080A09080A06060908080B08080906070A09080706080906
+      07090605060606060602050128322F3C453B484F4A455048495B473547333846
+      3A424E4254625A44564547534C465148536556495B494253454C5B4554615156
+      614F465043515E4F47574554665142534457685539483E535F5347574741524A
+      424E434759534D625044513D525A4B4752475A6D5853694C4659484C63554457
+      445C695B4B614E485B4C465C445664515A695A4C5B4A4D5D514256475865575B
+      6853475C434C5D4F4D5E4E5B6B5D596650485B485864575361555F695752624A
+      485B48506052495741606C5F5666574F5E4C495B4A405B495B6B555264544D5E
+      50405345455749556958566552445A4842534438453A5F716258685A54655658
+      68554354475E6D5F586A554D634B576954505E4A596B58596B5D586857546155
+      0000869DFF89A0FE8EA3FE8FA2FF879BFD869CFE819BFD809AFC889DFD889BFC
+      8EA0FC8DA0FA8697F58093F18298EB8192EB7B8DE87D90E98295EB7E91E97B8E
+      E37789E17C8DE48292E67586E07286E35F76DF425BDA2F48DA2036D5263DD43B
+      55D44161C04263B94566BE486CC14970C44B76C74F79C8557FCB5780CC597FCF
+      5E85CF6086CE5A82CD517FCD5986D06288D26B8FD67498D9749AD87297D87296
+      D77097D8789BD984A0DC7D9CD97D9AD67592D56C8BCE6487CA456AB93653AB41
+      60B14566B14B69AC5E76AE7387B18490B57989AC536A9C5870A86B7FAA52659D
+      415598455A9D4A63A6506AAC5C77B5627EBA6783BE708EC56F8BC76F8DC87693
+      CB809BCF809CD37998D57793D67C97D8849EDC87A0DE869FDF849CDE8098DE80
+      99DF7B95DD7C95DF7790DB7790DA778EDB7990DC728BD76C85D5708ADA738DDC
+      788FE06585DD6D89E0768EE46D8AE46E88E26C88E46F8EE7748FE4738FE27C9A
+      E77B98E97895EB7390E77592E9819CEB7999E7728FE37D98E47E9BE97595EB75
+      93EB8098EB7E9BED7C9BF07595EB7792EB7393E96C8EE87490E97493E9698DE6
+      5779DC708EE46287E3628AE47B99E87797E46F91E3678ADD7393DF6F8FE37C99
+      E87797E65A81DF6489E46A8EE36A8DDE6C8BDB6789DB6986DB6A89E06B8BE360
+      82DE5379DA5C7DDB607FDB6688E07491E77896E77E9DE87899E87495E77393E4
+      6D8BE27091E47395E47392E47793E1758FDD6586DD6686E0738FE0708DE06B8A
+      DE6E8DDD6C8ADB617ED95E7CDA5E7CDA5E7DD9647FDA6981DB6680DA6680D966
+      80DA6C82DA6C82D7516DCC4F6ACD5E71D65B73D76D80D85E71D5445DD44C65D9
+      576FDF5C79E36485E46E8DE76D89E45B7DDF5476DC5576DA4D6FD54264CB3857
+      C03250B6314EB13453B13553AF3350A8314FA73452AA2440950A21732039853C
+      56993C5AA32F4D962B407E2C4A68296245275D3C295B3F2B5D43285B43295D43
+      285A3E2D5E452B60442D5C472F5F472E60472D5C4429553D26543E2555411B4A
+      3145745D69927A658D726992766A987C679677628A73698F77658E766A967A67
+      92776793776A967A6591745F8B71648F776D9B806C9B7E6A997D6496776A9A7A
+      6A9B7E65997D67987C6B9A7E6E9D816C9B836DA0856B9F7F6B9C806FA0846999
+      7C64977867997D6A977C6C9A7D6B9D7F73A5896B9D7A6695746E9F866FA38767
+      997D6C9D816EA3846A9A7D6A987D72A18770A1836697746A9C7D6B9D83669A7D
+      67987D6A9B816A9C816D9F856E9F8370A18569977A6796786F9F856C9D846A9C
+      816D9E8475A68C73A28776A488709F8172A58177AB8E77AB8D6EA3816AA17D6B
+      A28473A98976AA8972A48874A38B72A0886EA08472A2896E9E856A9C8173A58B
+      73A68C75A68C70A1866C9D836D9E84679B8172A2886C997E6D9E8172A2866F9E
+      836A9E836B9E806C9F806C9D816C9E806FA2816C9F816DA0816C9F816C9E846E
+      9F816D9D806C9C836698786A9A7866957867967C6B9A7D6C9B836999816D9D84
+      72A1846E9E836FA08766997D699A7C70A1866EA08670A2886B9E83699D836B9F
+      846EA3846F9F816791756C9E8373A58B73A28870A186709F876E9D836F9F836E
+      9C7E65977A6EA1836C9E806D9F8472A68976AA8B76A68B73A38572A2806FA181
+      75A68678AC8C78AC8B74A5876D9D846A98806A97806E9F856E9F8072A18474A3
+      856EA1856C9D836C9E806B9C7E67977A69987D6B9B7E709D7F6B9A7F6FA1816B
+      98776692786D99806692786692776B957A628D6F6693766FA0866EA0846A9C7E
+      6B9A7D6C9B7D6C9E7F6FA1816EA17F6DA07F72A38672A48672A3856D9F806B9E
+      7E6EA2836C9F806C9E8067997D619075659075609175698E776F8A7E6589846D
+      8F886D938B6D90896B8F866D8E85748F896F918C6D908B74938F76999270958C
+      6C8F886E8D886E908D72928D6C918C6C938F6C928F6E92916F93927096937C9F
+      9A84A6A07C9F9A7EA19C7BA29A7EA29B7B9F98769E957B9F99789D98799E96B3
+      C6BDCDD5CFC2C4BD94998998A290A6AC9AA3A9A291A9A5BDDEDBD8ECECD4E5E3
+      D3E8E4D5E7E7D6E6E7D7E9EAE0F3FAC4C7B992873586893B48542A21452C2E52
+      393A5D43325A412F573E2F543D2F543C2A5238254D332C553B2B573E29543A29
+      55382B573A28533728593D295C40346A4B446F594559455C655456643F273A21
+      0F190C121412151A0F1E21130D140D0B0D080C0E090B100B081005080F0A080C
+      0B0C0F0B1C261E3C3F2C3A3D2617200C0E1008080C05080708080706050B0808
+      0B0B080C06020A0D13231F113234315F681A5150114B55215D6B225B5A0D2015
+      08100D0E0F0E0D100C0E0F0D0C120B0B120B10120B0E100B10130D0D120A0F0F
+      08110F0D0D0F0E080D0B0C100B0B0E0A0F0F0A0F0F080D0C0A11130F2F352212
+      1B0610150D31382B1C291D66716C6E775F5E6140302D13080B00080B05111B19
+      17201B161B0F090F06080E0B090D0B080A03070A060D0E0D0B0C0B918A8FECE0
+      D8E4D2B6E5D2B7F1E5C6B6AF76070D0011170B090E06080C080C0E090B0E0508
+      0C060A0E080A0F050B0C08090D08080F040B0D0B090C0A0A0E0A0B0C0A0B0E05
+      0B0D0A0B0C0B080C0B060A0623241D1C1F140A0C09080D06090B01151F192024
+      1B444D4A616B4F31361F262A191A1B11070C00070B080B0B06080C06060A0408
+      0D06080F0D020D041C362B071008070B02070908080903070A030907060A0706
+      080B0A080706090908070A050A0909080906080A06080905060A080709080809
+      04060703080703080708080908070B0827302D3744354755474251474B5F4B32
+      443037483E3D4C4953625E47594C4757484455475162554C5A483D50424B5B4C
+      505F5658644F47523D4B5F47465A4A5265583D5341515D523C4C414C5F524657
+      433A4D3E425347495B4B5362553B4C3C4D605043513F58685452635244534852
+      5E50495548586A564A5E4E495C51465B475263545C6A58485B4A506052405041
+      5665605465524959445869554A5D4B5F6C574C6050445648546354506252586A
+      5951614C4757485566584B5B495C6A5B5A66554F5D4F4D5F51485D4E58685659
+      6459485E4B46554744544F596B5A5464564A5E4F485A47313E30677463576957
+      5165525A6A584155435A6F5A5C6B5554634C596B524D624B5668585F6E5A5B69
+      5856645600008AA1FE8CA0FE8AA1FF8CA2FE8499FD8499FE869CFD879DFC8A9E
+      FD8A9DFC8CA1FB8C9FF98797F48596EF8295EB8092EC8093EB8092E87C8FE878
+      8BE67B8DE4798EE27E8FE47E90E47B8DE47082E15A71DC4059DA2A43DA253DD9
+      3853D64163C84969BD4A6AC1476AC1476EC34971C6517CC95782CC5682CC5680
+      CA567FCB5B82CD6388D25A83CE5280CD5E88D3658BD4698DD76F95D6739AD873
+      98D8769AD8769BD87B9ED982A1DB80A0D97E9CD87B98D77493D27292CF6086C8
+      4568B63957AB3C5CAC3E5DAA3F59A3586FA67586AC6979A34B6199556CA45A71
+      A4475B983A4E9142579A4961A4536EAE5774B4607EBA6782BF728EC76B89C470
+      8EC97797D07895CF809BD77E9DD87793D47D98D9849EDC859DDC869EDD7D98DA
+      829ADE8099DE7996DD7991DF8096DD859BDD7E95DE6C87D96983D7768DDA7D95
+      E1738BDF6D87E06E8BE46A86DF768FE4728EE96B83E2708BE47592EA7D9AEA6F
+      8AE07892E46F8EE27C98EB859FF27696EB7E9AEC7C98EC7997EB7997E77D98E6
+      7D9DEB7898ED7592EB7591EB7898ED7E9AF07791EB7E98EF6E8FEB698AE97493
+      EA7D9BED6083E1597FDD658AE45B82E07796E47B98E66C8FE0678BDD6F90E273
+      92E47493E67392E47997E6809DE86F91E26489DD6B8DDC6387DD6282DA6C8AE2
+      7593E86689E1597DDE5E7FDF6483DC6B8BE07593E67B97E67C99E67999E77698
+      E87697E8708FE3728FE47392E46F90E26E8FE36F8DDF6E8DDF6386DE6989DF6C
+      8ADF6686DE6987DC6A88DA5A7DD95B7DDA5A7ADA5576D85B7AD96781DA627DDA
+      6681DA617DD9617DD77287DA677FD6526ECE576FD35B74D6647AD8576ED94660
+      D54C66D8546DDE5775E35F7FE46988E6738FE66B88E35A7CE05476DB4B70D545
+      68CD3C5DC43554BD2F4EB6304EB12E4DAE304EAC324DA8324EA93352AB152F84
+      0B1F6D243D89355099314F982C458930447C2E5C5A2C63472F634B38664F3161
+      4B2A5E462859402D5B4A335E462D5D45275F443060462F59412B5C442B5B452A
+      553E2551381D4C384575616D8F756B987A669275658B725B8169648D74668F73
+      5F8E726291776A987D6A987D6695786493775F8B716593756E9C7F6B997E6A98
+      7C67907567957A659A7C69987D64927769987F6F9D8364957566977867987A69
+      9C80699A7E6B9B7D65987A669A7D6C9B816A9C806D9E836FA08467997867987E
+      6E9F866A9C7E67997E67987E64987A649678699A806FA0836A9C7A66987F6395
+      7E6A9D83699B81659881669A806C9D836A9D846DA08873A38B6C997E67987D6D
+      9D866C9C8366987C6DA0877BB09277A98E8AAA99819E8E789B887B9F8C7CA08C
+      7EA18F8CA5978DAE9D6DA38B74A8907BAD9674AB9173A98F77AB9174A88E6EA2
+      8876AA9077AB9272A48C73A58C6A9B816B9D846FA0896C9D846B9A806FA28870
+      A388709E876F9F836A9C7E679D806DA08577A68E6F9F836B9D816EA0856B9D81
+      6FA0856D9F8369997E699A8067997F6799806A9A8167977A6290766A99846D9E
+      886EA1896A9C8366987E64967C6A9B8470A28970A28C6EA0896E9F876C9F8672
+      A48B6A9C856EA0866C9D836D9F8672A69070A38D6EA18B6E9F896D9E886D9E89
+      74A58E6E9B80639677699E806EA3866EA58666A07F6CA4836EA3856DA58578AF
+      8E85B89B7EB3987CB09770A38C679A806B9C8564907F618E786A9B816A997F6F
+      9F846E9F85699B806D9D856998816293786A9A7F6E9D846D9B8467967F67997F
+      69987C66927866967D67937D65917869957E618B73618B726A987E6E9E836E9D
+      8369977D69987E6EA08672A38972A38873A48875A68B78AA8E75A58973A38772
+      A4876E9F8470A0866C9D8469997E6B997D6DA085749E8B64897A6B897F708177
+      5B6A5D606C60586D6261776C5E71695E736963756B6E7F7463786D60776B6379
+      6E64796E63786E5B7069546B6364796F566B5E5A6D605A6E665B70695A70655C
+      746B5C766C6F837772857A667D725C75685C7466657C6E62786F5A736F6B7E76
+      5F6F6451695AB8C8BCDDE2DBBFC0B79097889AA596A5AD9CA5AE9BC8DEDADAEE
+      EFD3E4E4D3E8E4D5E7E8D5E6E6D7E8E9DEF3F8C2CBC190833788853648562D28
+      4C382E533A31573B2C52392C523C335A40315D3F2A553E2B573E28573A2C573E
+      2B563D2B563C2E593F345C46335F4A2F5F493968514264513B4B3E5B654E5360
+      3E313C25151D0B11140B0E1409171911191B160F140A0B0F060A0E0A0B0E0A0B
+      0E080D0F04100F0B20271F37412B3C442A19200B11140C090D06050B06070B0B
+      080908050708080B05080B090107080C1A2262778F43687620656816493D0B22
+      150B120C1013110D120B0A100C0F0F0B0D100D0B120B0F120B0D140B1012090D
+      15090D140B10130B0F100B090F0B0B0F090E0F0A0D0F0B0C0F0A1017142A362B
+      151B0C10120B080E0D2D322C1A201B676E69707A62535F3E383B251D200D080C
+      04141A171D251C0F180F080C090A0D0B0E0F0B090C03090B0A0A0A0A090D0B0A
+      0C0C868083F1DDD4F6E4C6C4BA84292C0D0D140B0F0C0D090C0B0B0D0C080A0B
+      0B0C060A0C09090F060B0D08080F08090F09090D0A080F06090F080D120B0B0E
+      0B0C0F0A0B0D0A0B0C0A0B0C0611180F1B1F130B0C04080C0B0A0D0C060A0A1C
+      201A1E2523464B435E684A28351820261C2126160D0E0409090508070A0B0B0A
+      040605060403080F0C08140B070F04050906090906080C03030A030806060807
+      06060A06080905090C06080B00080A090A0708080B03070B0308070806060B08
+      0A0308060908060A060A03070B02080C0B060506232B2A3B453A434F4547534E
+      505E4B3844323A493C3C51494F635D455A4949594A4455485164564D5D4C4151
+      494F5F50566257546253414E43505D554A5A4C56635445533E5665583D4C3E53
+      61544655443D4D424352434A5C4B56655240523E495D50455244576958586956
+      4553424F5F52435648566B5B51604C465D4843594250614E5F695B43574A5163
+      533D4F42566460556658465748506353505C4F5B6B5D4C5F514556435466514B
+      60535A665752614F485A4A5162514C5645596C5A5966594F5D4A51604C4C5D54
+      556959596C5D4555473F524144564A5E6A5D526452455C4C485E4B3744365F70
+      5E5B6C594D615355695D4253415A6B5B56685652634B5A6954505F5159695B5F
+      6E5856635756665400008EA4FF8CA2FF88A1FF8AA2FE8198FB8097FD879DFD86
+      9DFD829BFB8AA0FD8FA3FC8E9EF98693F28091ED8195EA8496EB8598EC8093E8
+      798BE67788E47C8FE4778BE0778AE07E92E67C8FE67585E06074DC425ADA2D43
+      D82D45D83D5AD04365BD486ABD4C6DC14D6FC44F74C7557ECB557ECB5581CA5A
+      82CC587FCC5B82CC5A81CB5F86D05F86D35E88D2698ED46A8FD46A8FD46F95D6
+      7499D8779BD87C9EDA7C9DDA7E9FDA82A1DA81A1D9809ED8819DD57997D47292
+      D3698BCC5981C14669B03753A43A57AA314C9B2E448F52659B5365984A5F9B5B
+      6FA350619933458D3448933C549B455FA34B66A95771B3607DB96682BE6E8BC4
+      6A87C37492CA7897CE7997CF82A0D8849FD87C99D5829FDA819DDC819BDC849C
+      DB7C97DB809BDD7D96DC7791DC7692DF8097DF8095DD768FDC6C85D66B85D978
+      90E08297E1758EE06A87E36F8BE4758EE47892E6738DE6617EE16D89E3728EE3
+      6B89E2768EE47E97E7728EE26481DF7490EB85A0F186A3F181A0F4809DF1829D
+      EC7995E7829EEA829EEE7998ED7E98EE819BEF829CEF7391EB708FEC6F90EF6F
+      90ED7998EC7E98EA7B9AEB5A81DF6A8DE26789E0698AE07797E47092E47799E7
+      7999E77490E36989DF7091E37897E67596E27B9BE77799E47491E06485DD5B7F
+      DA6585E06C8DE47091E46588E46A8AE36483DE6A89E07C9BEB7B9BEB7899E972
+      95E67998E97898E86E8EE27592E67792E66D8BE36285DE6788DF708BDE6385DC
+      5B82DC6386DB6C8ADD6A89DE5B81DB4871D24F71D6577AD95B7ADA6480DA607E
+      D75975D75F79D9607CD96D85DB798EDE7589D95B76D25A75D36075D85E74D757
+      6CD64861D64D66DA4D6ADE506EE25B77E46281E46D8BE77491E76383E35677DE
+      4D71D94466CE3D5FC63C5DC43959C0304FB72C4BB12E4CAC324CAA2F4DA73151
+      A929469B0B1E6F112374253F8E324E99314D96334589325172316450295E4531
+      624B3665503366512E614B295948325E4932624B2B5A43335A452C523E2C573F
+      315C462A544226533C1F4B3620503E58876F679073668E72638B735F866D5C85
+      6B698F73608F736292776C9B8164957A67987E69967A628F71608E7367937A64
+      8F726191726C9B836D9B816B9E7F6B9C7F66967C65977E6D9E816A97756E9A7D
+      6D9D7F669B7D6DA0856E9F836B9B7F679A7D6A9B806B9B7F6795786F9D846B9F
+      8167997F6C9D84699D7E669A7D6E9E8565987C65977A66987F72A3876B9D7C6A
+      9B816A9B866D9F866C9E856D9E876D9F856A9D806B9F846CA288679E846D9E85
+      6C9D856C9F856C9E8662957E6699846CA48B77A896B6C9C6CED0D0CCD0CCCBD0
+      CAD0D2CFE1E1E1D2D1CF728073384E3C3C57454969535173594C735B5F896F63
+      907459876C5F8F726C9C8170A58C73A88C70A2866DA08573A68E6CA084699B80
+      74A88D73A68B72A18B75A5896B9F816B9E836C9E8173A58C6FA4886EA18573A5
+      8973A68B6FA3886EA2866D9F856D9C846C9D85699C866DA48B659A7E6A9B8372
+      A38D73A58F70A28D6A9D8663967A5C8F7372A48B79AC9073A68D70A8906BA28C
+      6CA08870A3886A9E846CA0866C9F856BA1896DA48E6FA48D6DA1896DA38C70A5
+      8D73A58B6EA286679E8178A68D8EA99BA0B3A897AC9C8EA59690A69293A8979B
+      B2A673917E577E635E8E6E619378618E7C62917C64977F6696816B9B81679A7D
+      6E9E836DA085679B836B9C846B9C816796806799806C9C816595776B9A7F6D9F
+      866B9E8065927764907C64937A66917A69937F5F8A74618D746A977D6D9C816B
+      997F64937A6B9B8175A68C77AA8D72A68873A48976A88C78A98E76A88C73A688
+      73A6877CAA8B79A68B709F866A927A64907672A186709B845A796A627C756E88
+      80788D815B6E6159685B4D6155556B5F5A6F64576E6373887C79897E576B605A
+      7365596F63596F635E74686D837A66857D738A835E756A586B5E596E625B7164
+      5970635A6E6460766B788B806A786E5F736955695E566B615A6F6361776F6783
+      7F758E856F827C525E575C7563B7CABCDCDFD8B6BAB28F9987A4B09BA7B09CB4
+      C5BCD6EFEED5E8E9D3E7E4D5E7E8D7E7E7D6E7E9E0F3F8C1CBCB867F37898731
+      4C59322A523C2C53392C52372C543A2E59422F5A412E573B31573F2F553E2554
+      3829593E2A503B294F3A305B46315C4B2E55453159463B64533B5B4E5363635E
+      665157613F2D3A1A171D090E13060F12080B0F0B111616171F1610120A0B0D09
+      0D0D0B0C0E080C0C0C0A0C0B242422353C2D3C4428171D0614150E0A0E09080C
+      09070A03060A06080603060908070B0608070B050A060D161D7D8F9F47716602
+      190B0A13060C0F0B11130B0B0D0D08100B0D0F0C09100A1013090E100D090F0A
+      0E12090B0F0A0F120C0E140D0E10090C120D0D0F0D100E060C0F061B1B163538
+      2B141B0B0A0F040B0D0B0A0D0A2A2D2A1E27276A6D68797E643C43243636263B
+      3A2A15180B131A16191F1B11180D0709080B0C0B0B0D0B080F0A040506080A05
+      0909090B0B0B0B0B0B434A487D73521013040C1304090E0B080C0C0A0C0C080C
+      080B0E080A0C0C080C0B0B0F0A0C1004080D0B090F0A080E05090F0B0B0D0B08
+      0F08090F0A080E0A100E0A0B0C0B2826232D2F1F090D03030906090C09070C0B
+      0A0C0B1921161F271C4A524B5C644E2029161C1E122E2C1C2528160B0D050806
+      05080B06070B04030704080A06090C06070C06090A06060A0303070607090608
+      0706080708080C05080B05090B04080A08080A06080B06090C06080A0A080A08
+      080B04070708040708080A03080706090B090B0C09030402272C2A3647393E4F
+      454256494C614B3E4936424B3D435043536657485B4949595044554B52635750
+      5F4A3C4F444B5C4C515E58566157425348485753505B51546457465541495B50
+      3F4E3E525F504A59473C4D3E445640475A4F5262513F513A495B494357455B6B
+      565662504252455163554256475E6A59495D494F5B493C54425064555C635B4D
+      5A495062523C4E40586B5B5869554659475465524A5C4F5A6B594B5E51495A48
+      57685B4D5F53576B5B52614B4757485165544A594A576C595766534C5B4C4C5B
+      4B495A495B6B57566557455A4A4559433F53445E6F5A4B6455405C4B485D4932
+      4135627362576A564D625258655644573F576C61586A5D53624E5C6A5B485E4E
+      536A5B5E6E595A685654665700008A9FFE8CA2FE89A1FF8CA1FE849AFD8098FD
+      859DFD829CFD859CFD8C9FFB90A1FA90A0F98192F27488E98598EB8698E98192
+      EB8092EB8192EB798DE3778AE3798DE37B8FE27D90E4788BE37588E1697DE042
+      57D9324ADA3852D83F5FC64564B94665BE4466C1496BC44C71C65881CB5C85CE
+      577FCA5B81CC5982CD5780CB5E86CF5B86CE6088D2648DD46A8FD46990D3678F
+      D26C92D47497D5769AD579A1D97C9FD982A0DA87A3D9829FD987A2D9849FD579
+      98D67493D46F8FCC6488C75479B83B5A9B2E48953C59A520388622367F405292
+      475A9742559331438C2D428F384F9B3E55A0455FA64762AB526CB26481BA6685
+      BE6F8DC37691C77C98CD7997CD829DD3849FD57D9BD57E9BD886A0DB87A2DE81
+      9BDD829CDC829CDD7E98DC7E98DD7C93DD7C96DF7992DD8295DE6F86D96782D7
+      7289DB8096E37890E1728BDF7389E2738DE36987E26F88E36F87E46180E45C7A
+      DD6783E06C8AE4728BE27D93E1748AE1617CDA6C86E2819EEF7C98EB809CF084
+      A1F1829DEF829EEE7D98EB809AEB809DEF819BEE7E9BEF809CF07797EF6D8EEF
+      7999F47E98F1809AEC7896E77795E97390E9678BE36989DE6989E1668AE16A8F
+      E47495E67E9AE77490E35F82DA6F90E27899E76D92E47C9CE9819EE87493E373
+      8FE05B7EDA6281E06C8AE4708FE6728FE77392E97798EA6489E26C8EE4849EEC
+      7C9EEB6D93E97B9AEA7B9CE97697E77493E77493E77391E47492E36A8DE16B8A
+      E06A88DD5880D95E82DD6485DB6582DC6382DA567AD55076D55176D75375D963
+      80DC6A85DB5775D64B6AD45975D86C83DD7288DE798DDE6580D65573D36379D7
+      5A70D86073D8536AD94D69DB4D69DD4F69E05671E35C7CE66283E86F8FEB6F8E
+      E65A7FDE5477DE4B6ED8486BCF4264C83759C1304FB92F4EB42B4DAE2D4CAC2E
+      4CA9304CA73452A9203A8F0C1E6E172D7E284495304D99354B903950863C6F65
+      366B53356C543069522D66532F6956316B582F6854366B57366D593069543269
+      542D5F482B5D492E60502F61492C5E421F503B326251658B77678B7366927765
+      9175638F7564907565917467927569937D699880699B806C967A5F886B5C886F
+      6A967E69967563916F67997F699B81679A7D699B7D679B7E65957A6C9B8172A1
+      846B99786B9C7F699C7E6B9D836C9E846B9C80699A7F70A2856B9A7D5C8D726B
+      9E836E9F846C9E816C9F866C9D81619174679B816D9F85699B7F66987E72A38B
+      6D9D7F629174679980699A816799816D9C856E9E886B9D8667987E6B9E856CA1
+      876FA0896DA0896EA289699880659881669985679984679B8882ACA0DEE5E4FA
+      F8F8F1F3F1EFF1EFFCFBFDB0C2B34D745F53715F4D6B5643604A486550526F59
+      5071584F6E55517158597E616090726FA5896EA0866FA2866FA68B74A68D6D9F
+      8364997C70A28875A68C70A48C6EA1896A9B7F6CA1856EA4866EA48773A68978
+      AC8F79AD9177AC906EA4896DA0856EA18674A38D6E9F8865987D72A5896B9D86
+      6FA28B75AA8F6FA18B6C9D896A9E8664977A6A9F8472AA8C73A98C72A18B73A2
+      8E6CA28B6AA289699A8160937762998162967D649983649B84669C84679A8463
+      9B85639A836A9E8361937A588B7482B1A0D3E3E0E6E6E4E0DFDCDCDEDADDDEDA
+      F2EFEDD3D2CF455447314331364B353B523B4259443C53433E5B4655785F5073
+      5758816367987D66988064977F6A9A8466977F699B7F6E9F866B9B816A997F6B
+      9E816FA08769997F65937C65927E629078608B745E86715F857165917A6A997F
+      6A987E6D9A8472A18B77AC8E7BAE9177A88C74A68B79AD9078AC8D74A68972A3
+      8678AD8F7BAD9073A48B6EA18770A08472A18872A38F5C857443574B404F4362
+      7D73708D847C908758685D4351453C4A3E3E4C404353453F4D41697A6B747E75
+      424E4447554B49554A445347414F4264776B6B8781788F895A6D664252444857
+      4B455447404E4341504554645675867754615847554C3D4C4243524749574F58
+      6D616F8B8180988E7488834A5A5132403659715FC8D6C7D8DBD3B2B3A9949D8B
+      AFB6A39AA395AAC4BCD6EEEED6E9EAD7E8E8DAE8E8D9E8E8E4F7F8C0C9D0746E
+      3886852E48573227563D2B543B29523729523629553A2B593E2E5A3F315D442C
+      56422D59432E5E48315C4B3157472F5D492F5D493160493A6E553C735D315A4F
+      50635F5B6650576144343A23161D080F14060D0F0B0D13060B100C10160E171B
+      160A0F04080C0A0C0F060A0C060C0D0D1F2522353F2F3E432516180A11150C0F
+      100B080A06080B06060A05070A04040A040A060908090A020A080006081F2831
+      1B26190B16080B130910100B0C0F0B0F120B0C0E0D0D0C0E0A120C0C1309080E
+      0B110F0E0E0F0A0E130B0D130B070F0B110F0B0F100B0F0F0B0C0F0A0A0E0A2C
+      2F222022140912060C100A0C120A090B0A202C2C18221E696D6B767E683A4628
+      1720133C40312F2D1811140D1A1E1E131A0E020C00040A090B0C0B0A0C0A080B
+      04060906080906060A06060B090805060000000C120A0A0D080B0C09090C0A08
+      0C0B070B09080B060B0A0B0A0B0A0B0C0B0A0E050C0F050A0D0B080E0B080C0B
+      0D0E060B0D08090F080D0F08080F061A1E15282B1B0B1305090C090A0C06080C
+      0B0B0C0B040A0A141E161921164451476C73541B220B0D13091F211B2E291D17
+      1709080503080706080A090505060805060A0D06080708080709060706080609
+      0905030806080807080A0A030909040D0909080A0A080904080A06080704090B
+      05080A06080708080A060507060807080A0B090C0F08080A06010504242B2734
+      47333B514B4653505061473F493B3C4B42404C475565584B5E4E435949445648
+      526251535F4B424E47505D524F614F5766543D5040485A4B485C4E5766554253
+      484B625644523E5163534054423F4F414755494856545464513C4F3E485B5144
+      52495765595765593E56484C5C514859485C6B5D545D4C4B594A4C5C4C55665B
+      5B6A57495C45475D5240564850645E5869534559455566514C5E4B5B6C5F4C5E
+      50405441596C564F6050596B575462534D5C50516352475A4A5B6C5D5666504B
+      5C4C4C5D4B455B4C566D5D5366524357494954414957455B6C56536351505D50
+      4A5C4B2E42395B6E5F5B6A555261525A6B5B43513D5C6C565C6D585465565769
+      58505F4F5666545E6D5D596B5E5368570000889FFE8EA3FE8CA1FF899EFE869A
+      FC8197FA849AFD819AFD889CFD91A3FC8FA2FA8E9DF98092F1768BE98196EA82
+      95EB7B8EE97D91EB7C90E8798FE37588E37587E07689E07D90E47789E26E7FDF
+      6376E04057D92E46D93C57D64C6CC1496ABC4563BE4464C1486EC64B76C74975
+      C65B82CB6086CE5881CC5C83CB628ACE6088D06388D26288CF6991D4678DD26A
+      92D5648DD4678ED26E92CF7599D27C9ED67C9ED884A2D882A0D5829ED88AA3D8
+      829FD6799AD67B98D57695CE6F8EC96083C14668A0344D89405AA03249931727
+      6F3041882E4186283B812E459139519D3D55A2405BA54B64AB4F69AE4B66AE62
+      7EB96C86C07490C57C9ACC7795CD7896CE7D9BD3809DD57E9DD685A0DA89A4DD
+      86A1DD819DDC889EE0849CDE7E97DC7D97DE768FD97B93DC7D93DD798FDA6A83
+      D66980D7768EDD7D95E26F88E1738AE2778FE3748EE76683E3617ADD617EE25B
+      79DD6683E06982E06C87E16F89E06982D9748ADF6985E1758FE37992E47796EB
+      758FE8849BEE8AA6F688A5F4829CED7E9AEC7997EB7B99EC7D9CEF7E9BF17695
+      F16A8DEF7691EF859DF0819AEC7D9AEB7998EB7090E97495EA6F90E4547CDB54
+      7CDA7095E77392E47C99E87292E66186DE7091E182A0E97699E87696E77D99E4
+      7696E37692E26585DC6181E06C8EE8698AE3728FE77592E97496EB658EEB668B
+      E67593E77D9AEA7B9BEA7C9BEB7999EA7897EB7290E76B8BE4678AE36F90E374
+      93E36E90E16988E06988E16586DF5B7DDB5E7DDA627ED85171CF4C6FCE4F71D6
+      4C71D86380DD6D86DC5A77D85A77D85C78D76480DA667FDA6E83DD6B82DA5876
+      D66F83DC5C76DA5C76DA5971DA506ADB5169DB4F68DE526EE15674E45C7EE769
+      87EB7490EA6B8BE25E7FDE5478DC5070D74668CC3656BF2D4EB62C4CB22E4EB4
+      2B4BB02949A82D4AA62F4DA72F4FA71D378813287A1D3689294797344D96394E
+      92335F68376A562F61492A5E442A5F48285D47285D49326454356853336B552E
+      6A56326F5B336B572F6A5632715A38735D346B582F6B53255F4A457E6A6F987F
+      6D9577649074618F73628E735E876C668F7664907569977D69987C6A997E6D98
+      7D64896E60886D6595786E9E7F67977666967A65977D6B9D836B9E8069977865
+      92776C9E83699B7D69987A6D9E8166997E6B9C816E9F846B9D81699B806E9E85
+      6B9E836A9D806E9F836B9D806C9F8574A58C6391745A89716498816A9D846697
+      7D699B856FA08564977A65997E6C9F866D9E87699980608F786798836D9F866E
+      9F896EA08B72A38D74A48D6B9F8565998063977F699A8672A38C699D83538B74
+      A1C1B7EFF3F2ECEFEFF1F4F2DAE1DA729883679F8574A89072A58F74A58F77A9
+      927CAF9872A88C6B9B816F9C847BAA9173A89172A88D70A2876FA28B6FA38C6E
+      A3886BA1856B9F856FA58C6EA88D72AA8E74A5896FA0866EA4896FA88C70A98D
+      72A68C6FA48B73A88D75A98F70A48B70A58B6FA58B70A68C6CA288699F8574AB
+      9172A88F6EA58D70AA8F70A98F6BA2896CA185659C7D6FAA8E6EAB9072A896A5
+      CECC9EC6C386AEA0A5C1BCB5CDC9A1BDBC9BBABAA0BABCACC7C5ABC4C3AAC4C2
+      ADC3C3A2BBBAA5BFBDA0BAB798B2B18DB0A2618D78B1CCC3F4FBF9E5E7E4E7E9
+      E4E8EAE7F4F7F69BBFB15A93776C9F876591775E886C59836B53746355766057
+      7E60557F61608F7364977F699B8466987F65977E6A9B836B9D83699A806C9D85
+      6EA0866C9E846D9E846EA0866C9E846C9D8367957F5E8B75628972668F756C9B
+      806E9D856D9F8677A98C7EAE9579AE8F70A98B74A88C74A98D70AA8D6FA98970
+      AB8970AB8677AE8E7DB39975AA956AA58F72AE976CA1904D6E613C483F3B463D
+      47574A637C6C6F8A807B9087596A5F475649465549455448445348404F456376
+      6674817746544B495A4F4A5B4F48574B4250435E74686A8780768D875F736B45
+      554848594C47574B43534743524652615574837756615846554A3F4E42455448
+      49594E546B5E67887F7B958C778A84495A5144504532413865816FCEDBCBD0D3
+      CDA8ACA4979B8CA1A999929A8DB9D0C7DCF3F0DAEAE9DAE7E8D9E9E9E2F6F4C9
+      D3DF635A3876742848572F27513B2A553D27543928533929533C295C4133634E
+      386251305D4B2E5B47315E4A335F4F33614A3B73563F7D60427F63438164417C
+      5F3E71624A685D606953565F442E3624151E0C0D130B11130B0C0F0B0B120D08
+      0D0A10120D201D1811120B080D0A090D0A0F0D0D1E201F383C343C472A151B04
+      100F0D10160C080C03080C06080906040908090708080909080908080A0A080C
+      0A060C0B0A0F0B0D130A09100D0D120A0D0F0B0E100B0F100B0F100C0B0D0D0B
+      0F0A0C120A0E130C0F100B0E120B1012080D120B0C120B080F060E0F0B13160D
+      2F2F231E2215070E030A0F060B0E0B0C0D0B090D0A1B25241E212A666E6C7881
+      653E4C280B0E05191E19333524272818172217151A0F060904070A080A0B0B0B
+      0E080A0D04080706080909080908080908080C0B090D0B0C0C0B0B0C06090C0B
+      080C0B0B0C0A090C0A0B0C09090E09090C0B090E060A0E0A0B0F080D1009090D
+      0A0E0F0B0A0D0D0B0E090B0F080B12060F170B292F1D0D0E030B0D060B0C0B07
+      0C05070B0A080B0A060D0B1519161B21173C4A49616C4E2A2C0B080B060F120E
+      24291A232715050600050605080C03090B05090A050807080807090807040706
+      02040906060C06080903080A09060A06090909060708060706080B0608060608
+      0908070906080C05050A080709060806060B0B0A0B0E08080C04080B06040505
+      1D25223145393C534F4253474B5F5038493C3B4A403F4E425963574C5B504A5D
+      4A46564553655B515E50435042495B53506155586455424D3D5168504C5E4F57
+      6458485547525D503B4C3C4C5D504856453F51423D534748594B50604F475244
+      4C5C4C4054475166575365574154455968514656455969574D5B52485A484554
+      424D62545464584B594F5666554054475666575B6959445B4457664E475B4A59
+      6A584A5E4E405B4B4A64554D60505C655557625147594C546654475749606E55
+      596B524A5A4C4C5F534F5C54576A565369544756474D5C4A4153425A6B5F5365
+      504B5D49495D4F2F4335586E5E576C545262515568543F4F425F6A5F5A6C6057
+      695B57695A4D614E5766545B6E5D55695A586A5A0000879DFF8EA3FE91A3FF86
+      9AFD8498FC879CFA849BFC8199FC879DFB90A4FD8FA3FA8E9CF88191EE7D91E8
+      7E92E88192EB788BE97388E67589E47D91E67C8FE47689E1778AE07C8DE47D8F
+      E67085E35C74DF3E59DB2F46D7425ECF516EBF506EBF4869C0496EC25279C852
+      7DCA527DC95A7FCA6488CD628ACE5A82CA658ACD698DD3668DD36088CE6A8FD4
+      6B91D36D92D36791D3628ACD678FCE7395D07D9CD07B9DD482A2D5809ED2819E
+      D586A2D6849FD77E9CD57C9BD37B9AD37B99CE6D8DC46280B5516FA342609C40
+      5A9F20357C172872253A8632478E3B50984159A44661AA4965AB4F6BAE5570B2
+      5875B45671B56985C1728DC47D98CB7695CB7997CE7E9AD37C99D4819CD788A2
+      DA89A6DE809BDA819BDB899FE0879DDD748FD77992DD708DDA7792DC7891DC6E
+      87D75F7DD06683D97B92DF768DDE6B87DF6F8BE46B87E1708AE46B86E46079DF
+      5F7CDD7289E16B88E6627EDE6981DF6987E26682DE6780DB647FDE6A88E06F87
+      DA708DE2758FE87891E97C99EE87A2F587A2F287A2EF819DEB7B98EB7E9CEF82
+      9EF17997F17495F07792ED7895EC819CEE7D9BEC7E9BEB7D98EB7B9AEA7999EA
+      5981DF557DDF7D9DEA819EEB7497E77295E77293E77596E4819EE9769AE87496
+      E7819BE47B98E37492E65B81DE577CDC6488E46688E6708EE77796EA6F92EA6C
+      93EC6C92EC7091E87B98EA819CEB7D9DEB809CEC7997EA6C8EE66A8BE4668AE4
+      6A8DE06F90E17492E27391E37390E36D8BE26786E06683DE607FDA5471D24C6D
+      CD5275D55679DA6582DE6B82DC5977D86580DA6681DA607EDA6783DC6680DB67
+      80DC627CDA6E85E2627CDC5A74DB5E77DD506CDB5069DB4D65DE4D69E05371E4
+      5A7AE76381EA6B89EB728FE86A89E06182E05578DA4769CE3756C0304FB62C4E
+      B32C4DB62A4AB32949AF2C4BAA2C4AA7304DA92D4AA5233F921F3989203A8E30
+      4C993C549A33557327573E28593E22523A204D32214C2F204B31214B351F4D30
+      235135224F3827503A2B553D26543C2A59412B5D462E60502E624E2E644B2B5E
+      49497A666C998067927263896E6289715E866E6187716690745F886E66927869
+      9D806B9B7C658D72628B715F8B7365937D6D9A7A66937369997E6C9C856D9F81
+      699C7C63937869967C6A9A7E6595766A997C699B7F6A9D806EA0856C9F81679C
+      816B9C846FA1856C9F8470A18666977A6393786EA388699E805E917561957C6B
+      9D83699C83679C876A9E846A9B7F699D81699C8567988067988066977F6C9E86
+      6CA1876BA0876C9F8772A68D7BAC9070A0876C9F87699B81679A806EA38B6C9D
+      8760957F6FA592C5D7CFD3D8D6D5DCD8A4BDAC61967C6EA28976A88E70A88F70
+      A88F74AC9577AF9879B49878AF9CA2C8C4B8CFCEB0C4C2A7C0B9B2C7C3A5BEBC
+      A3BDBCA1BAB7A2BCB99DB9B39CBBB49DBDB89ABCB5A6C1BEA4BCBC9EBAB7A1BC
+      B99EBAB79BB9B59CBAB59EBCB8A4C0BDA5BFBD9CBAB69BBAB599B8B294B4AE98
+      B6B198B6B197B3B098B6AF9CBAB496B4AE92AFA892B0A999B7B191B3B091B7B2
+      90B8B5BAD9E0CCE8E7C4E4D6E8F7F6F4FEFFE9F7FDE4F5F8E8F7FDEEFBFFF3FE
+      FFF1FBFEF8FFFFF2FBFEF6FFFFEDF8FDEBF8FDD5F2E45B745D243B2CCFE4DCE3
+      EAE7DAE2DBEBF0EBB9C1B94165524D83655E937660987D669D86649C88649E85
+      6FA88C70A88D6BA2886AA0876EA2896EA2876A9F83669A8166998064987C699A
+      806D9F866E9F8772A28C6FA1876B9E846FA3876B9E836A98816C98846B9A8370
+      A2886FA18973A58B75AA8C74AD8E74AA8F74A88C85AD9793B29D8FAC9585A28D
+      89A5918FAC9296AD9991AE9A699A7F639E856FA895618B7F425A4E3A453B3E4E
+      423F504542554860796A708A807B8F875C6B6147574A40514543544746544A41
+      4F4564766577827A46534B47594E4A5B4F47564B4451445E75686B8781728B84
+      5B716A45534648594C46574B4354484351454F5E5275857A5663584554483E4E
+      43455348495A4C51685869857D78918B73888147574E44524643534634463B74
+      907DE1EBDFF9F7F8B2B2B19BA493A8AFA29CA496C2D8CEDCF1EFDAE7EBD7E8E8
+      DDF3EFD7E3EF665D4756531147592B2E5A4126533C2A593E2C5A42315C47325F
+      4A2E5B4733614B32604A386B553C755B3F7C603D785D3C785D3F836640806647
+      856B4685693E7A6149665E5C6351576341313A1A19220D10130C0B100C0D0F0E
+      080D0B090C0D0C0F0A17140D1C1E170E12080B0D06090C0A202424333A313F4A
+      2C0C16060B0F0D0E150B0A0F09080A04070A090407060609060707060807080A
+      0A090E0F0D0B0E0E090F0D0E0F0B08120B0D0F0C0E0F0D0E100B090F0C080F0A
+      10100D080C0B0B130E0E0F0B0C0F0C0E0F0B0F0F0D110E0D0F120D0D0F0B0C12
+      0F3A3A2F292B16080C05080F0C080E06100C060D0C0D080A0A1D2825161B215F
+      6B687C8366424D300C0D06010404232422383D26242C1A10180D080C04080606
+      0809060B0B060A0F0A050A05080903080C04090A09060C05090C0A080C0B080B
+      06060C060A0B0B080B0B070C0B070906080D08070C0B0A0C0A090D0A0B0F0A0B
+      0C090D0F0B080D06090F09040D09080F06161B1630301F15160C0B0D0B0E0D0D
+      0B0E0A0A0E050B0E080B0D0B0B0B0B171E1619281634433C626E4E3131130709
+      000A0B080B0D0B26251D171A09080703070908080B0B06090603070604060508
+      0704080509060A01070608080A05090A030A0906090906070A08080906080606
+      090D03060B05080A06080A05080705080908050A080C0F0B0A0C080806060809
+      080305001F292335473D42524A475547515D4E3D4C3B3E4C3E404F3E5766574D
+      5E4E4A574A455749566555525F523F5144475B4E536354586A553D4F3E4B5D4F
+      505E505868544D59484D5B504854445563554656473F524441554846594A5463
+      55405143465B4E445448546A5B5566574154434F6355435A48556B5A545E5247
+      5B4C44564A5363555A685E4D5F545162533E53435066565866584B5A4951604C
+      485B4A586C604D60483E5641556A55505F535C6C5D516253485C5053654C495B
+      47596E5E5968564B5C4E455E4846594F5666585666554859474451423C4F475C
+      6A5D55684E4A59474A5D503041355C7060556A56485F52576C5A3C4D3A57695B
+      606E6057655A5969594B5E4E576A5B5B6E6055695D5568590000879CFF8DA3FE
+      90A4FF869BFD829AFB879FFC869EFB859CFB889EFB8AA0FA8FA2FA8D9DF68293
+      EC7D90E98195EA8496E98295EA798DE8778AE67C8FE4798DE47689E37D91E474
+      86E1788AE67487E45E74DD3F56D93952D94C6BC7536FBC506EC05271C35277C7
+      4D7AC9547FCA5B83CC5C83CC678BCF6B92CF6088CD5E83CD668ACF638ACF638D
+      D25E86CF698FD36991D06D93D2638DCE628ACA698EC97798C9799BCB84A2D486
+      A2D2819FD387A3D788A3D784A0D4809CD481A0D8819FD4799ACB6D8FBD51719D
+      52749F5475A938529321337E31448D34499141599D4963A6506BAC526DB05470
+      B25C78B76C88BE6080B96281BE6A86C27390C97B98CE7697CD7793CE819CD582
+      9ED7849FD882A0DA85A0DC819ADA869EDE849BDE7693DB7490DA7B95E07791DC
+      748EDA6A85D65F7AD06A87DB7C93E0778EE06D82DA637FDC6B87E06D85DF637C
+      E06A81E46D89E67289E66C88E76581E16A82E3728DE77088E2647CDC627ADE66
+      81E06C85DB6E86DB7288E07690E4748DE4829BEF8AA8F487A3EF86A0EF829CEF
+      819DEE7796EB7997EF809CF27E9DF17C9AEF7B97ED7B9AEB819BEB7E9AEB7595
+      E87896EB7091E9648BE67899E98AA2EB7799E97597E7779AE97497E7819FEB79
+      9CE97B9CE8809CE67798E47897E85C85DE5178DA6586E66D8EEA6B8BE76C90E9
+      7898EC7999ED7295ED7597EC7C9BEC7597EC7798EB7B9AEB7898E97293E76B90
+      E66A8DE66A8BE47090E47491E47491E47691E47691E6738EE26F89E06B88DE66
+      85DA5070D24C6ED45B7DDB6982DD6180DD5B7CDC6982DD768DE0627EDB647FDD
+      6D86DF7289E0637DDD5F79DF647DE06078DE647CDF556FDE4C65DC4962DD4B68
+      DE526EE25774E45C7CE76385EB6C88E96A89E66686E15B7EDD4F71D63D5FC835
+      53BE2F50B82A4CB52B4AB42E4DB42F4FB12B4AAB2D49A82D4AA82B49A4264397
+      203C8D2A47983F5A9F3A5D7D25593C27573E25513E234B37214E34255238224D
+      3420483020452D1E472F20493420472F1D482B234C34244C37264D391D443021
+      4D36284A362246374F796B759C8360856A5E866C638E74679175668E735C8369
+      618B7366987E67997D69957A69977C66967D66957E6E9C836C997C6695786697
+      7C679A7E6A9E816B9E8166987C699A7E65977A6695776B9C7D679B7D6C9D836C
+      9C7F669B7E699C816D9D836B9D836D9F846B9B8065977A659B8061967C64987D
+      679B81699D8564977E669B836DA186679B7E6B9D846799815E937A659A836297
+      7E6A9A83699B846A9C836A9C7F73A68D76AC8F6FA48976A68E72A08664957667
+      9B81659C84669B80669F869CB3A5B4BBAFB0BAAC89AA9162A2866AA48B6EA58C
+      6DA88F66A3896AAB9072AD956BAA917CB7A8C8E7EDECF7FDF0F8FCE0EEF0ECF6
+      FAE8F2F5E6F4F6E6F1F4ECF6F9E6F3F4E5F3F4ECF6FAE7F5F9E6F4F8EBF5F9E7
+      F2F4E7F3F6E8F3F6E6F2F5E8F3F5E7F3F5ECF5FAE8F2F5E7F1F4E7F0F4E9F3F6
+      E5F0F2E6F1F4E1EDF0E6F1F3E3F0F1E6F3F5DCECEFE2EEF0DBEAECE7F2F9DDEB
+      EEE8F3F5E0F0F2F1F8F8E8F7F1CAE9DAE4F6F4EBFAFCEBF9FAE6F6F5E0F4F5EB
+      FAFAEEFBFDEFFBFAF1FDFBEFFCFAF1FEFBF0FCFCF6FFFFDAF3E7566C54030B02
+      759385E1EAE6C6CDC2E1E6E0738171172716334932374E373B573E405F484364
+      4F4B7558507C5F527F635C8D6E5F91735E937660977A5E9576609577649A7F65
+      9E816BA4876EA88C72A98E70A98E6CA68B679F816EA18572A48970A48C6DA48B
+      6CA68C6AA48969A0856BA3866BA38569A38766A38585B39FC1D6D2E2E5E2E2E0
+      DBD5D7CFD6D8D3E1E0D9E7E6E466756A2B3F2A3B5140677F6F5E68613E4A3E44
+      50444152463C4F433C5245587468708B7F7C92865F6D614655493D4E41415145
+      42534640514560746278837C48534B45574A495A4E46554B4051445A6F627087
+      8177908661756B47544A4555484555494151454252464A5C506B7C6F55625743
+      53483C4D44425147445446495D4E647A6F7891896F877F4353493E4C41465749
+      4151453A4D40A0B7A4D4DFD98895926D7D6AB2BCA9ABAE9CA4AF9DCFE4E0DEF1
+      F2D9E8E9DDEFECDEEDF372706D4C4822435A3D2A5C422D5D43325F4C35614F38
+      614E39614F35614B35654F396C5440785E417E6042816342826344866645886D
+      46896F3F7D643D785F3A6B5142554A5F655058633E303A1920261113170B0F0F
+      0B0C0F0D0D0F0D0B100A0C0D0A0B0D050F0D0B15191114150D0B0E041E212432
+      3B2A3F472C161B0D080B0610120F0B130E0A0B08080A0405090A060909080B06
+      080A0A100F0B0F130A0E100E0E0F0D080E0D0D100D090F0C090F0C0E100B0E0F
+      0B0D100A0B0D0B0D0F0D0F0F0F0D130B0F120B0D100E0F130C10140A0E120C10
+      140F2C32251A24121115090E0E0C0B0D0B0B0E0C0C0E0C0C0E0B0B0D0B192321
+      131E1E626C697C826942502F0A0F06060A0511130F34362C333324161B0D070D
+      04070603080B0A080B060B0E06080A05070906070A0A0B0C050B0C05080A0A09
+      0C09080B0A080E0B080C0A080C0B080B0C090C09090D0C080C0B080A0A0A0D08
+      0B0C0B080D0C080B0A080D090B100A0B0C0B111412212216110F060F0F080E0F
+      0B0D0F090D0F0B0F0F0C0C0D0B030B080A0E0318211F1E272939434062685225
+      3316030604030A08010606161A162A2A16111006080A030A0C0A0B0706060502
+      080906030606080706080A02040603080908080C05080A01060A05080A080805
+      06080706040703070B04080A030807030807060807050F130D0B0C0606090107
+      0704070B060605062027213A483A465347475548505D52424D3E3C4F3E3D4F41
+      57685B4B5F5048524F44574C5565594D604F4152414F5F4B4A61595F69563E4D
+      3E495E514A5A4F5C66564A5A444C5657445245525F524B5C44425047425B4449
+      5D4E526251405143445B474254475366575268594155484D624E425744536D58
+      4D5E47495A4A4455475162545866585160505264583B4E3F59645B5A695A4F5C
+      4A51604C475B4F5A6A584F5F4F4356495464584B5F50586C5F54635547574B52
+      6557465C4C586A5B5466515063504F6252475D48556A57536653485649455649
+      3B4E3E5A6C5D536454475D4A4B604B3143365B6C615266544C634E536A584351
+      425A695D566A5A586956566C5449624B5568595C6D5D5768575768580000859B
+      FE89A1FF8AA1FE869CFD8199FA849CFD829AFB869CFA889DFB8DA0FA8EA0FA89
+      9BF58495EC7D90E87E93E98296EA899BED8798EC8091E97E91E67587E47689E3
+      8196E97588E27282E17688E45F71DD435BDA3D5CD64B6DC65271BF4B6CC15275
+      C65379C9547CCB537FC85A81CC6289CD6C8FCE6C91CF6B90CF6389CD618ACE5E
+      88CE618AD0638DD06189D2618BD06C90D36D91CF6289C86288C25C7DAE6686B2
+      84A2D288A3D2859FD087A1D686A3D686A5D686A4DA85A4D884A2D587A5D57295
+      C25879A46987AB607FAA405D952B42882F4589374B8F465C9D566DA85771AF55
+      71B15875B5617CBC6985BD7492C36E8DC36C88C26F8EC67895CB7998CE7995CE
+      88A1D685A0D785A1DA869FDB88A0DC7E9ADB869DDC7D97DB7996DE708BD97C92
+      DC7E93DB728AD9627FD55E7AD46E87DC768EDD7288DC677AD7647CDA7086DC73
+      87E06D83E46C86E4748BE6768BE66F88E37B92E97490EA7289E67488E36F87E4
+      6787E46783E16D87E16B82DD6983DA748DE2778FE47791E78AA6F387A2F187A1
+      F17C99EB829FEE809DEF7C97ED809AED7D9AEE7C9AED7C9BEE7B99EC7797EB78
+      99EB7896E97393E76A8FE86B91E97493E7879FEA849FEB7B9CEA7799E77496E7
+      7496E67698E782A0EB809CE97598E77E9BE87597E7547FDE5B80E26C8DE86D90
+      E96F90EB7693EB7896EB7096EB6F96ED7B98EE7B99ED7596EB7795EA7696E975
+      96E86C90E6678AE46489E46F8FE47B93E77592E4748FE4748FE7738FE4778FE3
+      7C93E47B93E25C78D74B6DD46280DB6782DC6180DD617FDF6983E0798FE36E88
+      DF5F7CDC6985DE748DE16C86E25E7AE0647DE2647DE1697EE15A74DF4B64DC44
+      60DC4963DD4D69DF516DE35A77E65E7EE76180E96583E86381E05B7CDD5578DB
+      456BD0395BC53554BE3251B82D4BB22949B0294AB12949B02A48AC2E4CA82A48
+      A326449C2645982441933E56A24363912A5F45265F41275C46285D4A21573E21
+      553B26563F264B3B214430244730264A352046331E472E214A3A214935244939
+      1E402E1C422B20452D224635224B3D598877709A8163876B608A6D69977A6795
+      7A64937767967A6B997C6A9B7D659A7A66987A6A977A6C9A7F6B9B806C9D8169
+      9A7E64977A64987C66987C699C7F6A9D806DA0846C9E836B9D7F67997C6A9980
+      6FA0866C9C7E63917365987C65997D669A7E65997F6A9D8163977A659A80699B
+      81649377679B81699D8563967C65977E67997F6B9D806A9C7F66997F6397806D
+      A0886A9C8367977E679A806D9F8772A4896DA2866DA68D6DA88E7EAF9AA7C2BC
+      BACEC9B2CBC5B0CFC7ADCAC3A7C7BFA7BCB3ADB8ABAFBAAFB1C6C0AFD1CAACD1
+      CBB1CFCBADCFCAAFD0CCACCFCAB1D1CCAFD2CCC1DFDAE0F4F6EBF8FBEBF7F9E1
+      F0F1EAF7F8E8F4F5E7F7F8E7F4F5ECF7F9E9F7F8E9F8F9EDF8FAEBF8F9EAF7F8
+      EDF9FAEBF7F8EBF7F9EDF9FBECF8FAECF8FAEBF8FBF0FAFCEBF7F8EDF8FAEBF7
+      F9EBFAFBEAF9FAEDFAFCE9F7F9EFFDFDECFAFCEDFAFDE9F8FAECFAFBE9F8F9F0
+      FCFFEBFAFBF2FFFFECFDFFFDFFFFE2F6EFC5E5D7EBF7F9F2FDFFF1FBFBECF8F9
+      EAF7F9F0FBFAF0FBFDF1FBFCF2FDFCF0FBFBF1FCFAF2FDFDF8FFFFD5EDE1546C
+      561219104B6454CFDDD4D0D4CBE2E4DD7E887A2A382743554148574349574249
+      55424755434657444B5C474C5E49526550556B5552685459705D617963647E6A
+      6786716C8F767397807B9D88809F8F7EA19288AC9D93B1A796B0A69AB6AA97B3
+      A98EAEA38EACA28DAB9F8DAE9F8FAFA08CAC9D87A6998DAA9B82A096BFD2CCED
+      F3F1E8ECEBE5E8E7E7ECEAF0F3F1C9D2CD79938C5B6F66323F335F6C5F5A645D
+      3A493D384B3E384A3E39493E37483C455B4E647A6C768A7E5463563E4C3F3A47
+      3C3B473D3A4A3D37473D5468576F7E733E4D423A4B40404F433D4D403B4A3E48
+      5C5061776E738B7F5A6E64455449404F433F4D413C4A3E3C4A3E425245617063
+      4F594F3A473C36453A3B4A3E3C4C3F3D5043526A5B708B806D80773E4D433A48
+      3D3D4D404150433D4A4037473D778D7D9BA69D646F667D8E76B6BFB1B1B1A4B1
+      BAAFCEE5E1E1EFF0DDEDEBE1F0F46A71774349394C66523D745941785F3E735F
+      3E735D40715A3C6C563A6953406F5843765E417E60478869457F653D775E3F78
+      5D3A6D54386B52396D553C71563663493E4D436560535B63412E361621250D15
+      180D0F120D0F10090A0C060B0D0B0C0C0C0B0C060B0D060D0E0E151816111511
+      20221C313A243D4B2E141D060B0C0911121110100C0E0E0B080C050807080507
+      08080C080F100C11130D0B0F090E10090C10090C0E0D0E0F0B0B100A0B0F0C0F
+      0F0B0D100B0E0F0B0B0F080B0F0E0C0F0D10130A08120A0E140D110F080F140B
+      12170D413D321F2212080F0C0B0F0D0D0F090A0E0D090E0B0E0E0B0B0F080A0D
+      09171E1D1D212B60686A7E82654B52320B1006090D0D0B0C0B1414122E352428
+      2A16080900090A08070704060A05080C0B0C0D06090B04080A06070A09050B09
+      060A060A0A0B080E08060909090B0B080B0A0A09080B0A0B080C0B070B090B0D
+      08080C09080D0B090B0A080E060B0D0A090F0B15180E25251C1012060E0E080C
+      0E090D150B0E100B0F100D110F0E0F130C090F09090F0A1B2924202B1F3D463C
+      606C51303A1C070903080C09090A06080A062A2821212416030903080B06060B
+      0A0A0C0C0B0F080A0D0A0B0C040B0A0A0A0C0B080B06080C06090C060C0C050A
+      0E090C0C0C0A0D0C0A0E0B0B0E0A0A0E0A0E0F0B080C0A0B100C0C0D08080706
+      070602030705070909070A091B272435463940514A46574F51604E3D4F3F3E4F
+      41404F445462614B5F534F545247564C56685D52624E42524854605351625958
+      6957415140495C4B48594C5C685A4D5A4C4C5B4E4B53495562534C5A43405247
+      42574B4D5B4B53644F435345465B4A4554485866585964574252455165534456
+      485B69604D5C4B485B494255455463555E6E584C614E5266533E534750635858
+      6A594D5E4A4C5E4B455C49596C5D50615344564A54655854614E5B6A5D526350
+      475750536459485A4C5B6E5B5C69594A5A4A52614E46594B5E6C5D5461524955
+      484655483B4E3F5A6C58576655465949536253324034586C605B685A4F604E58
+      6C5F3C4F3F59695A5B6C5B596B57596A554D614F576855606E5B566651526659
+      0000859BFF87A0FE88A1FE829AFD8199FB829AFB849AFA889EFA8C9FFA90A2FA
+      8E9FFA889BF67991EB798FEA8195EA8092EB8597F1889AEE7D90E7788BE47C8F
+      E97C8EE78193E7798DE67282E27989E76578E0465EDB405BD24B6CC25171C251
+      70C65177C75178C8527CCA527DC95B81C96589CC6489CA6689CA6187CB648DCD
+      638DCF608BD0638DCF658FD06089CD658BCE628BCE6C8FCC698EC86489C24A6B
+      9C597AA684A1CF829FCD819DCC87A2D486A0D68AA5DA8CA9DB89A9DA88A8DA87
+      A4D77C9DCC7493C17B97C16687B13955882F48872F48883448883F5497586FA9
+      5E77B25877B45F7DB96180BC6381BA6D89C27291C5728EC5738FC87290C87796
+      CC7997CE879ED48CA3D989A4D985A0DB829DDA7C98DA7E9BDA7E99DA7891DA78
+      90DB768DD97891DB728AD95775D05C7EDA708BDD6F88DA677DD75A74D47289DE
+      7588DE7287E16C82E1788DE4758DE06D89E2708DE36F88E37690E9748EE66E87
+      E76D88E96B89E86E89E46D86E26381DE6381DC7691E37692E4768EE47B95EB82
+      9EF089A5F187A3EF809CED819CEE809AEB849CED7998ED7898EB7999EB829DEE
+      6A8FEA6D8FEB7B99EB799AEA6E92EA6D8FE97695E97896E96F95E77595EA7E9B
+      E87E9CE97799E77499E8829FEB829FEB799AE77C99E67395E75F88E16185E363
+      86E6668BEA7293EC7798ED7292EC7493EC7596ED7696EB7896EB7C9CEC7496EA
+      6F91EA7593E97092E86C90E7678AE4698AE47590E77D98EA7391E46F8EE47591
+      E47891E48195E88195E66D86DC5274D75C78DA6A85DD6983DF6282E26483E16B
+      86E0758EE16582DE5A7DDE728AE1788DE45C7AE05C7AE16580E2647FE25E7AE2
+      516EDF4561DB455EDB4863DE4C68DF526FE25878E45E7FE85E7DE75E79E25C78
+      DD5778DB4B70D64065CC3A5CC33755BE3150B52C4AB02948AF2B49B02B4BAE2F
+      4FAC2E4CA827469D2B489D244297334F9D4564982A614A276141225D3E225E42
+      245C3F25553B25573E22533D25523B28523730574228513E244833264A3D244C
+      38244B3C22473A20462F1E452C20493019442A1E49354C816C709C8762896E60
+      896C69977C679B7F63957866957765987C63977865967A6A987E6B9C7F679B7E
+      6B9F836D9F856B9D836EA18772A3856192725B8B726EA18874A88B70A4876B9E
+      846B9E866EA2876DA385679A7E66987F6A9F836B9F80699B81699C85699D856C
+      A08365987A61937861957C62967D6A9F84639880629780639A815A91765E937A
+      69A08B6BA3896EA68D72A98F6FA68D6DA58D6EA8916EA58C6A9D87609984669D
+      8FA4C9CFF2FCFDEFFCFDF1FDFDE2E9EBACBAB2A7B6AB9EAC9DA8B2A5B2BBB3BD
+      C9C9E5F7FAF2FDFEECFCFEEEFDFEEEFCFEF1FDFEEEFDFEFAFDFEF3FDFEEBF9F9
+      E6F3F4DCEDECE6F4F2E3F0F0E4F5F3E5F2F0E9F6F3E5F3F2E5F4F4E9F5F5E8F6
+      F2E7F3F4E8F6F5E6F4F2E8F5F5EAF6F5E8F5F4E8F5F5E7F6F5EBF7F6E6F3F3E8
+      F6F5E7F3F3EAF6F5E6F4F3EBF7F8E5F3F3EBF7F8E7F4F2EBF7F6E5F3F3EAF7F5
+      E5F3F1EBF7FAE6F5F5ECFAFCE6F8F8F9FFFFDAF3EBC8E7DAEFFAFAF6FDFEF1FB
+      FAF2FCFBF2FCFDF4FDFCF1FDFCF3FCFBF3FCFCF1FCFCF1FDFDF2FDFDF4FFFDC9
+      E5D76B8975748076889889A7B8A8C1CABEBFC6B9ABB2A59DA8998C9F928DA397
+      91A69B98AC9F9AADA09BAFA59EB0A6A4B6ABA3B8ACA6BAAFA5B8AEA8BBB2ADC1
+      B7ABBEB6ADBFB6ADC1B6B1C5BDB3C7BFB6C8C1C6D6D4D9E6E7DAE5E9DAE7EBDB
+      E8EBDDEAEBD7E4E4DDE7EBD9E4E4DCE9EBDAE5EADAE5EAD6E3E3E0E9EACEDEE0
+      D6E6E4DEE8E4DAE2DAE1E4DFE1E4DFE0E6E2D3E3DFEEFBFF8A9A9F2F3C315E69
+      5D58645B4654474252463F4F43445146465347455345515F5458665D4C595049
+      564B475548445044434E44434F465562556B756B4B564E4652494B554B485549
+      46514749574E48564F5A6A604C5B5348554B4A554A475046424D43414C424451
+      465B695F566158455146424D4146534749594C46534A4A5A4E596C6054625B3E
+      4B423F4C41424F44424E43464F463B443C45594B94A2959AA29B5C6C66879B8B
+      B9C4B2A8AC9BA7B8AFD8EDEAE6F7F5D4E0E95761614B55475769564780634483
+      683C765E3E735B3C69533B6A5442785F437C61417A5E407C5E3F785A3C6D5534
+      624C32614B325F4834634A3A6E533D71562F55413D473E5F65545E603E2D3717
+      1E221414190D0C0E0D0E0F0B0E0E0A0B0E0B0B0D0B0A0E0D0B0F080B0C09110E
+      0D18191720242131392C3E4730151E06090B060B0E0B11140E0C0F0908090606
+      0506080B090A0F0E0F100F0E0F0B0F0E0B11120D0E0F0B0C130B0A0F0D0D0D0D
+      0E0F080F130A0D0F0A0E0E090D0F060B100D0F100D0F0F0F0B0F0E11100C0D16
+      0A0B100B23271A2E322310120A0D0E0D110C0D0C0F090C0E0D0B0C0D0B0D0A08
+      0F0A080B091821271B1E2A626B6C7B7F624950320B0F080A100D0A0C0A0B0C08
+      1D23193638260E1604020601080A0A040605050B0A0B0D090B0D05050B08030A
+      0906090607090A030B04080B08080C0B060C06080E08080C090B0E06080C0608
+      0C0A070B0A0A0A0A0B0C0C080C060D0D08090C0C10151327291A181B0D0A0F0A
+      0B0E080F0F0C0F0F090E1306100F0A13160B0C120D0B1408090F061C26241B20
+      19424B41656F543A421F080B00080B0A08090A08070415150B312B1E0B0E0308
+      0606070B090E120D10140B11120B0F12090E100F10100D0F100B11130D0F1312
+      12140C13150D11130F151611181B14181E11161B14181D13151A0F0E0E090405
+      000307040307030509050306040306051F212239503E48504A485751505F513F
+      4F424152473E4B3D58645E505F4E435C4949594B51645E516349465345506153
+      50644C596A53425341465744535D4F53655747594A4957514254495161554C5B
+      4B41514044594440554A5164563D4F4347543F4555455069535A685541554756
+      6252485643626C5B4D6449455E4945534753635455655951615153645044554A
+      4F665B5C695D4F5F4B52634C515D505C6B5F4F5F4F4053415161554F63565A6A
+      5D50645446594B5162514B5D50606C5F5968594F5D534B6051495B48596A5958
+      69544A59444657483550405E6D585464514A574A5061532F43305B6B5A586957
+      505D495568553F53405C68575C6C55596A575B6A5A5262525666535C6F5D5669
+      595266580000859BFF879EFF89A0FF8498FE8199FC819AFB869CFD879CFA8C9F
+      FB90A3FA8A9DF5869AF4778EEB758BEA8296EE8799EF869AEF8599ED7D91E77C
+      8EE68092E9788DE4788AE37D91E77789E77988E86A7DE24861DB4461CE496CC0
+      516EC45674C7587AC8577ECA537DC9527CC9587EC86182C96488CC6488CB5A83
+      C8658ECD608ACB618ACD618ACD638DCF6990CF658ECE6089CA6489C76181BD60
+      80B55C7FAF6281B3809DC984A1CD7C99CC82A0D086A2D58EAADA8CA9DB8EAADE
+      89A6DB84A3D684A1D07E9BCD7899C8698DBA5678A85273A64868A43651913B53
+      97536CA9607AB1607DB76A86BE6A87C16382BE6989C2708FC57492C8849DCF74
+      92C9708FC87595CD7E9AD08CA2D888A1D8819CD8819ADA7C97D97C96D77C93DA
+      7890D97791DA728AD7728AD96E87D65B78D26482DB7991E06F85D9647AD46781
+      DA7890DD7B8FDF6D81DE5E76DA6E85E06E86E26581E36F8AE46E87E16D85DE6F
+      89E06180E35575E26A83E66E89E6738DE47996E9728EE4738BDF738DE27D96E8
+      7691E4869FEC89A4F089A4F17597EB6A8DE77B99EC829DEE7D9BEF7C99EE7E9C
+      ED7E9DEE7C9CEF7798EE7B98EB819DEC7B9AEB7090EA7895E96C91E85381E373
+      93E8869FEA85A0EA89A5EB769AE87699E885A2EC84A0EB7797E77697E87C97E9
+      7290E66085E45880E76289EA7092EB7497EE7796EC7795ED6E91EB7496EB7999
+      EC7295EB7596EB7393EB7290E97391E87290E8738FE97391E97996EA7292E76F
+      8EE47490E47892E68097E77B92E46D87E05F7DDB5676DA6581DE6786E26283E4
+      6483E46785E26E8AE36D8AE45F7FE36983E3758BE76380E45C7CE36781E4627C
+      E4617AE3607AE3546DDE445DDA4660DB4862DD4D69DF5574E35C7DE85E7DE656
+      73DE5775DE5878DE5575DA4D70D54264CC385AC13757BF3452B82D4CB02D4CAC
+      2E4DAC2E4DAC2E4EAB2A4AA32A49A426469D294A9C42649A2962492864432561
+      40225E3F28604128593C225236205134215136215032204F35245139244E3527
+      503E224F3825533E254F3F204A33204D30254D32274B311B4026153F2B3D6D59
+      739D866B9075628B716695785F8B71628D7664917C66977C6A988069977A6798
+      7A699A7E64967A6D9F83679A7E67988173A68D6796775E8A6F62967D659A7D64
+      997C6B9D8163987A64997D699D816092765A8B7463997F6B9F846C9D84669C84
+      659B8167A0875F93775C8E7262957D60917864977E60957C60967F5A917D5E95
+      7F60987E5F9780619C87629D8766A2896AA289679E865F9A866BA28E699A8453
+      8675457C7272A3ACE7F7FDEAF8F9E6F7FAE3EDEEBBC4C0C3CFC8BBC8BEBCC6BD
+      BBC8C0BFD0CCE1F5F8E9FBFCE6F7FAE7F9FBE6F9F9E8FAFCE5F9FBF2FDFDF4FD
+      FDECF8FAE5F3F3DDEDECE7F4F3E4F1F0E5F5F4E5F1F1E9F5F4E5F3F2E6F5F3EA
+      F5F4E7F4F4E6F3F3E8F5F5E6F3F2E8F5F5EAF5F5E8F4F4E8F5F5E9F6F5E9F6F6
+      E5F3F2E7F6F4E6F3F4EBF6F5E8F4F4EBF7F8E6F4F4EBF7F8E7F5F3EBF7F8E5F3
+      F5E8F6F5E5F3F2EBF7F9E5F5F6EBFAFCE8F8F6F7FFFFD4EEE8CDE9DCF1FCFBF6
+      FEFDF1FBFBF4FDFCF2FCFCF4FDFDF1FBFBF2FDFBF3FDFAF1FDFBF1FDFDF6FFFE
+      F3FEFDBFDDCB739283C9D7D4E0E2DDC8CCC3C6CDC2BFC6B9D1D8CFCCD4CD9BB0
+      A59DB8ABA3BBB1A8C0B5A8C0B5B2C6BCB3C8BEB6CCC3B8CFC5BCD1CABED2CCBD
+      D6CEC0D9D2C3DBD4C6DED7C4DCD6C4DED7CFE4DDE4F4F1EDFBFDECFAFBE6F7F6
+      EEFBFDEBF9FCEEFCFDEBF9FAF0FDFEE8F7F8EEFBFDEAF9FCECFBFDEBF9FAEFFC
+      FDECFAFAEFFCFDDEEEEFCAD7D2BDC7BCB5BEB2BECFC7E9FBF9F1FDFFC0D1D2B3
+      C5C0B9CDC9BBD2CDBBD0CBB8CDC9B4C9C5B0C8C3B5CEC9B4CAC5ABC3C0ACC2BF
+      ADC6C4B2CBC9B1CAC7B1C6C4B4C8C6B9CECAB8CBC6B6C9C4B7CAC8B8CDC8BCD1
+      CDB6CBC9B6CBC6B3C8C5AFC2BFACC0BDA4BBB9ACC1BFB2C7C4B1C4C2B4C7C3B0
+      C5C1AABEBAA7BDB9B3CBC8B1C9C6B1C6C6B2C5C4ADC5C3ACC3C0B6C7C5B1C1BF
+      A8BEB8B2C5C1B6C8C4AFC3BFACC1BCA6BCB8A8BDC09BB4B49CB1ACB6BEB67480
+      7C404D40919E86BBC2B2A4A99AB2C2B6E8FAF8CBD4E1454C4B4D5A485A665642
+      6A51386B513C6D543D75583C75583D76593C73583B7054397154376A5037624A
+      36614933634B32624C33604B2A523E2A593F25553E1D3021373D3B6162555E6A
+      4B2D3A1D232D17141A0C0E0D0D0B0C0D080E0C070C0A0B0D0B0B0D090B0D080D
+      0F090D0C080B0D0C1A221B373E30404836151B06080B06090A0B0F100C0F140C
+      090B080809080B0F0D0F140B11120C0F0F0D11120D090F0D0A0F0D0A10090F12
+      080B0F0A0E120E0D0F0B0B0D0D0C0F0D0C0F0B0D100A10100D0D130C0C17090F
+      120D11120C292C24272D170C140610130D0F0F0A0E0F0B0C0F0B0A0F0B0B0F0B
+      0C0E0D0D0F0D080C0B20252418221F626B667C856B4F59360D10050B0F090B0F
+      0A0D120B11130D2C311D303922111306070605060A060A0A060D0D0D0B0B0908
+      0906090A06080708080A05080A06080A09070906090C06080A06080B09080B06
+      0A0C03060B09070A06070A0805090B060906060B060B0E0D2527211D1B0E0C10
+      060F0F0B0A0C0B0D0E0C0C0E0B0E120B11130B0F15080B120A0B0F080B0D0620
+      26251D271D38483E5E6C503C4326080600090A0A040B060706040303061F1B16
+      181E130609050707090D0E08100F080C0D0B0D0D0D0C0F090C0D0A0F0F0B100F
+      09100E0D110F0C14120817140B15150A13100B15130917150D11130D13180C14
+      160D0D0F0D0E100E0F130E12120D11120C0B0F0B2A302D2E48364553444A5A49
+      515D503D4E3F425043384B3E506563526051445B47485A485A695E5164574555
+      474D60505163525769523F513E4557484C5E5153635649574C485A524054474F
+      5F534A5E503F5541465B47495B514F615341543D42563F475644586557556851
+      45514759655B495C4B55695A4B5F4C4A5D4F4455495269545B6B585062545566
+      55435240556A5E5368574D604A4C5E4F485E4C566B5D52614F43514156695D51
+      62525B6B60506356445C495668524C5D4B636E615A6A574D5E4B54665B485643
+      576B56506454465A49435A493E523F576C575363534A564A4D5C4F3348345970
+      5A5466584D5F4C536B5043513D596A57616B575F69565E6A5A545F5256685658
+      6D5D55695B5769560000879DFF879CFF899EFF8298FD7C93F97E98FC859CFD84
+      9BFA849BFA89A3FD879AF68596F28191EC7B8FE98096EC8699EF8193E98093E9
+      8497EB8293EA7D8EE6788DE6798BE67D90E77B8EE77C8DE76B7FE43E5CD74362
+      CB4F6EC14F6EC44C6BC45374C75E82CD5B83CB5780CB5B82CA6287CB6489CD62
+      87CC6086CC6289CC5F88C96287CB6188CD628BCD678FCE648FCE648ACA648BC8
+      5276AB5575A46582B56481B57B9CC885A5CF829DCC86A4D287A6D58CABDA8CA9
+      DC8CA9DC86A5DA85A4D787A5D584A2D2799CCD7092C66E8FC16C8BBE6A8ABD53
+      75B03E5CA2506DAA627DB36982B86A87BD6C8AC26F8DC56F8FC5708EC67391C8
+      7D99CC7B98CC7997CD7291CD7895CE859ED47C97D47E97D58198D77C96D67992
+      D5768FD6728DD76D8BD86D89D66C87D6667ED3607AD47389DB7D90DC697DD35F
+      77D2768EDD7E90DE7080D85B71D55E79DC6582E26C88E6738AE76F89E4768FE6
+      6D89E26683E05E7DDD5576DD6E8AE76D88E77591EA7E95EB738AE06D81DA6F88
+      DF728FE47B96E7829EEE869DED7E9AEA6D95EB6990E97997EB7C99EB7998EC7D
+      9AEE84A0EF7E9DEC829FEF799AED7695EB849DEB7E9CEB7595EB7290E97395E9
+      7597EC7E9BEB88A0EA89A1EB88A3EB7498E47B9CE989A2EC7B9BEB7597EB7C9C
+      EB7D9BEB7C98E96E8EE45B82E65F87E96D90EC7393ED7395EC7895EE7898F179
+      9AEF7898EE7493EC6F90EB6E90EA7391EA7796E97B97EB7895EB7593E97593E8
+      7291E87291E7708FE67291E67B95E4768FE36A85E16C87E06081DD6382E06787
+      E36082E65C80E46485E26E89E4728DE76483E46380E4708AEA6A8AE86280E66B
+      82E76A81E7657EE45C77E05A75E15269DD445DDA4460DA4965DB4F6ADF5775E4
+      5C7DE45776DF5573DD5674DE5A78DD5978DB4B6ED43C5FC8385AC43857C13151
+      B72D4DAF2F4CAB304DAB2F4EAB2E4DAC294CA92346A029499F44659F23604521
+      624223634222613E235F3E276042275E3D285B3C205336205439205336204F36
+      1E4C2F214D3B204E3727544024503E1E4933225138245236265036224F331F46
+      2C1A3B2436655072A4916E9B8466937567957766937769987A65957863907A66
+      967E6593756693756695786C9C7E6C9D8066957C62937C6D9F856DA184699B7F
+      66977A5F907267997F66997D60937665997E66977A5C8D6E5A8E7263987F6A9F
+      84679F845F997E58927C639D86699F8465997E669A8062987E6093776092785E
+      927E5A8D7C60927C5F927C619883619783629981679E85639A835A917F639986
+      6698844A7C72396B686798A0EDFAFDE9F7F5E0F2F2E5F6F8E8F7F9E9F7F9E6F4
+      F5E7F6F8E7F8FAEBF9FCE4F5F9E5F7F8E4F6F8E7F8FAE5F7F8EAFAFBE5F8FAF1
+      FDFDF1FDFDECF7FAE8F4F5E0EDEDE7F4F3E3F0F0E5F4F4E5F1F1EAF5F4E5F3F2
+      E6F5F4EAF5F4E7F4F4E5F3F2E7F5F4E6F3F2E7F5F5E9F5F5E8F4F4E8F6F5E8F6
+      F5E9F6F6E5F3F2E9F6F4E6F4F5E9F6F5E6F3F4EAF7F6E5F3F2EBF7F8E8F5F4EB
+      F7F6E5F3F4E9F6F5E5F3F2EBF7F9E6F5F6ECF9FCE7F7F5F3FFFFCEEBE4CDEBDE
+      F4FDFDF6FEFDF1FBFBF6FDFDF2FCFBF6FDFDF1FBFBF3FDFCF3FDFAF2FDFCF1FB
+      FBF7FFFFEFFDFBBAD8C86E8D7D8DA89CACC0B6B9CAC3B8CAC1ADC0B7ACC0B89A
+      B1A791A69A9DB3A79BB3A7A2BAAEA4BAAFAAC0B5ABC0B6AFC3BAB0C4BCB4C9C1
+      B7CDC4B9CFC6BBD0C7BED2CBBDD2CAC0D3CCD5E6E0E2EFEFE7F5F5E5F4F4E5F3
+      F2DDEFEFE5F3F5E3F2F3E6F4F5E5F1F1E9F5F5E2F2F0E5F4F4E4F2F2E5F4F3E1
+      F0F0E6F4F4E3EFEEEFFBFDD7E9EBA3BAB4B0BDB0A5AEA0B9C6BCEBFBFAE5F5F6
+      CEE2E3DBEFEFDBF0F1E0F3F2E1F3F4E1F3F5DEF3F3DBF1F1DEF3F4DDF1F2DCF1
+      F0E5F6F5DDF3F2DDF3F2E0F3F2DCF1F0E2F5F4E3F6F5E3F3F3DDF1F1DAEFEFE1
+      F3F2E5F6F6E0F3F3E2F5F3E1F5F4E6F7F5E5F5F4E2F3F4E5F6F6E5F6F5E2F3F4
+      E5F6F5E2F7F5E4F5F5E2F3F2DAF0F1E1F4F3E1F3F4E0F3F1DDF0F1E0F3F3E7F7
+      F9E6F6F8E5F6F5E9F9FAE8F7F9E4F7F5E3F7F5E2F5F4E3F4F5E5F5F5DCF2F1D4
+      E4E4A8AAA4B7B9A6C9CAC1B4B9ACB6BBA7A6AB9ACCE3D7B0BFC9353C3E51604B
+      646C5A486C55397A5A3B7C593C7859396E5436664A345E482F5E45295A3F2F5C
+      453E6B554971632C4E3A234F381F4831334F3E304A3D172C1C10170F38393B61
+      625260684C2C39171E281613170B0C0D0B0E0D0B0C0B0C0E0F080C0E0A090C08
+      0B0C0C0B0D080D0F090D0F091B1D1C313C2C404935181D0A0B0C060B0C090D0F
+      0611150D0C0D09100F0B10130C0D13060D0F090F0F0F0B0E0D0C0F0D0D100C0E
+      100A100F080F120D090E0B0A0E0A0B0D0B0B0D0C0D0D0C0B130F0C10090C0F06
+      0E140611140B2D282536392512160611150D0F120C0C0F0B11130C0B0F0B0C10
+      0D0B0F0D0C120B0C120B080C0A1C22211B2323646C6A7E866E4D55390C13080B
+      0F0D0B0E0A0B0C04080C0614191235352630371F070A03090B0A0A0A060B0C0A
+      0B0D0B11130C11150811140C11100C1214120F140F11151110130C14160B1316
+      0D101613151B15171B14181E161D2013212115262B1F1F2318252A1810130B0B
+      0E090B0F0A0A0C090F0E0D0A0F0B0C0C0D0B0F0B0B0E0C090F0A0D0F0D0B0D08
+      080C0A1C231F262C243C4241626A563B4429000400080B05080C0D080C0B0B0F
+      0D1316121E24160C0F030B0B0B13160F11150B0E140D11150E15160B13180F17
+      17121D1B0F1B1F132021162325162522122B24152924192B2816272414201F16
+      2221142221131F1F151D1E13181A14151B0F15170F1213122A2D293C4B3E4459
+      4E46574B5160513D50413E54443F4D3E52685D52634F4A5C50475A4F55655E54
+      64534255474F61545462555C68584A5345495B4B4D5E5259685B4A5947485A52
+      445749506150516048405343495C45475A485364543E523F4453474556455366
+      555666544656485162554C5A49596A5D4C5E4A4861524157475468565B6A574F
+      61545168573F524358665D566A57455E454D634C485C4F5B6960526352475648
+      506153516255596E5E526854425A49516450505E4C606A5F5B6A594B5E495362
+      51465A495E6C59556254495D4B475D473C4E3E5B6F56515F524054414D665430
+      3C2C606F61516353495C4B58695743523E596B555C6C565869525A6B594B6152
+      556A57586D5B556B5A5065530000869DFF869DFE869EFE8097FD7B92F98097F9
+      859CFC879CFA829AF98AA2FD8A9FF98195F18091EB7D95E97991EB8095EF8297
+      EC8193EA8295E87D8FE9788AE67E90E88598E97C8EE67D90EA7B8AE76177E241
+      61DA3F5EC84866BE506BC34F71C44A71C6547CCB5F87CC5F85CB6289CB658BCB
+      658BCD678DCF6087CA5F87CA5F86CA5A85C86189C8668DCB618DCB638ECC6089
+      C75B81B95778A75A7DAA6280B25C7DAB7898C387A4CE87A3CE85A0D088A6D889
+      A9DA89A6DB86A4D981A3D884A2D886A4D785A5D480A0CE7B9ACE7998CA708FC4
+      6B8BBF698AC24A6CAF4B6AAA6785BC6783BA6988BD7391C57C95C76C8AC36E8A
+      C37995C97593C97693C97E99CD7391CB7793CD7E99D07895D07D98D37E97D277
+      90D0758ED37892D3748ED7738FDA6C89D66F8AD4607DCF5977D36E86DC6D85D7
+      6479D05E75CF7287D77788D85C70CD5B78DA6783E06F87E3708BE66E8BE4728B
+      E6738BE4738EE6738DE46D87E06786E06D89E47089E46F88E7748BE86C86E26D
+      83DD748AE1728EE47997EB7895E87C96E87B9BEC7C9DEC7E9DED7696E97D9CEA
+      7896E97493E87E9DED7C9AEB7D9CEE7999ED7998EB86A0EC7B9AEA6F91EB7896
+      EC8099EA859FEB819FEB7E9EE8869FEA89A2EB82A0EB829FEA859FEA7D9CEB79
+      9BEA7B9AEA7C9BEC7D9AEB7D97E9698DE66088E9698EEC6D8FEB6E92ED7295EE
+      7697EE7B9AF17D9BF17B98ED6E8FEB7091EB7693EB7693EC7695EC7391EA7391
+      E97091E77290E97391E8708FE66F8EE6738FE77690E66F8BE46D8AE36C87E262
+      83E36685E46687E7547AE4577EE36786E4758DE7678AE76987E66E8DE97390EA
+      6685E76080E46480E4637EE45977E15270DF5773DF4C66DC405DDA405FD94562
+      DC4F6CDE5678E35B7DE25A78DE5471DC5474DF5A79DF5577DB4568CF395DC73A
+      5CC63756C02D4DB32C4AAC2F4CAB2F4EAB3050AE3050AC2649A62A4BA3486B9A
+      386A5532654F32644A3363462D604625593F22523829533F26523923523B204B
+      321C442C173D221C3E2C15331F1B392D24433B25423324423017362317341F19
+      39241F41281E402510311A274F3E62927A74A1846C9C7C6C9C7A6B9E7A6B9D7A
+      67997A6A9C806BA083699E7E679D7D6B9E8072A38670A5836B9E7A6A9E806EA2
+      866FA18570A3856A9D7D66977C6CA080669A7A62957E6D9D8679A389648A715C
+      866E63907866907C60887560897366927E6F9C8763967C69A0846BA0856AA187
+      679F86649A815B927E62978362917E5F927F699B88699B88679D896097845A8F
+      8058907F5F93814C7E7431616163939CEFFCFDE8F6F6E0F1F3E6F4F4E5F5F5E9
+      F7F9E7F6F9EAF7FBE5F7F8E7F7FAE5F4F9E7F7F9E5F7F9EAF9FBE7F8F9ECFAFC
+      E7F8FBF1FDFDF1FDFDEBF7FAE9F4F5E0EDEDE7F4F2E2F0EFE5F4F3E5F2F1EAF5
+      F5E5F3F1E6F5F3EAF5F5E7F5F4E5F3F2E7F5F4E5F3F2E7F5F5E8F4F4E7F3F3E7
+      F5F5E7F5F5E9F6F6E6F3F2EAF6F4E7F4F5E8F6F5E5F3F3E9F6F5E5F3F3EBF7F8
+      E7F5F4EBF7F6E5F3F4E9F5F5E6F3F2EBF7F8E6F4F5ECF8FAE6F7F5F1FFFFC9E9
+      E1CDEBDEF7FDFEF7FEFDF1FBFBF6FDFDF2FBFBF8FDFDF2FBFBF4FDFCF2FCFAF3
+      FDFDF1FBFBF9FFFFEDFCFAB8D8C97590816B85756B88757896867B9688859E91
+      849D908FA8999AAFA2A1B4A99EB6A9A4BAAFA8BDB2ADC3B8ADC2B8B1C5BEB4C8
+      C0B5CCC3B7CFC5BCD0C8BCCFC6BDD1C9CCDDD8DAE9E7E6F6F5E1F3F2E2F3F2E5
+      F3F2E5F3F2E1F0F0E6F3F5E5F2F3E8F4F5E5F3F1E8F5F5E2F1EFE5F3F2E4F2F2
+      E6F4F2E3F0F0E8F5F5E5F2F2E5F1F2C1CFCBA0A89BB6C0B3B4BAACBCC5B8CCDD
+      D5DBEBEBCFE3E3D1E5E2D8E7E6DAEAE7DAE9E9D8E8E9D8E9E8D8E8E7D9EAE9D9
+      E8E8DAE9E8DCEAEAD9E9EADAE9EADBEBEBD7E7E8D9E9E7DAEBE9DEECECD9E8EA
+      D1E4E3DAE7E7DEEDEDDAEAEADAEBEADBEBEBDEEBEBDEECEBDCEAEBDEEDECDCEB
+      EADCE9EADCEBEADAEBEBDDECEBE0ECEBD9E9E9DDEDEBDEEDEBDAEBE9DBEAE9DC
+      EBE9DEEDEBDCEBEBDCEBEBE0EDEDDEECEBE0EDECDDECEBDDEBEBDEECEAE1EDEB
+      DBEDEBDDEEEEE7F3F1EBEDEAB7BDBE6D7A71A4B49BBEC4B5C0C8B78E9B9A2A31
+      3254644F6C74624C6C5737795A326B503163473266483C6F52356D4F326F4F2A
+      5C422A513D3760485C786020311B1F402B1B34223346391B23210D180C0E120C
+      31343562625564684B2E3316252B160E130B0D0F0C0B0C0B0C0E080A0D0A0A0F
+      0A0D0B0C0B0C0C0B0E090D0E0C0C0F0D171B1B3A3B33424B37171E0F0B0F050B
+      0D050E100C11150F0F100F10121110120B0B130C0D100B0D0F0C090F0D0A0F0E
+      0C100C08100A0C0F0B0D120B0A100B0D0F0C0E0F0D0E0E0A0E0F0D0B0F0C0D10
+      0B10100F0A0F0A1C2119363F2A151A0B11140D10120B10150C0D100B100F0B11
+      100C090F0A111012110F0C0D0E0D080D0B1C2422161D1C6069687E836A505638
+      0810050C0F0B0C0F08090F060A0E080B0C0A22201F30352415170A090303080A
+      0B0909080F0F0E13140E13160E12130D121313100F0E0D120C100E110F0F0D11
+      120B11100B10170B10140B11160B12140D15140A181E111F231A1E281D222718
+      030600050701080A040807030B0C030B0C060B0B06110D0B0F10060B13091416
+      0D161512151915212F21232D213C42396A705E464C34222512282D2123241F22
+      281D23231A21211120231313170A0C0E0A13141317190F151B0D1619111C1D12
+      232216232516272314202411252A18292B1B30311D312D1A3631193736212F2D
+      1A272515332C1C2E2B1A2A281A251F17232017191B13151B0E11150E272D2B3C
+      4841465951445A4B4A614E3E54414054473E4E415264614B60524D594B48574C
+      5468635568554154454F60515563555E6A5949564A41564C4D5D5159655B4C5D
+      47455A484151434C5F554F5F494153444B5948485E4552634C3C53423C534A46
+      5244566559516354404E40596B574955435A695B475A43475D44495749536453
+      5F695B56635553645440513F566A5F5965584C5B4E515D504B5D4F596D5E4F62
+      50435C48506959496053586B595869574D5E4B5768544F604B626E605B695A49
+      5A4B516353455B4C576C5A5365554B5D4C4A5B483D513C5B705A556256425445
+      4D634F34432F5A6C5755694F465B45586C594152425C6A57586D56586B58576A
+      5A4D614F5C69585E6E5E5569585366549769829BFF889EFF879FFF7D95FB7991
+      FA8198FA859AFA899EFD859BFA8DA0FC90A3FB8499F27388E9768DE88093ED87
+      98F1869BF18297EC8092E97B8EE77489E4768AE47E91E87C8DEA7989E97688E8
+      5975E44664DB4664C74B6BC14968C15576C75A80CA527DC8597DC96689CD6589
+      CB668BCB678DCE6C90D0638ACC6088C95A82C65882C45E85C56189C7668ECC66
+      8FCC5A83C14F73A56385B0658ABA5A7DAA5878A57C98C286A0CA8AA5D087A2D2
+      8DA9DA88A8DA84A3D885A3D87EA1D782A1D885A2D785A5D685A4D3829DCF7C9A
+      CD7392C77091C76C8EC55E80BD4464AA6582BC6F8BC16986BD7090C4728FC36E
+      8AC37593C97897C97595CA6F8EC67B98CC7996CD738FCB829BD28097CE7D97D0
+      7E96D37993D4748ED26F89CF7790D67991D86C86D46C88D2617DCE5977D35576
+      D75C79D65B73CD5C71CB7385D46E7ECF6279D46581DD6683DD6D86E06683DF65
+      87DF6F89E17289E1758BE2788EE27B8FE3768DE46787E16985E26682E46E89E9
+      738DE86F89E4748AE47891E67893E47E97E77D98E87B9CEC86A4EF81A0EE7597
+      EB7596EB7E9DEB7B9BEA7C9BEC7D9AEB7796EA7B99EC819CEB829EEB7D9BEA73
+      96E97D9AEB859BEB809CE97D9DEA7B9CEA819EEA8AA1EB84A0EC7E9DEB85A0EB
+      86A2ED7B9DEA809DEC7E9BED799BEB7B99EB7695EA6A8EE96C8EEB6A8DEB6A8E
+      ED6791EC7496EE7B9AF0799AF17897EF7593EC7492ED7795EB7997EC7B97EB6F
+      8FEA6F8FEB7592EB7492EA7291E7708FE8738FE77791E87692EA6E8EE66D8BE4
+      708DE66E8BE66485E36A89E66083E7547AE45E82E46B88E76788E76687E86C8B
+      E7738FE86D8AE85E80E45A7AE25B79E15C79E15170DE4B6CDB536EDC4761DA3D
+      57D73F5CD84564DC4D6DDE5478E1587EE25778DF5171DD5173DC5879DE5577DB
+      496DD5456BD33C5CC53151B82D4EB22D4CAE2E4DAE304EAE3252AF2748A73353
+      AA6281A97597967096926D96906F938F6A918D618981588076597D7E5C7D7758
+      787155776D506C63466157405D563D554B3A524C2F414235433E2F3D3230403A
+      3B4F433A51443F54473C52433A513E293F2F385546739586709883669176628E
+      74628E72658E725B816A5A816D5F896D5982665F866D60886E638B6E638D6E60
+      886C5B816C5B826D5C876D618A6E5B886C57836A527F654D79645E8A7787A89F
+      C4D1CBC4CDC3C0CDC5C2CBC5BCC6C0C0CBC5CFD5CC6F836D2A4D35335C413E6A
+      4F436E5348755948735746735846775F4981684B83694C856C49826A5189724D
+      88714B837149826D4A826C4575652F5A52699398EEFBFDE8F7F5E1F2F3E7F4F4
+      E2F3F5E5F6F6E5F4F5E9F6F9E5F5F5E8F7FAE4F5F6E8F7FAE7F7F9EBFAFAE8F8
+      FAEBFAFAE7F8FAF1FDFDF1FDFDECF7FAE7F4F5DDEDEDE7F3F3E5F1F0E5F5F3E4
+      F1F1E9F5F5E5F3F1E7F5F4E7F4F5E8F5F4E7F4F1E8F5F5E5F3F3E7F5F5E9F5F4
+      E8F5F2E7F5F4E7F5F5E9F6F5E6F3F1E9F5F4E7F4F5E9F7F6E6F3F3EBF6F6E5F2
+      F3EAF6F9E9F4F5EBF7F8E5F3F4E9F6F4E6F3F1EBF7F8E6F4F4ECF7F9E6F5F5F0
+      FDFFC6E7DDD3ECE4F7FDFEF6FEFDF1FBFBF7FDFDF4FBFCF7FDFDF1FAFAF7FDFD
+      F3FBFBF6FDFDF0FBFAF9FFFFEFFBF9B2D4C5708F7F7592847B9686859D8D869E
+      908CA5988EA69997ADA09AB0A4A0B7AAA1B9ACA6BCB1A8BEB3B0C4B8B1C5BCB3
+      C7C0B6CAC2B7CEC5B9D0C7BACEC5C3D4CCD4E4DFE4F3F2E5F3F4E1F3F1DDF2F1
+      E4F3F2E5F3F2E5F3F2E2F0F0E5F4F4E6F3F2E6F4F4E5F3F2E9F5F5E2F1F0E7F5
+      F4E5F3F2E7F4F4E6F1F1E9F7F5E8F5F6CCD9D7BDC6BDCCD0C7C3CAC2C0C7BEB7
+      BFB5B8C2B8DCECEBD2E5E6D2E6E2D7E7E7D9E8E6DAEAE9D8EBE9D7EBE9D6E8E7
+      D9E9E8D8E9E8D9E8E8DAE9EAD8E8E8D8E8E9D8EBEBD8E8E8D8E9E9DAEAE9DEED
+      EDDAEBEBCDE3E0D6E7E4DAEDEBDAE9EADBEBEADAEBEADDEBEBDCECEBDBEBE9DD
+      ECEBDBEBEADBE9E9DAECEBDAEAEBDBEBEADCECEADAE9EADAECEBDBECECD8E9E9
+      DAEAE9DBEAEADCECEBDBEBEADAEAEAE0EDEDDDECEBDAECEBDAEAE9DBEAEBDEEC
+      ECDBEBECDAEAEADEEDEBE3F5F5C4D1D48D958F657069627764B6C3B1B8BEB3AA
+      B7AE57635E5868549197816F78683C6853396B523A6F523C77593A785830714F
+      337050386D5332624835654A51735E1A2517182B1F131F161419160A0F0C090E
+      0A060B032C302B5F615164664B232D17202C190E16080B0D060A0E0A080C060B
+      0C060A0B08080C080A0B0B0C0D06080C090B0C06121E1B2E3A323F49341C280B
+      1016050B0E040D0C080F100D11100D0C14060F120A0C0F0A0B0F090C0E0B0E0C
+      0C080D050A0C060A0E090A0D0A090B090A0C06070B08080905080C06090C0603
+      0A0805090B080F06222A212A311F0E170C0D140F100F120F14120B130B0F130C
+      0E12080B130D0B0F0D0B130D0B130D0F120F0B0D0D181E1C17201E666E6C7783
+      6D4B5B3C0F12040B0E0E0C0F0D0B0D12090C0D080A06020506211F172B29170D
+      12040A0C09080F0A0A100D11151413131211181213190F161D111C1E131A2016
+      181E16232418282C1D26281E2E2F1F323424353926343824292B1A25241A3731
+      2A3A3B2D353A243C3F293F412D443E2B3D3F283A3E2A3A3B2A343824383B2431
+      361F2F311E31311F2D301C3C4733182A1A394641666C5552543A30321831311A
+      2C2A1A26281B27291D28281822251616170A0D0D0B16141413120D1413091215
+      0B14170D17160E1E1B0F1A1D13201F1523201121201624201125241627241529
+      23162321152425161D1D151D1E0D1A1B11171B0E17150D16150D14150F0E130D
+      282A263C493948534B4D5C4F4C5A493C5240425244394C405362614B63524A5E
+      4E4D5A4C59665755685342554852634C53625556695A495A4A4455454C5B4E56
+      6A604C5C4E495A4B44524353604F525E48415441475C4C4C5B455265533F5441
+      42514845534756665552604E3B493E5B6A574A5B49596A59405543475950495B
+      44526253576B5A51655157655549564C5364585A635245554C536254505E4B58
+      69565361524557475566564A6650606E595C6B594C5F4F586651535D4E5E6F62
+      586C5D4C604E536450475A4A596B5A5061514A5C484D5D473C4F3E5F6F595064
+      52415744526655314233596B59576456445D4C5B6D5F4250435E6C605A6D5A56
+      6A575669584D6450596C555F6E6053685750655200008098FF879DFF879EFF7D
+      95FC7991F97E97FA8298FA899EFC86A0FC879EFC91A2F98698F17086E97C91EB
+      8599EE8495EE8595F08093EB7E90E97D92EA7288E4768BE77C8FEA7B8BEB7B8A
+      EA788BEB5E76E44A64DA4968C84D6DC24A6AC35173C8587ECA5880CA567DC959
+      82CA658ACD6389CB668DCD638ACC648BCC5B85C85981C5577EC05A82C05B87C1
+      618AC56A91CD5C82BD5173A7698ABA7092C15879A85A78A57995C17E9AC689A3
+      CF8DA8D590AAD989A8DA82A1D785A1DA7E9FD97E9FD685A1D782A0D685A2D482
+      9DCF7999CD7697CC7797CB6F92C86B8AC35779B85B78B47692C26D8DC36F8EC4
+      6F8BC76E8DC57392C77392C97492C97290C8708FCA7695CD728FCA7892CC7B95
+      CC7891CC758ECC768ECF708BD26782CE6B88D0728FD66B86D36A83D26A83D463
+      7FD66079D66A80D7566DCA6174CB7483CD6B7ECD667DD4677FD56782D76A83D9
+      6F88DC768EE16B83DA667DD36B81D56E87DA768ADD768BDF6F88E0708BE46986
+      E46783E4798EE97991E76E87E47289E27993E47895E77793E77B99EB819EEB82
+      9EED7798EB799AEB849FEC789AEA7D9AEB7E9CEB799AEB7695E97B97EB7696E9
+      7D9BEA829FEB859FEB869DEB849FEB829FEC849FEB88A1EB8CA4EB84A2EC7D9F
+      ED88A2EC88A2EF7D9EED84A0ED819EEE7898EB7999EC7D99EB7593EA7695EB72
+      91EB698BEB6B91ED7998EF7898EE7698F07698EF7899ED7897EC7593EC7B98EC
+      7E98EB7793EB7392EB7895EB7997EA7693E97491EA7591E97B96E97998E97591
+      E87590E97391EA7692EA6D8DE76A8AE46C8DE95C83E65C83E76185E66282E45F
+      83E46486E76B89E76F8DE76788E45679E35676E15C7AE15876E04B6BDD496AD9
+      4966D9445EDA3C57D53B57D4405FD8486ADC5177E0587DE15278DE4C71DC5374
+      DC5C7EE25A7DE0587DDF4C6FD43C5CC23757BF3656BE3354B83152B22E4FB026
+      47A94263B16E8AAA86A3A684A1A284A2A27E9E9F81A0A285A3A586A4A680A0A9
+      88A8AA8AA9AB85A5AB88A5A986A3A786A5A688A6A8829CA24355531F2925384A
+      4A7D9DA07B9A9A779999799697739090708E8C748D88647D7864817E69858463
+      807E64827F64817E637F7A627C775F7874627C73647D7567807A637E76668178
+      6C86806B857E668177617C7364817666857D6181776180775C80765676685570
+      65426065C0D4D9FDFDFBE7EAE9E4EAE9E5ECE8F2F7F6DDE4DE6077664461554A
+      665D4F6B625770665471685573695776694D6E5F4D7360527663466A59506F64
+      597C6E58796D56776B597C6F5B7E7158776B537065849E9CE9F7FBE7F6F5E1F2
+      F3E7F5F5E3F3F5E5F6F5E7F6F5E9F7F9E6F6F6E7F7FAE4F5F8E9F7FAE7F7F8EB
+      FAFAE8F9FAEBFAFAE7F7FBF1FDFDF1FDFDECF7FAE8F5F5DDEDEDE7F3F3E5F1F0
+      E5F4F3E3F0F1E8F5F4E5F3F0E8F6F5E7F5F5E7F4F2E6F3F0E7F5F5E5F3F3E7F5
+      F5E8F4F3E8F5F1E7F5F4E7F5F5E9F6F5E5F3F1E9F5F4E7F4F5E8F5F5E5F3F3EB
+      F7F6E6F3F3E9F6F8E8F4F4EBF7F8E5F3F4E9F6F4E6F3F1EBF7F8E6F3F3ECF7F9
+      E6F4F5EFFBFDC5E5D9D8EFE7F9FFFFF7FDFDF3FBFBFAFEFEF6FBFCF9FDFDF6FB
+      FCF8FDFEF6FBFBF7FEFDF2FCFCFDFFFFEAFAF5A8D0C06E8B7E7795867C988887
+      9F9086A0928DA69991A89A98AFA39AB2A6A2B9ACA5BBB0AABFB4ACC1B5B2C6BA
+      B3C7BEB5C9C2B8CCC4B8CDC4BAD1C8C9DDD7E0EDECE7F4F3E4F2F2E2F0F0E3F3
+      F2E2F1F1E5F3F2E5F3F3E5F3F2E1F0F0E5F4F4E6F3F2E6F5F5E5F3F2E8F5F5E3
+      F2F1E8F5F5E5F3F2E7F4F4E6F2F1E9F5F5E5F3F2E4EEEFDAE6E3DCE7E4DCE8E8
+      DEE8E8D4E2E0E3EEEBEBF8F9D0E1E0D6E7E4D8E8E9D8E9E7DAEAE9D9EBEAD7EB
+      E9D6E7E7DAE9EAD9E9E9DAE9E9DAEBEAD9E9E9DAEAE9D8EBEAD9E9E9D9E9E9DA
+      EAEAE2F0F0DEEDECCDE0DED7E7E4DBECEBDBEAEBDBEBEADAEBEBDDECEBDCECEB
+      DCEBE9DDECEBDDECEBDBEAEADAECEBDCEBEBDCEDEBDCECEADAE9EADAECEADBEC
+      ECDAEBEADAEAE9DCEAEBDCEBEBDCEBEBDCEBEBDEEDECDDEBEBDAEBEBDBEBEADD
+      ECEBDEEDECDCECEBDAEAEADEECECDAEEEDE1F3F4C6D1D2929B924A5650546959
+      7887805860555E68586C7962A2AB92969F8B43705A3A765A3A745A396E58366A
+      52396F553B71573A7158366A55396A584D75633C443935402C303B24252F1E1F
+      28171B23161F28152E372F5B5F536068482A321E212A1319210C151A0D1D1B13
+      21241520211521251421221B2321182524182022142529191F28222C3A313C49
+      2E1C270B14190E0A0C0A0D0C0910120D1919152C2A1D32321E2E301D282F1B27
+      301A272B162C2B1A2D2C1A212516202518242B1D2A311C2E311D313524313524
+      2E331F363D243336282C2F26313727141A0B0C0F0D1114130B15090B150D0D12
+      0E0B130E0B0F0D0B130A0D140D0F0F080B0F0B0B0F0E0C0F0D151D19151B1A5F
+      6B6881886F4A573D070F00050A060A0C05050403080704140F0A1A190E22261C
+      2A2A1815190D0B0F090D0F0A10120F171B1314180E11160D151E0D181D11191D
+      111E27161C2216262A1A292A1A252917222B162F321C2F2C1631311C33361D32
+      33213B33243C37263E422940442447462A494732464632514E39504D33524E38
+      5050394B4F30534F374B473048452A5252402A2D1939423C646C59535F3F373E
+      2332361F252F1B1F22191C1F16181E0F20261814180A0E0C0618180D18180D19
+      170D19170C1A1D15191F131A1E1424261822211426230F332F1A312B162F2D19
+      35301C37321D302D182E301F292C16242717212416201E141B1D0F171A0D1519
+      0C11140F202F2B404C4046564B4A594B4F604C3E51404455493F504753635A54
+      61554B594A4B5B47516A5B526655445249495E535663535B6958465D4A445949
+      4C5D515566544B5C4946574E4359475060514D624C4655444A56494955485768
+      553F50433E5249485949536558526350394A3B54695A4A5B4B58685946574947
+      5C4C475C4C536555526A5151614B55655343524355685A53685546594E495C52
+      505F505A6A5B506353485A49516451506150596E55596A5853635256684F4F5E
+      4B606D5B5E6A594F5F4C5665514B5A4B5A6E58526348485A484A60473C50405B
+      6F5E5863534857484B5E50384635586C5A556859465B4B5A68584A5649596A5E
+      596D5D586B535C6C584B624E516B57606B5B5B6B5650685097697D95FE849AFF
+      889FFF7E97FB7991F88098FB8097FB8499FA88A0FC89A0FA8E9FF88193F0798E
+      EB8598EE8297EF7E93F08699F18195EB8092EB798FEA7588E47D8EE78292EB7E
+      8FEB7B8AEB7488EA6A7DE6566EDD4361C74B6AC35575C65379CA4D76CA5178C7
+      567EC85C85CC6087CC6288CB658BCE648ACD6188C95F88C95A81C25578BA5276
+      B34F76B05E87C2638BC8658AC36283BD6C8DC36B8DBE5F7EAC6583B07895C281
+      9CC987A3CE87A4D48DA6DA8CA6DA85A1D97E9ED97EA0DA7E9DD6829FD57E9CD4
+      7E9BD2819DD07D9BCE7D98CD7C98CC7595CB6C8BC66C8EC75679B76B88BD7692
+      C66F8EC57793C97491C76D8DC37592C97896CB7393CA708FCA7591CA7D96CD6F
+      8BC96C87C8748EC96D88C9627DC66E88CE6782CD5878C96385D0708AD36781D2
+      637ED06079CF6378D0657ACF546CC7677ACB7285CB6078C65C76C8677FCA7087
+      D07086D27285D25465B33C4A90455499475CA04D65B3667DCD778BDB788FE476
+      8DE4758AE46981E47488E77D92EA6F89E6708DE4758FE46B87E27893E9859DEB
+      829BEA7998EA7C9BE887A0EB7E9BEB7B9CEB7E9CEB7B99EB7B9CEB7B9AEB6C8E
+      EA7292EB849DEB88A0EB889FEB85A0EB809EEB819EEC86A1EB87A0E98DA5EB87
+      A3EC82A1EB89A6ED8AA4EE89A4EF84A1ED7D9EEC799AED819EEF809CED7999EC
+      7696EB7795EB7696EB7695EB7595EC7999EC7C99EC7C9AED7898ED7D99EB7593
+      EB5E85E66C8EEA7E98EB7B97EB7692EB7892E97B95EB7D96EB7B95EB7693E977
+      96E97592EA7492EB7292EB7391EA7693EB6F8EEA6B8BE86C8DE86489E66286E7
+      5E82E76185E75C82E65A7FE45F82E46486E36282E4597CE14F73DE5171DE526F
+      DC4A69DA4664D94663D7425DD53854D03656D23F5FD74A6ADA5276DE5179DF50
+      79E04F77DF5078DF4C75DC4D76DC5079DB486DD34164CB3F64CE3C61C6345BBC
+      254BB13457B16683AF88A1A484A2A288A6A78EA5A688A3A288A6A389A6A58AA5
+      A687A4A58EAAA88EACA887A2A88EAAA888A5A48CA8A58FADAA80999A3C504C1C
+      25213C4D538DB0B186A4A382A1A285A3A389A6A68CA8A888A8A58CAAA486A5A3
+      89A3A589A1A688A5A58DA8A78DA9A98AA5A888A4A58EABA88EA9A88CA8A98AA9
+      A88AA9A98EABAB8DAAAA8FACAC8AA9A588A8A388A5A487A4A68CACAC8EB1B079
+      9B915B746A425C5A58797CD4DEDBD1D8CCCAD7CDCAD7CFDADFD99EAFA8729796
+      88AAAB8AA8AA88A5A689A4A680A0A27EA0A082A2A287A1A28AA3A4819D9C809D
+      9B88A1A3859FA0829C9D829C9C819B9C849E9F869EA07C999594B0AFE8F6FAE6
+      F4F5E0F1F2E6F3F4E3F2F4E6F7F6E6F5F5E9F7F8E5F6F6E9F7FAE5F7F9EAF7FA
+      E7F7F8EBF9FAE9F9FBEBFAFBE8F9FBF2FDFDF1FDFDECF7FAE8F5F5DCEDEDE7F3
+      F3E5F2F0E5F3F4E3EFF1E8F5F3E5F3F0E7F5F5E6F4F5E6F3F1E5F3F0E7F5F5E5
+      F3F3E6F4F4E8F4F3E8F5F1E7F5F5E7F5F5E9F6F6E6F3F1E9F5F4E7F3F5E9F5F5
+      E5F3F3E8F6F5E6F3F3E9F6F6E8F4F3EBF7F6E5F3F4E9F6F4E6F3F1EBF7F8E5F3
+      F3ECF7F8E5F3F3EFFBFDC8E6D8DAF1E7FCFFFFFAFFFEF6FDFDFAFFFEF9FDFDFB
+      FFFDF9FDFDFAFEFEF8FDFDF9FFFDF6FDFDFFFFFFE5F8F39EC8B96D897D7B9787
+      7D9A8988A09288A19391AA9C93AA9C99B1A59BB4A8A3BAAFA8BEB3ADC1B6ADC3
+      B8B3C8BDB5C9C0B7CBC3B6CBC3C2D4CDD8E7E3E1F2F0E5F3F5E4F1F2E4F2F1E4
+      F1F0E3F3F1E2F1F1E5F3F3E5F3F3E5F3F3E1F0F0E5F4F3E6F3F2E7F5F5E5F3F2
+      E8F5F5E4F3F1E7F4F4E5F3F2E8F4F5E7F1F1E9F5F5E5F2F1EBF7F8E7F4F5EBF8
+      F9E7F6F5F0FBFDE5F4F5E5F4F2E9F7F5CFE3E1D6E7E4DAE8E9D8EBE9DAEBEAD9
+      ECEBD7EBEAD7E8E8DAEBEAD8E9E9DAE9E9DAEBEBD8E9E9DAEBEBD9ECEBD8E9E9
+      DAEAE9DBEBEAE3F0F0E3F0EFD2E4E2DAE7E6DDECEBDCEAEBDCEBEBDBEAEADEEC
+      ECDDECEBDCEBEADDECEBDDECECDDEAEADBECEADCEBEADCEDEBDEEDEBDAE9EADA
+      EBEADDEDEEDAEBEADAEAE9DCE9EBDDECEBDDECEBDDECECDDECECDBEBEBDBEDEE
+      DAECEBDCEDEADDEDECDCECECDAECEBDDEDECDCEDECD9EEEBE4F3F2BDC4C3B1B0
+      A88D958982927F858A7D82857A8C917F7B7E685C7A623B795F37755B3A755B3D
+      79613C775D3D785F3C745B366D53396F563C71594A7A624C5749524F36454D2A
+      4B492D4744294244293F3F26454632585A48616A4F212D122D3421262B1A2B32
+      243032192C341D33341C33321D31311B31321C2D30182F2F1C282B14202B1C31
+      3A2D3F493425291512140A110E0B100F0D110F0B191D13232517242817202518
+      2328191F251322261420210F2325151C21131C1F13201F13202212252A172A2C
+      172D301B2C311E2A30212E352A484C3F424A3010140610140C12170D131A1117
+      1D0E1A1E151B21191C20161F221A2125171C241A1E1E19191E16191E12222C1D
+      181E18636D6C81876C5C664B24301D3039283A3D2C3D462F4C4E3B4243343B37
+      24343219242A181C201111130A0F100C12120C23201620221822271B262A162C
+      2B1C3137252E38273534243F4330494A354C4E36505337514F35545235505339
+      40462D3A3B2246493058533D5554375857365555394D503659543D524C33464D
+      31464D2F3D3F23444028383A1D393A1C32341B3E462B2E321D3C4542636C5658
+      5A38263012272B162A28182C2C1E2F301F2E301A24231614160B080C08111513
+      12130F100F0B12120B10130810130A15140D17190D171A0D1E1E0C1E1B0B201E
+      0E2222112022121B210D1D2414313424201F15222013221D15171B0F151B0D18
+      170C14150B11160D232D2B394D3E3E59494B57504D5B5645504848554A3B4C42
+      5362625162514A5D4F4A594A556A5854685647544A4B6053556455596A584959
+      49455645515C5459645B475A454A5F4946564554605450604C464F434B594A36
+      473936453B2637302C413B4F5E5556695756625344594554685851614C637160
+      4A5D4F4D6052536955566B5E5165544C5E4F526352495F4A566D58536A584757
+      4A5063534D5F51596B58536456495F4A50604B5363535B6B5A5364544B634F4D
+      624F4B6050606F5A5C6D584F5F485765534A5E4A576B554A5D4E42533F4F624C
+      3D4F3F5A6D5B526356475C4952635B37483E53685D556A59485C495B6F5D4155
+      42566B5A5E6B595668565669594A5E505368575B715856695952645600007D98
+      FE8298FF879DFE7E98F97B93FA8098FC8197FD8299FB899FFB90A4FD899FF97B
+      90EF8091EC8697EF8599F18093EE8498EF8096EC8093EC7C8FEC7689E97C8EE8
+      8092EB8293EE788BEB6579E46B7DE85F76DC4966C55574C6607EC95579C84F75
+      C6567CC85479C56387CC6387CC6288CA6288CD658BCE5F85C86187C7567CBC49
+      6DAE476BA04B6DA06086BF5E87C6658BC76D8FC66F90C56283B75F80AC6A8BB7
+      7592C0859EC885A1CE87A5D48DA8D989A4D9809ED87B9CD981A2DA84A3D9809E
+      D37E9BD37997D07B99CF829CD07E98CE7B97CE7B98CD7090C97492CC6487C366
+      85BF7690C47390C67390C57C98CB6F8DC47792C77C97CC7092CA7893CC7592C9
+      7392CB7795CF6F8DCC6B87C76B87C8617EC75E7ECA5E7ACA617DCC6681CF7287
+      D06581D05C78CF5B75CC5E76CC6076CC546CC55E75C56176C05268B95C74C079
+      8DC87386C4657CBE4557992F3B73455485303F6C2C3B6B2D3B652833543F4D86
+      6376C8758FE37891E97487E46C82E4728AE8738EE9708EE77491E46E89E17C95
+      E77E97E67C98E67796E47D9AE489A2EB86A2EF7C99EB799BEA7697E87898EB7B
+      9AED7393EB7997EB819CEB879EEB879EEB829EEA829FEB86A0EA8AA3EC87A1EB
+      88A1EB8CA4EC8DA3EC8DA5ED8AA5EC8AA4EC8CA6ED86A1ED81A0EE80A0EF7E9D
+      ED7C9AED7797ED7796EB7B99EB7998EB7493EB7898EB7B98EB7998EB7395EB6C
+      8EEA6E8FE76388E7698BEA7892EA7991EA728EEA708EEA7391EB7591EB7691EB
+      7290EB7492EA7491EA6F8EEA6F8FEB7392EB7796EC7693EC6E8FE97290EA7693
+      EA7091EB6387EA6286E96487E85B82E65A80E76183E76686E36482E3597AE252
+      74DE5270DB4C6EDB4566D74160D23E5CCF3A59D23654CF3753CE3856D24060D6
+      486ED94D77DB4D79DC4B77DA446FDA3E6CD94673DA4A76DA4571D2426ECD3E6B
+      CB315CBF375EB16183A77C9B9F92ABA78CA39F87A1A08CA5A68CA6A387A4A28A
+      A6A688A1A48CA5A08AA5A38FAAA68CA4A690A9A690A9A890A8A896B0AC89A39F
+      445A561F2F29435C5F9BB8B692AAA794ABA992ACA593ABA799B0AE98B2AF98AF
+      AA99B0AB9BB2AF9BB1B29AB3AF97B3AF9BB7B399B2B098B2B098B1AF99B0AC92
+      ABA691ADA892AEAA8DAAA590ACA791AAA794ACA890ADA890ACA796ADAB99AFAE
+      9CB4B0829E9852716A4D665D2E444192ABA2B4C2AF8EA08E869C8E97A99D8EA5
+      A091A9A891ABA996AFAE97AEA993ADA993ABAA92ABA78FA9A693ADA996AEAC91
+      ABAA92ACA79BB2AC96ADAA92AAA894ACA999B2AE96B0A992ACA98CA6A4A7C0BF
+      ECF7FDE5F4F4E1F1F3E7F3F3E4F2F3E7F6F5E5F3F5E6F5F6E5F6F5E9F7F9E5F6
+      F8E9F7FAE8F8F8ECFAFAE8F8FAEBFAFBE7F9FAF2FDFDF1FDFDEEF9FAE9F6F5DC
+      EDECE7F3F2E2EFF0E5F3F3E3F1F1E9F5F4E5F2F1E7F5F4E5F3F4E7F3F5E6F3F2
+      E7F5F5E6F3F4E7F3F3E8F4F3E8F5F4E7F6F5E6F5F5EAF6F5E7F5F2E8F6F4E8F4
+      F5E9F6F5E6F3F3E8F6F6E6F3F3EBF7F5E7F4F4EBF7F9E5F3F4E9F5F2E5F3F0EB
+      F7F8E5F3F3EBF7F5E5F4F2ECF9F9D7EBE6E7F4F2EBF7F8F0FBFBEBF7F6F1FCFC
+      EDF7F8F1FBFBEBF7F6F1FBFBEBF7F6F1FAFAECF7F8F3FCFDF0FCFBB6D0C76C89
+      7A7E98897E9B8D87A1938CA49793AA9B96AD9F9CB3A7A0B7ABA6BBB3AABFB5AD
+      C2B8B1C5BDB5CAC1B4C8BEB8CDC3CDDFDAE2F0EFE7F4F5E2F1F1E0F2F1E5F2F1
+      E5F3F2E1F1F0E4F3F1E2F0F1E3F2F4E6F3F3E5F3F2E3F1F1E6F4F4E5F3F2E9F5
+      F5E5F3F2EAF5F5E5F3F1E7F4F4E5F3F4E8F5F4E6F2F1E9F5F5E5F3F1EAF5F5E5
+      F1F2E6F4F3E4F1F0EBF7F8E0EFEEE3F2F0EAF6F8D2E3E2D5E7E6DAE9E9DAEAEA
+      D9E9E9DAECEBD9ECEBD7E8E8DAECEBDAECE8DBEAEADCEBEBD7EAE9D9EDEADBEC
+      EDDAE9E9DAEBEADAECEAE0F0EDE2F0EFD5E7E7D8E9E7DBEDEBDAEAE9DBECECDA
+      EBEADBEBEBDDEDEBDDECEBDBEBEBDCEDECDCECEBDEECEBDCEBEBDCECEBDCEDEA
+      DAEAE9DBEDEBDDEDEDDBECEBDAEBEADBEAEBDEEDEBDDECE9DDECEBDEEDEBDDED
+      EADEEDECDBECEADCEDE9E0EDEBDEEDECDBECEBE1EEEBE0EDEBD8E9E6DBEEECE5
+      F4F4E4E7E8B8BBB4B7BDA9D0CFBDCAC9BAC2C6B5A6A498456B5836755A3E7D61
+      4380643D7E623C775D3C755A3D755E3F795F3F7D603C7A5D467C604B5A445953
+      3C5454355252355351315B5437514F2E474C34585B446568522B321631351D30
+      381D37381E3C3C1E3D3E24403E243C3C2443392144352239371F3D311B39341D
+      2B321C323C2D3E44353538254749344949314B4C3741452A282912181E122328
+      16433B2F3B43283D432A3F442741442630381B292C2239372945422E3B3F293D
+      3F294448333D442A333F2D373A30626C6C7E86727E826D6A735D5B6257555B47
+      4F543B5155394A4D384143314549363C44333D473140432F3E44303233213D43
+      2D40483517200F676C6982876C616C51434B35444B354B4D334C49314A4A334B
+      4D38454A2F4B492F3032191C1E0C0D12060F120B11130D1D200F1A1E131C1B0E
+      191E111A1F13202616252A152A2B1A272F212B2F1F2D302135372234361F343A
+      23363A1E3A391D33351C3A3F25393D233F42283F402B3D412D4044323E433044
+      4930414A2F40483045473646463743462F3E43293D43284B523A2A2F2139433E
+      6468515C653E3B422438371D3336192C2C1A2626162024121E220E15190A090C
+      0B13161415161415150E161912171D111C1E11191D112522142423132827162B
+      2917312C1C2E2B1831311E32331F30301B303224272D222E2B1D2528171B2111
+      1B200E171B0F171B0E15190D2829283C4A3E455A4E4352474C5A554352474253
+      483E4D455466615562554C5D4E465A4856635A5A6A5747564E525F5456615556
+      6A5B495C4B48594F4C5B4E5C66614C5D4C4A5B4746554350605350604F425245
+      505B5123352A111B160B1A170C1E1A0E201F17251B18271B14211720321F2135
+      252233241A2A232037283042363141362C412B2237273A4A3F3E5B434861533E
+      5649394C414A60514B65555C74604F604E4D5F505B6C57596B58657063506251
+      4B62505A6D5A566B5A697E655C6E5F54665754665D4D654E606C575162544657
+      444B604E43594460745E506452445C4B4C6153405644586D5A596A595260514F
+      6A59435948586B5E5C6A5E5468545465555060535769585E6D5F55685B506354
+      0000819AFF7E95FE849AFE7D96FA7B92F97E98FB8198FC869DFD829AFB8AA0FE
+      879DF97C93F08093ED8196F0859BF28296EF8193EC8296EF8095EE788BEC798B
+      EB8091EB7E90EB7588EB6E80EB6D7EEA7487EB5B75DB4666C35774C45975C552
+      74C64871C45076C65B80C85E83CA6287CB6588CC6288CB638BCE5E86C95A80C2
+      5277B540639F4D6EA25274A85B83BE5F86C5648AC66E8FC77492C66080B15A7C
+      A76B8DB87491BE869FC986A2CD87A5D08CA8D689A3D87B9CD5809FDA86A4D988
+      A6D9819FD5809ED47E9DD27C9AD07B99CE849ED37D98D07C97CD7E9BD07997CE
+      7695CA6E8BC57793C8748FC67490C67793C87793C97792C87490C87997CA7895
+      CA7692CA7291CC6989C9728ECB728DCA6E89C96680C76182CE5C7ECF6580CF6D
+      83CF6B81CD6581CE5C75CD5A71CB5B75C96176C9576AC25265BE475DB54C60B3
+      6F81C16F81B76C81BA5266A234427F5362962835511C253D1922370304070200
+      01171F363544784C60A2697ECD7C91EB6F83E96D83E67288E86681E6728EE67C
+      96E77E98E67792E47591E37C96E3819AE887A3EC809EED7796E97C9AE97C9CEA
+      7B9BEB7C9AEB7E9BEB819FEC829DEB849DE9829CEB849EEB88A2EC88A1EB89A2
+      EC8AA6F08AA4EE8DA4EE8AA4ED8DA4EC89A5ED8CA6EF8DA4EE8EA5F08CA5EF86
+      A1EE829EED7E9AEE7899EE7B9AEB7997EA7B96EB7996EB7796EB7798EB7496E9
+      6F92E9698DE96C8EEA7D97EB7795E87491E97490E96C8BE96B8BEA6F90EA708E
+      EA708DEA7491EB7693EB7492EB708EEA7390EB7693EB7695EA7998EB7595EB73
+      92EB7896EC7B99ED7292E96085E66487E76489E85A81E6577FE45A7FE35B80E3
+      6588E46686E35475DE4B6FDA4F70D8496DD84264D53C5CD03B56CE3550C9304B
+      C82F4AC73755CA3E60D24168DA446CD9426AD7416DD74574D84975D6436ECF3B
+      68C73862C14569AE69889B526F777597A09ABAB89DB8B69BB7B497B6B496B2B0
+      97B4AE96B6B389A5A992ACAA98B3B493B1B18EADAC91B1B192B2B38AABAE96B7
+      B890ADA8364C4623322D34494687AAAF90B1B290B0B092B4B289ABAA89AAAA93
+      B2B496B3B48EB0B08FB1AF96B6B494B7B496B8B59AB9BA9CBABA99B8B499B8B5
+      9AB8B79CBAB898B7B39AB8B59CBAB79CBAB79CB9B699B7B69AB8B99CB9B999B6
+      B496B4B39DBAB87B9A96577772445E5231443E8595867C857361695A5C65556C
+      7C6F8EACA997B9B991B1AF97B3B390B2B28AABAA92B1B28CAEAE8AABAC96B4B4
+      9AB7B598B4B594B3B28FAFAE8DADAC8CABAA8AADA98AAEA88AADA98CABAB7EA0
+      9B99BABFE9F7FDE7F4F4E1F0F1E8F4F5E4F3F5E7F6F5E5F3F3E6F6F5E6F7F6E8
+      F7F9E5F4F6E9F7FAE8F7F6ECF9FAE8F8F8EDFBFAE8FAFBF1FDFCF1FDFDEEF9FA
+      E9F6F5DDEDEDE6F4F3E3F0F0E5F3F3E4F1F1E8F4F4E4F2F1E7F5F4E7F5F5E7F3
+      F5E5F2F1E7F5F5E6F4F4E7F4F4E6F3F2E6F4F3E8F5F4E7F4F6EBF7F6E6F4F1E7
+      F5F3E7F3F5E8F5F5E5F3F2E9F6F6E7F4F4EBF7F5E7F4F3EBF7F8E5F3F4E9F6F4
+      E5F3F1EBF7F6E5F3F3EBF7F9E5F3F2EAF7F6E4F2F3EAF6F9E0EFF1E9F7F9E1F3
+      F2EBF8FAE5F3F3EBF7F9E3F4F3EAF8FAE1F2F2E7F6F8E1F0F1EAF7FAF6FFFFCC
+      DEDA6D897C7D9889809B8D88A2958CA59794AC9D98AFA39EB7AAA2B9AEA8BEB4
+      ABBFB7B0C5BDB2C6BEB4C8C0C3D5CFD5E7E3E5F4F2E6F4F5E3F0F0E2F1F1E2F3
+      F1E6F2F2E5F2F2E0F1F1E3F3F1E4F1F1E5F4F4E5F3F3E4F3F3E4F1F1E6F4F4E5
+      F3F2E9F5F5E5F3F2EAF4F5E5F3F1E8F6F5E5F3F4E6F4F3E6F2F1EAF6F5E5F3F1
+      EAF5F5E5F1F2E7F4F4E5F2F1EBF7F8DEEFEEE3F2F0EBF7F9D4E4E3D7E7E7DCEA
+      EADBEAEADCECEBDCECEBDAEBEBDAE9E9DDEBEBDDEDEADDEBEBDEECEBDBEBEBDB
+      ECEADDECEDDEECEBDEECECE0ECECE2F0F0E5F1F1DCEBEBE0EDEBE2EFEDE0EFEC
+      E2F0F0E4F0F0E5F0F0E5F3F0E5F1F0E5F0F1E5F0F1E5F0F1E7F3F1E5F2F2E5F2
+      F2E5F3F0E5F2F2E5F3F2E7F3F4E6F3F3E5F3F2E5F2F4E7F3F2E8F4F3E7F4F8E7
+      F5F5E7F5F5E9F5F9E6F3F4E6F3F4E9F5F6E8F5F6E5F2F3E9F4F6E7F6F9DCEFF1
+      DDF1F1E9F8FCCAD8DFABB6B2B6BAAEB9BDA9BEBCA7ADAFA080968E3E74613875
+      5A38765B3970583C715A437A634480644380633E79603A6E58376A553F6C5847
+      55434A4D3349492D434A263C42274041223F402243472A585D47676B4B2D3613
+      29331B2C30192C321E30331C30331A2F341A2F341C31351C33321933331A3031
+      1A2C2C162B29173B3D2C3F43313842284D4F36534E33464A3145442E2F331623
+      261433301B403E243B3C213C41233D4222424525343A1E363C28343C26404025
+      3E3E1F3C4024373A1B3440223C3B21363A2964696B555F48555E4558604F626B
+      51616D5F656F5B666B575F695555624F59624B5F655159644B5B614A61634C56
+      5B44636252505737252415636F6B81896E767962676A4B5F6147595A4157593C
+      54513A3C412B3336222E2F142E2D161A210F1115080E0F0811140D2323162323
+      122724162A2C1C303221323622373A2B3840323E4634434A3D4B4D3851523853
+      523B515739504F2E47462E363524474A374F5035555336534F2F4F5236484B35
+      4B4C3942452E4547313E432A353A242B341A3134192C2B1931342141462F3134
+      253A463F696D5E565E353136142C2C172A311C31311C31321E2F341B2A291615
+      170B080B0B12121215170D10100C11140A13160B15180F151B11171B0D1C1B12
+      1B1D142527132B25132A2816242613262A14272A1730362524281C25281A2523
+      17212117221F141E1E0B191B0D1A1D112E2F2F4653444852504455494B5F5545
+      57504D5A4B394A4452635D546656505C4E42524956656555685B4D5B4B4A5C4E
+      3C5147596F6252604E48574F3E564E5A6B624D5F52405948425D455263535262
+      524455474C5C502A342B16231E10222218242211231E0F1F22172C2B101A161A
+      2628102421172A280E1E160A131107120E111E1B1223190B1B16122826122622
+      0B1915101A160C171513211E0F211B121E1912211910221616281E17281D1A28
+      2118282317271E243229293A2E263F30273D2C24382932493E354A3D3147342A
+      42352C44353C52473F53473B4E3C3746363142383F5C50445A4A536A52475E49
+      3F5045546C5F465D525A70605A6B56516552566B6053685A5E6F625C705F5769
+      564B665797697E95FB7D96FD7D98FF8098FB798FF67D95FB7E96FA849BFC849B
+      FB8A9FFC879BF97D91F1768DED7990ED8299F38295F17D91EE8296F18097F078
+      8DEB8293EB7D8FE9778AEB7286EB6D80EC7E90F27789EB536DD84868C65875C5
+      5574C55778C85075C64A70C3577DC95782CA6088CC648ACD658ACD668DCD5A83
+      C8587FBE567AB343659D5173A75276B0547FB96087C56288C6698DC77091C65F
+      81B05A7EA76B8BB67D97C189A2CB89A3CC88A3CD85A1D37E9DD3789BD37D9DD5
+      7DA0D57EA2D57B9CD37999CF809ED081A0D37D9BD37997CD819ED27897CE809D
+      D27B9ACF809CD2728FC77792C67D98CA7796C97391C77492C97796CA7C96CB7C
+      97CA7D9ACC7892CB7B92CD7490CC6986CA6783C8637FC85F7AC66381CA6D8AD6
+      5C7AD06280D0627DC96A80CC5970C8536CC76178C65A6DC0485EBD465DBA3F52
+      B0576EBA6174B64F61A8657AB63749875061972D3A6022314F2534470201010E
+      0F181A253711182412182437406345568E5568B46C83E06E87EA7489EB6B82E6
+      6A82E38497E77B8FDE758FDF7691E47791E2819AE67C98E67D9AEB84A0EC7E9A
+      EA7D9CED7999EB7E9BEB85A1EC86A1ED87A0EC869EE986A0EB809CEA859CE989
+      A1EC88A2ED8FA8EF91A9EF8DA6EE89A5EE8AA5ED88A3ED8CA4EF88A2EF8AA3EE
+      8EA3EF849FEE82A0EF859EEF7E9AEE7999EE7B99EB7C98EB819BEC7B99EA7898
+      E97899EA7B98EB7996EB7290EB7693EB7E98EA7996E87391EA7290EB7492EC76
+      93EB7691EA7490EB7491E97893EB7595EB7592EB7692EB7897EB7998EB7B99EC
+      7899EC7797EC7695EB7B98EA7E9BEB698BE95A81E46489E4678AE45B82E4537E
+      E2557FE15B82DF6083E06282E25979DD4F70DA5275D95477D94C6ED74665D23D
+      60CD3557C92F4EC42C4BBE3251BD3453B73554B73857B53C5BB03E5EB33A5CAE
+      3B5BA93D5BA8415E994469662C4E492947483D615F436E6E5383855186804C88
+      7C53867E58857D56897C52887C52877F4D7D7547776B3D7361396D5F3F76663B
+      746542757247746C354D422D362F2B3D3640706F4979733C6B613F7068396A60
+      38685D406C653E6C663F756E4D827F3F746A3E736D3E6E613765604B837D4D81
+      7148776B477A72497C7149796D49776B4F7C714F7E724C7E72487C6F51807645
+      706645716945766F477671537572506B662E43362D423EC4CFCED4D1CBD3D2CF
+      D9D6D3CCC9C1617F732F655A346A5B35665B41756B3D6D5F37665938695A3A6A
+      5A38665744756A4C7E734274663E71643C6C5D366456356858366958396C5B3F
+      6F632B5B4749827DE5F7FCEBF6F6E3F0F2E8F5F5E4F3F5E7F6F5E5F5F2E7F6F6
+      E6F6F8E7F6F9E5F4F6E9F7FAE6F7F8EBF9FAE9F9F6ECFAFAE7F9FAF1FDFCF1FD
+      FDEEF8FAE8F6F5DDEDECE6F3F1E2F0F0E6F3F3E2EFEFE8F4F3E5F3F1E8F6F5E7
+      F5F5E7F3F5E5F2F1E7F4F4E5F3F3E6F5F3E6F4F3E6F3F3E9F4F3E8F3F5EAF6F5
+      E6F4F1E7F5F3E7F3F5E8F5F5E5F3F2E8F6F5E7F4F4EBF7F5E7F4F3EBF7F6E5F3
+      F4E9F6F5E5F3F1EAF6F6E5F3F2EBF7F9E5F3F2EBF7F9E5F3F3E9F6F5E2F3F1E9
+      F7F6E4F3F3EDFAFBE5F3F3EAF7F8E4F4F4EBF8FAE3F3F3E8F7F5E1F2F0ECF8FA
+      F8FFFFCDDADA6E897F7C9A8B819C8E8AA49790A89B97AFA09BB2A5A0B9AEA2BB
+      AEADC2B6AFC2BAB0C4BCB9CDC4CEDFDBE4EFF0E5F5F5E0F2F1E4F3F2E5F2F1E2
+      F1F1E2F2F1E7F3F4E5F2F3E2F1F2E4F3F2E4F3F2E5F5F4E6F4F4E4F3F2E3F1F1
+      E6F4F4E5F3F2E9F5F5E5F3F2EAF4F5E5F3F1E8F5F5E5F3F4E6F4F3E6F2F1EAF6
+      F6E5F3F2EAF5F5E5F1F2E7F4F4E7F2F1EBF7F9DCEFEEE3F2F0EBF6F8D9E8E9DD
+      F0F1E3F2F5E1F3F4E2F2F5E2F3F5E0F3F4E0F0F3E2F2F5E2F2F4E1F2F4E1F2F4
+      DEF0F1E0F2F2E0F0F5DDEEF1E1F0F3DEEDF0DAEDEFDCEEF1D5E9ECD4E8EAD2E8
+      EACEE6E7CDE4E8CEE4E6CEE4E9C8E3E4C8E3E3CDE4E3C6E0DFCAE1E0C6E2E0C3
+      E1DFC2DFDDBFDEDABFDEDDBFDEDBC0DEDAC0DED9BBDCD6BBDCD8BADBD3B6D7CE
+      B4D8D2B2D6CDB0D4CBB3D4CEB1D3CBAFD1C8ADD2C7A7D0C5A5D0C4A1CCBFA7D1
+      C4A6CEC29DCBBAA1CDBDA0CCBC99C3B3A7B8AFA1A698B2B8A8B7BAB280998F38
+      6F583C745A3A71593C775D417A60427D63417C613D7658396D56386954366854
+      3C6B57464F4355533A57523B59532B51502C4F4D32515234535236565C43626B
+      4F2937152E36243D3A233B3C1D383C1F3F3E1D4340244039263C39263F3B2238
+      361F3A331C39301B332D1C3A3C27454A32363A243D3F2C474C324D4D37464C2F
+      333518292B1635321D4A482D494828504D334C4F31484E33484E2F46482B4C48
+      305650374D4B30514F30474B2C4C4D2E474C324544316F716C7E867380826B7B
+      816A818A7587897C828B73808B7888907D8088748A927F7B866E6B786159684F
+      53563B4B4C32525540465136222C166A716D8188716D78593E442D434733464E
+      374D5236474B324D4A3B4A4A343F432C2F321C1C200F0E120A0F140913140F1F
+      1E191B1E121A1D1120221323240F252719273022252D1C29311E333824323624
+      3239293B3D23363A243A3C27373C26393C25373F283C41293E422C4142294147
+      2E3D412C43442E474A35454A3A464939494F37464D3449473141432B4A4C3458
+      553E3737223942346268545E61423A4029333926303421272A1C212517202315
+      252514141908080C06111A0E14190D131411181B0A1A180D151E14171E121F21
+      162420152925142F2F1C2F3216312F1A2E311B2C2F1A30301C292A19282F1829
+      2A172825162521141C1E151F1E0D151B0D141A0E242925424A3E415747476051
+      525F54465244485A52424F435763605364544B5F4A4C5C4F4B6560586556465B
+      47526154505C51586B5D4F6056485A4841514458686057645A495D524057444C
+      5E515768524854484B5D5016241A212D2D162A241D332D192D30172D2A19312D
+      0F1A1622322F192F2C1D33331C30280E1B160E1E19152C27172A271525261935
+      35162F29132627192B270F1B171424231427280D18151A29241A292715262310
+      1D19111E160E1B15111E1B1526230F2016192928081A150F1B170F211E0F2124
+      1120160F1F160917130816160F1E1A0B1B1609181608140E0B1B18152B261227
+      23121F1B0815140B1B180B1D16192C1E1123110B2011172F1E162719182C211B
+      39261B33251C37289769788FFA7D95FC7B92FB8198FD7D92FA7B90FA7D91FC81
+      98FD849BFB90A1FD899CF9788EF07B91EF7E92F08196F17D92F27D91F07E91F0
+      8197F17E95ED7E92EA7C8FEB7D90EC768AEB7085ED8193F27589EB546CD94B69
+      C65A77C65676C55274C64D6FC54F71C35279C65A82C9668ACD658DCC6489CB62
+      88CB5C87C9547AB95371A7496DA6496BA44D6EA5557DB85A82C25B83C5668BC7
+      7491C36181AC6081AE6B8BB87E9AC28EA5C987A0C884A0CC7D9CD07496CC7299
+      CE6A96CE5E8BC65A87C06F96C97B9ACE7897CE819ED384A1D57595CC7D9ACE82
+      9FD27E9ED07B9ACF7695CC7796CC7993C98099C97997C97696CA7390C77491C9
+      7491C97792C87D98CB7D99CD738FCA708BCB7792CF748FD26C89D26582CE647E
+      C96B83CF6D89D95F7FD45B78CC667CCB536CC54966C65B73C35A6EBF4C63C151
+      6AC14357B2607AC34263B5536CBF4C62AC3D529942548D3649803E5489040611
+      20293D35446C131A260000000C0F0F3F4A655063953F4C846474B86179D06179
+      DA6981E1677CDD5B6FD45B75D36985DC6D89DF738DDF7895E27490E17C99E684
+      9EEB859DEB7E9CEB7898EA809BEB869EEB859FEB859EEB899FEB8CA3EB7D9CEB
+      7797E8879FE988A1ED7D9DEB89A4EE8EA5EF88A3EF8AA5F089A4EE8DA5F08DA5
+      EF87A2EE849EED7C9BED7D9EEF869FEE7E99EC7C99EE809AEC7C9AEB7E9BEC7D
+      9BEC7698E97797E97997EA7B97EB7696EB7595EB7C96EB7E97EB7C95EB7C95EC
+      7C96ED7995EB7691EB7491EB708FE87591EA7895EB7593EB7492EA7797EC7898
+      ED7B98ED7B99EB7998EB7897EB7896EB7996EB7691EA6082E35B82E16A8AE367
+      89E35B85E0507ADD4874DA4875DB557DDC6283DD597CD94D74D94F74D75175D5
+      496FCF3F64CA3A60C44065C24062B63C5AA2344D8C364B853A577A4B717C4B6F
+      7842636C4C6E7A51757E56756F3F5E4E24473E1E433821463C2353472C6C5829
+      68502D6856316D5E2B6854296B522F74572E73562A69502D6B50276A49256549
+      2A6C5131735730715E2F6955304D4029372F325A4C3576612D685228664C2E6D
+      55306F5836745E366F592E6B523371593A7762347059316B54306A4C306C5134
+      735937765B36785D36775D337055377557357354306E51326F53336F54337354
+      33755530735433715834775B3D7C624A686341564F2C3E2F1E332D7EAEA9A2D0
+      C497C8BE9CCBC198C3B54D856E2D6F5535765A397C643D81663D806138795D3C
+      7E623B806137795A36775E367C5F397F60397D633C7E623B7C603C7D653E7F64
+      3C82643E836A377A5D559786E4F6FAEAF6F5E1F1F1E7F5F5E4F3F5E8F7F6E5F5
+      F3E6F6F6E5F5F5E6F7FAE4F4F6E9F7FAE7F7F6EAFAF8E9FAF8ECFAFBE6F8F9F1
+      FDFCF1FDFDEDF8FAE9F5F5DEEDEBE5F3F1E2F0EFE6F3F3E1EFEFE8F5F4E5F2F1
+      E7F5F5E5F3F5E5F3F4E5F3F1E6F5F4E6F3F3E8F3F3E6F4F2E5F4F3E7F5F3E7F4
+      F5E9F6F5E6F3F3E9F5F5E6F3F3E8F5F5E6F3F3E9F6F5E5F3F2EAF6F5E7F4F3EB
+      F7F8E4F3F3E9F4F4E5F2F1E9F6F6E3F3F1EBF8F8E7F3F3ECF7F8E4F3F2E9F6F8
+      E3F3F2E8F7F6E4F3F2EDF8FBE6F3F3EBF7F8E2F3F1EBF7FAE4F2F1E9F7F3E5F3
+      F1ECF7FAF8FFFFCCDBDA6D897D7D9B8C819E918EA69B93A99F9CB1A69EB6A8A3
+      BCB1A7BFB3ADC2B7AFC5BCC4D5CED9EBE7E7F5F5E0F0F0E1F2EEE0F1F0E4F3F2
+      E4F1F1E3F2F1E3F3F2E6F3F3E6F3F3E4F2F1E5F3F3E3F3F1E3F4F3E8F4F4E6F3
+      F3E3F1F1E6F4F4E5F3F2E9F4F4E5F3F2E8F4F5E5F3F2E8F5F5E5F2F2E8F4F4E5
+      F2F1E8F5F5E4F2F1E9F5F5E6F2F1E7F4F4E7F2F1EBF7F8DCEEEFE4F0EFF0FAFC
+      C3DCDA9BC5B7A2CDC0A2CBC0A4CABFA2CBBCA3CFBFA0CABD9CCABC9AC9BA9BCA
+      B89CC9B798C8B593CAB594CAB894C6B397C8B494C4B296C3B094C3AE8FC0A88D
+      BEA48ABEA585BAA480B79F80B69B82B79D7DB69B7CB39A7DB49981B69782B498
+      7DB39679B19577B08F78AF9367A38B69A58B77AF8F77AE906EA68672AA8873AA
+      886FA6856EA5846DA4816BA27D6AA17C6CA37E6CA27E669C7D5F9776629C7D60
+      9B786AA07E70A4836A9F7C6DA27C6FA47E6BA37E84AA8EA4BBAA93B79FA2C4B3
+      90B0AA3D6E583F7A5E40795F417A5F3D755A3A6E59376A553569533269532D69
+      4F3069513C6954424E3E464A31403E273C411E383C1D3A40233A3E1C42422A56
+      5C47636A4F34391929301C2E321D312B162C30182C33182C2F16322F162B2A17
+      2D29162F2F1A2B2D16262913282719383D2A4148363F44314A4B364F4C374549
+      343F49293036162A2B172B29173E3A243B3D1D373B1E323D242F3C1C3B3A1B33
+      381C313A1B31342136361C343A1D353D2135391F353B1F363C2D606B683F4F2F
+      454D36505748525C4F5C66556A77616C7869798676878D80919C8BA0AD99AFB9
+      ABBBC4B3BBBBA273745263694E5C6242292D1B6A736989917C77816970715867
+      6C515E614752593C514D3741432B3639193437182D32161C240E1114090F130E
+      13141122231620231723271B272B1F2E30213639253C452E3F4731464B384A4E
+      3E4D513E56594055553E52543E54543B4B4D353A39224C4E395453384C4B3348
+      4C314B503345483541473241452D3B40273C402B2C381A2D33162B32172F3119
+      2B2D1A46513C3239243D443B6169555F5D40333B1F343722373B233437253138
+      2732321E2527131B19080A0C0812150E15190D12160B10180B191B1215190E17
+      1E121D1E12252214252716292B182D2D1D2C31182E301D2E311A312B19282A1E
+      282F1E2C2C182727162324162023141E1E14171E14191B122A362C3C4B3B4155
+      484B5E524A5E544B594C48594B4152484D665F5565564C5D4E495E4E54695B58
+      66574456475664505762565C6A60515F524A5D4F495E52566B594D635141544B
+      455B4E55655D53645443534551695D3747351B302818312E17333117322E1A35
+      331F3A321529261B342F1D35361B312D173127182C2C152D29152A29112B2513
+      2C291A352F142C2A1127251C34350B1D191729261A2F2C1F30301D342918312C
+      2037310F231C13222216241F122121152A2310221D16262610251B152B24172F
+      2A17342D172C2810241B0D1F1E122723162725172D2413262311191611261C11
+      2D2C1D4038152F1E0B1815172C270C1F191C302817262117262110241911261C
+      0D201B11241C0B201412281B9769738DFA7892FA7991FA8198FC7E98FA7991F9
+      7D92FD8199FD829AFC8EA2FD899DF9778BEE7D91F18599F38497F17B90EF7E95
+      F07C91ED7C92F17B90EE8091EE798EEE7D92EE7283EB7889ED8192F17E91F062
+      78DE4360C34F6CC05671C45171C5496FC34F70C34B71C2597DC56283C66B8ECD
+      6287CB5881C86188CA5478B94968A05071AB3F5F9C425C90567CB55580C06187
+      C46B8DC46B89BC54719C6181AE6689B87895BC879EC2849CC37C98C57495C764
+      8FC74C7EBD3D6CB1315AA333569C6185BA809FD07D9BD07E9BD082A1D384A2D5
+      7D9AD07D9ACF809BCE859FD37B9ACF7492CB7D99CB829CCC7996C97C97CA7691
+      C76E8BC57695CC7695CA6E8AC76D8BCB7593CE7796D36E8DCE6581C96F8BD275
+      90D96F8BD7617ED26B87D56D89DA5E79D5607ACF5B74CB445DC15068BE5368BC
+      586BC36175C5465EB74862B9496EC25B81D9496BC63C56AB44559F435EA90B15
+      332E394E5063A3161E350403000707050D0F0E3F49644C5C8C4A5A8D7680B563
+      6FB3374BAC304CBA304CC24A65D06C89E2738BE3748BE17892E27992E27590E3
+      7996E47D99E9809BE9819CEB809DEB82A0EC859EEB87A1EB85A1ED889FED8AA0
+      ED82A0EB7698E9809BEB86A1ED789BEB88A2EF8FA6F089A4EF8CA5EF8EA6F08F
+      A8F18EA8F085A1EF849FEF85A1F07C9DED7C9BED819CEE849DEE849DED7C99EC
+      7696EC7899ED6A90E86E92E77D9BEB7C99EC7D99EB7B97EC7995EC7992EB7E97
+      EB7D96EB7D97EB7B97EB7491EB7390E97691EA7591EA7592EA7695EB7393EA72
+      91E97495EB7997EB7B97EB7898EB7796E97695E97290E76F8DE46F8BE46285E3
+      5A81E05E83DF5E85DD5C82DD557FDC4874D9456FD64F77DA5A7ED9577CD64D75
+      D0446BCB3A5FC33D63C04A6FBD425FA53A5196354B89385286446284527C7A5A
+      8977537E6C567F6E50796B57816F618E7D4B756026443C223A3E2E5D583F8169
+      4286754C988647867D478A7E48937C45977A45957A48957D499981499B814A99
+      7F4A997F4998804B9984489988478778334941293431376A60499D8347927848
+      937A4B99804C99804D9A804B977A4893774A967A49967C4B9B804B9A7E4A9B7F
+      4A9B7F48987D509D8351A18452A08552A0864FA0864D9D814C9F8150A085519F
+      8552A1844FA0814B9E814B9C814C9F80589E896A8988637C72455A4C15221A26
+      654F3D9B7E34886D398D6F3E9176499A834B9A8148997E499A83489C80459877
+      47987C47997E43927D458F7A46907647957A47967A44927748977C47937A4690
+      774A927A4A967D4A937D408B6E5FA395E5F7FAEAF6F6E1F0F1E7F5F5E5F3F5E8
+      F6F6E5F4F3E7F6F6E5F7F5E8F7F9E5F5F6E8F7F9E7F7F6EAF9F9E8F9F8ECFAFA
+      E7F9FAF1FDFDF1FDFCEDF8FAE9F5F5DEEDEEE6F3F3E2EFEEE5F3F2E1EFEFE8F5
+      F5E5F2F1E7F5F4E7F3F3E5F3F4E5F3F2E6F4F4E6F3F4E8F4F4E6F3F1E6F3F2E7
+      F5F4E6F3F5E8F5F5E5F3F2E9F5F5E6F3F3E8F5F5E6F3F2E9F6F5E6F3F3EBF6F6
+      E6F3F3EAF7F6E5F3F3E9F5F5E4F2F1EAF6F6E5F3F1EBF7F5E6F3F3EBF7F8E3F2
+      F3E8F5F8E2F1F2E7F6F5E3F2F2EBF7FAE5F3F2EBF7F8E2F3F1EBF7F9E3F0F1E9
+      F7F5E6F2F3ECF7FAF7FFFFCADAD96F8D7F829D8E86A19291AA9C96AEA29DB4A8
+      A1B9ACA8BFB4A7BEB4B6C9C1D1E4DEE5F3F1E1F3F1E3F1F0DEF0EDE3F2EEE3F1
+      F1E5F3F3E4F1F1E3F2F1E4F4F3E7F3F4E6F3F3E3F2F1E3F3F1E4F3F1E4F4F3E7
+      F4F4E6F3F3E5F2F1E6F5F5E5F3F2E9F4F4E5F3F2E8F5F5E5F3F2E8F5F5E5F3F2
+      E7F4F4E5F1F1E8F5F5E4F2F1E9F5F5E6F2F1E7F4F4E6F2F1EBF7F8DEEEEEE4F1
+      F0F6FDFFAFC8C66299736CA47E6EA4806BA27E679F7A649B7C60997A5F9D7C58
+      9673609A736AA07A6197765791725E9775639C76659D776B9F7E6FA5816DA07C
+      6D9E7D6FA17F6DA17C6C9F7E65997D6699776A9D786A9D7D64977C6C9E806D9F
+      7F6C9C7D6C9B7C699B776595746590765B886B608D6E6C987C699677638F7265
+      937365917167937369967469957665917464916F669372679574639072648F71
+      668E716792746C96776A93746A92726E97776E9678628D71507C6242715B4273
+      5E3B6F5939745B3F78613C6F5A376A54396A54396C55326B532F664E30654E2F
+      654C2F624A2E5F4938614F404E3A5352365151364D50344B4B2C4A49304C4D2C
+      484E32555542666B50313B16313724373A24393A1F3A3B243B3B26403E233E3E
+      23383A1F3C3B1E3A371E37361C33351B28311E2F3A2A4047363A3D2248482B54
+      523C53513A5553373B3D21242716323225504A37564C2F4D4E2C554B31534E32
+      55502A4D4D2D4B4A2F4F4F2B4C50324D4E33544F2E514C304D4C324145356B70
+      6D969C8391957D949D869DA48F99A28CA8AE97A7AE9DADB3A5AFB8A5B2BAA6B8
+      BBB0BBC1B7C8CAC1CDD1B1656A3D5B61424C56382B371E6F716B819074757D5E
+      43492D44483142473240432D41402842423043412A4641243A381B2427130E10
+      090E0F0A0F0F121B2218131B111B1B121A1E161C22151E21112425132627161E
+      27161F2C1A222A191D27132D2F1A2F311B2F311F2C3017323A1E31362331351E
+      32351F343A1A323A24383924433E29393F233D3F2942402C474C34424A2B4B4E
+      37444831504E37595A45313724393F365F655966684C4044273C3E233939242B
+      2A1821210D20200D2523131B1B09080C0911131515191112180B1B190D17190B
+      1B1E14192113212415252413272816262A182E301D30342231301B312D1A3131
+      1A3335242626152327162322191A1F131C1B1112180C15190E11140D20212246
+      554A3E53474B60564C5D5143554749564F41514549615A576457475D51495F4E
+      57665A576656465B455164505364555F6A5B4B5F4E4A5A514B5F5155695A4C63
+      5341564C45594E5262575764524053404A64593C4E381D2C271C2D28172D2712
+      2D25173530173228182C281C2C28192B2719302A1C2C26172D28132823122B28
+      152F28152B261A302A15332818312B1F3A33132C2612251E1F3A362037322138
+      331E322D223C33172F261B332E1A3630183630182F2B152624162B2B1B282620
+      332E213A391B36301E332D1527241C342C1A3125112A251E3731203731152823
+      17282A173030223C361F38301023161D2C2A0B1A161B302D1D342E1A322D1527
+      2312241A13231F1728221122171024190000738AF67890FA7D95FC8097FA7D97
+      F67990F87D92FB8199FA829BFC889DFD869AF6798EEF748AEF7E95F18095F17D
+      92EF7D93ED798FEB7B91EF7E95EF8195F07D91EE7C8DEC7588ED7C8EEF7E90F1
+      7C8BEF5B73DD405EC14D6BC15A78C85678C6466CC2446CC34A70C25578C4597E
+      C46483C66487C9587FC65980C5597FBF4D70AF496DAE3D5A993F5B8F5277B350
+      79BC6588C46E8FC46081B351719D5C81AF6487B3758FB47C92B67790B57490BD
+      618BBE3A6BAC244D97274B952C5095334F95526FA97597C8809ED282A0D486A2
+      D484A1D27B99CF7E9CCF829FCD85A0D085A0D47B97CC7693C6849ECC809CCA7C
+      95C87892C77895C97895CA7999CF7595CC708FCD6A86C9728DCF7391D66B8AD8
+      627ED26281D26A89D76A86D96581D57692DA728EDB5874D25E76CF5971CD536C
+      C6445AB8485EBF576CC64D65C33C56B75165BD5C7CCF4D74D04064C44869BA28
+      41871E2F61586FB51F2B530000000B14160B1316171A234D577A51608B586891
+      7C88B2525FA0253AA43851C25673D87791E37E93E47B8DE47D92E48199E68197
+      E47992E47B95E7809AE9819BEB819DEC829FEB84A1ED85A2EC87A0ED89A3EC88
+      A2EC88A1EC8EA3ED859EED7B9BEE86A2F08DA6F18FA5F18CA4EF8EA6EF90A5EE
+      8FA3ED8DA5EF87A2EC819DED88A2EF88A0EF819DEF7E9DEF809CED829AED849C
+      EF7E9AEE7E99EE7092E9658AE77595EB809CEC7E9AEC7D99EC7C97ED7896EB74
+      92EB7692EA7793E77B97EB8099ED7792E9728FEB7492EB7491E97391E97492E9
+      7693EB7393E97797EA7897E97696E97695EB7393E76C8FE46789E46488E46D8D
+      E46F8BE16386DF557EDB4F79D9567DDA5880D8527DD74D76D7446DD0426ACE43
+      69C83F68C53D63C04265BC4666B1415E9C3144883146803D5C814D7585517E7A
+      588A836D9D8E5E8B775988765B837554736533554F2F50481E35371D2B361D3A
+      3C305D502E655A468F7D47917A418F744591754492784898814A998345957A47
+      977A48977D429275459777418F723D8E7A41857137514B2A323335655E44987E
+      418A72408772418A73408B723E8B6F3E886D42876C488E74438B6E448B714590
+      75428B74408771448A72468D73448F74458D73448B72438B72468E7448907749
+      9177458A72468B7143896D3F866D498E7442886C4885756B8D8C5E7E6F3A4C40
+      1A30273978603D87653C80663F826C3F836C3B7D653A7D613B8163397C623D80
+      653C816539766038785F3A79633C7C653B79623C79643C7E663E80693E80693C
+      7F683D81683E7E653F8069417E68347358539186E5F5FAEBF7F8E3F1F1E7F4F5
+      E5F3F5E8F6F5E5F4F3E9F7F8E6F7F6E9F7F9E6F5F6E8F7FAE7F7F8EAF8FAE8F8
+      FAEBFAFAE6F8FAF1FDFCF1FDFCEBF8F9E9F5F5DEECEFE5F2F4E2EFEEE6F3F2E1
+      EFEFE8F5F5E6F2F1E7F5F2E8F3F3E6F3F4E5F3F2E8F4F4E5F3F4E6F5F4E7F3F1
+      E6F3F1E6F4F3E6F3F5E8F5F5E5F3F1E9F5F5E6F4F4E8F5F5E5F3F2E8F6F5E7F4
+      F4EBF7F6E6F3F3EAF7F6E4F3F3E9F5F4E3F2F1EBF6F6E6F2F1EBF7F5E6F3F3EB
+      F7F9E4F2F2E8F5F6E2F0F1E8F6F5E3F1F1EBF7FAE5F2F2EAF7F6E2F3F1EBF7F8
+      E1EEF0E9F5F6E5F1F2ECF7FAF6FFFFC9DAD9708F81859F908AA39696ADA29AB3
+      A7A1B9AEA2B9AFACC1B8C4D8D2DCECEAE5F3F2E5F3F2DCEFEEE4F2EFE3F1EEE5
+      F3F0E5F1F1E6F4F4E4F2F1E4F3F1E4F4F3E7F4F4E7F3F4E2F2F1E1F3F1E5F3F2
+      E6F4F4E7F4F4E7F4F4E5F2F1E7F5F5E5F3F2E9F4F4E5F3F2E8F5F5E5F3F2E8F5
+      F5E5F3F2E7F4F4E5F1F1E8F5F5E4F2F1E9F5F5E6F2F1E7F4F4E5F2F1EBF7F8E0
+      EEEFE4F2F1F7FFFFACC4C259876A659576679577638F71628E6E5F886E608A72
+      618F73618A71618D71648E72628A6F5F866B648D6D648E6E638A6F638D6F608D
+      6E638F6F648D6F638B7260876B63886C678E73678E71658A6F628B6D658E726B
+      9075698F74678D75698E726990716A9175658E71678E6F6C93756A9375648B6E
+      61896C628D6D638D6D6791736791746690736992736A92736B93746B93756A96
+      756D97766C95746E9A746F9C776F9B7A6B96775A856D4A775E44775B3C715736
+      6F55356D54386D55386E54396D56376653366954306B51326B512F624E346550
+      34644F2D5D48305D483161483866504752414B513740482A343D243B3E1E3C40
+      2539391A3C402A52593F656C4E393D1B242D18292F172D301C2A301D322D1C31
+      321B2A2C18272B1C2C30172B2D1A2B2B162C29171C281631382B3E45383C4331
+      4B4C34514E3A464B32424930313719312C132E27183C3D292F37193341272C39
+      23333D2232372234371F333D1B313D1C313B18323A1B2C381C3A3A1F34371A3A
+      3D2970736C4153353E4D3749513E4D5944596458676E606A74627486777E8B7D
+      92998CA2AFA3AFB8A9C2CDBFE7E8D4ADB28C606649525C4120292397A2B0949C
+      857985686B70596A6E545E5F4858593E4B53323F442F3C3A2636392124281820
+      291711160911130D1213151C25161826161E24162B291C323723323723373D26
+      3C412842482F444A36464B364750374D533E484C35494A37484B333B3C284444
+      2D4B4B3041482F524F335049324C4B31464A3144463344453144472C3E3F293E
+      3E263A3A2431371F373B2A50513C3A3E273A4438636C5E646B4C373A21323521
+      34342236341D312F1633321E2626161B190C0C0C0912140E1B181116150B1616
+      0B151A0F171A0F1B1F0F1E1F0D202214252613272919292B192B2B1930311631
+      3019292B1935352226261625281D2425162222151B1F12151E11191E14151B0F
+      282F2B4A514A4451484C61584B5E524B5648465B4F3E514E5761615866584C5F
+      514D5D5552665B546A5947574E546154566354606E604D5E56465D4F44594A5F
+      6E5B5762523A5444495C4B526154566A59425140556A593D4E3D1B2F231B3128
+      162C27192C271B302A20312D1629251A302A172B27192C2E1C2D2B1728251522
+      1E182A2514231C17252B1E2D2A12261F17302C1C342C152F29112624182A2918
+      312B172D27182F2A1F322B162B27182B291B362E153031172D2B13241F1A2C28
+      1D322E1C322C223A351F3A3A1D342D1D32301B342F1D312919322D1D3C35213A
+      3418342D1A2C2F1D3130233D36223A321D332A1E363211201F2138331A302715
+      2C291A3329162421111E1B14262311221F14242297697088F57488F57C92FA7D
+      95F97B92F8788FF8788EF97D93FB7E97FB8599FB869AF97C93F17990F18196F3
+      7D93F17D93F07C91ED778DED788EED8197F07B8FEB7B8FEB7C8FEC788EEF798D
+      F17D8DF07788ED4F69D9415FBF4F6AC15470C55577C64D71C4436CC14A71C353
+      75C35478C3587EC5577CC15678BF5277C0587DC24D73B74368B13C599A3C5C95
+      486EB25178BC668AC27591C46080B35377A6577FAF6085B06D88A85C718F6379
+      9A6E8FB54475AC224A9523459029498F3B55923C569044619B6E8FC284A0D28C
+      A3D491A8D489A6D37C9CCC7D99CB819FCE7799CB7E9ACD849DCD7E99C9819AC9
+      7E99CA7897C86D8BC36F8AC3748EC47996CB7B9ACF7C9BD37996D3738FD07290
+      D37793DA7995DD7B96DE6C89DA617FD46281D66F8BDA7993DE7790DF6580D65A
+      77D45870CB4862C3425EC4425DC8506ACD536FCB586FC36578CA657FCE5B7DD2
+      577ED53E60BA5575CC3952A30F1733363C3E383D412E3E56505C7F5C6B905564
+      865B66885361A03C4FAC4F69CC6E86DD7C90DF8092E17C91E2798EE68193E782
+      98E6819AE87D96E87D95E98099E9809BE8869EEC859EEB849FEC85A0EC87A0EB
+      889FEA89A1EB89A2EE8CA2EC8CA4EE859FEE859FED87A1EF8AA5F28DA5F28DA3
+      EF8CA3EF8DA2F08CA2ED85A1EE7D9BED829EED869EEF819CEF809DEE859FEF80
+      9DF0819DEF849DF0869FEF7292EB7593EC809AEE7493EB7795EB7997EE7B99EE
+      7B98EC7793EC7692EA7793EA7793EB7892EA7792E97491EB6F91E96F8FE87391
+      E87493E87291E77392EA6F93E87393E87693E77291E66A8DE66588E4648AE46A
+      8BE6698DE16A8EE06186DC587FD9557ED8547CD8547AD54C75D24B71CF476DCA
+      4166C53C63C13C63B73D5DA73E599A3C558F4B6992506A8C49667C61909072AA
+      9A5A927E50867562968679AA9A76A39272968B6D8E81435F5933494824383A1E
+      2F37203437192F301E423C2A6350387F643E8A713C85693A7F653B836A3E836A
+      40896F408A6F41876C3D81663D82684081693C816D3B7A642E46402731312C5B
+      5039866D37785E3975603C786437745E35775F3881683C876A3986663A82663E
+      82683B7E633D816A3C826A3A8365398063387E633A80683D816941836A3E8169
+      3C7C623A775F3C7C633C78613970583A755B3D7E643C7C6343786E506F6F445E
+      572E4135182721356C5A3B88683981643A81643C80624083664182643D7E623F
+      83663E82643E7F64407D643F7E633C7E613D7E633D7D66408065418265428365
+      45866844836843856A47866B46856A4683693C795D549084E5F4F9EDF7F9E4F1
+      F2E7F5F4E5F4F5E8F7F6E6F5F4E8F7F6E6F6F5EAF7F8E5F6F5EAF7F9E7F7F8EB
+      F8FAE9F8F9ECFAFCE7F7F9F1FDFCF1FDFDEDF8FAE8F4F5DCEDEEE5F3F3E0EFEF
+      E5F3F2E1EFEFE7F4F4E6F2F0E8F5F4E6F3F4E5F4F3E5F2F1E8F4F3E7F3F3E5F5
+      F4E7F3F2E5F3F3E6F4F3E6F4F5E8F4F5E5F3F1E8F5F4E6F4F4E8F5F5E5F3F2E9
+      F6F5E7F4F4EAF7F5E6F4F4EAF7F6E4F2F1E9F5F4E5F3F1EAF6F5E5F2F2EBF7F8
+      E5F3F2E9F7F8E3F1F2E7F6F4E1F2F1E8F7F5E0F1F2ECF7FCE4F1F1E8F7F5E0F2
+      F1E8F7F6E0EFF0EAF7F6E5F4F2EAF8FAF4FFFFCBDAD9748F8187A1928FA89B9A
+      B1A79DB6A8A2B8ACB7CAC2D4E6E0E3F2F1E5F3F3DCEEEEE2F0F0DEF0EFE5F2F1
+      E3F1F1E5F2F1E4F1F1E5F3F4E5F2F1E5F4F1E5F3F3E8F4F4E7F4F4E3F3F1E2F3
+      F1E6F3F3E7F4F4E5F4F3E5F3F3E5F2F1E6F4F4E6F3F2E8F4F4E5F3F2E7F4F5E4
+      F1F1E7F5F3E5F3F4E6F3F1E5F2F1E8F5F5E5F2F1EAF5F5E5F3F2E7F3F4E6F1F1
+      EBF7F6DDEEEFE4F2F1F6FFFFACC5C15F866A6A95776C967A6B93746995726D98
+      7A6E987D6D98786F997C6D98776B95776B96756A97746B97786A93786A95776B
+      97766995766A93766B93736C957569917764917465916F649071649276628F71
+      64917363906E62906D64917365937165957365927765917364906F628F6F6993
+      736B937665917164916E64927162907163907265926E67936F66907264907263
+      907366906F6C98766F9B7A679173567F6648715E3E6A5737645432634E386E51
+      3B70553A6D54386B53356A51376D54356B523369512F644C2E624831604A335C
+      4B325D49325F4933604A315E4A32624C416A51515A485E5D485A543E5551344D
+      4F2E4C4C2E4F4D30534E36575945676A52333C1623241631341F3F3B283C3A26
+      3F3924433C22463E244140253D3B223F3C224139233E341E36362234372A3943
+      3335422C3F402D5A553D5C5A3C5F573F4643292C250F3C3326554B36574F334B
+      4C334A50324D4E3456503451492A504F32504B314D4F3754543A565636565034
+      4F5135434930747772A1AB92A7A995B0B29FB0B8A9B0BAA9C2C7B5CDC9B6CCD0
+      BCC9CFBACDD2C3D1D3C6D7D8CCDCDBD3E1E7CC6C775453603E4F5D3D29302CCA
+      D1E2F9F9F3A0AE8C343F233E47333C452F3B3F273D432D4143314B49394B472E
+      323A2422281515130B10131211150F242816171B11171B111D22161E1F161D21
+      161C2216212A182629172326162A2A1629311628321D2434243138222E331937
+      3C2833321C393A24353A243136243E3B263C3F1E3C422A40412F44462B3F4B2D
+      4C50344F4E35515339474F3E4A4A36575B433940273E413B6B6C5A636B504347
+      29303A2331331E21291417210D1C1E0D21230F1D190E0C0A080F120E17130D10
+      130A11151117150C1C1D121E19141E1B1522201626231623240E292C162B2B17
+      2A26152C2B162727173439242325122220141B1E0F1B1A0D161A0D15190D1017
+      0A0D170C2328224959454755474C5B585762504D564B4C56544B574E55615857
+      6A594F5F55515F4B54685E59695A47555053645A546557586C5E505F554C5E4F
+      44594B5C6F615264524159484D62515764585E6A5E4552425B68544659421A30
+      2918312B152A271929291531261D342B132B2D20312B182D28182C26182A2417
+      2B26122425172A291E28261D2927182F2A1326211B302B18312A162C291C2A2A
+      1D29251C312A1C2F2A1A2C2A1D2C2B172D2A182F251D322A1B302B162A281724
+      221B2928152B261A2F2A172A25152B2C172A26182D29172B28182B28172C261D
+      36301E392E1B352F1829281529252136312637321F373318322A1523221D3430
+      192D2419312A1E3530172B25142722192F29172825192D2A0000748EF57389F3
+      748AF47C93F9798FF5778DF5778EF87990FA7C93FB8499FC869CFB8095F48095
+      F18095F27D91F1869AF38095F1768DEF748AED798DEF778EEC7086ED7C91F07B
+      8FEF798DF17C8AF17689EF4C68D94562C65271C75475C75473C45070C34B71C2
+      486DC14B6EC14F71C05278C34C70BA4B6CB74C6EBA5075BF4D74BD4366B5314E
+      93324E8E4165B04971B96186BF7792C26383B65478A95479AC577CA9637F9B49
+      5E7659718D5880AB335A9C2E529A35579C405C9644568F384D853E5C976B88BE
+      89A1CF8DA3D3849ACC8AA0CE91ACD689A4D3829ECF7D9CCD7696C97B98CB7997
+      CA7B96C7859CCA88A2CD829ECC7792C77C97CB728EC6738FC8829ED57E9CD879
+      98D77997D87590D77591D9829BE27E97E1708EDB6787DA6B8ADE6A83DC7990E0
+      7591E06381DB6179D05266C94C63CA4662CC526DD0637FD86A86D86B81D07489
+      D2778FD97693DF7393E3638AE43550A62F3B6A667093798298525E7F5F6B8D53
+      608044507C4A5CA24D62C16278D77589DA7283D6758ADC7E93E3768DE0758EE2
+      7D93E67991E67892E47992E47892E77C97E97D99E8849DEA869EEB859DEA829C
+      EB849EEB859FEC89A0EE8EA3EE8AA2EC8FA5ED8FA4ED88A1ED86A1F087A2F18F
+      A6F28CA2EF89A3F08AA3EF8CA1EE819EED799CEC819FEF829FF07C9BED789AEC
+      869FF188A1F1859FF0819CEF819CEE869EF07E9BF07997EE7896EE7595EC7493
+      EC7B96EE8199EF8198ED7C96EB7491EC7490EB728EE7708EE9738FEA7492E873
+      91E96E8EE86F91E87391E86E8EE7658AE4668AE46C8EE46F8FE36B88E4698BE4
+      6B8FE2698BE05F86DB537ED9507CD7547DD85078D4527ACF5B7FCD547AC95076
+      C45376C3577CBD4C70AF364D903749853F5A84557F8D77A5A381ABA0618A8667
+      93956EA2995A9D8C5C9B8760928176A89C90BCB16E998647685D2F4C44223E39
+      283B3D1E30321E333219272B142225203D3920483D2B604E3F876E3981653E86
+      683E80643B7A603B7D633D7F6642836D44886F3F8168427F6E386A5A2E49422B
+      373327463E4480724A826E4A836B4A8A72518E76508A7457967F589A835A9A84
+      58978355957E5292784B9174418D6F3F876D458A714B91764B9077468B724389
+      6F3F856C408269448971499078448A7244856D478B7243876F47887252897A53
+      736C3C4E4626372B1D2A1E39766354A288509275529577599F864C9E86509C80
+      4796764793774A987E4892774F957A5498835398835697865496875493845292
+      815397885296854C92814993834C8F83508E855499894C917A63A39AE5F4F8EB
+      F6F6E3F0F1E9F5F4E5F3F5E7F7F5E5F4F4E8F7F6E5F6F5EAF7F8E5F6F5EAF7F8
+      E8F7F8EBF7FAE9F7F9EBF9FAE6F7F9F1FDFCF0FDFCECF7FAE9F5F5DBEDEDE5F4
+      F2E0F0F0E5F3F3E1EEF0E9F5F5E5F3F0E6F6F5E8F3F4E5F3F2E5F2F1E7F4F3E8
+      F4F4E6F6F5E6F3F2E5F3F3E6F5F3E6F4F5E9F5F5E6F4F4E8F6F4E6F4F4E7F4F4
+      E5F3F2EAF7F6E7F3F3EBF7F5E8F5F5EBF7F5E5F3F1EBF6F4E6F3F3EBF7F8E7F3
+      F4EEF7FAE8F4F4ECF7FAE6F2F4EBF7F8E6F5F5EDF8F9E5F4F6EEF9FDE8F3F4EC
+      F8F8E4F4F4EBF8FAE5F2F5F1F9FCEBF8FAEFFCFFFDFFFFD1DFDF76918489A597
+      93ADA09AB2A5A7BDB2C8D9D2E0EEEBE7F7F5DDEEEEE2F1F0DCEFEEE4F1F1E1F0
+      F0E5F2F1E2F1F1E5F2F1E5F2F1E5F3F4E4F2F0E6F3F1E6F3F4E8F3F4E6F3F3E4
+      F3F2E4F3F2E6F3F3E7F4F4E4F4F3E5F3F2E5F2F1E7F5F5E5F3F2E8F4F4E6F3F2
+      E9F4F5E5F1F2E9F6F5E5F3F4E6F3F2E7F2F1EBF5F5E5F2F1EBF5F5E7F3F2E8F3
+      F4E6F2F2ECF7F6DEEEF0E4F1F1F9FFFFB0C5C2557C5F6591746A957767927565
+      9071669173648D71648D6F6992756A9575669273669172669171628D6C5B8566
+      5A8263638D6D699174658F6F648F6D668F71669071658A6A6687686D8D6F7392
+      7677937574917573927475927579957C7391765E8668597E6358775B57775B5F
+      7E636E8D7265886E60886A658D6D66906F638E6E658F716B9574699172648E6C
+      658F6D709A7A759C815A836A456E583C695334604A325D4735644B36644F3661
+      4F345F4B33614C32634C35695134685135695134634E2F5D44315F4735624C36
+      624E325D4A2F5C4734644C3A6D54346B4F3971544F79615F665F585D484A5037
+      4745294043243C3F213F422246482C5459436169503C46231C2313272F1B2E33
+      1B30341D30342133341E34351D32322132321E3232192E2F1A3032182B2B1B2F
+      3A263D49303C432A454934494C37484933464932383C1C292C13282B1A3C3D25
+      4142244240283F402844432A3C44273E4627413F224044273C43273942263C44
+      283E4427393D243C3F2E656D66636F515361425B64505C6857626E5D6B75626E
+      7668727C6C748173778877889688929F919CA899BDC3AE86966C566143555D41
+      253328BDCDDEFDFFFFEFF7E88897736E78625F69526565515A6045535A3F5050
+      3A494C30253316222D14171B0816161615151223231B26271A262B222C302A34
+      382F363A2C42483A474B37474C394D4F3C55523E52563E52564351563F505638
+      4A5137333A1E44482D52513556573F5C61485A59435E5B3C5E5A42595C415857
+      3E555A3E4F4D3149472F424225353A1C3C3C294B4B38383F2B3F3F376A6B5964
+      6A4B313B1A292A1828281B2B2D183137223233232A28161E1B090C0C0A110F0F
+      171A1213170B12160D19170E151711171A12201F11221E132522152629162C2A
+      16292B172B301B2C30192C2B1931361F2F2B162C2A172927162428121F24161B
+      1E141D1E12202113262B244C5A45485345515E574D5D524A574E465C56435545
+      586A5A5968575160534B5B5052695D58685949574F4F5F545365585B6A575265
+      53515E4F445A4C5A6C6155635340554A4C5C495360555C6D5E40524356655941
+      54441F2D2816302916312917282421322C1830231A28241A2D241A31291A2D29
+      1C2A261A2C2B1524221927251528221F29271C2D281224221B2F2B1B332A172B
+      29192A261E2D261A2B251729241D2824152A26182B291731221C31241C2D2517
+      2C21192824192B281A29291730281A2C26192A24172B26172826192D28132929
+      172B2A1D322E1733321B2F2616292E1124231A312B1B302E1B3126182B291121
+      1D172D28192C271C312B192A27152522182F2A1726271C2C2923322B0000758F
+      F27790F36F87F1758DF57B93F5778EF5778BF5768DF67B93FA8198FA8198FA7C
+      90F58297F37E95F2798DF18196F47C91F2748DF0758DF0778DEE788FED778DEF
+      798EF17E92F17589EF768AF0768BF14D6ADB4461C55877C95577C84A6CC3486B
+      C2496FC14B6FBF4B6FC04C6FBE4A6DB9466CB64368B24463AE4569B4496EBA47
+      6BB83957A3334D8F3759A63A63B35378BA6E8EBC6385B1587CAB5074A94D6FA4
+      5B779A4C65845475983E66A031549B385D9F4664A052639748578B2E427D3651
+      955977B38199C9809ACC7490C76D89C17E99C882A0CD7D9ACA819CCB7D9ACA75
+      92C5708FC37593C67893C7758FC27E98C5849ECE819CCF7C98CC708FCA728FCC
+      819AD6829DDA7897DA7896DC7B98E07593DE7892DF728DDC748FDD7E97E37792
+      E16E86DA6A83DF6C8DE36983DA5C6FCE4D64CA5671D5637DD96983DD6D89E273
+      8FDE657FD46D85D67B91DA8196E17B98E4597CD44561B85265A6596A996D7797
+      616B8C5460974F61B65F79D66C86DA6A80D66F82D77286D97E92E0778BDD6B83
+      DD7B92E47891E2768FE47891E67992E47893E47893E68199E8879CE9859DEA82
+      9CE9819BE9859EEB88A2ED8CA0ED8AA1EB89A4EC8DA5EF8CA3EE89A1EE8AA2F0
+      8CA2F08AA2EE89A3F089A3EF87A0ED859FEC7D9EED85A2F086A1EF7D9CF17E9E
+      F1849FF188A2F18AA0F1889FF0849DF0809BEF859EEF7B99EE7595ED7B97ED76
+      96ED7693ED7995ED7692EB7793EB7996EC7591EB6F8EEA728FEA6B8BE76989E7
+      738FE86F8FE86A8DE76C8FE77291E7698BE4698AE36788E25E83E16085E06286
+      E06487DF6086DC5C83DA527ED64474CF4774CC4B74C85177C7587FC55F85C563
+      88C15A82B94F74B144649F3C52802F446B4875816BA89D7BAD9C72A2986F9B9F
+      5C839263939761978E5190816BA4988EBDB182AC9D78A196638F7E213F331D34
+      331C33341D34372139371D2F31213032202C2A1721252037352A50483C776B52
+      9C87458B72407F695287744A85713C7962518E78508D7745786C4B7876486A69
+      30463F202D29394E5372999A799FA09BBDBCA6C1BCACC8C6BBD2D6C6DEDDD0E4
+      E1DAE8E8DAE8E8D5E6E6D5E4E3C8DDD7BDD7D0BDD3CEC4D8D6C9DDDAC8DDD8BF
+      D8D0BAD5CDB6D1C8BCD4CDC4DBD6C1D8D5B8D3CDB5D2CAACC8C3ABC8C4A5C6C1
+      AFD1C979988F30463F394D452E423748716DBDDDDED4E5E4D2E6E482AEA3395E
+      5033544636665134544427413827493A325946335A4C3C63593F665E3C685D3A
+      61583C625B3C65613C69643E706A41766C41746B43756C46776C3A6C5E538989
+      E1F3F6EBF7F8E3F2F3E7F4F4E5F3F5E6F5F6E5F4F3E7F7F6E5F6F5E9F7F8E5F6
+      F5E9F7F8E8F7F9ECFAFAE8F7F8EBF8FAE6F7F9F1FDFCF0FDFDF2FDFDF0F9FDE3
+      F1F3EBF7FAE5F3F5EDF7FBE7F3F5EDF8FBEBF6F5ECF9FBEBF7FBEAF7F9EBF6FA
+      ECFAFDEBF7FBEBF8FCEBF7FAEBF7FBEBF9FCE9F7FBEDF9FDEBF7FAEFFAFDEBF7
+      FBEBF7FBE8F6F9EEFAFEE5F5F9ECFAFDE7F6FAEDFAFEE4F3F8ECF8FCE3F2F5EB
+      F7FCE1EFF3E9F7FCDDF1F3E7F7FDDCEEF3E5F6F9DAEEF1E5F7FAD3ECEEE2F7F9
+      D8ECEEDEF3F4D0E8EBDBF3F4CDE6E9D9EDF0D0E7E8D4EDEEDAF6F5B3D1CC829C
+      9099ADA0A2B6ABBECEC8DCE9EBEEF9FAE8F4F3EBF7F8E7F3F3EBF7F5E9F7F5ED
+      F7F8EBF6F6EEF7FAECF7F8EFF8FAEFF7FAEFF8FBEEF8F6EEF7F9F0F9FCF1F9FA
+      F1F9FAEDF9FAECF9FBEFF9FBEFFAFCEBF8FDEDF8FBEDF8FBEFFAFDECF7FAEEFA
+      FDEAF8FBECF9FDEBF7FCEEFAFFECF7FEECFAFDEBF7FAEFFAFEE9F7FAEDF9FDE9
+      F7FAE9F7FCE6F6FAF0FDFFE3F3F6E1F3F8FAFFFFABC0C251785A649071699074
+      648F7265906F678F6E658F6F669171679273669072658F6D669071648E6F6189
+      68648B6A66906D67937165906E669071678F74638B7372977AA2B49DC4C9BDBC
+      C3BAB9C1B7B8C0B4B7BEB2B8BFB2CDD0C8A4ABA361786090A089B2B4A2AAAF99
+      A2A893B3B2A5A0A3954C624E48694B5375565B7F5F5A7F5F5F865F6D966E749E
+      7E6C9878678D735879644465553055432D57422F5C44305B42315A412A513A2D
+      533C2F5342365B4F385F51335B492A523F305944315A452D54412E573F2E5B44
+      2F56442F56412B5540326048386C53326A4E337453377757537A62656A60666A
+      5A5E5D485F5537554D30544F31504B2E55503750533D6565503A412121261930
+      36243C3E233C3C213B391B463D24443A243F35243C39213F3925393C26333B24
+      323726333A2840492F3A3F2848412E57513D58563F58543A494D2D262C133235
+      24534A37534C37504D35535334514C334B4C2F4C4E2D494C2B4C4C2F4F4C354B
+      4F364A5235504F335450374749356A6C6C9CA9919CA68CA6AF93B2B7A6B4BCA9
+      C2C0B4CBCAB9CACFC0CCCFC5D1D3C8DADECDD7DDCED9DBD0E2E1CB8992645B60
+      415B5A45313330BCC7DAF8FFFFECF4EEA1B19890A1865E684C474D35484D364C
+      4F3A4D503B505237373A232A2C19191B0E11130D14161620251E1D21171B2113
+      20251A1F2216222C1F25321F272F1A303424303829363826343D283A3C2B383D
+      24393D25353A26333C26343D29383F2744453040422B45462F464B2F41482748
+      4C324B4C31514D345152365051394C4A2F4F4B32464735565A423A41253F4B3D
+      636E5A5F6B473B44263639213137222A2F1A2524132024191F2312171B0D0A0C
+      0612140E17180F11140B111A0B17150E181912201E142020152124172627172A
+      28162F2B162E2A192D2A1B2A2B1B292B1C333421282A122426162223161E1D15
+      1D1D0F19190E15190E15180D222B254B5B4E4355474F5D575164554C594C465B
+      5343544B55665E566A5B4F6451505E5254665A5A6A594F574A5864565466555B
+      6C615162574C5E51475B4C586F605464574654514B624C52635A5A6B5A455445
+      556657485B49212F28162C2C1A2C2E19292A1F2F2D20312C182B24162D29192B
+      291F2F2E172A26172B251B25231B29261A2A23182926192C2512241C1A2F2C1B
+      312A172A26182F241727211D3029152C24172B25182B25192F29182D28172D24
+      1A2D21182A1E1727231A3225192B261A2D2A1528241D2A261E2B281A2725172F
+      2B122728172D261C34281E342F1C302A132A2F1020271C2F311E302A1C302A17
+      262217241A1E3027182A241A302C182B271A28261D2D2C1E26241C3129233130
+      0000748AF37890F4778FF36F87F1768FF5768DF4758BF6748DFA7C95FA859AF9
+      8297FA7E95F9859AF6869CF67D92F37D92F27C92F37B93F1758DF07C91F27C90
+      EC798DED798DF07C90F16F85ED7286EF7B8DF2546FDE4562C45871C55573C647
+      69C14969C04C6FC15074BF4D73BF4D70BE4C6CBA476BB64266AA3B56984460A2
+      4D6FB6496DBC4264B13E5DA23A5BA72D53AA446BB26688B65C7AA556759F4F76
+      A743659C4B688F527096456BA03A5E9F3B5FA04061A049639B52649642518732
+      48874666A65271AC7490C27991C57B95C67490C4708DC27896C77E9CCB748FC4
+      7791C57C99C67E9CC97E9BCA7795C86C8BC26C8AC27290C87691C88099CD84A0
+      D5829FD77996D47993D67D99DA7692DB819DE684A0E97E99E4809AE67997E17E
+      98E3819BE7728DDE536DD46E86DE738BDF677ED84B62C8526ED6647ADA6E82DD
+      6D87E1748BE66985E2617ED96C83D57C92DC8497DD88A0E46F91E45776CC6981
+      C47783B76476B8677DCF6C82DA637DD46F83D87286DA758BDC7D90DF7B8EDD6D
+      81D9728AE07C93E4778EE17990E47C93E67D96E77D97E67C96E6819BE8829AE8
+      8098E77E99EA819CEB879FEB8AA2EB89A0EB89A0EC8AA3ED87A1EE879FEE88A1
+      ED8AA3EE8EA5EF89A2F0869FF0859FED859FEE819DEE809FEF7E9EED7C9CED66
+      8DEB6E91EE88A3F486A2F1859EF0829DEF7B99ED7797ED7897ED7998ED7897ED
+      7997ED7896EF7693EE7390EB7290EB6E90EB6B8BE86789E66D8BE76F8DE86D8A
+      E76388E86988E76A8AE4668BE46B8EE4668AE46789E4678AE26186E2587FDE52
+      7ADC517ADA547AD9547CD54975CF3F6CCC4873C95378C75E7FC46085C15780BC
+      4B75B34268A5344E86344D7634556C3960633250513C595E66999A82B7A96A97
+      9259818E5A86915A8785507A744D7D6E62958D8DBBB991BBB776A292597E6E32
+      4F46213D381930311B2D34202C33212933202F331C2828171D2425393C356655
+      326F5A43836E3A715D437A6A4A81723D74633968573F695D3E655B3D625E3E6A
+      693F5C5B31413D263630445A5F90A3A5B9C7C9CEDCDDD0DDDCD2DEDFC5D4D4C0
+      D2D5DAE9EAE6F3F4E2EFF0E3EDEFEBF6F8F6FCFDFAFDFDFCFDFDFBFDFDFAFDFD
+      FAFDFDFCFDFDFCFDFDFDFDFDFDFDFDF8FDFDEFF8F9F0F7F9E9F3F4E5F0F1E5ED
+      F0D8E5E4D1E4E3859D9637504A46645B1E3227375255C9E3E6D2E8E9D7EDEEAC
+      C1B4495445202C24233526233424202F20233826203F2C1F3E2A23432F23422D
+      264533274938274A362949382D503C2E513D2C4F3A2D543C2D573F2E553F244C
+      343E6B5FE4F3F9EEF8FAE5F3F4EAF5F5E7F4F5EBF7F8E9F6F5EAF7F6E9F7F9EE
+      F7FAEAF7F8EBF8FBECF9FAEFFAFBEDFAFBEFFAFDECFAFAF8FDFDF4FDFDDAF0EE
+      CEE8E6BDDED8C8E4E0C2DFDCC8E2DEC3DFDAC5E3DFC1E0DAC4E3DBC2E3DCBFDF
+      D8BCDDD3BBDED6BCDED6BADCD3B8DBD0B4D6CCB9DAD2B2D5CCB7D9D2B5D7CFBB
+      DED5B7DACFBDDED4B3D8CCBCDFD6B7DACEBADED0B4DACBB9DED4AFD6C9B2DBCB
+      A5D3C5ACD7C7A5D1BEADD8C6A7D3C1B1DAC8ABD4C2ADD6C4A5D1BEACD7C2A5D1
+      B9A7D7BDA1D1B9A5D2BC9ECEB6A2D1B99BCDB49CCDB49ACBB19BCEB49CD4B689
+      BAA07C968D9EB7AFB8D6D0D8EFF1CEE7EAD2EAEDCBE4E6D4ECEECDE6E8D3EBED
+      CCE5E7D2EAEBCAE4E4D1EAEACBE5E4CEE7E9C6E2E2CDE8EACAE5E4C9E6E4C3E4
+      E1CAE7E4C6E4E1C9E6E4C3E2E0C3E2E1C2E0DDC8E4DEBFDFDABADDD6B9DCD9BA
+      DCD7BCDED5BADDD5B8DCD5B5DBD4B6DCD4B6DAD3B6DAD2B3D7CEB5D9CFB2D6CD
+      B3D7CCB0D5CAACD5C9ACD2C5B6DACCB2D5C8A7D0C1B5E1D286A2926C7F656F95
+      78618E6E628B6D6189685F8B6A649171699273668F73618869638B6967906D65
+      906F628E6E659171669172638D6F628D6D658E6F679071628A6E5C8669A5BFAB
+      F6F6F1E9E4E3E2E2DEE0E0DBE1E0DCEBE7E4E5E4E484998D486C4EABC0A6ECE9
+      E0D9D9CCD6DACBDADDD592A5975580625C8864658B686D96736F987766906F57
+      7D634669573C5C4B30513E254B38264F3A31574030543C2B4B382B4B36294D36
+      2B52382E533B30524237564B36534B37554B3654493656472D513E2A4B372B4D
+      392849372A503B305C403260473361473664482E5B433160472D61495478606D
+      6F6564695558553E45492A4244263F412344422846452F4C52406166553B4622
+      2029152D301B31341F34351A37311F332F1C2E331B302F19302F1A2B2C172C2A
+      162528132629172D39263D49303E442E3A3C294A463148462D48472D383A1B21
+      260E282A163E3F2A40462845482B4D472D4849314C4C334A4A27404925474629
+      494C2D3F482D44482D49432D43422C3E4237646B686D7F62666E58606D57676F
+      5B65715E656A63626C59616E615B6C606674666B76696A7C6C758375848A7A72
+      7F554850355556452C3230B3C4D5FCFFFFF1F8F5E5ECDAF9FCF5F2F3E2BCBDA4
+      73785A65694364623E4752352736192F301C181D0E15161316191521211D3134
+      2533392A3A4331454B373D493246503B555F48586045545E4A5E5B4C595E435E
+      6347605E40565A405053373B3F2441472E595640515437575B3C57553C575541
+      565B4253523C515039514F324A472D413E243B3D283239243137224451393A46
+      28404A3B646D595B634231391B2D2D1B2D31222F362337331F3B3B2D22260F18
+      1E0E0F0C0A15120D171B1217180E17190E181B0F1C1E14202215212416202816
+      2629162D2C19332F1B312B163B382337351D342D1C3025162B2D172C321A2C30
+      152B291624251726221C1A1F141B1F1729292A4C5A4F3C5341505F5255615B47
+      5B574C5C4E4959495363575F6F595265554A5F5255625F576959485A49536864
+      526156586F5D4A64534D615147534B5C6D63526354445A495463515160536270
+      614852445B685D4559471F322A1C312E152627172B291D2F2E1B3027152D2718
+      2D271728271B2D291A332A1C28241C241E202B25202A25182B241D2C27162322
+      192C271D32281A3225192D211F29221C2A28182B29152624192D28192B261C29
+      1F1927221B312A1E2D27152621182C231B2B1F1C31261A28241B29251E29271A
+      28241A2F2D172927162A281A32361D34321C302D182C2815251F1B302A1F302B
+      1D312C192B2811211E1A302A172C261A2F241C2C281A2B28202D271C2F2A192C
+      2920302D97696E86F0748BF17D98F6758DF56D85F17990F57C95F87790FA7C93
+      FA829AF88196F88095FA7E96F57D95F17D92F37E95F37890F47D93F37990F07C
+      90F27B90EE758AEC798EF17B91F1768BF17085EF788DEF5E79E44764CA546FC7
+      5571C74665C14364BE4D6EBF4D70BF496DBD486DBE496CB94B6CB64766AC3651
+      913A548F4666A74669B84266B73F61AB3F61A92D50A2345AA74C71AB4A649252
+      6C964D73A23C5D923C5B8E43649A3D609B3E5FA04365A449669F52699D516398
+      3E5089435D986786B66E89B66D87B96483BC5C7EB97692C37E9BC7869FC987A1
+      CE7593C67492C57997CA7997C87896C57B98C97796C77795C67993C87B96CA75
+      92CA6F8FCA7997D2849FDA809BDA809BDC7E9ADE7C97DE849FE68CA3EB859DEB
+      7998E77793E27C96E37E96E8627DE06D82DE7388E46E86E0556ED24763D45A75
+      DA657EDC6C86E26D86E4738DE87491E86F8BE16581DA6E87D88193DB8799DD76
+      90DC607DD35E74CC657DD57089D97289DC6A83DC7388DB7E90DF798DDE788ADF
+      6D82DA6B80DB758BE3748EE3758EE47B91E67E96E98097E97D93E78198E9819C
+      E97D99E97995E97D97EA819AEB819EED869FED87A0EB829EED889FEF88A1EF86
+      A1EE85A0EE89A2F090A6F18AA3F086A0EE84A1F07D9DEE7E9CEF85A2F187A6F2
+      85A4F1789CF081A0F384A1F3809DF17C9CEF7E9DF17C9CF07596EC6E91EB7496
+      ED7697EC7396EB7897ED7493EC6D8EEB7291ED6D8EEB6186E75981E36589E86E
+      8BE86F8AE66B8AE76187E46589E4698BE66689E46186E36287E36187E15A82DE
+      5A80DC547DDA4874D7416ED33F6ACC416AC6527CC7567EC44F76BD557CBC4870
+      B13D60A537538B354B6A374C542D474E233E462C434B2845481F3D493C56696F
+      A0A07DADAA496F6C2F4E553A565955736F395D54457571557C7C3C5F644B7972
+      35524822393E223A391E322C1B272E2B333E2C353D1B2A2C1C312D1F302F243A
+      362A56432B6C5233765B3F886B3E8866366F53376248325A43315E493C735A3C
+      705D3C78693962562B3E38273630476166CDE2E4E9F3F1C9D5D0BBCDCBD1DFDE
+      D4E0DAD2DBD6BBCBC7B9CECBD2E3DFD6E2DEDAE7E4E7F2F0ECF6F5EFF7F6F1F8
+      FAF1F8FAF1F8FAF1F7FAF2F9FAF1F8FAEEF6F5E9F3F1D9E6E2CADBD9C2D7D5CD
+      E1DED9E9E8D5E4E3CDE0DEBFD1CD587069263F3526372A2239367EA09CA6C0B8
+      B0C8C5BECDC55062542142342C533C2B593C2B5A3D29563B25533826553A2957
+      3D2D5D422D5E423061443366473060452F62442E624331624231644332664634
+      684A30664A4A8274E5F7FDEBF9FDE1F4F8E6F7FBDEF3F6E5F7FAE2F3F6E2F5F6
+      E0F4F9E6F7FCDEF3F8E1F5FADBF3F6DEF6F8DCF6F6E1F7F9DAF3F4EEFCFDE1F7
+      FAA1C8AF94C4A097C7A596C6A297C7A496C6A594C5A697CAA797CAA697C9A698
+      CBA797C9A697C9A596CAA396C9A496C9A393C9A094C7A396C8A596C8A494C7A3
+      93C8A392C6A094C7A299C9A593C6A394C8A39DCFAA99CEA796CBA68DC5A58DC6
+      A48AC5A48AC4A68EC7A690C9A591C6A396C9A696C8A494C9A78EC4A292C7A596
+      C8A697C8A68DC29D93C7A493C6A491C4A092C4A293C6A490C3A08CC09F90C3A3
+      9CCCAF7DAA9157856380B49787C0A888C1A780BA9C85BDA384BCA388C0A786BE
+      A48AC1A788BEA58CC5A984C0A284C0A380BC9D82BEA07DBB9C80BEA07EBBA080
+      BEA07CBB9B80BE9D80BD9D7EBE9D77BA9C75B69784C09C8AC3A386C0A476B89B
+      6FB49979BA9D84C19C8AC19C86BF9D82BF9C85C09B87C19B86BE9A87C09C85BE
+      9B85BC9989BE9988BF9987BE9989BF9988BE9986C09984BD9577B489A4C7A9E8
+      EDEB8DA59858856467916F69906F628E6B5F8969608869658E6F668F6E658D6B
+      668E6D66916E648F71648E6E638D6E61896B638D6C66906F67926E648F6D5885
+      63628A69B9CFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4BEB461906F608E6B70
+      9B76D0DCCCD0D1C6C5C9B9AAB6A6567D63638F6D739778698F74567C65446856
+      365747274538203C2C284D352F573D305A402C503B2949342849312C51393054
+      3B2D553B3557412D4E3D2D523E2F544436564F3B5B534260593C5D512D513C29
+      4B352B503C35604637644C36654B35664F35634F315E492E59462F5545305C49
+      5278626971636B6F5A575D40595D3D4C5034524D334D4B2E4F4E3451563D6064
+      4B39461F22261430351F353A243B3A23413A1F3D3A1B3F3C213F3A1D3F391C3C
+      381C37361C34341928311D353A2F42463C3E47303B412B4F4F3C50503A515035
+      4A4B322B2816342F224A45334A482D494C2B464A2A45452948482D42462B4144
+      2844472B45442B43482F43463043452841442C3C412E64656190938675816881
+      8A7A8992809398859DA895A4AA9CABB4A6B4B8AABBBDB1C2CBBACBD0C0D0D6CA
+      E1E4D2A7B2885C6240576353313938B1BED5FDFFFFF1FAF5C8D3C6BFCFC2BECA
+      B8B4BAA7A2A996656D544B5339424E33353B24303322191E1212150F11191425
+      271E23251622241627281D292A1F2E321A3036232B39232D3924313A2D373D29
+      3942283A3F28333B2638422F363A25393C24393C233B3A25353E24363F243B3D
+      29373A25383F24393B24383D263D3F273E402841462E3D402B42423243473055
+      5B3D3743273C4738606C5763644C464D34414A303C3E262B351F2A2916221F16
+      1E1F0E151D0D0B0A0612140D16190D10120817180A1319111A1B151B1E141B20
+      11222416272816232916272A162E2D162A2B182B2D162E2A1731331A23250D22
+      241520200E171E12141A0D18160D15160D11140F202523525D523D53414F5E50
+      576455505E4E495A4F4A5348576457586B585264565162545F6562586659485D
+      4B59665D5063535B6B5F5368594F634F4A594C616C5F55645848574550605351
+      6253646F6048574A596A5F4D5C4B22332E1E3330172B271A2A2A1E33301C302D
+      172A281C2C28192A261C2D281A2C211729251C24231E25241F27241B2A21192D
+      2B19262320302A203628152F1F1A3024222D221C2C22172624152C2712292422
+      30281D28271F29241929251E2A2417281C1A31251C2A241D2D2A1526241A2A28
+      1A282418281E182C2817292B172D2C1834381B323B1D2D3223302A1625231930
+      281F2D2D1E2F2C202D271623221E2D2A192A261928271D302A182A251B2F2B1A
+      29241A2C282B352F97696D87EA6C86EE738AF27E97F97289F3748AF37D96F579
+      90F5778EF67C95F98096F67B8EF57790F87991F57B91F5798FF4758BF4798FF3
+      7E96F27B8FF27689EE7489EF788FF17B91F3798DF1768AF1788FF1647CE9425E
+      CC4762C64562C64061C33F60BE4263BE4368BE4368BF4B6FBF4C70B94466B346
+      69AC3B5B9B3856953E5E9C3F5FA74369B93D63B43C5FAA385BA52D509D35569D
+      3B55883B548138568C3856973959992F51923251923351933553973B569A4F65
+      9C53649743548D516CA37692BD7E98BE738BB86581B85275B25B7CB66E8EBF76
+      92C0819AC57798C67092C67795C87896CB809DCE7C98C87B9ACA7E9BCB7B95C7
+      7893C97D9AD07797D37796D3809BD986A1E289A1E37E9BE27B97E27993DE8097
+      E27892E37291E66E8EE36F8DE27591E4708EE86E89EA6F88E4627DDF6C87E258
+      76DA526ED96681E16B86E36D88E4768FE97995ED7695ED6B89E75B7DDD627EDA
+      697FD86C81D66983D86482DA6585DA758BDF7E96E6829BE88498E4778DE37485
+      DC7788DC6D83DB7087DF748EE6758FE77591E77C95E88199EA7E96EA7B93E981
+      98EA8198E97E98EA7B98EA7C97EB8099EC809EEF849EEE89A0ED879FEE869FEF
+      86A2EF86A3EF8AA5F18DA6F189A4F189A4F189A5F185A2F17D9DEF7E9EF080A0
+      F189A3F88FA6F58DA3F386A2F3809FF1829FF3809EF37E9DF186A0F2849DF274
+      93ED698FEB6E95EC6C93EC7093EB7695EB6C90EC6A8EEA678AE96A8AE96288E6
+      5A83E66486E76388E46489E46387E46188E46689E36587E06587E05F86DF5982
+      DC5E82DA557ED84B76D5416CCE3C65C7416AC55178C25078B9446DB54B7ABA49
+      74B0334A8733436C3448653650613853592A3F4630434F2F4352384B57233242
+      202F484D747E73ABA34A756A172B2D38575B50766D20383C273F473652501D36
+      3821353C2A383920343920343A2333341B282D2E3C443542451E262D1D2B2F1B
+      29281F33331F3E3A2C5C4A3B6E56376350305C483861503C6654375F4C3D6C58
+      427E654277644373682F4E47283B3A323E3723363B84ABB3C3DDDAD3E4E2D3E0
+      DDCDDCDACBDDDBD8E8E4D1E1DCC4D5CED9E6E3EBF3F1E0EAE8E2EDEBEAF4F3EE
+      F6F5EFF7F5EFF7F6F0F7F6EFF7F5F0F7F8F0F7F8E8F3F0E3EDEAE2EBE7CFDCDA
+      D3DFDEC8D6D4ACC6C1B4CFCAAFC8C4A1BEB75E7E7438534F415C501D302B82A0
+      A8F2F7F5E2ECE9CAD1C96076643769573E715E3F77603C7C613C7C613E7D603D
+      7C5A3E7A5E3C79603B7A603F7D60407C61417E60427F6442826647876A48876A
+      447F63437F63407F625A9681B6DCD3B4D9C8A5D1C0ACD3C6A5D1C4ACD5C8A7D3
+      C2ABD7C4A6D3C3ABD5C8A5D1C2A7D6C4A3D3C2A6D6C4A3D6C4A5D8C59BD4C0A4
+      DBC89DD5C397C3A893BE9C8FBD9B8EBB9D87BA9A86B99A86B99886B99389BA96
+      8CBB9A89BA9885B79586B89887BA9A86B89A8ABB9A89BA9886B89A85BA9887B9
+      9987B99787BA9684B69686B79786B69385B49282B39181B1917EB0917BAE9174
+      AA8E72A48C78A99075A38B76A88E76AA8F78AA8E79AB8E79AA8D75A48C70A087
+      74A38976A68B6FA4896D9F86709F8572A18673A18770A2856EA0836FA1846C9B
+      7F739E8173958667957E77B28E7CB48F78B18D76B18E78B29076B08F78B29177
+      B09079B29077B18E77B18D74AE8D76B09272AD8D73AC8E72AB8D70AC8D6DA889
+      70AA8C74AD8D75AA8C6FA5886BA2836FA28776A28E6A9D8373AB8B73A88C76AA
+      8F6C9F8565997F6B9E8974A98E74A98873A88974A88B74AB8B73A58874A68975
+      A88D73A58C73A58B79A98B75A68772A58674A88B74A4876C9C7F7CA58C94B8A2
+      9DC1B592B9AB668E735C836362896B5E866B5E85665E86665882625E8865638B
+      6B63896C648B6D638D6B638D6D648E6E648D6E638B6D628A6A618B6B618A6A67
+      896C739176849E8690A490C3D0C5E2EAE6EDF4F3BCC7C55C70643E5C444C6E54
+      54775B426246738A73ADB6A9B5BCAA8D99845E7E63577C644766553752432543
+      3322402E27473131533B33593E325C3F30573D31563D2F5A3E2C533A2C533B2D
+      573E31563F2F5540355C4936594E2F55422F544036574E395B543B5E533D6255
+      375E4F376351396A54376B5137655037634F315E4935604F37665335614F2E57
+      472C56444F6D5D6D716865695854573D44472C4241283E422A3C3F293E3F2846
+      503F5E654E47522F23291B2B321F2B2D1932321E2F341631321E2F331B302F19
+      2E2C172F2D162D2D162927112428162D322841464142493141452843462F474A
+      3041462A3A3D242D28162C29173F3C26433F2445472F46472E46492E4A4B2E49
+      4B2A444929494A2D494C2E4949334648304747333D3F273C3E2A646560808676
+      66765964716162705B606E5B676E616B74636B74646371626B7668727A6C7983
+      7478877A909F8782936244522F565F49353A32ACBDD3FCFFFFF1F8F4E5ECE1F3
+      F7ECF3F8EEF6FCEFF6FAECF3F7E2C0C3A7646D4930331B323927191E0D131613
+      191B16282D1F32351F383D2C41473A464D3E555A4B595F4C5E66526166595B64
+      4C5A5C475A5C4B585B4352573E53573D51533D3D432944472C50523756523A5B
+      5D4152543A525237474E374B50334B4C2E43432B3C3E283137213A3A2135381E
+      3D3D24544F3E3E43283D49375F6B58646D503C47292F361E323622363B27343D
+      2D2C32222325181B1B110A0C090E100D151B11181A0F1716111F1A11181D121B
+      1E14222116222516232716202A1C262A192F2D182F351A31311A2C2C192F2D1B
+      25291823291926281C2524162020161D20151A1F13171B12292C294A5C4E3C4C
+      45495D545A6B604B5F4E485C4F4C5A4F5464595B6B5E526456515F5354665954
+      695E465A4A55695952665A606D6055645653645449594B5F6F62536857485A48
+      526558536454626F5D445645546A594B5B4C1F302B1E322F172C28172D2A1B30
+      2B21312C1A2A27182C25182D251F2F292030281B2C241B261C1D2924172B261E
+      2B251B2C2818281B1F322C2132291733241D2A241B25241B281F202B27122725
+      152B281C2B26152B241B2D241C30251E2A2119271B1C2F21172C221A2C241527
+      21172A281B2D251426221A2F2F16282A17292C1A352D1B34321E32321B2B2811
+      251D1E312D1F30261F2F2D172B2912241E202F28172C21192F28192D29172922
+      17322B222D251F2A2120313000006A85E66F89EC7289F0738DF07890F56F87F1
+      7B92F4768FF56E87F37991F67D97F5778DF5778EF9778FF57891F57B91F4778D
+      F37D91F48297F27D92F3778DEF798EF17990F3778EF47287EE7288F27C91F570
+      87EE425CD53D56C63C5CC43A5AC23C5BBF3C5CBD3D5FBD4669BD4C6DBD5476BD
+      4D70B53C5B9A42629C476EAB3D61A23D5B96486BAE446ABC3F65B53D63AB3659
+      A42C499528427C1D376B142B6020386F2340811A397C21418623458E1736840F
+      2873354C8B5062973E528B526DA67893C0859BC28597BE798EB9768EBC7490C2
+      7997C7829DC786A1CA7D9CCB7696C97292C67091C8829FCF8EA8D37C9ACA7B97
+      CA829ECF7E9ACE819DD27D9BD585A0DA86A0DC7999DF7C99DF7E9BE2819DE782
+      9DE6869EE87E98E67E99E87B99EB6E8DE47591E37E99EA6F8DF06783EA6C87E6
+      6C86E66C89E2526EDA647CE06985E4708AE97991EB7E93ED7490EB7693EC7290
+      EB6989E96C8AE76F8DE4748EE47995E4859DEB889EEB8198E87990E7768DE462
+      80E0647CDC6C80DA6F87DF7D93E47E96EB7C93E97996E97E97EB7E95E97C96E9
+      7D98EB7E98EB7E97EB8097EB8099EB7D9CED829FEE849EED869FED8AA1F088A0
+      F189A3F08AA5F18EA9F390AAF48EA6F18AA6F18AA6F387A4F28CA3F286A3F388
+      A4F3829FF186A3F58DA8F58DA9F486A3F4809EF184A0F3859FF2819EF287A1F1
+      819DF07797ED6D91EB7696EE7292ED6F91EB7996EC7593EC678BE8658DE86F90
+      E8708EE96488E85882E35783E25F86E36187E45A83E15C82DF6487DE6588DD60
+      85DB5A80D8587FD64F75D24D75CC4F74C84C73C24B76BC4671B63F6DB74570B5
+      4C75B03D5A8E3C4A6B3D4D5A35495E32495F34505F334C583546573345563546
+      5642555A384C552F474F2D4C58355660294242345B5D315552364D4E2E444731
+      474C2B3B422035373247472C3A3E2535362035321F31311D2A332D393D242C2F
+      1821281D2B2E1E2B2F20333237615138695136624C3A5E4A3B5E4A3663513E6D
+      57395F4F375A4B3D605737504C324744354A462633304050558C9EA092AAA7A0
+      BEBCB7D4D0BDD1CBACBFBDB9D0CCD4E4E1DEEBE9DAE7E7EAF3F3E9F1F0E6F0ED
+      E8F1EFECF5F4EEF7F5EFF7F6F0F7F8EFF7F6F0F7F8EDF5F3E7F2EEE7F2EEEAF2
+      EFE4EEEBE0ECE9D4E3E0C0D2CEA7BBB6B1C2BEA2B9AE587774446366415D511A
+      2D285B7D84F7FDFDEEF7F5D6DFD76381683A796241816B427D69418168428B6D
+      48917246916C448D6C46886B44886847906D448A6E458B6C448A6B4991724893
+      744B92734A916F4489663C82625FA083A3D1B1A0CFAA9ECEAAA0CCA99CCDA99B
+      CBA99CCDAC9BCDAB9ACCAA99CAAA9ACCAB96CBAA98CBAA98CAAB94CAAC91C8AB
+      8EC9A886C2A27EB8997CAA9173A38B72A28972A08970A08972A08975A28B75A1
+      8774A28574A38773A08870A0856FA0836E9E846E9F856DA08170A1846F9D856D
+      9E806D9F816F9F856FA0816FA1816E9F846D9D7F709F816F9C7F6E987A6F9B7F
+      709C806E9B7D709C80709B81739D806F9D806A9A7D6E9B7E739C806D9A7E6E9B
+      80709D836E9E7E729E7F70A0836D9E806E9E7F729F8375A18572A0816F9E7E73
+      A1816F9E7F6D9C7D6A967A6A9A7C6E9E836F9A81709C816A997D69977A6D9B7F
+      6B9D806D9D816C9B7F6C9C7F6B9B7E6A997E6A997D6D99786E9B7E6C9A7F6C9B
+      7F6E9C7F729D816D9C806F9C806F9B806695786E9B80729A8369957769957569
+      9176658E726F977A6F997C6995776A937A6A987D69987D6E977F6C987D679377
+      6D9B806E9E81729C7F749F816D9D7F6C9A7C6491716B967587A98F94B19A87A4
+      927898845E836A4F755659805F5B83645A81635980635F866861896A60896A5E
+      86685B83655C83685E866A61886961896960896A60896A628A6A6189695F8A6A
+      6C90779DB1A4ABB6AABEC8BDD7D9D4B8BAB0ADB4A6C6CDC38F958C2B35233C47
+      2B3E49333C4C2F909A7EA7A593A5A893B7BDA9B7BBAB848F7F29433121432E31
+      543B396145355E4131573E345B41335D42366346366349345C44355E43346047
+      335F48315E4634604837604A3B604F3A5D50395C4E38604C345B4C375D543C64
+      55416D5D3C66593860523A66553D6D593C705A386F573969543B69553B685532
+      604C2E60483C6654566B636A6E686F71625A5A405552344F493248472C464628
+      47432D49493D5963504A532D1F251631381C383B1F363A1C3A341C3C38223939
+      2531372138361D3C331E36331E34311F293221313A2F3E47363D462A43482B54
+      5038555238525136484A2A312D1236321C44422D4846284B4A2F45492C48462D
+      444825464A2C40442848492C48462B40462743423144443044432E3D3E2C5A60
+      5F919883707C6282877481907C9098849DA592A4A698AAB09DAFB4A4B6BAACC2
+      C7B9CBCDC2D5D7CEE7E9DBBDC7A0616A435F66533C4239A6B7CDFBFFFFF6FAF6
+      D0D7CAC6D0C5BCC4B8B4BEB1B1BBACABB8AAB3BCAFB5BDA7626A4B3E41271F23
+      0F11180E151B1626301E262A16262C1C2831292B3327323A2736412B38412C32
+      3E2E34402F37422A40452F3B402B3F412D3C4126383E25383B253D3F25383B21
+      3A3A22373621343726393824373C27373B23373A293E432C4248334647314148
+      3244452F534E3A615D453B3D2937423D606B586B71544A4E363C40253639252D
+      301D2025161A20141E2616191E14090A050E0F0D17191311130A14120D181212
+      181B111A1B111B1D132120121F200F1D24141D21162426152427122125162726
+      1632351F212312171E131920131A1E1318190C12160B14170D10180D20272649
+      524B434B4A455A52536C5D4C644F485D50435B4F51635E5E6C5D536555516251
+      54695A556659405A4E4D64585565585A6D5E5564565365564A5347616E605465
+      574257495C6B5B5262515E70594B5E485865594D60531C2F281529261F2A2818
+      292A202B27212F2B1828281C2D2B162B231B2D1E1C2D251C2B281B2826192B27
+      1B2724182B26182D2912291F1F2D2820322E1B30241C2D241728241A2B271C2C
+      261C2922192B291D2D291D2A24222B241C2B26172C25182623202A241E281D1E
+      2A291627261A2A26212F2A172A25202F2F162A27152C2D1A34312036311F3434
+      19302A1B262320322A18322719312A1B2A28111E1F1A30291A27261E2B281B2F
+      2A1730251B312C1A2D241D312718332F0000708BEB6B86E86F89EE728DED7590
+      EF748BF1768DF57690F86B86F17089F27D96F5778EF4778EF57991F5758EF379
+      91F37890F2768BF17D92F17C90F1778EEE7488EF778EF5778EF37087ED6B81F0
+      7388F58097FA556DE03E59C94864C73E5CC53856C23B55BD3D5BB94261B94666
+      B94D6EBC5271B94462A2405F98486DAA496BA93B579047649D5579BE4B73C045
+      6BB53D65AC2B499621387D17316D081B4F0613400D1E511A32731E3B85284B95
+      23448F0A246F213B833F559230468344619C7996C0889EC58E9DC27D8FB97286
+      B1728BB57B96C2859DC88AA5CF7E9DCD7897C96D8DC56D8DC56E8BC4809BCD89
+      A4D37995C8819BCB88A1D4869DD3819DD784A0DD819EDB7E9ADC7D99DE809CE4
+      849EE77D99E387A1E78AA3EB86A0EE85A0EF7996EA738FE77895E66D8EEC6B89
+      F27790F06986EB7490E6617FE1506DDB6B83E26D88E86B88EB748DED738FEE7E
+      97F0859CF18198ED849AED869DEF8CA0EE8FA2EB8DA1EB889DE9899EEA7C96EB
+      6580E26A86E36685E26485E37492EA7B96EA7E96EA7C95EA7C96E97E97EA7C95
+      EA7C97EA8099EB7E97EB7E98EB8198EC829AED809CEE849EEE859EEF819EF082
+      9FF088A4F190AAF190AAF290A9F191AAF191AAF591ABF58CA8F28CA5F28CA4F2
+      88A3F191ACF391ABF388A5F288A5F486A3F284A1F185A0F288A2F284A1F180A0
+      F17E9DF17D9BF1819EF1799AEE7493EC7895ED7393EC6F91EB7291EB6E90EB65
+      8DE9698EE96A8DE76289E46289E46389E46489E46289E35A82DE5980DD5A80DB
+      587FD8577DD55276CE5679CE6183CF5B82C7527DBE4570B74573B84676BC4878
+      BF507AB73A5386374B6437475A3E4B62495B6D405261304A5832515B2F46584A
+      5E6D2C3E483D545F3C535E24393C1F313C2C46523D5D6035545928434A354C56
+      2A4446263D3D3D4B593649502A3F423142452E423E233D36273D3A1A272E202C
+      371F2D2E141E1F1B2A291C38322F50472E574830624A3C795F3D785A3C715439
+      614C3E6C573C6B56395E503E5E583C5B5840625B3449411B2C2B647F88A3B9B4
+      8FA6A088A098758F888DAAABBFD4CFC5D8D4C3D4D4CBDAD9C5D7D4D8E7E4EEF7
+      F6EFF7F5EBF4F3ECF5F4EEF7F5EFF7F6F0F7F8EFF7F6F0F7F6EFF7F5EFF5F2EA
+      F1EEE3EDEAD0E3DDC2DAD6B4CDCBBCD1CED9E6E4DAE8E3BCC8C27C9D9C476C6B
+      3C504723372D385758C0DADBDAEBEABFCFC357775A36785D42896D448E71458F
+      7147977443927145977444987648977A49997E459776459273418B6E43906E49
+      95754895734997764597754495713E8F6E539A7D7EAD9A81B29885B69984B295
+      7EAE917CAD927EAF937DAD9278A98D77A88C79A88D78A68D77A88B75A88873A5
+      8774A48B73A089749D866E9A81729E8476A08774A28772A18775A38974A28874
+      A38977A58B75A48874A38775A48775A58674A385729F846FA0846C9E7F72A285
+      74A085709F7F6CA07F699C7E679D7D6A9F7D699E7F6A9E806FA18473A38575A4
+      8677A88C75A48B73A1856FA28570A48676A48970A185679A7E679B7F6E9C7F69
+      957463907269997D679A7767997A63937566967777A68B75A58976A88B79AB8F
+      75A68B72A38773A28773A08577A48776A48673A083739F85709E836E9D7F729F
+      8173A18070A38373A38474A28575A38876A48875A48972A1856F9F7F72A18373
+      A38775A48875A4866F9F83699A7E6C9C80729E80709F8170A1856EA0816C9C7D
+      6E9D7D6B9A7867977575A18573A1846FA27E72A1816D9E84669A7F699A806D9E
+      836B9E7F679D7A72A88578AC8C73A9876EA58777A58B89AC9690AE9D85A69274
+      98815E856851775A5E8566678D6C6489696185665F85655E8565608766608766
+      60876961876C6187685F86645E86656186666186665F83645E85646087665E85
+      645B8165537759B2C0B0D5D4D0C8CDBED5D6CCC4C4B5C5C8B6C6C9B89BA59058
+      7A59638360648363557D5B87B0979EBBAE93AD9B849C8B7C9888587E6D3C6C52
+      3D74543D73553D6E5239664E386E53397458397359396B54376A5139664C3A6D
+      503A75583A7558396E543C6C573F695A3B61533C6958406C5E42705F3D6C593C
+      685B3C695B3C6658426D5D406F5E3C6D5A3C6C593C6E5D3D73613B6C5D386355
+      39605241655841635A3B5954556D646E73696B7160555944454A2C3D41243E3F
+      21363B233C3A24464F3E5B685250572E242B132B311D2C2F1A31341D31331B2C
+      311B2C311A32321A2C2A16322F1D2F29182726172A2B1829372A404A3A474C3A
+      42462F424330424130404930373D21292B152F28163C382542462A454831454A
+      2F474B2A514F2B514B2F4A4E2D514B2E464A2E4B483348492D45483041452F3C
+      412F5F62638F998672785E70755E6E7C626D73606D75647579696E7662707A68
+      707C6C7983727C8B7A899585A0AA938C9A744955395C645436443B9EB0CCFEFF
+      FFF3FBF8E6EFE1F3F7F0F6FAF1F6FAEFF2F5E9EDEEDFDBDFCCD3D7C053614476
+      83622D3618101414151B192B2D2A2F36293740323E4734464F3A4D5644525B4C
+      5C6A575B6956515D474F5B43575C49535A3A5354395353344A50323C3F263F40
+      2B454A364C4E375652374B4C33534A36484A37414534414230393C26383D2537
+      3A2332372131371B3F442E4D533D35412B3C473760705E646E5345492D3F3C2A
+      3439273738243837242E2D1C2224151E1E0B0B0E050D0F0B151A1115160D1618
+      111819121B1B121A1F131F21162722182624182328182A2B1B292C1931311D30
+      2F1B312D1B323523292B172A2C17282A1B2023151D22121F22161B2015171A14
+      232B2B4A554C404C4A4B5C53576B615163564A5A524B5C5351615E606E615666
+      58525F5159655658695943524A5864605866595F6C5E5565595465584654455B
+      6F6259685944564C55656055615861735A4D5F4F57685D4C5F4E1F312A192F2B
+      192C27182B271C2D2B1B30291A2C251E2B231A2A241E31251B31271D29291A2B
+      24202C231A2D221D2C241C312B1825221C2F2A1F342E192D2B1A2B24202B211F
+      29251827241D2A281A2C24192F291729241C29261930291B2A241926211F2A25
+      1A281F1B2D261D27251D28261A2D281C2C271D312E162A27172C281935351731
+      321E353519312C1828261C2F271930251A312B172C290E21241D2D2A1928251D
+      2A2B1D2C27182C2919302B192F291A2D281A342700006F88E9708AEB6D86E86F
+      88EB7289ED768FF1748DF17690F1738AF16E87F17991F5768FF2748BF2788FF4
+      788EF37D91F37D95F16D87EF768FF2798DEF778DF2738AF1758EF27388F1798D
+      F17488F16E85F37D91F56A83EE3C59CF465FC54260C63553C2314EBC3B57BA3E
+      5DB63B5DB04061B3486AB84C6DB44564AA4365A94565A7435F99506DA75A7EBC
+      5279C04973BC446EB4385FA7213D8B13266C0E1F610613500A185112276A1837
+      8034579C4163A23A569C334D952E488C21377D364E8E6E8DB97895BE849AC187
+      97BE7788AF6276A35066A24761A0607FB47996C57795C86E8EC56D8DC66D8DC6
+      6988C482A0D28EA9D67796C97C98CC7C98D0819CD7809DDB819DDF87A2E885A0
+      E67E9BE7829BE7829BE47793E2738FE47D9BEB809EEB7E9BEC7593EB6988E372
+      90E47292F06786EE6786EF6480E96E8AE8597CE25875DE6B83E4728BEA6D88EB
+      708DED7691EF7B96F27E98F18199EF829AF08098EE8298EB879DEA8E9FE87D91
+      E36680E06D89E77790E7728FE97291EB7591EC7692EB7C97EA7C95EA7E98EB7D
+      9AEB7795EA7E99EC8098ED7C96EC7E99EC7E99ED809BEE849DEF819DEF849FF0
+      86A3F18AA6F38AA5F290A9F294ADF392ABF496AEF496AEF591AAF58DA8F48CA6
+      F48DA9F594ACF690A8F588A4F1849EF087A3F187A4F186A4F285A5F285A3F384
+      A2F282A1F17E9EF07D9DF07E9CF07B9AEF789AEE7E9BED7797EC678EEB668EEA
+      698FE9698FE7648BE76089E45983E15C86E46388E46388E26086DD5B81DA557D
+      D94D78D45079CF597FD26485CE5A7EC64B77BD3C68B33E6BB54C79BF4B79C053
+      7FC04D77B73B5B954254723C4C6038465A3F5062404E622F3C512F475A2E475A
+      43576E59737E364457323B53303D502E40433247483750593D56604652653A4B
+      5F30415432425222383C3D4E553845532636483547512C4241213A3B24393D24
+      3436212F362535381F27271926261F3B32203C332657473C7F613A76573A765A
+      3B75583B665139614E3B69593B645A3C605B3D5F5E456862394C482B3A3A617A
+      83B4C8C8ADC3C1ACC2C098AEA699ADA9AABFBAA3BDB7BFD4D2D8E7E7DAE6E2DC
+      E7E4E7F0F1EFF7F5F1F8F9EFF7F6EFF7F6F0F7F6F0F7F8F0F7F8F0F7F8F1F8F8
+      ECF3F1E4EDEBCEDFDABED0C9C0D1CCB1C4C3D3E0DDE1ECE8C2D4D0D4E2DE9CB7
+      AE3453513E5C58284131395653A1BBBCA6BFB99DB1A95A78653E7862457A6345
+      8266437D663F76623E7C613F836541896B4287684385693F8065448568408365
+      438668428565438869448A6D428A6D448B6D428D6D4A8E6F6691786B95786E98
+      7E6E9C806F9C836A987F69987E6C9A806F9D8372A085709E83749E8372A08570
+      9F83729E80729E8173A08474A38676A38774A28672A18473A28372A1856F9D85
+      709E8572A08774A28874A28573A184729F8572A18370A18074A28670A1856EA1
+      8073A38478A58B80A99286A9938CA9928DAB968FAE978FAC988FAC9884A99374
+      9C86749A816D987A6F997D739D81759C81779E80769E8177A08481A98D86B092
+      7EAB8F81A58D99B8A597B7A8A8BDAEB0C0B4ABBEB2A4BBAE799685809D897496
+      7E628A6F6390746A9A7E73A28974A38976A48776A3876E9F836B9E8170A38373
+      A38473A38773A18672A28674A28676A5896FA2866DA08472A28474A2856FA287
+      6FA08574A28575A38870A2856FA184709F83739F8574A08473A28472A28772A3
+      8575A38774A28773A38573A38573A4866DA18374A3877EA18D82A08C88A18B84
+      9E8577967C76967D89A4906E8D7C547D63759E817D9F877D9F8886A6906B9174
+      5A81625C8564638866648768668A6B6489696187666286665F86645E86646189
+      686288695F81645B8164618063617F605F7F615E81615F836262826260816262
+      82635E80615F7D60527456829F81DCE2D6CDD1C5C3CBBAC4C9B6C6CBB7C8C8B7
+      8D9B8457886A5E9377558A73467F6B3165533268553C7660376F58316A523B79
+      5F4283693D775B427A5E437F653F7F643F80653C7A623770593B6D5636735737
+      795A37795D367158396A53386A533B6F593F715F3F735F3C795F3D74603F7362
+      4277644176643C6E5E3A6354416D5F3E6D5B3C6A583B69583866573C6557395D
+      513A5D523C5F58446562405A59354F4A486357666D606D71605F5D414F503649
+      4B2D484A2A41462C42452B494E3E5B6552535B352529112F361F373824353924
+      3C39243639243B3B254339213D391E37372538382436361C312D1F3939293E49
+      373F4A31434C3551543654513A4B4F333C482D2A30162D2A163E3C27373F253C
+      41293D43283C42243F40243D3E213A3B1D3B3F223E41243A3B213C3E22383E24
+      3D3C24373A27525D5B78856C4B553E5A64505F6B54616E5B777E73818A7C969E
+      8F989E929EB09FBAC0B3C5C9BFD4D6CCECEDE3E1E5C57276586971594850419C
+      ABC4FBFFFFF1FAF6EBF2E4DEE6DCC5D0C0B6C3AFA8B6A397A2969BA698A7B89F
+      7C8A6888927A465333111A14171B142F2F25262F1D232D1E27332430361F393B
+      25393B26343A2C303424333D26343F2A333824393D24353A24333C2934362433
+      3B24333B24313A242F331B2F321C3B3D27353B1B3C3B22433F2842432B494935
+      4F4C374F4B324B5238484C2E51533E5A5E3E3F412A3441355B6B606E6F5D4D4E
+      3032371C35332528271724201221200F2822152321120A0C050D130915180F10
+      100D10100C12160B14160C15150E1A1A0D1E1E0F1A1D111E20151C1D131C2113
+      242213222414212316373724262814151B0D171B0E171A0E171F0C1517091118
+      0C13150D21232651564F3F4A3A4C5D53566A605764564D59503F544A52615B5F
+      6C65586954505F50556558556A5D3A463F5968655468595E6D5D576557536453
+      4254476471605569564B5D50556659516553626D5D4C62535666584F5E4E1E33
+      2916312C152B271728241D302B1B2F2A172C26203028182B241A2D29172A2418
+      28241C2C241C2C282030231E302A192D251B2A1E1C33291C342A1E2C271A2826
+      172624192B241A2F221E2F231C2C221F3428172B22172B22182F2A202F291B27
+      261829251D29221A2B261B2C261829271B2C291A29261E2F28152B26142C2920
+      3A2E1D35321D332F1A322D16291F1F312A1C2F271B3226182C291223211F3028
+      202B26162B231B3029182A241F302E1F2F26202D2823343097696A83E66B85E7
+      6F88E66C85E96F87EC768FF17891F37890F2758EF27289F37489F4788FF57389
+      F3788DF27B90F3788EF1778EEE6F88F1778FF57C92F57289F0768BF1798FF176
+      8AF17B90F28097F47589F17D8EF17D92F34864DB3E57C7455FC52F4BBC2D4DBC
+      2C4DB73454B03B5AAC3853A63C5CAE4465B84664B24161AF4061A5415D97516F
+      AC587ABA577CBE5075BE496DB53D63A92B4B971D36851E378018307A162F770E
+      266E173580274C91385D9F4C6BA94C69A23F5C9A32498D334A8C5578AE698ABA
+      7491BE798EB87281AB4C5E983249914461A35F7DB6728EBF7590C1728DC2668A
+      C3698BC46B8EC87595CD90AAD9799BCD7897CD829FD77B99D67E9AD7819BDB8A
+      A5E68EAAED88A5F085A0EB819DE67898E9789AEB7797EA7793E67893E7849EEE
+      7292EC6986E2809AED6F90EF6689F05679EC5F7FE9708FED5070E44762DB6C83
+      EA6D88EC6A87E9778FED7B93F17895F17896F17B97EE7997EC7E9AEB8499E972
+      89E16076DB6379DE6985E4708BE87491EC809AEE7E96EB7492EB7292EB7B98ED
+      819FED829DED7E9AEC7C98ED7B97EE7C98EE7D99ED829DEF809CEE809CF085A2
+      F187A5F293ABF390A9F28EAAF48FAAF38FAAF290ABF58DABF48CA8F38DA5F58A
+      A5F587A4F589A4F58EA8F591ABF68AA8F185A3F189A6F284A2F27DA0F1799FF1
+      7B9DF282A1F184A0F1829FF27D9DEE7B9BEE809CF0819FEE7D9CEC7698EA7393
+      EB6A8FE9628BE6628AE3648BE4638BE46389E16087E15E83E05980DC557DD956
+      7AD64F77D0547CD26589D36288CF4D77C13C68B33462AF3E6BB64370BD557FC2
+      547CB73D62A03C5B96344E6F374B57384A5A353B574557693F4D613F4B63394C
+      5F303D5A425265475E66475669495565505A642F44422F4E482F464B384C5A40
+      52643F526534475231455220303F303D4C3443492A3845263844253B472A3D46
+      203337273B3D2A3A3A2A363D28353818242B233A382842371D3B34336D583B74
+      5837644B36604A3964523C68563C5E564063624268623F5A58405A58445F5A3D
+      54537B969CC6DCDACBDBDA9BB6B0A3BFBAB8CCC4C4D6D0CEDDDACEDBD8D5E2E1
+      F2FAFAF6F8F8EDF5F2F7FDFDF7FBFAF1F8F9F6FDFDF7FDFBF6FCFDF6FCFDF3F9
+      F9F1F8F5F1FAFAE5F2EFDAE8E6EAF3F1E8F3EEE1EEEDF6FCFCCCDCDAB3CCCAC2
+      DBD46F8E80203431344D4B324C43365150B5CCCFD5E0DC94A397526E61477969
+      487C6B44796544786342735F3D775D3D7F5F4183654685664683644285684281
+      664485664187693D81634080624386664387684388683E8866438B6A6B9B7F6E
+      9A7E709B8074A08772A28772A1866F9F816D9E8070A18472A28872A18975A188
+      6FA0846FA08374A186739E8773A1886FA48870A1886F9F866D9F866D9C856B9C
+      81699A806B9B866B9C876A9C816B9C83699D846A9C846F9F856FA1866B9E846B
+      9F836EA0836B9D8378A8957CA69DA0C0B7EDF1EEEBEDEAE7EDE9EDEEEDEBF1F1
+      CDDAD7667E6E57745F57735B5B7E6262876C698A716A8B716C8E7272917779A0
+      8779A48D76A08C759F8F85A9A0A2C0B8DDE8E8E9EDECF6FCFDD2DDDA59806B5A
+      896F60866E5E816A64886E6B90756B957C6B977E6B9A7F6F997E6E9A7F6C9A7F
+      6E9B7D729C83709B836D987F6E9B816F9B836F9C81729E836E9C816E9A7E709E
+      836F9D83709E83729E836E9D7F6C9B7D709E83739F856F9B816E9B7F729F836B
+      9B7F6A9C7F709F846FA08472A0876FA18770A1856DA48970A18B98B1A5CED3CC
+      DAD8D2D1D2CAC3C8BDD7D5CABFC5BE556A5A5E77647799866589715A83665178
+      5E5379595B8365597E635780635A88695B8162547A5B54795D588062567C6056
+      785F57776051755953795B50795E537A60537D615682645A876859856B557D64
+      537C5F5381645385665382654878605B8560D3D8C2CFCFC2C0C6B2CDD1BDD2D1
+      C4DEDACAA3AF9F3F77643E7A623F74603F6F5E3F705B3D70543E75554078593D
+      7558376C533C74583B73573B74583D785E387559336E52366F533B7457346E53
+      326C4F386B5233654C32684E2F644B356A51376E53366C503A6D553B6D553C6C
+      583C6C593C6C593C6A583562503763513C6B593564533862523D65553A64533F
+      60554361583E5F563B5D57375B563E60593A57514D655E6A6D686B6B5753573E
+      484D303B43244243253C3E233C41273D48335F6550525A382A361622301A2C31
+      1A2F341930341C2C331D31331934351734311C30331C2F2D1633321F2A321E36
+      38274047364650354447324949344B4D34474C3043482B2C2F162D2D173E3B26
+      45472C494A2C484B31484B334D4B3149492E4A4B2F4A4B2E494C2B524C314B4B
+      3148483047483343432E5B5D5AA1AD9573856B798671848874828B7786907F8E
+      9587899284909884969F8F99A097A1A5A0A6ACA5B3BAABA0AD8B576242566152
+      434F4593A6C1FDFFFFEEF8F5CAD4C7D7DBCBD8E0D5D9E0D5E1E4D9DCE4D8D8DF
+      D2DBE3CD727957828F7C4A563C151D11171E1631322B35382A3B45323E513C46
+      52424F59475A62535B61555C62565A614B565C4451563F545A3F4D553C4D4E39
+      494C3A3C41283A3F264C4F3849533351523B4F543B575A3B4C4F37525339544F
+      38514E3348472E4B4D334746303F422A4A4832535540313F2835453A626B5F72
+      7059434A2932362230341E3436223C37233839232A2B1A2322140B0C0B0F100B
+      15190F151A0D14180D16170D15180D1518111B1B111E22131B1E122021162523
+      152428152D281A2C2A1C29251A3233242428162326162625192827162626131F
+      23161D1E14191D162C2C2B525759404C44515C57596C61576B5D4B574F455A4F
+      5163595F6E6855665A50605055695D5765562B3B31596A6A526357606C615863
+      53546A5842523F5F6E6056685A44564C566B58566556646F63475D4C5568564F
+      604B20312C1B313114292A1C2D271B2F281F2F261D2B28192B291F29231E2B2A
+      1731231E2B271C25211D2A261C312420312A1D2F2A172A1D2036292034292231
+      241D2C1C1D2B251E2C231728211429241D2A241B312A16251F1A2B221727241C
+      2C251C2621182B271728262031261B2A211B2C211B2F241928241C302B172B29
+      182C2820342C2132332031301A3227122A1C192F291A321F203329162A291426
+      1D2031291B2926172D241D2F27172F2D1A322E1B2A231B2B241C342D00006A86
+      E66580E3657FE2647CE47288EA7790EE7C95F67790F27790F3738EF17289F27B
+      91FA758EF87389F17D95F37990F2748AF1677FED788EF17D95F56F87EF778BF1
+      788EF07D92F3778DF27E92F37C90F2778AF18196F35F7AE93B55CC465FC54060
+      C33859C22746B62844AB334EA83552A32F4B933856A64162B83F5EB33C5BA934
+      4F914260A45676B85677BA4F75BD476BB43C5DA43454A0304F9F3B5EA73B5EA6
+      2C4A9923419021408D26499123458D2A478B5471A8617AA751699C35508E4564
+      9F5C7EB6597CB2506DAA4360A23A549C4968A96482B87695C56F8BBF6E8ABC62
+      80B95075BA5C7FC16B8BC96C8DC97D9AD086A3D57392CC87A3D98CA8DE7C9ADC
+      7D99DE7E99DE7996DF7C97E3859EE990AAF187A4EF86A4EF8CA4EF8AA2EF7E9A
+      EB819BEC819CEF7393EB7997EB819EEF789CF16E95EF6083EB6689EC5C83ED4D
+      73E45575E26C8AEE6683EC6986EA738EED758EEE7B95ED8499EE869CED7B97E8
+      7590E46181E05A7AE16D87E77890EB7C95EE7B96F0819AEE809AEE7D9BEF7797
+      ED82A0F181A1EF7E9BEF7D9AEE7596EB7D9CED809AEE809FF085A2F1809EF085
+      A2F28FA9F38CA3F38DA8F48FACF491ABF48AAAF28DABF490ABF58AA8F687A4F4
+      87A6F48AA8F588A4F589A8F588A5F58EA9F589A5F1789CEE749AF0789EF17DA0
+      F07D9FF085A3F385A3F184A1F0829FF1809EEF809FEF809DEE7E9CED7B99EB75
+      97EA7495E96A8EE6638BE6678FE46A8FE1658AE16187DE5A82DC537CDA567ED8
+      567ED45B82D36487D5668AD2537DC4406BB73763B2436EB64B75B84B76B74F79
+      B74368A63C5D91395E853761783F66733A625E3C5E66485B6F5F6F7F4A59653C
+      4D643D53693C4A623641563442543D4F5F3F545D3E4F562D474C2F4C552F444B
+      3A515D38545F3951613347553246522A38462F3C49283D3E2F424625353F212C
+      3D273B45334F523B4F562B3B411F2C33243C37203A342C413C37534627473C32
+      5D4A36624A345B44365B47385F4C406A5B41665E4268613D64603E605F416463
+      617F7F3D54516C8993B8D4D3A5BAB8A1B6AFA7BCB7BBD0CBD3E2E0E3EDEBD3E0
+      DCDAE6E3E0EEEDDBEBEBD9EAE6DAECEDE3F0F2E8F3F0DAE9E8DBEDEFE0EEEDE2
+      F0ECE8F4F5E5F1EDDCEAE7CBE0DBCADFDBCAE0DFBDD7D7C2DCD9B7CCC88CA5A3
+      A3BCB9B3C9C28EA1954A62583656514765682B4242638B8CE4F7F5CDD1C85C7A
+      69437964417D683E7E6644886F4993734898734D9D7C4C9C7C4A9C7C4FA1804C
+      9E7D509D80569F854A997C3D87654086643E88643E88663E89693D8A69449574
+      61977C6B9778729D816D9B816A9D816EA08574A2896DA2806D9F856E9C866C9A
+      836E9B8567988166978065937F65957F6595805E8E7863907E64907A628D785B
+      877557856F57856F588373588273567F6C517C694F7C6A5882715E83745E8372
+      597E6D597F715E81725C817156826E4973606F9689C0D4D4B7CBC9BCD2D3C1D3
+      D2B7D0CB99B4AE5F83725B826D5F856E5F87716188736088735E87735F87735F
+      89745B89745A826E58816C5C8772527F665E9680809A939BA9A2B1BFB58D9C8D
+      8CA28C93A38E889E8866987D62957C6291786191785E8F76598F755C8E745C91
+      7561957A619578598F74598D735A8F765B927A5E9A7F5F987C5E93765E977D59
+      937A5893785C977D5A92785790775B987F5C967E588F775A917E59917C558F73
+      5E997D609680588B7552856E56897352826D477A66517C6A3E6356263F32466B
+      59D2E4DCECEBE9E7E8E6E6EAE4EBEDEB798F8D4061544D70644070643C715F42
+      7560365B4B365446425E52273B33385E4E487D6840705A4783654A91714C957A
+      5E8A7D557068273C362E6142489B74468F714C9576499676498D6E48856A417C
+      683F7C62448868418A694185653D7A5F2C664E7EA583F0EDDECDCEC2C1C6B5D4
+      D7C6D7D9CBEAE9DCA5A99F2A45382F543E32553E315940356144315C3E30563D
+      355D44315B422B533A2E543C2D533B2D543D2D573E2B553E2D563F2B543C2E55
+      3D2D553D2C5A3E2E5B402F593F34614536664A2F5F4329593E2D5E4335624B38
+      624F3B6454375A4E355649375E4E365E4F335B4C325B4933594837564840564B
+      3D5A513B575239555133534F34534C3455484063593855504D645E595E5A6265
+      575C5C445653365652324F4E2F554E2C494A30454B3B59604F6062402B34172D
+      352135391C3A3A22403D27423E263F3C23413D233C391E3C391E3D3A2437361B
+      312D21363D2C3F4836464E3743463259563C57553C4C5034484A2A272F132C29
+      1C393C2A3D41273C43233942223D43273C422C3A3C243D3E2D3B3C293C3D213C
+      3D2534392A3A3B2635392436382357595382937E42533B4C594957634E5E6A59
+      6E796B818677869085939C8F9EA59BB2B6B0C2C5BFCFD1CBEAE9DFF7F7E2807F
+      61666D544B514890A3BEF7FFFFF1FAF8EDF3E9E5EBE1CBD3C7B0C1B2A7B6A69E
+      A6969AA396ABB4A48A97777D877A505F40151D12191B162C332A2936272A362B
+      2F3A2C3041323945383F492F3C43303A3F2F383D313F43363E432E3C44253B39
+      21333824313B26373B263A412B333922373E283A41223C4029444028464A334A
+      4A354A4C354A4D3354533B57533D5A553E5655405A5B45656850303D222B3B2F
+      586558666E54454C2F363C2431341E2B2B162925172424152523162221120E0F
+      060C0F0D13151215160B13160813180A17170D17180F191B0D1A1D121A1E141D
+      24132424162A27182D2B1A2B2D17292A16313424272A17272A1626241A252415
+      1E20141B1E161A1E16181E16262C26505C4F4550474A5C535F70635562564C5C
+      4F4C5C4B59665F5F6E6554685D515D5550605B5966592336325365645765575E
+      6D5E58655A57685F40503E626E66596958415A49566A5A53635A617063465A4A
+      5365554D624C1E352D1C312A1E2D2A1F2C291C2F2E1C30251B2F2B192D2A1E29
+      241931261E3124172B241B2A28182A261A2C1F1F322C1D2F29182B1E1C322A21
+      34291E3424182B23162624203028172F291628251E2B241D2F291E2D271B2A25
+      152D291C302A182A1D1725261D2B241D2F24172D22242F251D331B172A1C1D31
+      2A152624172C2B253531172F291B312C1F312D0F242319312A182D231C2D2818
+      2D2411271F1F2C2A192824182A261A2D291A28251D2C2A1930251A33251F322C
+      97696682E46480E3647DE16780E46D86E6768BEC788FF17790F17B92F17891F1
+      6F89ED758EF27C93F66E88F2758BF37E93F4788FF26A81EF798FF27D92EF7388
+      F5778DF8788FF37B90F37C8EF4788DF57C90F47688F3768EF37089F24460DA3F
+      5BC74463C43E5DC23754BE2E49B32D47A6314C982F4D90324D983B5AB23C5DB5
+      3856AE304B9639549C496AB54C6FB74B6EB8496AB33E5D9F385C9D3E63AA4469
+      AC4368AB385AA63757A432549D2849931B3880213E835170AC6C87B1526D9D3B
+      538C47649A6685B76482B45F7DB15774AE516EAC5B7DB56080B66483BA5A7AB7
+      5876B75273B85C7EC46282C56180C26283C46A8AC98AA6D97C9CD37793CE8CA4
+      DD84A3E47E9CE486A1E8849FE8809BE67897E4859FEC8AA5EE829FEE85A0EB87
+      A0EC87A1ED849EEB90A9F28EABF57898EE7B96EB88A1F3809FF57B9CF1779BF1
+      7095EE7295EF6F90EC6D8DEA6F91ED6A8EEC6C8DEA7490EB6E8BEA6B86E87489
+      E86E86E46681E26E8AE66A8BEA6487EA7591F18299F17C96EE7C99EF85A0F185
+      A0F1849FF186A1F1829EF2809DF17D9DEE7C9FF1819EF188A2F186A2F188A3F2
+      88A4F289A6F38CA4F386A1F18AA8F48CABF48AA8F589A8F58AA9F589A6F588A8
+      F588A6F487A6F48FAEF58DA9F57E9DF380A0F187A5F27E9FF0779CED789EEF81
+      A2F086A3EF85A2F082A0F082A1F085A4EF81A1EE809DEF7D9CEE7799EB7696EB
+      7898EB7798EA7293E66F92E66A8DE36B8FE2618ADF5C86DC658ADC6088DB5F89
+      DA698ED96A8DD6648DD7557FCD406BB83864AE436EB5456FB4446BAE496CA53A
+      5A8E395D853A6878346A6A3C776A3F876D3C7F733C7A693D7C664D7C7350626E
+      3C485B29344C30445E3448603D4E6139435925354739515A3853542940423140
+      563949553548523246513A5062455A6C3540523D465A3A48491F313B2F3E5135
+      44522E3E4423343B3548583C4D5F2E3C4524353C243E382B4B40364944374843
+      436C5F3C6D593E645547756246735F4D857145776B49756F4A78734773754D75
+      7442646586A0A6586D62536E75B7CBC9BDCFCCCBD7D5BFD1CECFDEDCD3DFDBD8
+      E5E2E4ECEDF1F7F182957F5F7E747C9C9762858390B4BCE0E7DE637361607F7E
+      75958F6E9089B6D0D7CFD8CC64776B72929170918D597D7C92AFB2C6DAD2A1B2
+      B1BAC9C6E1E8E4EBF3F0C6D8D0667E72425D5660756F62766A5C756C86A9A6A2
+      BAB45B7D6F4F7A6D527A6C527C6E5582744F806D4476624377633C6F5A3B6C57
+      3E6E5B3A6855417461426F5F5682789BBFB79EC2B59ABDB299BAB49CBCB5A1C1
+      B97BABA2789E9084A38D84AD9885AE9B76A49066967E66968169998F60908060
+      8E755F8B765683745C8576678E7F658B78537A6B5C81746B887A577D6E517E72
+      52867355836F6B887D6F8B84678A8066887E67887E7592887E968C567F6D447A
+      654878644A77634977654F7A6A4C75634775624879634D7C68607A725A766D5A
+      796F5B786D567066566D63568771529677589B8157957D4F886F518A72508871
+      4B8671509277539277518871509075539B7E44977286B39CD4CBCCD8CFCDACAC
+      9CB4AF99E2DED4C9D6CA8EB4A0549D7E519E8355A0894D9D834F9A7F50967C49
+      8E724B977C50997E4A92784993754C9776489174448D71478E7646896F4D9377
+      509A7F438F75448B74488B7542826A4788724B907E4889764B8B774483714682
+      714F927C51937D508573497D6C4578684276653F766245816D3A5C542C40391F
+      2F251A403187B8A8E5ECE9DADED8E9EAE4B0BBB7375550325448305143426F61
+      4073633C6A5A3F62563D5D523C5A4E354C413B53483B61514278604891764698
+      7A3971624C6E6649635B12291E3A795751A5834A9F7A52A27F498E6D40795E3C
+      76583F7F5F4288664A9573468E6C42816242775B2B644C739F7EEFEDE0CFD1C4
+      C5CBB9DDDFD0E1E0D4F9F2E9A0A29B22453230593E30593F325C413360423261
+      453160462F593E2E513A2E4F38294C342E553A2E573E2A543A2950362E4F362C
+      50382E553D2E553D2B4E3A2D4C3530593E315E41305F41306041325F43356046
+      345C47305A48385E4E385D4F395C503957503C60594264593C57493B55473755
+      4935564F33514C35534A385A5138575437545039534E385450355349546E625C
+      605A5E5B565050384B4A344043244143254441243D40293F4334525F505A623D
+      35371930342331321D35351F34321F2E321E3135192E341A2F32162F311F2E2C
+      1D2B2C18282817313828424939494F2E41482E4C4B364B4E3B4A51364B4E3339
+      32162A291C3D3E334D4834474E3048502C505032515132535032504E32504E35
+      524C344C4F324A51354F4F34575038464A31575958B7BEB39AA58CA2A595A6AA
+      95A4AB96ABB3A0B0B7A6B3B8ACB2BAAFBCBDB0C1C2B7C3C6BCC9CCC1D9DCCCB4
+      BD9B5E64455E634C45503C909FB9FAFFFFE9F7F2A2B9A6ABB8AABDC5BAC8CCC2
+      D3D7CDE2E4DAE3E7D9EDF7E47D906A768274404F3A1F20171C211E31372E3943
+      303F4C484452454A5B4C5560555B6A535F6B596A715D5E61515E614B5A5F4756
+      5A425A5B3F565A4051533B39412C3D422F57573F5E5C4B5C604763624863664B
+      5A62475B61475F634C4F543C4C4D34504D3740412D3A3E254B503E5054393137
+      1725302C455452696E5D3C47292E351E3537243B3A25413D263F3B2725291525
+      2616110E0C110E0F15140E14151111160D11140A15170F14140D17181215190F
+      17190D1E1E121B211423291C302C1D342D2133321D3334232D2F1B2F321A322F
+      1D292D1725261A25201A1C2115191D16273028555B5147504C3F514B4456542D
+      3A333B514449595155605F5F6D6456695B485E5B51635E5F6E603B4F434F685F
+      57685A636E5F5562565A6A5E404D3E616A66576958495F54525C55586356636D
+      5D47544850635858684F1D33261B312B172C25172D2620322C1E332B1A302D17
+      2B271E2923203124202B261C2A241828241B2C261C2D291B2C281A3124192721
+      1D302A1F302620302A1E2C24172F281D2C24172C1F1E2B26192A27202D2A2029
+      241D2C231F3128182F251B2A261A2D291929251D2F291D2B23192C241E31231A
+      29211A3129182C261729251E33312038331C35301A322B1226221B312C1A2F23
+      1E3329182B2816231C1A302A1729241A2D281A31271B2A271D2F2B1C2C272031
+      2D20352E97696580E1647FE3657EE26680E26580E36A82E76E88EA6F88EC788F
+      EE7890F0758EF16D86EC768DF2748DF56F87F6788FF57992F17289EF758BF17C
+      92F1778EF57489F6798EF37C8FF3768AF07387F47B91F9788DF4758BF2778DF4
+      5571E43A59C94862C64562C44362C43A57BD2E49AC263F91324F9738539D3655
+      A03A5CB33855B42C4898314D973A59AE3D5FAF4262AF486BB23D5CA033549242
+      6CA84C73B44A6FB3496CB03A5DA52949911F3A811F3C872747902E4C882B467E
+      3350884F66984C62976A85B56F88B6738BB5697EAC4F6BA85877B36282B64D6F
+      B05273B55C7ABC5C7DC0597EC16082C4678BCA6487C96181C8819ED786A6D973
+      93D0809BD88AA4E486A1EA809FEB85A3ED8CA6EE88A4EF85A0EB86A2EC7D9EED
+      809FED7D9DEB7E9DED819DEB7E99E88EA6F590ABFB7D9AF17E9AF18AA4F8849D
+      F67D9AF57696F27493EF88A3F47697EF6E93EC7798EC7696EB7695EC6E8FEB60
+      87EB5B7FE96D8AEA728FEB6E8DEC7593EE7391EE758FEF7E97F1819CF184A2F4
+      86A2F486A2F18AA6F588A4F4809FF287A3F28CABF482A1F388A3F38DA9F389A3
+      F389A4F488A5F487A0F187A3F387A5F48AA9F58AA8F886A5F587A6F386A6F585
+      A5F587A5F57DA0F286A3F480A1F17E9EEF86A4F285A4F387A3F289A8F18CADF1
+      87A8F07C9EED7E9EF085A4F182A2EF809FEF819EEE7C9BED7E9DEE819DED7999
+      EB7292E77496E77493E47090E37395E46C91E2648BE1628ADE658ADD6489DD61
+      8ADB628DD8618AD5547ECC4671C23361B3355EAC3C65AE3E63A53B59933C5F83
+      3F6E7A3B716D3C7968407F653E80633D7F66387962377F633E8A6A418F714883
+      733B5C6149626E525B723C4860364559304054363F5533415436515B3B595A30
+      4245233043374C583D535A3E4B5850606D495D68384859354156304149304048
+      3C4C573648512A43443141463941513B485635404A2C38411A272D182628212F
+      31223134374D4B3753483662554574684B706640655E3C6A6651898C4D7C7F47
+      717A73909A849899A7BEC66E81743D5963CCE0EAEBF6F4CDDAD8C0D3D3DAE9EA
+      DEEDE9E5F1EFF1FAFCFCFCFB636F552D49414D6F6639564E608793D0DBD54250
+      36324C4646635B3955508DABB7CCD3C73242324162604F69653C5A5896B6BDDC
+      EBEAE1E7E8FDFDFEF3FDFBD1E5E189A29A6F8A848DA3A0B1C4C1D6E4DDD1DAD6
+      A3B7AF819A915C75726F8A897792928AA6ABA2BABF7E908E57625D4D59514A50
+      4841483F3D463E3C423A303931272D24475459D9E6EFE6EFF1E2E9F0E1E8F1D9
+      E6EEDAE8EEA7BEBFB6CACBAFC7C5739B9A668F8D4B6B62405540313C3C2B3852
+      293C373C4F413B4A3E2C4034657A6D6671684B5B4E2631282E342A858A7A4C68
+      5736645140795A659C89AACCCA9CBBBC97BAB99BC1C198BDBDA6C9C9A5C8C654
+      987E3D92724A9B7F49967A4B927652977C4B8E754C8B7149916E528064626F60
+      6474655F70626274646A75656C7165728D7861AD8F56AB8E4D997C478D6F4B92
+      734991724A91774A93774A8F71478D714A9B7C4FA4843E997578B49BF2F7F2F1
+      ECE4D7CCBAC2C3B26BA28C51A4874DA18651A08150A08351A288428F74488E72
+      509074468B6D4B957647927642896E4F95784F987C4B9B7C4C9175427E694D8B
+      7553937E4B917A4F917C4D8F7A4A8A7653978053907C4F8173508274568B7C4B
+      85734B8E784A8D7746826E497F6C4B82714C826F4479684B826F447766426458
+      425B4F3C6A593F7A654F7C68A0AFA3C5CDC3DDDED9889187374D423C5A4F2F4E
+      413A6C59417C664C826E456D61375247364F45324A423C625643776644796843
+      79663C6557273C342C423637483B2F593F59A589529C814C997C4C99764A9271
+      4C9878509E7D4D9876478F74438B7242896A3F82633E7F6328624C608F6EF1F0
+      E2E2DED5D4D4C4F0EDE1F1EDE3EDEAE47EA0933471583E775F3D735A3C775D38
+      7557386F54396A5237684B36684B386C503A6E4F39664E345E463666483A7152
+      3B73563B6A50385D45385D453A694E3B71534078573F74553F73553D77583A73
+      543B71553D6F5A3A6B573B66523864523B6056435E5B42615B44645D415D523E
+      5D513C5D533B565236514B3A5C513C61583859523956523C55543C575636544C
+      53706459625457564C53593D565336514E33514D2D514F324B4E37424A394C55
+      475E6344283619333825343A1D3F3B2A3F3F26453E29413D26413D243539253F
+      3B2539381A2F321D2F322139352840473546513D48473151543A51533A495039
+      474C332D3215282C1D3A38294746293C44243D432C3D432841452A38411E3B3F
+      223C412B3E41273D3F233C3F263A3F2B373D1D3840214F564B9BA3925A664F59
+      625361695F6C716572806C8188778992838F97869AA393A8AEA7B8BEB3C1C9BE
+      D8DCD2E5E6CA787E616C715B525B47879BB7F3FFFFEBF7F6E8EFE4E3EAE1D6DA
+      D2CAD1C6BFC6BAB1BCAAAAB7A4B5C0AA8793727785744A593D161A13151A172C
+      35262E3429323D323C443E3C473E41514146513E46513F424F3D3E4B3A434C3A
+      44483542462F41462E3B432B3A41283E3D283E3D273C3C243C41263D41293C3D
+      28374128353D27403D283B3D2A373D273C412D4A46324A4933484A3353503D5B
+      543C252B16161E17364339424E3E424A2F3C41273A402937381D3433192C2C18
+      292B192222160E0E090F0E0C11130E12120D0B0F080B0C0B0909060B0E03090C
+      060E0D090F0E0A0C100811150C151B11212718262A1624251333331F282A1622
+      2311201F0E2021141E1D11171D0D171B111518161C28244D63512E4036384B41
+      45554E4559503A4D403A54473D574A466056354B403850433E52454D5C4E384C
+      3F4D645F495A57576857445B4C536A5E3D4B3E606F6B596D5E465A4E596A5B59
+      655D5B695B4A6050566A5A4C5E4424332619332D152B241B2F281D322D203129
+      182F2A1C2D261E292420312421312A1A2A251527241A2B261B2A27202A262132
+      291F2D2321312C203330202F29202A221A2A262233241F2F241B2F24172B2A20
+      2F2B1E2B271D2B24172D261C302D1727221B28241A28291C2B26182B261D2D27
+      1C2D221B292216332D172929172A261B322D1B332C20312F17312B11262B1D32
+      2D1A2D241E3127202A261A281D1C2D2A1529251827241C30281A2A2221302D1F
+      2D281F2C2420352E0000657EE4647FE26782E46781E1637ADF627DE26681E66F
+      87E8798BEB728AEC6F89ED6F89EC6F87EE738EF1728DF3738BF17790F06E87ED
+      6D86F0758EF3758DF07289F3738AF47489F07088ED6F87F0758BF5778FF2768A
+      F3778BF46D88F24665D8516AC75673C84B6BC54365C23C5CB82D4BA42F4A9938
+      56A336559D3656A93A5BB8314DA92B4697314FA5324FA33754A63C5CAE3857A5
+      304E973E60A24C71B3476CB24666AA38569D2E46902C448D152B660A193D1A2C
+      581C3065425B8C506490374D8348629C5F7AB05F79AC4C69A24A66A65C7EB454
+      73AE4A6CB05374B65877BA597CBF5E7CC16080C46486C66E8ECD7291D07696D4
+      82A1D97697D582A0DA8DA5E796AEEF8EA8F089A6F28CAAF187A5F086A1EC88A0
+      EB85A0EC86A2EE81A0EF7D9DEF819FF0708EE67D97EB92ADF687A6F5799AF181
+      9CF488A1F8849EF97C9AF87596F57E9CF585A3F67899F27693EC7897ED6C90EC
+      7292EC7795EC7D9FF17D9CF17E9BF1849FF287A0F3829DF17D99F1879FF3829D
+      F27C9AF384A4F584A2F388A6F688A5F5819FF28AA8F587A3F489A4F58CA8F48C
+      AAF585A2F388A8F487A6F486A3F389A9F48AA8F587A6F580A4F384A6F485A6F4
+      7BA0F57CA0F6789EF379A2F37CA1F1789CF088AAF28DABF488A2F38AA6F18EAE
+      F188A9EF81A0EF809EEF81A1EF85A5F084A4F181A1F1809FED779CED7398EB75
+      98EA799BEB7497E66F93E67293E26D8FE3698DE2668EE0678EE15F87DB5E86D8
+      5A83D7527ED3507DCF4975C83C65B8345DAC3C68B1446EB535569A334F7F4779
+      7D518F784D8E75529375529373498A6A488B6C478F6F4088693C80623A7E603E
+      85693E816A4687734D917E5B828761697C464E603E4B5F353F533045552C4553
+      3249532C3D462B3948273E47374D534856633C4B5528383E2332412534412D41
+      4F39515A3C5659273B3E1E323732444C3D475635404E404A57313C411B242A1C
+      1E291C272C213230283D3837564839614E37624E3C6453416D5E417166456F6B
+      4B777743747F88ABB9BED1D4ADC6CC5A746F25373CA5BFC9D7E7E6B2C5C0ADC3
+      C5D0E3E3D3E4DED1E3DEE1F0F0F6FAFA8C8D7851564F606D615B685A849699D9
+      E1DC6A705B545D57646F66566257A1B1B6D6DCD3525B495E6D626E796F50605B
+      7C9797E0EDEDF6FDFDDCE9E6A8C2BF94AFA888998D94A9A3BCD1CBAFC9CBE1EF
+      F3F1F9F5CFDFDA91A49766807C7EA0A68DAFB58AAEB380A2A676989379988E7B
+      9589849A8F667D714C60556571665461573C483B4F5F63CADEE4DAEAEBD6E5EA
+      D5E5E9CEE1E2BFD4D4C0D5D4CDE1DEABBCB4848F847E8D7E85907E8F9881888F
+      7E84867A87907AA2ADA36E74644252437793846383734B624F2121155B5A47A5
+      A48F3E523E2E533B3252365B8A7FB4DEE2B3DDE0B7DDE0B7DDDEB8DEDFB9E0E3
+      ACD3D650897534765A3A7C604281694681684881664880683E775D438366A5BC
+      B1D6D2CECDCFC9CECFCAD0D3CDD2D5CFE2DEDBC8CEC55F9881498F72488E6F4B
+      91745197774D957549917345876A458A6A4C9F7A4FA280509F7F48997A48A280
+      4D9D7C9DAD96A0A08852957853AD8F56AD8B58A88758A88D4A9D7E51A3834B9A
+      7A478D6E4B8E6E50997C4D977A478D72468A6F4B8F7450987E559C854C8B764C
+      8F78549A834F927C5398845499854A917C58A189579F874B8676507D73507C6F
+      4F7A6C4C7F6E467C6B4170614170624477683D6F5D3964533D68573E6A5B456D
+      6050716830463F245C467DB7A0BBBCAFA7A696D2D2C4E0E2D7DEDDD5B5BAB340
+      554E3250423A6F5835604F345C4C34564A304B3E2B3E3425382F325344406E5D
+      3D69583D6252324D432F4A3F344A3E2436284787655AAB8E4F927746876E5290
+      7A4B8D744D967C4D9577498D6F4C90784C957A478A6F427D653D775F386D5557
+      866DD6DFD2E0E0D9CBCFC2C2CABF91AB9B64998443836A418165448068468369
+      3E81643D7A5E3F785E407C61448869408263427F60437E613F79614281644A8E
+      6F43816940775F447C63437D64498B6E5198774C95744D96784C8F7445836A47
+      8069437D66437E663F7E643E755F416C5E456562436061415F593F5D573D5A55
+      3B59523A574F3C5C513C5A5139554E3D5E553757523955513C5B543E5E584764
+      643C565749655D5960554A4D3E4347314145283A3A263B3C273B41273C3F2B3C
+      4933455140646A4A2530152C341E2E331E3236242D35252E331F2C2D1C2E2B1D
+      2F32242B2C162C32172329161F261A3230264549343D4A373D47363F4734434D
+      354F4B36484D31343715292C18423C2A47432B524E31564E385352315651334F
+      4D315051324C5034514E345151325552315152315550334B4A31595B53C0C3BA
+      9AA88FA3AA99ADADA2ADAFA3B4B7AABEBBAFC1C1B0BFC5B5C1C4B8C6C6BDC6CB
+      C4C9CFC2CED4C1B0B8985C6B495963544D534C7E98B4F2FFFFE5F7F0A5BCA9AB
+      B9A8BAC8B7C8D0C4CFD6C7E2E4DAE5E9DCF2F8E892977E6D7C6C3C4B3220241A
+      202621253026394339454F4044514244523E4550434B55494B544550574B4855
+      4545523E46513B5654404B53375050384C502E3C41293A3C264F543D4D523E54
+      5644575C44555A3F5256375E5E3F595C3D57523F50513747442C3F3F273D3E24
+      35341F3234212A2B161F22162E2D1A323928383D2E4042273D3F2A484D344A4D
+      393D422B2024142A2A1A0D0F0B0D12120E120D0E120A101309151A12151A0F17
+      1E111A1E0D171E0F1C1F141F200F121A0611150D1820171A21152D2919333721
+      2E30192B2B17292B162524152025151F1F16191E16171A14242824586456494F
+      3F47564B556461465C50495C554A5C4F4D60585A6B5F4C63554B5E554A5D4F54
+      665736473941574A485C52526156495B504D5D523A48404B5E5A4D5F50354C3E
+      41564B3C50425163543A4C3F4056453E4F3E2B3B35283A2C2234261B2C272035
+      2E1E342E20332F1A2B281C27231F2F261C2B281A2A281B28261C2C2A162B2A19
+      2F271D2D281F2F221C302A1E312A1F332D1E2F241E2825213226182B27202D25
+      182C22202C2B202B261D30241C2F2C1D302B18242319291F172A231B30291C30
+      24202B24222F211A282419322E112A281329231C332D1B2F2E1F322D1C332E12
+      282118302C1C2A2923302B1E262416261F1F2D291E2B251D292723302C1A2626
+      1D322A202D25202F2C1C35339769627DE6667DE3637DE3637DE4637CDE617DDE
+      607AE26A81E6758BEB6E88EA6F88EA728AEB6C83EA7088EE708BF16E87F1768D
+      F07289ED6C87EF6F87EE778FF2738AF37389F4758BF5778DF07B8FF16F87F070
+      87F1768AF2778EF3748AF45975E64D6CC75875C35371C4476AC14264BE3B5CB9
+      3151AA3555AA3956AC3452A43F60B14160BA3652AA3350A42A45982A4290324E
+      A52F4DA2314D9B3F5CA7476BB03C60AA32509D324A923C52982F48951D347117
+      264A20325E465E912D3C5F132043253C76324B8E3C599F4060A53A579C4562A6
+      516FAC5571AE5B77B34C6CB05475B95E7AC06582C35F81C26182C66E8BCC7491
+      D06D8DCE7D9ED8819FD9819EDA84A1E482A0E98CA4EB87A3EC85A3EF89A6F28C
+      A8F38CA6F1809FF07B9AED81A0F18FABF48EA8F286A3F37898EC819BEC8CA5F4
+      85A3F57D9CF57D9BF5819FF886A3FB85A2FA7999F67D9EF582A2F47B9AF17592
+      EE7293EE779AF17393ED728FEB7E9AF0819EF57690F07C93EE7C98F07795F179
+      97F184A3F585A3F582A3F587A5F586A3F585A0F58AA6F582A0F47E9DF38DACF5
+      8CA9F685A3F58CA9F48CAAF585A4F38AAAF588A8F389A9F58DACF886A9F586A8
+      F586A4F585A2F584A2F47BA1F37CA5F384A5F289A6F587A6F285A3F289A6F28C
+      AAF185A5F081A1EE81A0EE87A5F185A5EF81A3EC86A5EF85A5EF7EA1ED7C9FEF
+      6E98E96F99E9799DEB739AE9749AE9749AE76B93E46992E46790E4658DE1638B
+      DE5F89DA5179CF456EC6416BC23D65B93C64B23C66AF406BB1395B98375B7845
+      8174488B6E478F724F93774F927750957851977C559B7E5292764C8E734C8E73
+      478969428562418669428A6A408F6C44756E617883647A8451616D334252233D
+      4E3242553B4F6033444F35424E32434A374C5336454F2937402F3A421A253126
+      363C2F414F2B43572B494E2A3E3E28393F303E4A303E452E3E414049512D363C
+      202930262B342A343936454030493E345D503C6651305B423765523C6A58426F
+      60456C63476C6D48747C84A5B2B4C8CEA8C1C5445E5A596F75B6CAC8BCD1CFCC
+      DCDBBCCBC8D8E5E4E5EDECE2EBE9E9F0EEEFF6F6EEF1F1EBEAE9E6EAE8E7E9E8
+      ECEDEEEDF5F2EBEDECEAE8E7EAEBE7E5E8E7EBF0EFEFF5F1E6E7E7E4E4DFD5DD
+      D6C4CDC4CAD4D0EAF3F0CBDEDAA1BBB693AEAAD0DFDEBECCC6ADC4C0C4D7D39E
+      B8B5B6CFCDD5E6E1D8E7E4C8D1C891A39D89ADB285A5AA6A867F58706C607A77
+      6985806D86806D8880637A7145544948564B53645A3F483C536468CCE1E8D7E7
+      EBD4E4E7D3E4E4D2E5E4CFE2E1D1E4E7C5DBDAC6D1CADAE0DADAE3DADAE4DDD9
+      E4E1DAE5DFDEE7DFDDE5E1E9F3EEA0AB9B4F655470927D4D6C5A526C5B8A9381
+      BEC8B7C3CBB93D543C284D3231513758837ABEE3EAC2E6EBC0E4EAC1E6EAC3E8
+      EBCAECEFBDDEE1467058274D32294F3530563E35553E354F393B5E45386E5236
+      80628FBAAEBACDC8AAC4BEA6C1B9A1BEB59DBBB5A3C2BA79AB973D8969459073
+      449375499B7C529F834F9C8148997C4C967846997A4BA48654A68B459B7D4FA9
+      8852AC8E328E6CAAC0A993B39A3AA18053AE9354AA8B53A4884D9F8651A2884F
+      9D834C96774F957750987F509C815098805598835598814D988057A38D4D9781
+      4B967E59A68D4F9D834F9A80539C864591764B9B8052978147826D457C6B4674
+      6A4B7C6D497D6C4A7D714C766A4F776949796B416F603A65533B69564375633E
+      6A5F3251482B45401E342B255A4174AF9BA3BEB2A8C6B8B4CBBEA3BBAF9BBAB0
+      73968D354F4733544743715F4770603D615433504135514633463D2F4A3E365A
+      473D6B5744806A4A7D684162553650492F4A3F192F243C735B519A804377613A
+      6B584275623C6B5736654E3B6E5739735B3F7D6340765F3664533B6C5A416F59
+      41765E437D64588A767799916477732E453A2C634A3675563E75594282644082
+      644182633C795A407D604182663F8364428265437D6042816548897146886E45
+      8169437D64407560447C6345866A40886B4491764A967D4B987C45957A3D886E
+      3E866B40826C3A76633169573D6F61547C745374734766693F5D5F3C5D553A55
+      523852513B54503C59543C5B553A5A543C5E563B5A513C5A533E5D583C5B553A
+      5D533C5C5535504E45635D58615750503B4A523A4D4F3446492C44442946492B
+      4345303F432F2D382A3C4732151D0E1F23173133253A37253635233A381F3336
+      2235362431301D2F341E30371E2E3316282C1C2F342E384334404B3245483646
+      4D364C4F36474B3442472B2F2D1624271831331F393B263F3F2840432A3F4328
+      4344263F41223A40253C432A3C4424404124413F233F40233D40263B3C275155
+      4F979D8D5666475A64515762565C6B5F646F636D796270796876806D77827588
+      91879BA096A2AAA3ABB7A6BEC8AC74815D676F5D4F5C4F7891B1F1FFFFEAF7FA
+      F6FDF5F8FAF1F1F5ECECEEE2E9ECDDD0DAC5BDC5B5ACBAA779876C707E71525A
+      40121A0F161E162831272C39283647333A46353D4B3A3E4942424E4548504244
+      50413D4B3D39493337482F3A45303C422541442E3A4024343F243A3D2730351D
+      2F3A272D3826353B26374024373C213237222D311C383B243B3D2A3B3D2C3F45
+      304147344B4D3A46493136381B2027164C4B374A4D394C513D4F4B3444452929
+      2D1B1F261620231423261227291610100610100B0C140B15140F28231925291E
+      202A1E2A2B1B2C2D182D2D193030192B3119242B161B20160B0F04151A0D1D1D
+      0E323223292A1A1A21121A22131923121C2114191D14191B131B1B1326292357
+      5E5443513E3D4B3E5A6F654D60564962573D5744495F565C6E614D6154465C4E
+      4F6055556958485B504D615250625955616254645957696032423F5864605666
+      563E51434C62533C4D3F4F634E43514044544A465E4F62746962735F465B4A38
+      4B3D4B6555566E594C60563E514B2D403136483E3041371D27241D272320302B
+      203533162C29183128152C1E17281D1E30281A33241D2D28192A251C30281B2D
+      1B1D2F2A1C29261C302B19302B1B2C241D2D2A1F2C2B15241E1827241C2B2918
+      302A1A2F29212B27192D1F1E27271C2B2E1527271B292B1B353018302C1E302C
+      1D2D281527271F342E192F241B302621322319221A1E312A192F231628241A2B
+      271C2F23212D252030241B2D2520352C00005E7DE46380E4657FE66780E66780
+      E3607ADC5C77DA5E78DF6A83E76F87E97489EA768EED6E83EA7086EA748BEF6E
+      87F0738DF0758FEE6A83ED6D87EE778DF16E86F0748AF1778EF4788FF48096F3
+      7489F2758BF27589F17B8DF4778EF4607AEA4062C7496BBD516CC1506FC2496E
+      C14569C13F64BC3B5FB63B5DB63654A937559D4669B33E5EB73D5DAF3550A220
+      39862742992945A32E479D3451A43756A8304DA2284191273D8D203785172D77
+      29428B354B921C2F661726590F184822366E2A428825408B3C5BA2526FB0526E
+      B14F6CAE4B66A85E7AB44664A64565AE4F71B95A78BF5C7AC05E7EC35C82C963
+      86CC6E8FD26B8BD07298D77D9DDA819EDA86A3E4809EEF819EED809DEA799AEB
+      82A0EF8CA9F388A5F17D9CEF7D9DF087A2F489A5F58CA8F590AEF988A6F6829F
+      F284A0F492ADFA91AEFA85A3F885A2F689A4F984A1F67E9DF57E9EF882A4F680
+      A1F4809EF47C9AF3779AF27B9EF37E9DF57896F1819EF385A1F5809EF586A2F5
+      8AA5F590ADF88AAAF984A0F5819EF487A2F682A0F585A3F4799BF27B9EF28AAB
+      F587A6F485A4F587A5F588A5F585A2F487A6F486A6F486A3F58FAFF989ACF58D
+      A8F68CA8F689A6F58EAAF484A3F288AAF881A6F385A4F288A6F385A4F085A4F1
+      88A8F1809EEF85A3F188A8EF7DA0ED80A0EE84A3EF84A3F082A3EE80A0EB7EA1
+      ED7B9FEB7B9FEB739BEB749AEA779DEB799EEB729AE86E99E76B96E66790E36F
+      92E37399E46D95E4678FE15980D4436DC13C65B44470B5456FB43C60953C6972
+      3E7F65418566448A66408968488F724C91784B8F754A8A734C8D744F8A72538F
+      7656987E599C7D5496745192754C9074488E73457E6D49806E4A786F6179804A
+      5A632C3F4E2D385136475E3C4B5A333C4C394E59394E5A364554363D50333D47
+      20313424363C2F404E303C5228364A2F434B33474F313F492E3F4326383B2230
+      372F3A453A4248333D3F262F3C3E484A3E5A503F6A583D695430554332634830
+      654F36625036665738696139646C8FAFBFC3D5DD96AEB03146436A838DCCDEDA
+      B7CCCACEDDE1EAF3F1F0F6F4F4F9FAFAFBFCFAFCFDF6FBFDFCFDFDFDFDFDFDFD
+      FDFDFDFDFDFDFDF6FDFDFCFDFDFDFDFDFDFDFDFDFDFDFAFDFDF9FDFDFDFDFDF1
+      F9F5E5EDEAF6FCFAF3FDFCCADAD5C1D1CDCEDAD6D1DED8D6E6E2AFC5BEA8C2BC
+      B9D0C9ABC1B9B0C5BEC2D3D0CADEDAD1DCD7A1B8B580A4A35E7D78657F7A5F7C
+      775A7775617C78647F785F7A73647F766178714F645A5066593D4F43577172C9
+      E2E6D5E5E8D0E2E4D2E6E8D4E8EBD3E7E8D6E9EBD4E4E3C5D3CFC8DAD5CBDCD8
+      CCDAD7C8D8D6C6D7D5C3D5D5C8D8D5D5E4E3A1ACA2606F5F96A9988D978B747F
+      716A756566746252645132483127462D20402948746BBBE4E9C1E5E8C4E4E8C2
+      E3E7C1E3E6C9E8EDC0E1E2456C55254C2F2E54392A4F352D563C3770533D8569
+      418E713A886A317E62368164347E5F32785A3276572E7353246C4A2C7A583B8F
+      6D3C876B39866A3D906E408E6F428E743C866A418B6E4DA1864CA38851A2874B
+      A1854BA58848A287449B80BCCDB787B79D349171429074479677499878489878
+      4B987D4B957E4A987D52A08753A28F4A97804A957E58A69157A8914DA289489B
+      8146957556A88952A38548977E449075448F744F9C80509F805098834F927D44
+      806B497D6E4A7D6F447A694374654A77684B816D477F6D406C5F3D6857406F61
+      3E6F6232564B2539321F312B24413537614F3B6B5A3A6F5D46887442826E2D5E
+      4C16382D24463C3454493250453454483B615241685A3F61553B594F3C574E39
+      5A4E3C6558385F50325F4C366553395F52324F462C4B3E233F34244238315347
+      2A4D3E325C4930635039745D417E623A6D573664513A66523C66513655462C48
+      3A365945375F4F3265503F7760587F744556532D503C4BA27F4FA0804996744D
+      997A4A97764792714991734391723E89693A80603C8A693C8A663B88693C8165
+      32715632765B377C613B7A6239775D32735931755A32775A377D61377F613477
+      5D3273583B795F3C745F3468553569543C665F466B68517773476D723B5B5D37
+      534F38524E3B55543A57513A56533B555637525137574B3A594F3B5D583C5D58
+      395750304F443152453B5D534769645B665F5253424A503C4A4F353F432B3B43
+      2F3C44293A3C24373A283034241E220D1720112024162C2C2132381E383B1832
+      341D30321B30331D2D342126322127311C27331623341C202C1A272F21272D16
+      353A25474F32464E36514F3C54523B3C381B2C27183E3B2E4A4733514B314C4D
+      2D5050314D50335051334949344D4E30514F2D4D4B2D544F305251344D4D3348
+      4B3352524CB5B6B19EA089ABAA96B0B19DB1B29FB7BCB2B7BDA8C1C6B1C2C5B4
+      C8C8BFCCD1C5D1D4CADADED4E0E3D8E5E7D69EA8835A683E5A64496B88A9E7FE
+      FFDAF2F6C4D4CBC4D0C3C6CFC1C5CBBFBEC8B9BFC7B9CCD2C0DCE3D2919F8069
+      745E3F482E181F161D241F263029313932404B3E374735374436303E31303C32
+      3843393544363A46373641313C42323B43314749344A4B394547353E40253C41
+      27515039575B3F58573C59573E5B5C405A5D41585D415B5B3C54533E54533953
+      513A4A4C3843452F3C402D373E27313218292F1A363827363625333A273C3D29
+      393D293D432F3D43323C3E2C272B1728281711160B11140E1015121D211A2428
+      1929291C222B1C292B1D2D2D1F282F1C2C311B313224272A1E252F1F15190B16
+      150D2325162F2D212F2D23242D1A292D19282C16262A1B23271D2424161D2015
+      2228225A645F424E405260525C6D694F65594F6455495F584B5D545F70635062
+      57455A49465C4F5A6F5B4D634E50664F465B52576C6356695A58695A3E51485A
+      6B625B645A4A544A505E524152504D625242564355635343564A596C5F566853
+      485B4C334B40465E515A6C584C5B48596658445A4A596C5F4D624F3A43383F52
+      49425D545C6E6454695B466153505E52384A39415547334E3E31453C1D302927
+      3A332036261C2A281526230B1E1912282611201F182A2916282414221E13211D
+      11231E1B2C2C1E2B24192C1C182A221C251F1A312B15272418282718322C172F
+      281D302B18312D1526221C322B162C24172F2D172B2416251F183026182F2717
+      2D251A2D2A1A302B1B34281A302317311F20392F97695F7CE45F7EE46480E466
+      80E4627DE3617AE05B76DA5E78DC647FE26E86E96E87EA6D87EA7288EB748AEB
+      768EEC6F87EB6D85EE7691EF6C86EC6982ED7288EE6B83EF6F87F16F86EF7088
+      F07991F1798FF57D91F57489F1758AF5798FF65C77E7405EC5516FBE5574C153
+      73C25173C1506FC0496ABF4469BE4165BC3E5FB73655A2405FA53E5EB33859B3
+      3F60B13454A22B469F2740A3223D9C26429B223B99182D8D1324781D31831329
+      7F0818611021612035721A2B69112263324990435C9F294089334C995976B464
+      7FB65E7CB34F6CAC546EAF4C6AA93854A04462B15171BC5675BF5774BE5B7EC6
+      6387CA6989CF6A8AD07393D57597D87093D57999DA8AA3E28FA8F089A6F57B9D
+      F07E9EEE87A4F088A4F188A4F18CA9F185A1F189A4F48DA9F58AA9F58CABF68E
+      ABFA8EABFB88A6F98DABF896B0FA8FAAFB82A0F984A3F582A1F9809CFA84A0F9
+      88A6FA81A2F687A4F687A4F886A3F888A3F58CAAFA8FACFD8CA9FA8CAAFA89AA
+      F88EADF885A4F5819FF27C97F17D9DF4819FF4819FF586A3F58DABF87B9EF48A
+      ABF88CABF67C9CF386A2F58CACF684A5F586A4F487A6F485A3F48AA9F98EACF6
+      87A8F48EACF68AA9F589A9F586A5F486A8F48AAFF587A8F288A6F386A4F27D9F
+      F082A5F182A1EF80A1F086A8F184A4EE7BA0EC7CA0ED80A0F07EA0F07DA0ED7B
+      9DE97C9FEB7DA0EA779BE86592E4729AE87DA0EB779DEA6F97E6789DE8759AE7
+      7298E47499E4759CE6799EE87DA1EB6D95E1527CCB4370B84471B135568B3764
+      6D408066408163418263427F623D7A613C7A62427F6543816643836944856946
+      896C488B6E498A6D4D8E7148896B42826546866C43856B408868407F62406662
+      536A7D6B78895965733C455938485E3948582E3B513C52613C4C5B3E4961525C
+      6D3B485122313A2937443142553F4E653C4A5E2E4150394D5934444929354626
+      31411824302A3741545C622E373C2C39445460684F60634066573650446F897F
+      6B8B7534544353716657706C52706C4663668EA9B7B6CCD27D97903A52538EAB
+      B3BCD7D8AAC7C5BED8DAD4EAEBD9EBEBDAEBEBDDF0F0DCEEEEDCEEEEDCEDEEDB
+      EDEEDDEEEEE1F0F1E1F0F1E2F0F1E2F1F1E3F3F4E4F3F5E4F3F4E4F3F4E4F4F5
+      DAECEBD6E8E9E3F1F3E0F1F0C0DCD8BCD4D3D1E4E3E1F0F1CDE0DE9BB9B5A3C1
+      BDA3C0BFA7C6C199B8B797B6B8C5DCDFCEE5E4C1D1C7788B815A7874607E7762
+      7F7A5E7A7457766E5C77715C78715A746C57706959756E58746B536D6042574C
+      637D7DCDE4E6D5E5E8D1E4E6C8DCDBCADEDCD6E8E8D5E8E8D4E9EBDAEDEFD7EB
+      EBD9ECECD7EBEBDCEFF1E2F1F2D4E5E4D3E6E6E3F6F9ADBAB16F7C6DBCCDC5B8
+      CAC399AA9B666D575453414B54444955464754453D44375F7A76BAE3E7C1E5E8
+      C4E6E9C3E4E7C5E4E8C5E7EBBFDEDE6D80725B7059697E696479656E8D7677A0
+      8C789E8D7B9A8C7C9A8B759C8778A38F99BCB0A6C6BAA5C4B7A4C2B5A2C2B4AA
+      C5BAAAC2BA9DBAB1A1BDB199BAAA9CBEB2A0BDB3A8C2B89BB7AA4D705F3C6854
+      436E5B4A7A66497966457361547D69B9C2B0728B7C4489774F9A8355A0895CAC
+      925FB09557A58D509D874A99814D9B814A967D4B9A7F4F9B8049987D45927640
+      8E724492774F9D8351A086449077428E744696774C9D7F549F854D957C4A927C
+      509A834D90784C8372456F64406960446F633F71643F7062416B5A4577684176
+      66396155375B503A5F5436564B2C493F2240353B65564274643C6858335F5237
+      6255395E4F3852453853473E5E543C5E54385E543B6354385A4C3D5B503E5A4F
+      3752483C59503A534B2D423A2D443B304F44324F432F453B253F332E4E402B4A
+      3E243F332342342A4D3C2C4C3C234739406C5E54837C63918B678A85678E8473
+      9C957797926D8E8584A6A285A2A3587671466C64304844365541529A7A478873
+      478D754C8F764B8B7454907D528A754C836B50886F56957D548F785388744B78
+      644A74606A967F72A4916AA29088B8A8A6C6BAABCAC0AFCAC0B9D1C5C0D5CAC3
+      D6CCC4D8CFC2D3CBC8D6CECAD7D3C8D5D3CBDAD6A0B8B95A787E4D716F46666A
+      3F5A5E3B52523E57543F5A563B56523F5E58425F5D3C57533C5B4E3C5D54375A
+      543B5F572E5046334F4642605A46696244665D4A5445524B3B4D513E4F52394A
+      4E304C4F34595938534E3146473240432626321822210E2C2B21333A293D3B25
+      404122493F244640294A452A403E253D3D233F3C213D3B1D3B39242B321D1D27
+      171E1F1639392A3B3F2D3D422C3E45303F44263631112023162D2B23363A293C
+      43283C45273D432B4047313F43283C3F273942283C44254244263B46243F4428
+      3D42233A412854544B91918B525E41545A48515D49535E4B4D5F525C66515969
+      545A6B5E6573647481728190899EA49CCACFC4E0DFD7F7F7E6B6C5A05360404B
+      738FD5F7FFC0E1ECEBF3EEEBEFE6E9EEE4E9EBE1E5E7D9DBE2CFC2C9B5B1B8A3
+      798964647E6547563D1119121B211B242A2727302D34403832443129392A262F
+      21262C24212B282E3A3025362B1D2B1B2833272A351D33382431342332382134
+      391C3E3E2E31351C303A1E343A1A363A233A4025373D21373923383B25393824
+      3C3F2F3F4533504D3954533F595B406A6B4C4448252C2D164C4F3A54553A4F51
+      3448492F3C3B25272A182425162B281732301D26291712170B13140F1618111D
+      23162C281D2B291A292D1D262D1E2C311F292F2131351F363A232B2C1C292B1D
+      2D2D1A181B0E1E1E142D2D1F2D2F1C2327172023162529162124162325162427
+      171B1E0F202A215C6A5E46534A4B5F555E6D6857686053635751615852605A5C
+      6F604C63574B5E564861585A6D5A536554566A584D64545A6D615A6C5E566D60
+      364D4054665B576857435B495A6E5A4A574F606D5F445A4A5264593E4C3E596E
+      5E5468574A5F4C37473B4155525F6E644F5F5852625D48594A5A6D5B5469563E
+      5547485C4A546257606E5F5E695F5A6B5B506052566958616E5F506456566655
+      3C4B3A63706651665449564B4653483C50415162574F6254394E43435A513145
+      3E3A48433A4A412E41352B413521342B25342B1E2B251B2D2A14262312252115
+      28241529241928251527241623221A2F28172C291A2C2C182B2817211F1E322A
+      1529251B2C281B3128192F281D302E1D312A1E322620352F97695775DE5A76E1
+      5F78E25F7DE26480E46780E46178E05E77DB5F79DD657EE26F87EB6D87EA6680
+      E76782E86D87E9768EEF6C85ED6D87ED748EEE657FEA6B85ED7289EE6E86EF6E
+      86EF6A81EE768DF5788EF5778BF3748BF17890F5778EF55A76E73B59C04262B6
+      4A6CBC5374C05476BF4F6EBE4768BE4165BD3D62BE3E63BE3C5FB4395AA54163
+      AE3B5DB73353B23652AA3552A32D47A420399B1C33981A3095172B8D14278312
+      237715257C0C1E6F07145112215831488C516EAE4B68A63149923D56A3607AB6
+      657FB6667EB65C77B2526DB0506AAF3F5BA63C59A64764B34C6BB94969BC5173
+      C15E80C66483CA6383CD6B8DD47695D76F91D67699DA82A1DE7B9CE188A1E98F
+      A6EE8CA9F58FABF38FACF492ADF691ABF58AAAF48DABF685A3F37C9DF07E9DEF
+      88A4F18EAAF892AEFA93AFFB86A4F684A2F58CA6FB89A5FA8CADFA8DAAFB87A3
+      FB789AF57C9AF68DABFB8AABFA87A5F691AEFC90ADFB84A3F685A5F88EA9F987
+      A4F682A1F6799BF37B9DF5809FF384A2F584A3F586A6F68DACF68CAAF888A5F8
+      8DAEF88AA9F9819EF681A1F58AA8F687A8F480A4F286A9F587AAF586A5F584A4
+      F489A9F58EADF88CACF685A5F38CABF589ABF58AACF688A8F388A5F28CA8F57E
+      9EF17D9EF07BA0EE769CEE749CEF82A5EF7C9EEC81A2F0789EED779EED7DA2ED
+      7CA0EB789CEA80A2EB7C9DE47699E4739BE46D97E47498E67298E46E96E4769B
+      E8779BE7759BE7739AE47099E47097E26B91DE5C86D24F7AC14978B2385D8738
+      646D3C78623C785F417E63428065407F64427F64427D634079603E7A61418064
+      3F80613E7F603F7F61427F603F7D5F3D7F633D7E643A795E3979593C795F577D
+      7D5A697C515A6D5864775563784B59633F505D2C3C4A3C4B683F4E603B465647
+      545E384752364A5B2C434F3342533C465B39485E3C4B623541543D485B3E4D5D
+      313E4F2930442B2D41434C533F4D513139403B474C5061655568652D534A8DAC
+      A6C3BEB0706F6AA3B0AFC8D7D0ACBAB7A7B6B6A2B3B8A4B8BEB1C5CB7C98953F
+      57585973746C837F697A736A7A7670837D73898372867E6E82776F877C768E81
+      788A8377878073837C768A8074887F72867D74887F768A81798E85798E87788D
+      867388816D837E738984778D8570867A647E746E89866A858164827A67837859
+      736B617E76648080607E7A69857E637E76617F7A6F918D7CA19A728A8158746C
+      56776F55736B587169537066526D64506E63506B624F69614C665F49655E4764
+      5B3C534B5E777ACEE4E6D1E4E6DBEFF1B3C3B6747D68A1ACA260736A48605680
+      988E798F854D645E7D99908D9E958FA4A0E0EEF0D2E4E4E0F3F5BAC5BD535E51
+      708678657C726575667C836C474E3F657063697065646E63696C60829590BFE4
+      E6C2E5E7C0E3E6BEE2E3C4E4E4C6E7E9B9D9DA969E95999C8D9AA298A0A89D9E
+      A89DA1A69DA7A8A0A7AEA5ABB3ABABB1A9B9C3BDE3EEEDEBF6F8E9F3F5E9F3F6
+      EBF5F8EDF3F8ECF4F8EBF5F5F8F7F6F0F1F2E9F3F5F0F7FAF7FFFFE7EBEE4949
+      3C2E2D203A3A2B393C2C3C3C303A3B31494E42B8B8A64D57462E513E38694F3D
+      6D543F70593F6D5539654E36644B36654B386549386547366144335D402D5D3F
+      386B4C4282634F997D49927A458B754D987F4B9C804A997F4C90774688714D95
+      804F8A764A7F6C487C6B43766445716349766A497C6C3F7063385F5341685939
+      6355325E4E395E51395B513F685D3C685B375A502A443A2747382E5B4A325C4C
+      40625639574C385A4E3D655B426A6146635A3D60553E695E3A5F533B5B4C314D
+      3E3C54473C574A3A574C3C59503B57504A6E693D5A51314A3E2C483A213D2E28
+      4235203A2D223B2D2B45373A57494660524C615638534937564F5B8885749EA6
+      6C93966990907CA5A59CC2C4A4CBCBC8E2EB6B858D2D4C422B483D34483B5766
+      5B5464586E81718297878DA196879E957C9381B6C5B8B9CED09ABABD80A4A293
+      AEB0889EA2A0B6AFE5EEECEFF6F8E3EAEDFCFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBED2DA6E8F98506C
+      734969654A666C3E595E3C5757435F5B45605D4F6B664866633E6055496B6047
+      64613A59503554482E4B4336514A3E5A564065603959503B3F33494B3A4C4D3C
+      484D3840492B4243334B4B34444B293D43253D42282D2D1426261427251C3534
+      24373924403A243A3A243B372139381B393B1C343A2231382135352133341C31
+      341C2A2A1728291A3A3A2F494A32514C39514C364D4A34363A1A25281531341F
+      3B3E293D3E243F3C2440422B3C42283B3F263C3F273C4228393F283F3E293F42
+      253E412A3C3C28373A25474F479297916E7963707766787F6D8D917F979B8596
+      9E8BA4AF9BA6B09BABAFA5C2C8BFD4D6CADBE0D6F8F9F3FBFBF5DDE3D6EEF2E7
+      808F6D506672869EC4C0D1D4D3DDDAD8E1D6C8D1C6C0C9B9ADB8A6B2BDA9B6C1
+      AFCCD3BFB0B3957077603B482D1B2517202B21242B242D372F35473B2E3B3128
+      37312A3A3325333121392C293C2C303A30343F371D251424281F323628434431
+      40442E3A3C2D403A2D50513D5F5F405C574162645060654B6363446B644C6563
+      4A635E486965515C604557573C5252364F513642493339331C2F2A1731342232
+      342131321637351A36341C3C422A4349314B472D31331921281A141911171812
+      12191220261C27261C2D2A1C242B1A202F1A29311F2C301C31341D30341F262B
+      1D2C2D1F2A2F181C2215201F152F301C32331D30301F2F3224292A1726291621
+      2516212114171F0D1F27225A686048594F516059536E5F53695750655B4F6457
+      52635A616E6455695A4A5E54465C5A60706356635556695B4D6958606C60556C
+      64546C5E3E554055685F5A6A594A5C4F5B6A5B505D51617160475A4E4A62574A
+      5E4F596C5E5365564A604C414E3F41574C636F6052625E57655E4051475C7365
+      526955445C47455E503E56456175615F6D5F586A574F6350516651636E605264
+      5754695537443966756C596552444F44545B564B5753616C63606D5D4D5E5158
+      6D5D4D5E4B657363616D5E51614E697665495753606F665668563F5243394B3D
+      2F403952635E4F5C532F43344357443145313A4C41404E482A3E341F32291722
+      1D1C302B172C27172F25132C23162B251C2D2C1C2C291B2726182B2897694D6D
+      DA536EDA5570DC5A77E0637EE4627EE1617CE16179E05E79DC647EE06781E467
+      81E7637CE45F78E26780E67088EC7089EF6B83EB6E87EC6A82EC6B82EB7089EC
+      6A82E96B82EB6E86F27388F4788DF47C91F6778EF3758BF27D93F5647FEC344F
+      C03C5BB13C5CB53C60B84B6EB84B6CB84565BA4164BE3C61BF3F64C04263BE36
+      55A93C5CA64769B53D60B53A59B13B59AC3757AB3550AB2B44A51D3598182C92
+      192C901528870C1B6D0B1A66071458112066334A9A5970AB4C639F39509C5B76
+      B56A82B86F86BA6980B65B76B34F6AAE415DA93E5CAA3B59AA405EAE496BBA4D
+      6DC05576C45679C55E7FCA6A8BD36E90D66C8FD77095DA6E92DA7B99D97D9BE1
+      7D9DEA87A2EF89A4F488A3F184A0F186A3F487A4F484A2F580A2F281A1F189A4
+      F27E9DEF799AEE7D9BEE86A3F194AEFA92AEFA8CA9FA8DA9FA8AA8FA89A9FA8C
+      A9FA8AAAFB85A5FA7B9AF5809EF885A3F680A0F684A1F887A4F884A3F986A5F9
+      89A5F985A3F685A2F980A0F681A3F884A4F884A3F588A9F38EAEF986A3F5799B
+      F482A1F68EADF881A0F47D9CF38CADF687A9F6759BF181A5F48AACF589AAF480
+      A1F17EA1F382A5F38CACF586A8F487A6F489ABF587A9F38EACF5819FF082A2EF
+      82A3F184A4F17DA0F0739CEE6D99EB7BA1F1749CEC7CA1EF82A2EF80A1ED7CA2
+      EE80A4ED799DEB7CA0EC7DA0E9789EE8759BE6769BE4779DE66E97E47299E478
+      9DE87399E67398E36D97E46D98E46F97E2678EDB547DC9507ABD426DA2385E7C
+      37655D3A70593B745A3F775E3E77613E795E3F7D5F3F7C60407C5D437E61437D
+      623F765D3C71573F785B407D5F3E775E3C775E3C78613C795E3B755638735238
+      7659497E735F7C857383965963754852685661693A4652283746363F56536074
+      3F4C5D3C4453313A4C3045522A414E2E3B513A47583B485F343E553F4C5B3943
+      573441582D39472D3647363F5238424B414D553D46523A48514C6164748B8557
+      776D9BBDCAFAF7FCF9F5F3FFFFFFFCFDFCE4ECEBCBDCE1C5D5DEBBCFD7B2CACF
+      778F8E374C4B728D90A8BEBFC0CFCCC1CCC5C0CAC4BECAC5C1CCC6C1CCC5C6CF
+      C7C6CFC7C2CEC6C4D0C8C1CDC5C0CCC3C1CCC4BFCAC2BEC9C1BEC9C1BECAC1BE
+      CAC2BEC9C2BBC6BEB7C2BCBBC6C0BEC9C1BFCAC2B6C1BCA4B7B1879A90879F92
+      8EA08579896C869787818F7E7589757D937A70825F4C5C403F564F5075775676
+      744B685F49665B49645D47655D4A645B4A6258476357455F56435D56415D5443
+      5B53425951334740567073D0E4E4D2E5E4E3F6F5A6B4A332331F5E6555212A1F
+      0C150D3D4E403942340B120B3D4F3F39432F384A41DDF0F4D5E7E8E5F7FAB5C0
+      B7262C203C473743493E5E68555057431E261E657366656E605E685A5F64557D
+      9188C8ECEFC8EAF1C0E7EBC4E9ECC8E9ECCBEDF1C6E7E993A1958D978897A097
+      98A1989AA49A9DA89D9EACA29CACA0A3B1A7BCCAC6DAE5E6DEECEBDCEBECDBEA
+      EBD9E9E9DAE9EADDEAEDDCEBEDE1EDEEEAF0F0E7F0EFDDEEEDE3EDEFE5F3F4DC
+      E7EA86968874877582938792A59D849C9544604F384E389BA68D466345244728
+      2B4A2A2B492A2846282242252A4D30325639305736325B383B6544426F503D75
+      56478866599F80539E80559C834D91784D957C5BAB8F55A48751997E58998454
+      907E528E7D528A7A4A78694F776A507E71547E73517D6F497F6B4A79684F8273
+      3E7061456E64558176507A6E3E685B416A5D40645939564C3C554C3A5549436C
+      5F3760533652454362563E5E5436564A34594B42655A406459395B4E3D5E544A
+      695F3D5C4F3C594F3C5A4F304D4348645D5E756F6986806F908D2B483E224133
+      39574665826B909D896F7F753E59502A423936564A8EB4AC8EACAA5169603E5A
+      4C3C5A53304B453550493A595344656148736B84ACB24D6B6E314A3E2F463933
+      4B3D6E857590A29699ADA297B0A899B2A9728B7EAFC6BFBCDBE288ABB1668384
+      789C96A0BDBC8DA3A4A2BAB3CFE7E2F3FFFFFAFFFFFFFFFFFDFFFFFDFFFFFAFF
+      FFFAFFFFF6FEFFF6FFFEF4FEFEF4FFFDF3FEFDF6FFFFF6FFFFECF7FBB9CED682
+      A4B2536F75486963456268415C643C575A4460614A6A664460603C55533F5F56
+      3F5D553F615B3F60533F5B4F435D5644645E45685F42645A35564E2F37264244
+      314D503A58533C4547314F523A635E41545237545134534F313136182022122E
+      2C24463D3048442C49452848432B4942254944274440233D3E293E3D263E3D25
+      3839223537222F301E2A2B1B403F364A4B374447314A48393F482C31381A2225
+      142F291F3B3F26393E243639263A422944472C3A42283C402D3F422A3B44293F
+      442D3F49283C432B3C4025433F284B514B81908C666F545A6652737764656958
+      697061667462727869727866667060767D6F7D8B7D93A2969BA39BA7AEA6B7C4
+      B7DDE4DAD5E0C25E6569D7D5E3FAFAFAF9FAF5F8F8F4F9FAF1F2F9E9EEF0E0D7
+      DBC6BCC2B0AAB19F84937266735D49553E1418121E261B202D22222D284F615B
+      6770665F6E60626D635E6D5D5668505E644F53604A4C5A423F4C3B343C30202A
+      1D1F25162E3322383B3146493E3D40303E422C3E422F40453243482D40472C40
+      492C43462D4544314B472F4C4B394F4E3A4F4E3B55573B5E5F434347302F2A18
+      474B3B4D533E484B3A4A49324040263A3C2630331A31341B282C172929181719
+      111217111A1E14282A1C282C1E262B182E341C282F1C2C321C2E331D32372232
+      331D2B311D2F34212B2B1922220F1C1F132A2C1D2E301D202215282716282716
+      1E24182022182024181B1E162126245C6A654959484D5D525F7362586A595566
+      5951635957655B616E6557665A546154546360546F6256665B55665F54645F60
+      6E60586F60586E5D435143576A5A586955515E525B695D4A5F505B6F5E495B50
+      5768574A5B4E596E5B5C645D4F5D5344554852614F5C6F5E5365565565554B5D
+      4E556A5E51695A445C4E435A495164556375615E6D5F5A685E506453455F4F65
+      71615563555A6B59303B2B64716654685A4457494D6250424F4E5A6C64616D63
+      505F53586E574C5C4C5A6D5E576A5E4A5E51606F60475B4F596C625766513847
+      3953665738463A59665F536457455547596B5A4A634F6B786B6D796C54695960
+      735A475544596D5B65746231493A334E4A253C362B413A364A3D3F4E3B26392D
+      00004D6DDA4C6CD7506CDA5671DC5C76DE5B76E05A77E15B76E15C76DB657DDD
+      6480DE6581E3657FE46079E15E76E3627DE66A83EB677FE96A82E96E85EB6C82
+      EA6783E96A85EB6D86EF738BF26A7FEE758DF07B8FF27487F47488F57E96F65C
+      78E82E47B83C56B14464B83E5FB73B59AF4663AF4B6CB8476BBD4369C04164C2
+      4164C23B5CB335549F4769B24568B54164AE486BB94368B73F60B03C57AE2E48
+      A520399C1B3093192C9311237E0A19660C1B710E1D6D20348830459334489052
+      6BAC6F87B97287BD798BBD6D82B45B74AF4D66AB3F5BA73D5BAB354EA53A56AA
+      496CBA4F6EC05275C65679C96183CD6D89D0668AD46288D67395DB6C90D96588
+      D37C96DD8CA4EB8EABF58EAAF98DABF588A5F485A1F387A3F589A6F989A5F68C
+      A9F68FABF489A6F187A4F588A6F582A3F2809EF1819EF184A0F489A5F691ADFC
+      8CAAFA8AA5F98DAAFB8FACFB89A9F97B9DF57B9AF584A2F6809EF5809EF589A5
+      FA8AA8FA8DAAFC84A3F881A2F68FADFB8FAEFA8DACFA87A8FA88A8F67B9EF37B
+      9EF688A9F889A9F67D9DF27C9CF488A6F888A6F57CA1F27DA4F589ACF888A8F4
+      87A8F282A5F382A1F58AAAF690B0F584A5F487AAF586A5F389A9F38CAAF187A9
+      F285A9F180A2EC84A2F17DA1F16290E96F9AEE85A1F17B9EF17EA2F085A6EE8A
+      AAEE84A5EC7DA1EB789EEB749CE96F98E7799BE7769EE7779CE47599E46F98E4
+      7099E3749AE37599E36E97E26D96E27297E3759BE3628AD54877B63B65923357
+      6D366656376E51366E523A73553D775D3C735D3C73573D755A3D755E3F775B3F
+      775A3D785B3975593973563B75573C77593C75593C75593C775A3D7D5A3C7A58
+      3E79593D7A58346F53497C6C5675785A6B78506172546371343F4F3040513D48
+      563D4A5F424E5D3E4A593D48592935482F3C52435064434F61333D51323D5250
+      5F723A485928334726313F2834412F3C4536414E4F56614F56605160695E7375
+      90A39D8E9E9278929BF6F9FEF1EEE6AAB9B0D3DEDDA8B7B36C868472898992A9
+      B5A3BBC479908E4D66667E9CA293AEB6C0D9E2DDEFF1DAEBECDAEAECDAEBECDA
+      ECECDAECECDAEAEBDAEAEBDBEBEDDBEBEDDCEBEDDCECEDDBEBECDBEBECDCECED
+      DCEDEEDCECEDDDEDEEDCEDECDAEAECDDECEFDDECEDDAEAECD1E4E4C3DBDAC0D3
+      D0C2D9D9A7BC9D9AAD8199AC8F98AD897D9777657D6C4B60483A4B2C3A4F403C
+      5D593C5B563C5B533D5B503D5A5338594F38564C39554E3B555039554B365249
+      375249385148374E45233A3449696BD5EDEFE0F0EFE9FAFDB7C6BE5861517D8D
+      7E727F71636F63788A7C788274606C5E76897A7C8B777D9084D7E9EBDAEDF0E7
+      FAFDBBC8C12B30203F4F3A444E3D575E4C3E493A212F246D786B697565606D60
+      63685D77918B9DCACE8ABABC8EBDBD8FBABC91BCBC96C6C698C5C1909F929AA0
+      8F9BA99994A2999AAAA09DAEA29AA99DA8B8B0D2E0DDECF8F9E5F3F2E6EDEFE4
+      ECEDD9E9E8DBEAEADBE9EBDAE8EAE2F0F1EEF8F8E6F3F1E8F3F2EAF1F2DEEBED
+      E3F1EFE0EBE9ACC3CC9CC3CBA5CBD2ABCFD9A0CDD385B9B486B4A894B0A57CA5
+      9970A197749B8F6C978869968773A29677A69D77A9A078A8A27DAEA581B3AC85
+      B6B281B8B684B9B881B3B281B2B27EB1B072A3A56C9F9F679F996AA1996BA29B
+      699F9D629392517C764C736E57827C54827C537C764D746F58837E5F89865479
+      754571685387816A9A9C5B86894266633E645939594C304B41334E433A594F47
+      6D653C615A26473C486B61587D78476B633A574C2B473D4161573B5A50446559
+      466A61516E6655706B41645D3F60563A53494261575F776F7087805674712B49
+      3F2A483B304A3F557464859F96597672537972637E7D304A413961555685856C
+      989176989757716B557569405A52283D31546C606F7E75404E4B314741395448
+      2C473C2A4334617C6B7C9A8F638276607F6D6D867D819996759697537473637F
+      727E9D9291B0A8C2D6D0E3E4DEABB1A9ACC3BAE4F6F6D5E8EFCAE3E8DAF0F3E5
+      F7FED0E9F1D4EAEFDAECF1EAF8FCEDF8FCEEF7FDE5EEF4DBECEFE6F7FDDAEEF5
+      9EC0C86C8993536B72496969496465445F60415C60405D5E4361593A524E3E59
+      5247696041605A3B5D583F5F5546615845625A41645A426E63426861395A5336
+      392F4B4234574D394A4D373C462E45492E484E31464D2F4345253E4425313215
+      20220D26271A393623353C1F3B3C2334371B3438233036223238213437213235
+      193133182A311A27321A202816282D1F3B3A2D4D503551523754543D5057363F
+      4721212013323224413F263D40243A3F24353B25333B24313929363B2A363D24
+      323C2B383B2C3C3F2E40412C3F3F283C4225484E428F938C737C6681856D8482
+      6D969A84999D8C9EA28FB0B1A3A7B099A4AE99C5C6B9D9DBCFDDE3D5E6E8DDE9
+      EAE0E9EDE2EAECE3C4CAA44D5C5DBDC8D7E4E7E4E1E5DCD7DCCCC3CCBCB0B9AA
+      A1AE99A4B2A3B6C1B0CED2C3B4BAA26E765D454E3520231F252D25202D243645
+      426A757169776A677868697464606B5F61735B5A695A57655059664F465A4748
+      594C444A3635412F3C432E4243365A5D5B9C9E8E6F765862644B696A4F6F6A56
+      666A52656A5264624B5F604A64604E5E5B45595643514D384747313D3C262A2B
+      12262A162B322131352435362132351F3D43284C4B3452513B4C4E36332D162D
+      281B13190D121A0E171A12262A1F26301D292F1C2E321C34341D343723393C26
+      353921313524273019282A1A31331B2021121C2316282A1B3C3F2C2B2D1E2528
+      172325161D24161B2216181D121619161C211D626F6C5060564A5C555F6C6957
+      6959566A5A4D645553645E606F6155685E485D4C4C5E5659706658665B57695B
+      5B665D606E615C6F59596D5B47544E5664615C6A5A515E55617362485F505C70
+      5E5162545A655E50644E5B6D5B5666564D6254485C494D62535E6E6557685859
+      6B5D525E54586E5F536B5D47634F4C6657536658607164626E605F705F596558
+      5C6C5E556E5A5C6B5B5B6857465648606E64596D59495E50505E56435643566E
+      5E5B6D5D5263505C6C5F475D4E5F7062596D5A5462555B6E5E4A5D4B586E5D57
+      6A564453435B6D5D2D3F325A6A605E695D495A4F616F5F4856495A6C605A7061
+      4D65515C6F603F513E616F6063735E405243576A58435449485C4F6174685E6C
+      5B4C604F00004A68D2516FDD506CD9506BD7536DDA5976DE607CE35B78DF566E
+      DB5B74DA6682DE6C86E3677FE3647DE3627CE45E78E36179E66B83E96F86EA70
+      87E96C83EB667FE86C87EB6B85EF728AF06F86EA7388EC798EF17288F1768BF5
+      7C93FA4B66DB2E47B23F5CB54A6ABD4B6DBE3D5DB32E4B9C36549C476CB54A6C
+      BE476BC23F65C03E63BF3756A93E5EAA4365B43E5CA04464AC496EBE4265B43D
+      5CB0324EAC2F4AA92A44A51F34991B3196172F9211217D070F5E0E196C09196C
+      263B8E6378B57B8AB87D8BBC7D8DBC6D7FB3566DAE485FA83E5AA63C59A93953
+      AA4361B25070BC5373C25475C65A7CC95F7FCC6183D06689D6668DD96E92DB70
+      93DC6A8FDA6C8EDA85A1E888A3EF8AA5F390ABF590A9F48AA5F485A3F480A0F2
+      88A4F585A1F385A4F689A8FA8DAAF58AA9F488A5F586A3F584A4F57B9FF384A2
+      F580A0F48DAAFA94B1FB8FACFA86A5FA8CAAFC89A8FA8AA8FA8AA8F989A8F87E
+      9FF67E9BF382A0F389A8F88EABFA89A9F885A5F886A6F688A8F68AA8FA87A8FA
+      82A5FA87A6F881A2F5799BF27C9EF38FAFFA8EADFA86A6F486A9F38DAEF989AC
+      FA799EF27D9FF387A9F68DABF88DADF58DACF688A9F682A3F289A8F388A8F387
+      A5F089ABF284A3F184A2F087A8F57DA2EF729AEA799DEF819FEE86A9F184A5EF
+      81A2ED81A2EC82A3EB7EA0EC749CEC769FEA789CE7769AE67098E67499E67097
+      E36991DF668FDC7399E2749AE36991DE638BD95E85D25E88CD4A76B639608E31
+      5B6B36695B387355356E51336E52367355377457367056357055357157397456
+      397558387656387656377859397C5B3B785D3B765D3B785E3A755A3C775D3C79
+      5D3D7C5E3F7A5F3B76593770553671543B785E4C797355646E435D5F3E5B5A46
+      626C384859303C4C444F5D4B5C6A3A4856313B51353F554A5B6A42505F323D4B
+      3446563C4B5F343F53383E562B35412F3F4938474E5062685363695B6A6D6C80
+      80829B9AA0B7B1A3B8AE7D9A97C1D2DAD5D8CC909987B2BCB89EA69B7C8B8476
+      8B898CA4AF9AB2B967827E546F75A2B9BDA4B6B5ADC4C8CFE1E4D2E3E4D3E1E3
+      D3E2E3D2E2E2D0E2E1D1E4E3D3E3E2D3E2E1D3E3E2D5E4E3D4E4E1D3E3E1D0E3
+      E1D1E4E2D3E4E3D2E4E4D1E3E2D1E4E3D5E4E3D4E3E2D3E1E3D3E3E2D3E4E4D4
+      E7E8C2D5D4A7C2C494AD89879D65869D6A647A4C3A4A322B3826323F2C27351E
+      2634272D4139263B2F273C30293C32293930293C32273B31263930283B32273A
+      3026382D26362D25362C22342A172219324645A2C2C7ACCAC89EC1C1A7C5C7B4
+      CCCEAFCCC8B2CDCAB1CCCCADC9C8B3CDCBB6CECDACC9C5B1CECDB7D1D2A5C1C4
+      A4C3C6B8D8D7A1B3B03637263D4A322C38241A231717221A28362C747F71747F
+      6D6D7566767C6F789F9B659A9C598885618A87608D8C6493906593916E989986
+      A6A4A1AB9FA2B2A4A1B2A499A5979BA99FBAC9C4DBE8E7D6E4E2C9DCDBDAEBEA
+      E0F0F0E9F5F5E6EFEEDAE7EADDEAEBE1EDECD2E2E0C9DDDBDAECEBE1F0F1EBF5
+      F9EBF3F1E5F0EFDDEAEA7CA8AB5B9699659B9C669B9A679D986CA5A66CA4A960
+      97976DA6A76FAAAB6DA5A56EAAA86AA6A567A3A375A9AB6DA3A7619E9C62A29A
+      5C9D95599A955E9C98629D9A609B985A969256918B4F8D85518F874A837C5086
+      7D4C8A8042807543796D45776D49736D51787449706B43665F3E655B416C6345
+      6B663F64603E645D3D6C633A6B633A645A3C615636574A34514537544B2E4A40
+      3A5B5031564C24433B375D4C3E6A5D3F635E3D5E55395B523351483651463B56
+      4A44685F3D625856776978908C43635B406053415B503451442D4D433C5B5338
+      50472D483C23423741554C42574F3F595448655B6F9183ADC7C8637E7F253C31
+      253F3925473C3E635D486C6857756B758D848AA49DA3C4BEDEF7F5B5C7CE3046
+      4420392D243B2F233E32425D52455E533B52453B51435C7F766A929244645B8E
+      B1A7B0CCC8A3C0BEB4D2D2CCE7E9D8E8EBB8CBCBBCD5D5CEE0E2A7B9B6B8C8C7
+      BECBCF8CA4A4708E899AB3A6DAE4E1C3D1D4BBCDC9BCCDC9DCE7E4A8A9B15668
+      64566C6946625F93AAA470828F3E59613C575D4562654D656A4460603F57544B
+      5E554C6560436A64466C63456158445B59435B59445E593A5B5538615A3C605A
+      38554C303222413F2E4D4E364B4E3E4B4B37544C38645F44565A385957395756
+      353C4121202109302C2345432B4746294D452D454B2C42442C4246313F412C3D
+      3B263D3D27443D2437381C263219272D1B302A224042364A4B34444732434A34
+      3B4B25313D171C1E0E25251832362131361D2C2D19262D1A23251D2127182126
+      1B222721272C22293224303424313A26383E253237224D4A4888837F63695466
+      66515E6253676F606A716069705D646F606B756263705F6E786C6E786C778276
+      8E978894A193BBC3B6D9DFD5E9ECD354605DD3D4E3F1F2F2F1F3EEF2F4ECFAFA
+      F2F9F8EBEBEDDFD2D3C0BABEAEAFB7A596A48065715B505B41151E0E1C241E20
+      303053666B69756C6B74686B76696C786B6777635C6C5B5B66585C6559586351
+      455645515D4E676E61727761545F3F374334535B585E68575E665357634F626E
+      54555C424A4E384D4C3749463048472F50533E454B36514F3956543E5A544167
+      64524D4C2F2B3018464A4054553C494B334548343E412B30351D2E351C333723
+      30311E2B2A19191F16161F16181B182A2D242C30222E3221333923373A24343A
+      24333C2534382332372325281A2B2B2136351D2424121E20172B28193536222C
+      2A19282D1A252A1A24291C2025182123151B2116222A2461706B566851556058
+      606A685C6B5B54655E56625B52615D5C7063556B5B51615650645D6071655469
+      5A52695E516961607161626F5F626C61475C4C56695B586A5B5362545F6E624C
+      60545F735E505F50566D5F4B5E52606D615B6B604A62524F5B4E4D5E525E6D62
+      5B655A626A644F5F57556A5B5A6C5E435F4F51685A58655D627161606C636370
+      6356655854685B5F6F605B69575565584B57496270615A6D59515D585060564B
+      604F636E625A6E5B54665E596B60546457636F61606C5D5164575E6F5E536252
+      5B6E5F5569534657445A6B583F523E5F6E6158695D495F505B6E5B424E41566F
+      5F5A6E625265535C6D5F3B4E3A596A5961735A49604A596A5450605048574960
+      70605A6A58515F5500002838643D52A44969D0506BDD4D6BD85571DA5674DE5A
+      77DF5B76E0546EDA5B76DA657DDD627ADC637CE06C86E46980E45C75E15F78E4
+      6B82E87389E97488EA6C85EA6E87EB6681E96C83EE788EF16F86EC778EF2798E
+      F17487F16B85F4405ACD3B54B44361B84160BD4061BC4061B93351A728459041
+      5EA84766BA4568BE466AC04469C23754B23954A73C5CAF3B54A04860AB4868BC
+      4464B83655B12F4FB13150AF304DAF2844A8203A9D1E349A192F931426880F20
+      7E1325832F45A05A6FB37888B67D8AB77582B45E6EAF475CA93E57A63D5BA93F
+      5CAA4562B24763B14B6AB95273C55576C85C7FCB6182CE6387D46B8ED76A8ED8
+      6B91DA6C92DC678ED87093DD7D9FE985A4F089A6F587A4F584A1F585A4F587A8
+      F589A9F689AAF985A3F588A6F88CAAF98CA9F88FAFFA91B0FA97B3FC94B3FE92
+      B2FD91AEFB80A0F681A1F690AEFA92B0FA89A9FB87A5FA8EAAFB8AA9FA81A0F5
+      85A2F88AA9FB7799F27C9DF189A6F88AA8F88DAAF887A6F884A3F68CAAFA8CA9
+      FA86A4F5819FF5819DF57C9DF57EA3F58DAFF98CABF885A4F387A8F589A9F584
+      A4F37EA1F285A5F587A8F888A9F689A9F586A5F588A9F584A3F07B9CEE84A4F2
+      81A4F37EA3F180A4F080A1EF82A6F17DA4F079A1EC789FEB84A4EE86A8F07BA1
+      EC80A2EF80A2EE7EA2EC7CA0EB749CEB779CEA84A5ED7EA0EB779EE86C96E472
+      9AE4608DDE6A95E2779CE27397DE678FDA557FCE5E87D55F8AD24770B0355989
+      36596D3C6A6040715B44745B3F6E573F6F5843745D44745B4170594173594275
+      5944755846765A45785D43755B3D6F543C6F523F735641715948795F4B7D6248
+      796047755F4977624979644C79664C7A6648765F40715452806C63867C5E8178
+      607F7340565F38435E3C495B3C4757434F6238455430405236455D425563465B
+      644C5C694455643544542E374E495164465259384553354350526A68647D7A6A
+      827F8198967996928CA5A287A59A708F8976959390ADAB9CB3B292ADA98CA4A6
+      809B9F6A858C7C98A69DB4BC7C9390637C85AAC1CAB9CFCDC5D9DBD2E1E3D2E3
+      E4D2E3E4D2E3E3D2E2E2D2E3E1D2E4E2D3E3E1D3E4E0D4E4E1D5E4E3D5E4E3D4
+      E4E2D3E3E1D3E4E2D4E4E3D4E4E3D3E4E3D4E4E4D5E4E4D6E5E4D5E4E4D6E4E4
+      D7E5E6DAECECC8D7CF93A09B9BA69DA2AC98A4B1989AA38F8C93848D967F949C
+      88979C8E929A8C98A08F969E899A9F8E949A898F9684949C8C9A9F8F999F9094
+      9A88909786919989939A8B919988909887949786969A8F949F9694A2988D9C91
+      8D9C9599A5A09AA9A0909E9693A19A98A49F96A29B919C96919C9596A29D99A8
+      A38E9A9290988FA3B1AA8A93872C342435432B212B190D150F0A0F0D1E27227B
+      87776F7965626F5F7382726D918B759B9A89AEB08FB1B694B4B99DBDC089A9A9
+      4F75744A6962425346233F32778E80BAC4BDCCDAD6E3EFF1F1FCFF788B7D2036
+      2B66817546655A6E938FEDF6F8E1EDEDDDEBEBF1FDFD9BAFA61D352B5A786E4F
+      706452746DE4EDEDF1F8FADAE5E955927A3780603E866A3F896F3D856B3D8A6C
+      3B886A3C836640896A408B693E89663E89663C876536805D5796764D906F3D89
+      68438B6A428765438A663F8964418869438D6E418B6A3C85623E8163407F653D
+      7863447D66417E633F7F63448268467C69467065486F634B7565497164477363
+      436C5B406857457062406D5E37635042705E4873633C5F533D625745655B3C57
+      4E36554A365B5135594B314F423B6153355B4C395A4C487162416C5F28483E21
+      3E332E4E403857503556503F655A52716A3E5A51395247374C425970663A554E
+      2A4A3E304D4229433721392E3C5B4C557A6F5B7F7D77A3A0AFD3CEBED1DF4A61
+      652D473D3F5C533E574F2B433629433645695B8CB8B399BEC36383845E8A896D
+      999D314D48294536334A3C20352B304A40304A3E203E2F557C6D41605A3E5B52
+      58786F567F776B939175989688AEAF6D9395577D7C709B979BC3C2C3E0E4A1B7
+      B0BBCBBF81898D38473D4B5C5180967DCED4D06675756076665C7164BCCDBF88
+      8287020000131E1521362A94A99C808B933C52523E59534C6561516460415758
+      3D5558586C664B625838575036534964796B5F6D6648605746645B426C633A62
+      58375A503A5A4F2E34213D442A484B3B504D374045273F422E4A4B3340462940
+      44283B40242C37161E240D21261B323828363A22313A19323C1C31371D343821
+      2F311F2E331E262B1B272C172A2B17222A162026162A2A19393A2C5151405551
+      3A59593E5954354845241B1B0E2C2A1D33392423291B162016161F14101E150F
+      190D141E1617281E131E161A241E20331F273529323C283539273C4041848886
+      636D57676C57767C6A8A8B7C989B89969E8CADB19FA7AD9CA0A69ACBCBBDE1E2
+      D2EEEEE3FCFDF3FFFFF6FFFFFDFFFFFBF1F3DE484F50C5C5DBE5E8E9D6DCD9C8
+      CFC2A7B1A097A38F9AA896ADB7A4C3CAB9D6DCCACECEAF6F7958434F351F2017
+      262D2727333556646365736C6370685E6E6269776D6775625F6E566069595563
+      5653624B455649525B536F7A78909B97A0A08B3E47374D59549EA39DA4AA95A7
+      B095C1BEB1C0C0A7ACAD8F6D6C5561645061614F606149595E4353523E484537
+      40442E3A3724293316262C172C2F1A30351A3A3C2943412C454737605E40565B
+      3D4B4F362F2F19242D17161B0F181D121C1F162E291F2C34242F3727333B2B36
+      3B25313523313928353D2A3838252E2F23292C21393A241F2513191E122E321D
+      3433212226152626172022151A1E16171D13171D11151D0F18201B616F65606E
+      5E4F61505A6F64576E5F596A6357665857625E5B7066576D635261534F625360
+      736554695A536C5A56685E657466606F5E5F6E5E4B5A525B6B635E6A5E4C6154
+      606F5F4F5D555B6F62526557576C57526150606D6258695D4B6457495F4C5161
+      516170625C6E5E5E6F5E5262525A6C5F5C6D5B51685653665D5764586174605B
+      6F6063716357656255685B60705E5C6B585B6C5F465A4C5B6E5E5C71604D6354
+      5469584F5E525C6F62607060576A5A5E6F5F5263586070625F6E5D566B5D5C6D
+      605463545F6E5F586A5D4C5C4F5E6D5F445547606C61626C63546455606D5B53
+      5E526070625F6F6158695A5C6C634454445C6D5964715F566451556853506052
+      3E5042616E5F5B6C5A5664559769161E1D1A22282837574156AC506FDA5070DC
+      506EDA5771DE5974DE5570DD546CD85973D85C77DA5A73D96078DD637CE1647D
+      E4657EE4607AE46680E76F88E86A82EA6980EB7088EB6A82EB788FF46F88F16F
+      86EF778BF1778FF3627AEB3C54C73C52B13C59B73D5BBC405BBC3E5DBC3C5CB6
+      3752AA38519F4362AE3E60B74160BF4164C13A5ABA3350A73A56A63B55A63C55
+      AC3954B6334CB52B46AE2645AB2848AF2844AE2542AA233CA41C329C1B30981D
+      339C1B329C1D349C243D9D425AA85C6FAE6476B05B6CAE4359A73851A63952A6
+      3C59AA3B57AA3C57AC3B55AB4969BC5577C75A7CCA6181CD6385CF6589D4698E
+      D66C8FD86F93DC6C95DD6A8FDB6E90DA819DE48CA9F18FABF890ABFA8EABFA8C
+      ABFB88A6FA87A5F88CA9FA87A6F681A3F584A4F48CABF691B1F990AEF88FADF9
+      90AFFC89AAFB80A0F687A5F98AACFB90AEFC8FACFC96AFFA8FABFA91AEFD8DAD
+      FC86A5F887A4F68DA9FA8CACFC8AAAF988A6F688A6F689A8F8849FF58EA8F891
+      AEFB86A4F67EA0F4809FF482A3FA85AAFA86A6F388A8F585A9F682A4F37E9FF3
+      7EA0F481A3F389A9F389ACF889AAF68DACF58CAAF486A6F3799DED789DEC7298
+      EB759DEF82A6F187A6F185A5F281A5F085A9F180A2EF81A4F186A9F181A4EE7E
+      A1EE80A5EE7EA3ED85A6EF7EA2EC789FEB779FED799DEB789EEB799FEB779DE9
+      779DE76E98E26C96E4769BE47799DB6F93DB5F86D7658DDC7299E0577EC23A55
+      90485B7D566A6B5C756963796C61756962776B62796D5E75695C756961796C61
+      796C61796B647C6F697E72667C72667F7463806E425C4B435E4F668373668073
+      6785746786755A7565566F60557363587465567564526F605575604C6F61466D
+      62527E72516C6B4A5A683B48583C4B5F49566A4C54684C566634475328404B27
+      3E434F626F546373323E543341583D4959424F513E5054323F45444C57495C55
+      4C64505A6F5F5E7365526859748A807D91816A7C6C7287776A817772877E6C82
+      7D62777A677E81657E8499AFB9BACCD3AABFC0607A7F91AFB7C2D6D8CEE0E2CF
+      E2E2CFE1E2D0E2E2D0E3E2D0E1E2D2E3E2D2E2E1D3E3E1D5E4E3D4E4E2D4E4E3
+      D5E4E3D4E4E2D5E4E3D6E4E3D7E6E4D7E6E4D6E5E4D6E5E4D7E6E4D7E6E4D5E5
+      E3D6E5E4D6E5E4D4E6E3D9E9E7D4E1DCD5E5E1E0ECEBDDEAEAE0EDEBE4F1EDE5
+      F3F0E8F4F1E5F1F0E5F1F1E7F3F1E9F4F3E9F4F3E6F2F1E7F3F1EAF4F1EBF6F3
+      EBF5F3E8F2F1EAF5F3ECF7F5ECF7F4EAF4F3EBF6F4EDF8F8EDF7F5E4EDEAE2EB
+      E9E5EDEBE7F1EDE7F0ECE4EDE9E4EDEBE7EFEBE8F0EBE5EDEAE5EDE9E6EFEBE7
+      EFEBE4EDEAE4EDE9E8EDE9FCFDFECBCCBF262816293117252C16191E1414160D
+      2229207C8A7C526A50304C38314334253626434F3E848980848F858792879DA6
+      9A7C8072141E122F3F2A363E280813078A9F95EBF7F8E4F2F1DEEBEDF0FAFE72
+      806E0D1A0E475E4C26382845645AE8F4F4E5F1F0DEEDECF3FFFF9AA89F0D1D10
+      3C50412B402D284033DAE5E4F3FBFDDAE6E65A977F418F6F4F9B804C9C814B9B
+      7E4D9E80539F844F9D7F4F9D7E4F9C7E4D9A7E509C8051A0844B9A7D619E845C
+      9C8347987A4C987C539A80539B80519D7E4B9B7E4F9B834F9A7E4893764A9278
+      4A90774B8F76448B744A907852937E4B87744578684574634C7C6B507D6C4673
+      6544736442715F41745D3E7F63407961416A5D4370614165583D5E56436B603A
+      594F314A3E2E4D40385C51416559335547385D523A6459376354406D5D43685B
+      30483F203D302646383450433250453959503450463A564B3C554C33463E4056
+      4F4B655D395749304D402F483E344F4332504338574E385752446A606E989865
+      8F9537534C3650453854463D574E476157455F52344F41304D453C5D5547655D
+      30474220382C2F4B3D2C4F404A6A59586D602F4335304738364A3F3351433352
+      463E5952344D472D44383A544744635E406058354B4432493F3E5F526A8E878A
+      ADB1617D7C769285637C764A625353665E748D78B9C0BE606665627868576C5E
+      B4C5B59DA3A31B3D272C573E264E36A3BAAB9C9FA2485A54485E55556B615968
+      61405350425E554D695E4B68593F6255324A425F75695F796D3E6554416B5A3B
+      6C5E3764553860543B5F542D34233C3C2B4B4D374A52324C492C4F4A2D5C553E
+      5956395754355452333E3F211F210E26271B3F3C263B3F243C45233E421D403D
+      263C3A243E3B2538391D3738213239232B3421252D1E252A1D2A2A1A3D3E2B4A
+      4A35464731494A34414A313E4021181A0A262516373723393D21363A21323921
+      323927373827363A2834382E242C21182518172019262B27353A243839244546
+      40888F897B866F80866F7E876E8D8D808E91818D927E9296848D918086907F91
+      988C8E9385939C8E98A1979AA298AAB0A8B8BEB1B7C0A74D5750B0ABC2D0D7DA
+      C6D1CED9DCD6EDEEE4F1F5E6F2F3E4E8E9DBD5DAC9C8CEB69DA57D5A6B52515E
+      4113190C1C241C232A2E50636662736B6C7469646D626A746A677363616D5F5C
+      66585B69525866544C594A475951757F7C868D877B866C3A44325457555A6257
+      59624F555C4C5B68525F69575E6A5367705B58604C3C412E434933424835474B
+      36474A354A4F3B575B4053553A2E341C494F43666957575B435655444C483536
+      3A212B2D1B252A192F301A2E301F1C27171D1E171D24182E3322343925363A2A
+      3C412E313B243739273439273A3F2A31372C38382B333B243139222C2A182223
+      18262F182E331F2F31233031252C321F302F1A2F2F1F262C1C23271D27302A6F
+      7A6D5B695E536459566C6658695D5B6C625A6C5E505F575F706A596A60535F52
+      5460545F7563576C5E566660596A5F5E6F626070695C6F6348594858695D596C
+      5D555F566473644C5C545C71644F6556586D5D506455586D5B596E5F53655952
+      6252526552606F5E5C6A5B616E5B5562585E6F685B6B5A536656536B55546658
+      5F7462666E5D5F6E6150665B536A58656F5F606C5E586E5E485F4C5A6D665B70
+      6151635A526B5E5362535F73615F70615C6C5D636F645064575F7361616E6157
+      6A5A5B6B604F61555B715F596B5D4B5E4C59685D465251616F625C715D576658
+      5B6C5F5161535E70635F70635C6A5D647164475649626C5962706259685E5C6B
+      5F586958546A595E6F635B6E62556B5B97691A2223171E181419121B262A2C3C
+      65445BB55371E05573DF556EDB536EDB506BDA4F6AD85B77DA5F78DA5C75DB5C
+      75DD657EE46A85E46780E66178E46982E66D86EB6780E86A82E76982EB7287F0
+      7288EF748BF1748BF37992F55E78E8314ABE3A50B1435DBD4462BD4461BE415F
+      BD405DBA3D5BB52E4B9D334D954260AB3C5CB43C5BBC3F5EC2334FB0314B9B35
+      4D9A2F48A42F4CB72341B41F3AAC1E38A91E38AC1F3AAB1F39A81F36A41E35A2
+      1D329D1A2C99192B9A192C981D3198273B9C3448A33C52A6384DA62F48A03451
+      A63850A6374FA53753A73C59AF3C5AB14666B95A7DC85E7FCA6281CD6687D267
+      8AD36388D46A90DA7093DC7095DE6D91DF6586D5829DE490ABF197ADF89BB2FA
+      94ADFA8CA5F888A3F689A5F688A4F684A4F884A3F886A8F988AAF989A9F685A5
+      F48AA6F589A9F588AAFA8AAAFB86A3F885A5F882A3F986A3FA87A4FA85A3FA89
+      AAFA8DAAF98EA9F98EADFB89A6FA80A0F484A2F480A1F585A4F68FABF88AA9F5
+      89A8F589A5F585A3F686A5F388AAF58CAEFB82A6F688A9F588ABF988ABF884A6
+      F57DA1F580A1F588A9F586A4F384A3F28CABF58EACF38CABF388A8F186A4F186
+      A6F188AAED8DAEF187A6ED8CA8F084A3EF80A4F189A9F482A3F186A8F08CABEE
+      7EA0EE88A6F184A5EE80A3ED82A4ED82A4EF7BA0EC7DA0ED7B9FEB79A1EB79A0
+      EB789EE87B9EE4799CE680A3EA779BE07799E2769BE6749AE47EA3E95A82CD38
+      54923A52773A5D5A355E463A604B39614B385E48385F46396149355D45365F45
+      3B644B38624937624939664B37684E38684C3465473C6E533B5D4C3153423466
+      4E36684E3973553B6E56758F7892A085869A7F8A9E858EA2888E9F8991A08992
+      A68B69806544624E7B8D849AA39A727973626B72646C753E4E5E506176425059
+      2B3A4434424B55616A525D6A2934482D3B4F424D5E757D83ABAFA9B4B7A8C2C4
+      BFBCC1B4B8BFABBCC2B1C0C7B7BCC0AEB3BAB3DEE2D9A5A88D445043495A513E
+      4D463E4E4F45575A48595F44555E90A8B8BCD0DA9DB1B14C65687999A3CADBDE
+      C8DCDDC9DCDCCCDCDED3E2E4D7E5E6D7E7E6D7E6E4D6E5E3D5E4E3D7E5E4D6E5
+      E3D5E4E3D5E4E3D5E4E3D6E5E4D6E5E4D6E6E4D8E7E6D8E6E4D5E4E3D5E4E3D6
+      E5E4D6E5E4D7E6E4D9E7E7DAE8E7DEEDEBD8E6E2D0E1DCDAE7E2D8E5DFDAE7E2
+      D7E6E1D7E7E3D9E8E4D8E6E1DAE8E2DDE9E6DAE7E4D8E7E3DAE9E4DCEAE6DDE9
+      E7DBE7E4DAE6E4DBE7E6DBE9E7DCEAE9DDE9E7DDE9E7DEEAE9DEEBE9E0ECEBDC
+      E9E7DAE7E4E0EBEAE1ECEBE0EBE9DEEAE8E1ECEAE4EDEBE3EDEBE2EBEAE1EBEA
+      E1EBE9E3ECEBE1ECEADEEBE9DEEAE9F3FDFEBCC5BA3B3D1D4B4F255152285251
+      2A545527545B3A859081607C633F5C4137442F323E2A475644808E818892868E
+      98899CA89C7C8774505A3F65755B818A7899A99CCDE0DDE5F1F3E0ECECDEEDEC
+      F1FAFD7E8E7E1225184961522D4233527066EAF6F6E5F0F0DEECEBF3FEFF9BAA
+      A213281C415C4E344938334B3FDAE7E7F2FCFEDDE7E75B93813C896F4A957A44
+      8F6F459175418F74428F724793754590734691753E90753B8E6F3C8D6B388E6C
+      5EA28655977A3688663C906D4097753F96763C8F71398F6A41977346997C4795
+      7D459781479B84529E88539C8D539A8D4A8A7C467F6C457568538078537C7653
+      7873436D654371684D7A7555888859918F5C8B9562939D436F6441625E496F71
+      3C63593C5A542B433D314E4351786F426B653A5D4F3B5C4F3C5E57375E543859
+      4F3250443353453B5C4F40645943635938554B324F463B534B3A544A3D574F3C
+      4E4632463D384E413A50443C534931483D2C493D3353462C493E3A5449335147
+      2A453E2F4B3E3A5446364F42354E413750413953483A574F3A574E344D43405D
+      5253716A3B534C3A564E2F4C421E37274C695970978B85ACA396B8B17B989846
+      5D563C55472C473C2945382A44372D4A3D385547425F553F5953304B402B493C
+      3C5A535174723F615858756A4D635F3C4D413E4C3C596E58B1B9AF97928B9A9A
+      8E918F83CBCAC0B7BAB55B78606D8D72637D60C2CDBEA3A3A53B433B3C4A3F45
+      564E4A5B56415651435E52516556485D543A5B53425A5347625643685E396153
+      3C6154355F513E6D5E4271613A62542F392C4242344D523B4B52374246253D45
+      2642422E3F4024363A1C343A1C32341E1B210D1D211931321F31351A2B38242A
+      3518252C16212D172B301A253019232D181F2C1C1D261620291C202016292A21
+      383926534F325A533E5553385851364F4A261C231341402E48432A494B2E474B
+      2C41482948452B4A4C344A4D2E514D3144472C313E2D2F412E222C1722312130
+      39243D3E307B7F7C5B665060654C697160727E6C8D907898998DA1A89AA8AE99
+      9E9F8CBFC2B7DDDBCDEBEADFFCFAF1FFFFF6FFFFFEFFFFFDFDFCEE535652C4C9
+      DBF1F4F4E3E6E4CBCFC6A3AEA397A09797A590A4AFA0C1C7BDD5D7CACECEB073
+      785D415032191E0E272C28273029515D5E66736D6B7A646B75646970626A7564
+      66705F606A555C6657596658545C4C4B544A747E78868B848A92753F483A4F54
+      53919789929B83949D89A0AA93A8AF9BA4A898A3AC99A4AC9DA2A89988907856
+      6042404B3346503950513E4B4E383B412B2D321B383B2D3B403140433248432B
+      4D462F504F3C49523B4449372E371D2B2B161D221620211920271F353C2F3B43
+      304043383F43333A42303B45313E422F3D422F3841313C3F2F3F402B363A252A
+      2D1A1F2516252A1A3A3F292B291B2A2818272A162425172223161F2416192213
+      1F241B6D766E5F6C5D5165585B6B695A6961586C5F57685A5262565E74686070
+      615163534A6156607366506E63586B62616B5E627063626D615E6F624B594B5B
+      695A586C5A5365575C705E515E56616F635566585A6D5F4B6354617064586C57
+      546955475E4F5560515F716061705F606E5F566055606F63606B5F546657586B
+      5D53685865735E656F5A60766452685954665A617361606D5F5E6D5D4D5C4F5E
+      6F605B6E615C6B585A6A5B50615567756461735F606C615C7162566357647462
+      5F70625B705D606E6150615D636B625E6F57556252556A5B48534A616D615A6F
+      5B5A6A5B5C6B5F576457616F60647361606C5E636D5E5160515C6C5E66746057
+      69575F70615465585866565B71605C7060586E5F00001B242318221F18201C15
+      1B1110160B1F2735324681405CB7516CD85270D84966D84A66D95771DA6179DA
+      627ADB5F78DA5B74DA5E76DE6981E7647EE4657DE66B82E96983E86981E76A82
+      E86E86EB6E87EE6D85F16D83EE7C90F85670E42E46B63A53B7405EC14764BE46
+      65BE4361BC435FBA4460BC3755AF2A45973C539F3C59A63A56AA3C5AB83854BD
+      2A46A8263E8B253B8B2B46B22341B51F39AE1C34AB1A31AB1B35AC1B33A71E32
+      A31F35A31E33A21B2F9C192B991A2C971C2D971D2F981F349B22389C253B9D2C
+      45A52F47A4354CA43850A63E59AC4363B33A59AF4464B85676C55E7CCA6182CE
+      6787D46B89D46389D5628AD86D91DA7293DC658EDB6286D8849FE88FA9F292AD
+      FA98B2FB90A9FA8DA9F98CAAFA88A6F88AA8FA8DAAFA8AAAFA91B1FD91B1FC91
+      B0FD8FAFFD91AFFB92AFF98DACF592B0FA94B1FD8FADFB84A4F881A3FA85A4FA
+      86A4F687A5F882A2F680A0F8819FF587A4F687A3F688A4F58AAAF889A6F688A5
+      F58EA9F586A5F582A4F88CAAFA89A8F681A4F589AAF68CABFA81A3F582A3F38A
+      A8F585A5F3769EF27CA0F4789FF17C9EF17D9FEF7CA1F182A3F182A0F088A4F2
+      8AAAF386A8EF89A9F186A4EF7D9FEE81A1F084A4F182A3F181A1F181A5F281A3
+      EE87A8F082A3F07EA1EF82A5F08AACF181A4ED82A2EE82A5EE7BA0EB7EA3EC80
+      A4EB7DA1E8749BE3799EE681A2EC80A1E681A2E6769AE6749AE47BA0E6628ACD
+      3552982E4A752D535626593B275A39285938265D3A275E3C2B5D3A2A5F3C2E63
+      3F3166402F633E2E613B3466473468482F64412E653E2C633D2D61443D5F4F31
+      593E28613F26603E22633D2C6552D4DDDDFFFDF6F2F3ECF6F5EFF6F5F0F7F4F1
+      F6F6F1FFFFFFCCCCB9B3B8B4FFFEFCFDFAF4E8E7DBC1C2B6ABB8AB7E8B8B6A6D
+      7F6E757A656B72A8B0AEBCC2B7808886363F4C333C4E8A919AE1E2E1FBFCFBFF
+      FFFFFDFDFCFEFFFEFFFFFFFFFFFFFFFFFFFEFEFFF0F1F5FEFEFFC0C1A7434838
+      6C756E656E6850595D3C4A4F3C4B4F3F51587D99A7BACDD69CAFAE617678ADC1
+      CABFD5D6BACFCFC8D9DBD3E3E4D1E1E4D3E3E4D5E4E4D6E4E4D5E4E4D4E4E4D4
+      E4E4D4E5E4D5E4E4D7E5E4D8E6E4D8E7E4D6E6E2D7E5E4D6E6E4D6E5E6D5E4E4
+      D5E4E3D7E6E4D8E7E6D9E7E7DAE9E9DBE9E9DBEAE9DDEBE9DEEDEAE1EDEBE0ED
+      EBE3EEECD3E0DCD4E4E2E2EEEFE1EDEBE1EDEAE2EEECE2EDECE1ECEBE0EDEBE1
+      EEEDE2EDEBE0EDEBE2EDECE1EDECE0EDEDE0EDEBE1EDEBE1EDEDE2EEEDE3EEED
+      E5EFEEE4EEEEE4EDEDE4EDEEE4EDEEE5EFEFE5EFEFE5EEEEE5EFEEE5EFEFE5EF
+      EEE5EEEEE5EDEEE5EDEEE4EDEEE2EDEDE2EDEEF6FDFEABB4A7353C1A4A562B50
+      592E5A61315C652E5F6A428A9786545D50394738465641414F3E526151869285
+      8E988B909D90A2AEA574827347574562766990ACA59AC0BDB6D4D4E0EDEED9E6
+      E4DEEBE9F4FDFE7585780C1E143B5343203728406156E5F3F3E7F2F2E0EDECF7
+      FFFF93A49A091E10354E3F26392B1F3A2DD1E3E0F8FEFFDDE7E872A397529987
+      56998654937F5E9C8E58978D5391845C9A915E9C9669A6A270ACA76AA09D70A3
+      9D629A9688B8BE86B3B972A6AC76AFB36CAAA970AEAC7DB2B885B2B987B6BE88
+      BAC491BCD292BAD694BCD899BDDBA1C0E2A6C4E397B9D28AA8C3809FB47595AF
+      6B89A75C7A8E5F8292668F9F648AA284A8C987ACD26E91B8597C9850717F4B6E
+      7C406464446A653F5E5B2B423D4D6F69678F8D4265613B5A503A5C5144635A44
+      695E365B4F3B5C4F3C5B4E3753463F5E5239564A3C564E3B52493F5A503C5A51
+      39554A3C544B394E43344C3E3D59503C56512A41382640323156463B5D51334D
+      433D594F37544648695B5F7E764461573350463955493854493652493B564E3B
+      524835504432504528463C325247213F341E3529304C3E4162585C807C63898B
+      496E6A55766B59776F5B7E72729086627D7340594F4862574B665E415B52475F
+      565C756D66817A64867D5E787173877691AC9D90AF9D9BB9A787AA97C5DED4E2
+      F7F2EBFAF6F6FFFFFAFFFFECF3F0EAF6F0EEF9F8E8FBF8E9F0EBA5A9A55A7766
+      526C5F50685A5B7465526E625370615C70634B61584C695E4B665E4461574361
+      5644605445685A417061487868416F60325C4E333E2C3C412C4B4E375256384B
+      51324A503160563D5A5633545536504C3641442420240F2626213739273C3B22
+      3A3A25393A243A3F24313A252E351D31331C31341F2F3323282F1C2629152023
+      132A281C3C3D2D494838444732534E394C51354A45242D301A3F3F2B3F452544
+      432D44472D43443148452C48452C4B492D52453142412C35393451565548503E
+      333F28393E294043378C8A919D9F91A3A991A4A890B0B4A2B0B19CADB4A9AAB1
+      A0ACB09FA1A590A5ACA097A08F96A193929B8F909A87828F80848F848E95754B
+      55538A8BA9C1CACBBFCAC8CDD5CCEBEDE4F7FCF5FFFFF5FDFEF3F1F2E4D1D9C4
+      949E7754634A646E55101506171F1C26332451635B677766697A686676646771
+      5F657164677160636D57646E5B5863534553453C46427E887F8093847C8B6C38
+      423251524F52594A49513E4B543F50574B545D50565E535E6856677366677466
+      7D8B7EACB4A7A2AA9559654F5B5E487B7D696F6C57383A2354564A6D7162585C
+      43504F3A44412D3C3A272528153032213739272D2F1F1F301B242D1D222A263B
+      463E414A3F444B373640363546443240452E3A40303E3E3C413147423641442A
+      3C3F252A2C162F311D3130253136233E3A243A3D253B3A28393A28333523302F
+      1E2D2F1B2E35246A776B5E655E5C65625A6D615C705D556861576B5B54655862
+      71695C6D605162564C61566273665C6E5D616E5D5A665D6271666774655F6F63
+      50594C5864565B6A605769545E6B5F4A6156576E60556658606F5E5062555F6D
+      5F5869595966564D63535160536171625C6D5A606C5D5463526370625F6D5E57
+      6462596C615466566276625F6F5F64736254665658685A6473615C6C5B5F6F60
+      475B4B5E6F606271615769595A6D5E4D5F4F637062666E5F5C6F5B6171615366
+      5661716163735F63715E6071595266595B6D615C6E624C635755685B475C4F5F
+      6F63626F5D5C6D5A5B6F5F566455606F60606F63607061647666515D4F5F6E60
+      62736261705F5E6F60566959586A5764705F5F6C60616F62976917201B161E17
+      151E16151E16121A1311180D11160D161E2630427D4C66CD526DDC5573DA556E
+      D95A71DA5E77DA5A74D75B75D85B75DA637DE36079E25A75E2627CE76681EA6A
+      82EA6A83EB6C85EA6E87EC6E87EF6D83ED6E88F2405DD8314AB9415DBE3E5EBF
+      3E5DBE445FBE435FBD415FBC4160BD415FBA3B57B13752A83A51A4314898324D
+      A63752B4344FBA2943AB243996293FA72740B62239B01C34AA1A30AA1C32AC1F
+      34AA1F35A61E33A52033A51E31A21E2F9F1C309B1D309B1D309A1F329B1E339C
+      23399F2F47A72D46A3344EA83D56AE415DB23955AC3651AC405FB75274C55C7E
+      CB6082D06386D26286D4698DD86A8FD96B91DA6B91DA6990DC6C91DE7C9CE790
+      ADF58EACFA8AA8FB8DABFC90AFFB8FADFA8EADFB8DADFC92AEFD90AEFC8DABF9
+      8EAFFB8DACFA8FACFC97B6FE8EB0FA8AABF887A8F688A8FA8CABFB86A4F68AA6
+      F88FAAF987A3F587A2F582A1F587A6F98CA8F687A5F98EA9FB8CA6F98EADF690
+      ADF889A8F688A5F886A4F884A3F684A3F58AAAF689A6F686A1F587A4F47D9DF5
+      86A5F68AA8F582A2F27B9EF17299ED6690EA799EF17EA3F180A4F1759CEF759A
+      F180A4F385A6F17DA1F0799DEF84A1F288A9F384A6F182A4F182A4F189AAF482
+      A2F181A1EF80A2F085A8F186A9F07DA1F080A0EF7CA2EE84A6F186A6F180A3ED
+      86A8EE85A5EB7EA2E97DA1E6789FE3759CE3769CE1769ADE6B91DA6E93DA648E
+      CD3C609F334C7F3259602F5F402E5E3D2E603E2C603E2D603E2D61402D63402A
+      613E2C63412E68432D6543326645356C4B396E53366E4B336C48356D4A366F52
+      3C63542F5D3E2E68452B603E215A322B5F4FCED9DCF6F4EFE6E9E7EBEDEAEAED
+      EBE9EDE9E8ECE9F7F7F5C9CBBFCBD0D0FBFDFAF0F1EEF6F8F5E9EBE1A3B1A9AC
+      B6AFBFC4BFD8DBD2E3E2DEFAFAF5E5E7DDB8BAB2878D8C969C9DE8E8E8FCFCFA
+      F0F1EFF2F4F1F2F4F1F2F5F1F3F4F1F4F4F2F1F3F2EFF3F1F1F2F2FEFEFEC8C8
+      AF4547375B64628A939178838565747C56666D475B60809BA9C6D9E0ABBDBFA4
+      BABFBDD1D8C6DADBBBD0CFC2D4D7D6E5E4D3E3E4D2E2E4D4E3E4D4E3E4D5E3E4
+      D4E4E3D4E4E3D3E4E3D3E4E4D4E4E3D4E5E4D5E5E3D6E4E4D7E5E7D6E6E6D5E6
+      E7D5E6E6D5E6E4D8E6E4D7E6E4D8E7E6DAE9E9DAE9E9DBEAEADDEBEBE0EDECE1
+      EEEEDDEDEDE1EFEEDEEAE7DCE9E9E0EDEEE3EEEFE3EEF0E3EFF0E4EEEFE2EDEE
+      E1EDEEE1EEEEE3EFEFE2EEEFE5F0F0E1EFF0E0EDEFE3EFEFE2EFF0E2EEF0E2EF
+      F0E3F0F1E3F0F1E5F1F2E5F0F2E4EEF0E5F0F1E5F0F1E6F1F2E5F0F0E4F0F0E4
+      F0F1E3EFEFE3EFF0E5F1F1E5F0F1E6F0F1E5EDF0E4EDF0F7FDFEA7AEA2252911
+      39411F3C452443492540471F465134939C8E5355472C372532412D2B38284452
+      438C998C929D95909C92A1B0A58E96864B51415662555C68594B5B4F9AB2ACEB
+      F7F6D6E5E2E0ECEBF4FCFD8C968933412D50634E455241576858D4E7E3E9F7F6
+      E0EDEDF7FEFF9EACA32433214659464451413C4A3DBED5D2F6FEFFDCE6E6819D
+      9688AC9FA3BDB2B8CDCCA8C4E4A1BFE4A6C3E4ABC1E9AFC8F0A6BDDDA7BDC1BB
+      CCD3C4D5DBC5D7EAADC5EDABC7F1B2CCF4B3CDF5B4CAF1ABBCD3B7C9D4C5D5E2
+      C8D6E7C9D4EFB4CDF5B1CFF9B3CCF5B0CBF6B1CDF8A0BAD6A4C1C8A7BFCC94B0
+      B88EACC77DA0CB6B90B16D90AF7699C0779DBD7B9C9D709791618281607A8049
+      6E723A645D4F757C4D7078375349324B3F45685F567D786489865776723C574F
+      466558506A5B546B5E4B6D6240665D3854483C554939574A446157435B523B59
+      503B5B5237564A3D5D533C57503C554A3854492E4C41304C41314E43324F423B
+      564E314B413450454D6E665A7A7841636036544B335044344F46324B423C554B
+      3B534A354D44304C423450443C574E2C4B3F2B4A3D325145264036293F333C59
+      4939564B36574E496F65476D62557D77648B8B668B88496A644D6B6555756A47
+      685D52746E6A908D7BA4A082ADA86D888378907D9AD1C094D8CF8CD0CB7EBAB2
+      7BB1A67CC2B88ED5CB8DD5CAA4DAD3B0DCD699D7D096D4D28DD2CAA8CDC87D8D
+      864F7869456C615175635070633E635A3F655A496B6145685F496C6445685F45
+      665E49685D4466583F6B5B3863553A66553B695639635239483346422C52503C
+      4B4F37504D2F474934474C2F3A401E3E3E22393D222F3A1B171B061E2016272A
+      1D28331E26301927321C222C1B1E271A21291A212B182027181E2A1A18221619
+      22131A1E13282A193A35234D4C324C4B3351523A4D53344B4D2533311D46442F
+      43432844462A40452844462E474830484A314A49304B4B2D434729313727474C
+      49737D71727D60384126384031737D725F6D5461644F6169516E74647C816D7D
+      8571898F78828A74828A749CA191B3B7A9BDC2B5D5D8CADDE1D6EEF0E9F9F9F2
+      F8FAEB61655FC8C8DFFDFDFFF3F7F3E7EBE3D0D5C9C3CAB8B6BEACAAB3A5AFB7
+      A7B7C1AFBEC5A4727960505D3D1B2214272F262634284F5D546A7868727F6A6B
+      77686973656671626971646A706064705F60685148544F4C534F6F797D7B9086
+      889775414737454C4A88887D8888748A917C9DA397A3AA9BA8B1A2ADB3A4B6BB
+      A9B6B9A8C0C3B9CAD0C5CFD3C5E1DECA989A83747C63575D42313A21343C2F3A
+      462E343A24383F2F393E2D4148345359445756413E3B272B2C1A19211620261B
+      2531253B4B3D424D3E3E46353C4C3E303D4B2039572133551F3545343B303740
+      303D432D3C41282F321C2A291B323226373824322B1727261628261624281922
+      21141E1E131B1A0D151D15767D7A5F6C6150625A606E6858715F556962596D5E
+      576255656F6A606F6354655A4D5C5D6774685B6F5F576C60576A5D6474635C6F
+      616271654C5C4E5B695A5A6D5E596959606C6055635E6171665A66605C6C5E55
+      68545F6D6255695D5468595562534B5F515F6E615E6C5B5C6F625565525B6F5B
+      606E605B665E60716653665562765E667364627165596655516556607064606D
+      61616E5D4B5E515C706061715E5E6A5D5B6D5D546250666F62646F625E715A64
+      755F55635460705F5E735F60715E5E735F5264545F6F635F6C64515E545E6B5F
+      495B4C5F6D5B65705E5C6D5F5E705F5863535E6F5E6571616370626271665261
+      51616F586273636170616373615C6B56596657677362616F635F70600000161E
+      17141B15151D16141B16131A161218161118140E140B1217152532583B51A04D
+      69CB5577DE536FDA526DD95973DA637CDC617CDB5F78DD637CE15B76E05A75E2
+      627CE7657EE86780EA6B81EA6C82EA6F87EC7990EF6C87EE3C59D5314CBE425E
+      BE435EBF3E5AC13D59BF3F5BBF3F5CBE415FBD435EBA3F5CB63955AC334CA534
+      4BA73149A92F46A62A42A22D47B42C45B82741B02640B5233CB61E36AF1C31AB
+      1E32AC1F32AA1F33A91E32A71F31A52032A41F32A21D319F1D319F1C309C1C31
+      9C2035A02A42A62D48A5344DA73E55AC3B53AB3C5BB13A55AE3A53AC4260B655
+      77C66083CE6587D26A89D46588D3668AD8668BDA698ED96B92DD6990DE7295E2
+      7B9DEA88A5F48AA4F98EAAFD90AEFD91ACFC8EAAFA90ABFA8EADFA8CABFA88AA
+      FA89A9FA8EAEFB8EADFB8EADFA8FADFA90ACFC8CAEFD8AAEFA88ACF889A9F691
+      B1F892B0FA8DABFB84A6F987A4F888A4F884A1F585A2F591AAFA8EAAFA89A6F9
+      92AFFA96AFF891ADF989A9F588A8F688A8F688A8F68AA9F58CAAF58DAAF98CAB
+      F58DACF989AAF87E9FF281A3F384A4F2749AEE799FF186A6F27EA3F07EA3EF77
+      9CF1709BF07DA5F588ABF482A2F17D9EEF8DACF588A8F485A5F286A8F28DACF4
+      86A6F17C9EEF82A4F17D9FEF7EA0EE84A6EE7C9FEC84A3EF82A6EF80A4F085A6
+      F085A5ED80A2EA87A6EC84A8EA89ABE4769CDE7398DC7298DB6C92D96C92D26F
+      96D0426BAA37548B385A6C2F65482E633E2F613E2E623F2C63402F63402F603F
+      2F5F3D30623D2F613E2C63412B65432D664430694932694F336D4A346F4B3470
+      4C3874523E635036694836745039734B2E683E376B57D0DADCF6F3EDE7E9E6EA
+      ECE7EBEDEAEAECE8E7EAE6F3F6F2C8D0C2C5CFCCF8FAF5F0EFEEEFF1EFEBEEE9
+      C4C9C5D2D8D9F6FCF9FDFFFFFFFFFFFFFFFFF8FBF8EDF2ECEBF1EBFEFFFFFFFF
+      FFFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFCFAEDEFEDF1F3F1FD
+      FDFCBABFAB63716078827E858D88778383727F846E7C80606F7591AAB6C2D5DB
+      B4C5CBB0C5C59BB2B4C1D3DBD1E1E2D3E1E2D5E4E4DAE4E0D9E4E2D6E5E4D7E5
+      E6D7E4E4D6E5E4D6E5E3D5E4E2D4E4E3D5E4E4D5E4E4D5E4E4D5E4E4D6E5E4D9
+      E7E6DBE3E0DAE5E2D9E7E8DAE7E8D7E6E6D8E7E7DAE9E9DAE9E9DCEAEADCEAEA
+      DCEAEADDEBEBDDECECDBE9E8E0EAE7E1EDECDDECEDE2EDEDE1EDEEE2EDEEE2EF
+      EFE2EEEEE2EDEDE3EEEEE2EEEEE2EFEFE4F1F1E3EDECE0E9E7E2EDEEE5F1F1E4
+      EFF1E4EFF1E4F0F1E3EFF0E3EFF0E4F1F1E3EFF0E2EFF0E3F0F0E4F1F1E4F2F2
+      E3EEEDE2EAE7E2EDEBE3EFEFE4EFEFE3EEEEE5EDEEE4EDEDE4EDEEF3FCFDB5BB
+      B1565C4B696F5F6F786579806F777D6E96A095CED6D3868B7C5F6B56737A6A79
+      8171828E7C909D8F8E9B919BA89FC5D2CDDCE7E4D2DDD7D1DCD5D1DDD6CFDCD4
+      D9E3E0E5EDF0E4EEEFE2EEEFE1EEEFDCE7E6D9E4DEDAE5E1DEE7E4DCE4E2DBEB
+      EAE2EFEFE0EDEDE3F0F0DDE9E7D5DED9D5E1DBD9E4DDDBE2DDDBE8E9EAF7F9E2
+      EBEA424F422C4535425C48A1BBBCC3D8FDA7C2EFA8C5EFA7C3EFBAD7FF879EBD
+      213A2A445F4E334E3DA3BDC4BFD5FBA2C2EDA6C6EDA6C6EFBDD6FF6478882841
+      2D4663524F7360BAD2E4AFC9F0A6C6EEA5C4EBA5C6ECBAD5FD6078892B513A49
+      6E594A6A5B82A5BD80A2CE7B99BE5E809A6F93B77DA3C5486E6B4A6F61507365
+      4A6B643C5C575E82965F86A53C60654765683B57503E5A5147696365908D5A77
+      75496659476557546658536D5E46665A334E45324E423B534749645849655938
+      524938544B3E5E523B594F3955493D5C51395149314A3F304E422E483E304D42
+      3A5448324B3E3F5D5339514A2D49403E635A3A5B53354F433A53483D5A523956
+      4C3350463350463A534A364E46304E4236544B2C4A3F314D3F39574A37554833
+      514534524537554834564C38554F39564B36574A2E4E4138594F416258436157
+      3F5E53415F55405C533D5B4F47685D45685F516D5F596F604368573D6556345B
+      4E39574C465A4F4F695655715F526C5A586E5D576F5F496454495F5242594C51
+      695F4B615A3E4F493D514E3A524939514B3B4F483C5147425B534056523D5553
+      3F5956445F5A3F5C543C60543B6455396855437F6A42806949816A3342303F3D
+      314C4F3955543A51512F4B5133605C415B563E53563A555734484C2A1B20081A
+      1E1828312431321D2E30162A3016282B16252B19292B1A2F2B1B2B2C1B292A16
+      2525162323141D1F1420241639392547482F44492F494D38464C30424626322F
+      1E44402D48452D4B462E45442A464629464A2E4647344749314C4C2D4446282F
+      35244546418A8F88949A895A63433E433676797D9CA496A2AA91AAAE93B7B4A5
+      B8B9A8B2B9A9B2B6A8B5B29FA6AA95AAADA5A7AFA4A7AB9BA0A49898A3958C98
+      8C889389939C814F5F536480A2B2BDC3BBC2B7CAD1CAE6E9DFF9FAF0FDFDF5FA
+      FDF1EEF3E8D7D8C79BA383475B3F6678591012061D281921352A4459586B7A73
+      6D806F6C79666C756A6671625F6F5A5A6359666E605C6858535E57404C406E7D
+      6D7B8584818F72363C33494F4C5463503D4B3E445041555F515C66595C6B5A6B
+      796B757E7173807499A595A7B1A5B8C5B6D3D4CEE5E7E4E2E7E3D6D6C44C523C
+      4B554A6B6F585757443E49314346323C3E29393A283C3D2B41422D32311A1F2A
+      1C263028272C26425249475343464C3E404B413647473C4B4B3C4D522F3F3D42
+      462F3E432D3D412C45462B403D263B3D2A2E341F3A3A233336233A3923353923
+      32341F3033232D321D282D1A2A302A6C79715C6B5E5666585A6D665F7161586B
+      635A6D634D635A657563646E655466594C605866716C5C6E605A6E60556A5E62
+      7163607163607164495D4E536A595E6C5F5366575F6E625665555E6B615A6660
+      5F6E5B5868555C6D615A6C5D59685D5364584D5D4F607361586A5D5C6D605263
+      515F705E5E6C6059695B586C5D59695A677462606F646773685A6B5F5A685962
+      745E5F6E5E606F604A5D535C6B60637365596D5D5C6E624F615062756463715F
+      60715A63745E57655A626E656271646370616571645563565F6E655C6D625560
+      58606D5F485B4A5F7061616E5E5C6D615F6E65536155626F645A6F5F616E6162
+      746656665B607162667363646F625E6F645A6C5859655A6771645E6C6060735F
+      9769161E19161E19171E1B171E1C151E1B151E1D161D1E161E20131B1A121918
+      161E2C263560405BAC4B6AD0516DDC556FDB5B75DB6078DA6078DB6A85E26981
+      E2647CE36178E35F75E46078E4647DE86C85EA6B82E9748BEF6F89ED3E5DD33C
+      57C14A61C44962C44463C44262C24360C0405DBF3F5CBD3F5BBC3C56B83954B2
+      364FA5304AA32E48AB314AB32A44A8243E9F2A44B02A44B92A44BE263FBC2139
+      B41F35AF1D33AC1D30AA1D2DA91D2FA81F31A62030A61F30A31D2DA01C2FA01B
+      2F9D1C2F9C263DA62D45A92E47A63C52AC3E52AC3954AC3854AE3954AE3F5EB2
+      4C6CB9577DC66688CE6C8AD26C89D46788D46689D86288D86B8FD96993DC6992
+      E07598E67D9FEB87A4F58AA8FB91ADFE8CA9FD89A9FD8FACFD8FADFD8FACFC8A
+      AAFA8CACFA8FAEFB87A6FA80A2F886A5F989AAF888A8F98DACFA8DADF889ABF8
+      88A9F682A5F47EA2F47897F07E9EF387A1F58DA8F98AA6FA88A4F98AA8F884A2
+      F68AA8F68CA9F688A3F486A3F486A4F58AA9F489AAF58EABF985A4F584A5F58D
+      ACF686A5F488A9F580A1F27D9EF184A2F188A8F487A8F48DABF482A2F1789DEF
+      87ABF380A3F0779EEF84A9F384A5F17C9EEE88A9F185A5EF85A5F288AAF386AA
+      F285A6F17DA0EF7BA0F080A2F07EA3F0739BEE7DA2ED84A3EE82A4EC81A3EE84
+      A2F180A0EC7EA2EB81A3EC7EA2EA88ABEA7EA2E07298DC6F96DC779ADC6E93D4
+      7097CF608AC23D5F98364F71325B47316C422F6A402F683F2E6541306B45316D
+      45306C44306B45316C47346D4A346F49326F4B316C4A356D52346D53336D4E33
+      6E49326F46397753446A573B6F4F3A7E56417F5B37794C457F68D3DDDEF4F3EE
+      E8EAE7EAECE8EBEDEAEAEDE9E9ECEAF7F7F5CDD3C7CAD2CCF8F8F6EFF0EEECF0
+      EBF1F4F5FFFEF8AFB9A2647D74778E8B7C928B779189869B98899D9C7D969380
+      989C82979B7E9395849999869A9B84999F869A9D82999C788F95B4BFC6F7F8F8
+      F1F4F1FDFDFE979C883C443E61706C627575727F8679888E798688747E85A2B6
+      C0C6DADCC8D8DDB6C8C7B8CACBC5D6DAD6E5E4DAE7EAD9E7E8DAE5E4D9E5E4D7
+      E6E6DAE7E8D9E7E8D9E7E7DAE7E7D9E7E7D9E6E7D9E7E7D9E7E4D8E7E4D8E7E4
+      D8E7E4DAE8E7DBE7E4DAE8E6DAE9E8DAE9E9DAE8E8DBE9E8DBEAE9DCEAE9DDEC
+      EBDDEBEBDEECEBE1EBEBE3EDEDE1EBEBE0EAE9E3EEEEE0EDEEE1EDEDE3EEEEE3
+      EFEFE3EFEEE2EEEEE3EEEFE5EEEFE4EEEFE5F0F1E6F1F1E5EEECE4EDEBE5EFEF
+      E5F0F1E5EFF1E5F0F1E4F0F1E4F0F1E5F0F1E4F0F1E3EFF0E1EDEEE3EFF0E5EF
+      F1E5F0F1E2EEEDE1EAE9E5F0EFE6EFF1E5EEF1E5EDF0E4EEF0E4EEF0E4EDF0F2
+      FBFEADB9AC616D6185908789968897A199BDC9C6E5F2F2E6F2F289968C6C7C6D
+      8491848E9A8F8E9B918F9B8EACBAB0D2E0DEE5F1F3E2F0F2E8F6F8E7F6F5E8F6
+      F8EAF7F8E5F2F2E1EDEEE2EDECE1EDECE0EDECE9F3F3ECF7FAEBF6FAEAF7FAEA
+      F7FAE5EFF1E0EDECE4EEEFE2EEEEE6F4F4EDF9FDEBF7FAEBF8FAECFAFAE9F2F2
+      EBF7F8E1EBE848554C35433A3D50446D8E93ACCBEEA0C0E99DBDE49EBDE7B2CF
+      FA879DBA26352D404F422737297998A3BAD4FCA0BEE9A1BFE8A2C0EBB6D2FC69
+      7A8D22312437453A314339A1BED7AFCDF5A3C1ECA0C0EBA2C3EBB3CFF5667D92
+      30433A465F553E5E556C96A7769FC26589AA6185A45C88994B7880406461426A
+      58375E4F3755525B81935A859B3C62693F6871395A5E314843506C6450706A4B
+      6C694F6D6648695A4668574661553E5C52335548324F432C483C3B5347455F53
+      3C574A3B5349405A5247625A3D5951354F433D5A4E405B53354E46354F462E4B
+      3F2542342C473E3D5B50456056456459415F55385348375449385247405B4E45
+      5E533F574E324A4136514936534A334F423153452D5246315347324F432E4C3E
+      3354463B5C4E3A5146384D433D5447384F403A54473550433954463C554A3C55
+      48445F513F594F405B4E425E4F455E4F4D5C5148594B4259494C5F545161584F
+      5F53485A4C475A4B5A6458666C60666D61696F62666D6060695A636A5A676A59
+      6A6F63616E6359695E55635D4C5E5D465A573F55504A594C5560555362584D5F
+      58475C594D625F4B615D445E56405B533F5D543E68593B705E3F71624775653E
+      4B363E3F3252553D4F51395050344545334B4B36414A284148263E4426374223
+      141B06161A0E20261B2228192228161F23161E221618201622241A2026152028
+      131C25151E2017172313191D16202119363724514B3A4A4D344B503C474D3447
+      472A3133223E432D45432E44412C4A463348492F494A344B49364F4931494C2D
+      494933313A283F443D8C918B919C7E3C492E3B40376973725E6B554C5640515C
+      4A555E525C655061685E646B5E6A705E656C5A6E776B7D8676909A89ABB9A0B8
+      C1B1D8DCD3ECEDEAF1F3E87B7E7DBBC4DFFFFFFFFFFFFFFFFFFFFBFCEFE2E7D9
+      C1C9B6A0A996919D8B99A593B4C0A0758263505D3A1B26182D352D253635425A
+      5E6D786C727E74707D686E77606A7566607162637059616854646C57585F5052
+      5C4E6F7871818D92BCC0B14A4B393D463B99A2939AA496A3AB98B6BCA9BCC1AE
+      C4CAB8CAD1C1C6CBB5C2C4B6CDD2C1CBD0C2C9CDC1CBD0C9C8CECBC8CDCA989D
+      84535E48575C5B3F4B3D3D4C36484F3F484E3A576149666D586063483B3D2523
+      29161E26171C251D2631243B44354A56494C564745503B434E3A474E3944493C
+      434A3843472E41462D454B34484D333C412C2B2C192B2F1A393A242829171F24
+      162326161C231318200E1B1E0E171E0D1A1E19777C8162665E53695B606D655B
+      6F625C6D645A6B684D645966756A6170635368584C615363746960745F566D5E
+      566D626773666573636173625263535368565C6C626265635E6F5A5162566470
+      685269585A6D605665595B6C5E54695956655B575F5D495F4F5B6D60596C5A5E
+      7365516155616D645E6D5E5468595E6F5B5B68556678645B6C606370685F6C57
+      5266545E73615F735E6271615162505B71605C70615C6D5E5F6F604C5F535F74
+      6164746164706163705F5566565F73625E70616273625C6F635565586270615F
+      6F605464585B6A5E4D5E4F6473635E70605A6D5F627161546256627060657169
+      5E6F63627361576855606F5E63755F626F606570635C6A57596B59647065616E
+      6064715F97691922201922231B24251C25281923281B252B1B252A1C262D1D27
+      311C27311A242D1A212A212A412F41784460BD4F6CDA516DDC5A74DA5974D85A
+      74DA667EE06781E26681E46781E76179E46179E66781E86C85EA6A83EC6D86EB
+      4363D73A54C8435FCA4564C84464C64361C34561C24562C2415FBF3C5ABD3C57
+      BE3D57BA3551B22C47A42D46A6304AAB314BAE2942A8233C9F243C9C2D45AF2C
+      47B82740BA253CB92137B32034AF2235AE253BB12741B52036AB1F2FA71B2CA5
+      1A2AA31C2CA02237A32840AA2740A72D47AB334AAB3950AE354CAA3C56B14261
+      B53E5FB54161B65275C56586CD6787D26788D4678AD6698AD8658BDA668FDA62
+      8EDA6A92E0749BE47398E984A1F686A6FC88A6FC8CABFE8AACFD8FAEFD8FAEFD
+      8DAAFC8CA9FA8EACFB8AAAFC7E9FF681A2F58CADFA91B3FC8DAFFB8EADFA88A8
+      F97EA0F581A5F97B9EF5799CF3779AF07B9EF285A2F686A3F984A1F988A5F986
+      A6F982A2F589A4F2829FF188A8F687A6F57E9DF186A2F18DABF58CA8F685A4F3
+      82A4F486A5F47D9EF187A5F387AAF586A9F584A4F287A8F284A4F087A5F387A8
+      F289ADF58FAEF386A9F181A5F180A2EE7E9EED84A2F189A9F187A5F185A6F278
+      A0F077A0ED7EA3F080A1F07DA1EF80A3ED88ACF27EA5F1729CEB7BA2EC7DA1EC
+      799EED749CEA739BEA7BA1EB80A2EB7EA2E7799EDE739ADD7499DE7298DE7299
+      D86F96CE658EC3456AA238547A35524E356044356E47316C45306A45326C4832
+      6C4A316C4734714B33704C366F52376F53397150386E4F396D53376D55376E54
+      366F5437735038734F3975553D695734634B34705338705532714B437C69D5DF
+      E1F4F4F1E9ECE8ECEDEBEBEEEAEBEEEAEBEDECF6F7F5D5D9CDCED3D4F8FAF8EE
+      F2EBEEF1EEF1F5F6FDFEF5666B410205001A2B1C1624141323111C28211E262C
+      1A263117262E15222C17242D1E282E1F292F1B28332028351C2936060F216D7C
+      91FEFEFFF0F2F1FEFEFF9C9F8534392C4D564B4453514A5C60576B6F6A7F8079
+      8F96BACDD9DCEBF1DCE9EDDAE5E9DEEDEEDCEDEDDCECEDE0EEF2E2EFF2E1F0F3
+      E1EFF1E0EEEDE0EDEEDEEDF0E2EFF0E3F0F0E2EFEFE0EDEFE2EEF0E3F0F0E2EF
+      EFE1EEEEE2EFF0E5F1F0E5F2F1E2F2F1E1F0F0E2F0EFE4EFEEE4F1F0E4F2F1E4
+      F2F1E5F3F2E6F3F4E6F4F4E9F3F4E9F3F3E7F4F2E5F4F3E5F4F4E6F5F4E6F4F4
+      E8F4F5E8F5F5E8F5F5E6F4F4E7F5F5E9F6F5EAF5F4EAF6F5EBF7F5E9F6F4EAF7
+      F6EAF7F5E9F6F4E7F4F2E8F5F3E9F5F3E9F5F3EBF7F5EAF6F4E9F5F3E7F4F2E9
+      F5F5EBF6F8ECF6F8EAF3F5E9F3F5E9F4F5E8F5F4E9F5F4E9F5F4EBF5F5EBF5F5
+      EBF5F6FAFEFEB8C0B45F6C567E8A7F9DA9A2CDDBD7EAF4F2EAF4F5E2EBEA8892
+      886B776B808F8084918194A097BFCCC8E0EBEBE2EEF0DCEAEBDDEBEBDEECEBE1
+      EDEDE1EDEDE2EDEEE3EFEFE2EFEEE1EEEEE2EEEEE4EFF0E4F0F0E3EFEFE1EEEE
+      E1EDEDE1EEEDE2EFEFE2EFEFE2EEEEE5EFF0E4EFEFE2EEEEE3EFEEE4F0F0E4F0
+      F0E3EFF0E8F7F3D9E3E3A3B0BDBCCADAC0CFD9B9CAD9B6C7DABDCDE2C3D4EBC1
+      D4EAC0D3EAB5C7D8B6C5D2BDCBD7BFCCD6B7C8D6B1C7E0BBD0E9BED2EAC0D3EB
+      BDCFE4ADC0D2B1C3CEB5C5D4B7C4D0B3C6D4B2C8DEC0D2EEC2D2ECC4D7EEB7CC
+      E1ABBED0A4BACC8CA8B6728F966C8D936B91A062899D5C85904F7873527A7554
+      7E7D395E5335513E617F745A7D83365D5B486F6F3B5E58234838334E44354D47
+      5A7E76607F7E40615A4060553F60523C5E5339564E37544B3B594F3755483752
+      45415A503E5B4F3C5449435B533A544F3451482F483F374E453F574C344B3F34
+      4C4035544628473924403437564B44665D6D938F62868538554E3D60543D5C52
+      38564A3750433A5247384F46374C44324A41314A3E364F423B5649344E452F4A
+      3E2E483A3B4C403D53453C5A4C375246425D4F3E57483C52464053474056483C
+      54463A55463C55483B4F46394F443452453C544A46574F4053463C5447435D4F
+      486052495C4F555F545B65595A66585E685D62695F606A5D606D5F5C695B5F69
+      596A75636571625B64586166595B69604D5E5B4A5C564C5E5B57685F5B736553
+      6A60455F5A466562486A6346686142635E3E615B476A66425F59345B4C395C53
+      4D7069414C3D3B3B274B4D37504D36524F32514E3559573A605939605B3A4844
+      24282B12181F0D161B0E161B0F212618272716262416282A162F2D1B312A1632
+      321C2E311B31311C2F2A1522240F1C1F1122201735362445463B3F49324F513B
+      4B4D3946492C3132213F412A47442F41442A3F432942442E4C4E3150482C484B
+      2E40472F4A4A3331362340453C898B858F9D7E5960373E41316F6B6D91988992
+      9780979E8CA2A89AACAD9BA7AE99A7AE9BA8B09DA4A99AB1B3A6B8BAABB8BBAB
+      B1B9A9B5BBAFAFB8AEB5BAAEBFC3AC576858758598E3E4E6D1D6D6C6CFCACDD3
+      C5DADDCFE3E5D6E5E8DCE5EAD9D7DECAB1BB9C5B624B6B75540F120922282327
+      2C2D4D53586D796D707F6A6D76656A78696B7A6869756866735F606E5D5A6854
+      5C645A5660506A746D8A959BA8AF9F3B432B454D40656E6156614B5E65566770
+      626974656C786C7682716F7C6D7481748A90848E998B98A398A5AEABACB4B4CA
+      CECADDDFCC656A5BDDDFEFFAFAF6848F6B515D3F4F573C4C503E424737363B27
+      373D252B331F262C1F282D252C2F28424C404752425260575A614B5F5E4F525C
+      47575745454D3D49503E4F523E50533B4B4E383F442D3F412C353821363B2535
+      3624333A243B3E2D3639263A3A2A383D283D3E2B33362F7C7E7F5A695E596B5E
+      5B6F625B6F605A6D635B6F64525F5E6573685F73635C6B5B4C5F506E7D6C6170
+      60596C5F5468616A756B636F6362706052634E5766595C6E615361605B736347
+      65575F6F635A6A5B586E605266575F6E5F5C6A5E53655D56635B4C5954606D5F
+      606E60617160506152606F5F5E6C5F5C6D5F5C6E5D5768596374666B71646571
+      635F6D5A536555667461616F616071644C5E505C6C60606F645A6A5A5C6D5E53
+      64556670636271625A6E60657360586556606F6261735E63735F63706255665A
+      6570645F755B5761535E695F485F505C7061607061626F6061735E566255656E
+      63666D616371626371605B6A5E616F5E62745B6070635F6E5E5B6B56586A5860
+      715F64705F64716200001F272D202930202B33202B36202B38202D3B202B3A21
+      2D3D212F3F212F3E212C3E212D40212B3B202A3C283759394B914861C54D68D9
+      526CD9536BD75B75DA647EE06681E16980E46780E6667FE4657EE76D86EA6C86
+      E97289EC546EDE3D5CCD4C6ED4486CD04062CA3E5DC64361C54461C33E5BC03D
+      57BE3B55BC3751BA344EB8344EB62F48B12840A620369220358F273E9D27419B
+      274196334EAB2F4DB62B47BA2D48BD314DBE3854BF2F4CB9304CBF243FB32C44
+      B53A5ABF304AB6253DAE253FAB253FAC2943AF2C45AC3047AE364DAC415CB451
+      70BC4463B54261B64461B85071C46185CE6688D26989D5698AD66B8DD9668DDA
+      638BDA618DDB6D93E17398E77297EC7DA0F888A5FC87A5FB8EABFE90ACFD8DAB
+      FC8DABFD8FACFB93B2FC8CADFC85A2FA85A5F996B4FC92B4FB86AAF984A4F98A
+      ABF992B1FC92B2FD82A6F989A9FA94B0FB94B6FD8EB0FB87A8FA789FF57B9BF4
+      7D9AF27B99F4809FF5819FF485A3F585A6F58AA9F58AA6F488A6F582A0F27998
+      ED8CAAF591B0F586A5F281A0F18DACF591B2F58DAEF68CAEF582A3F084A4F386
+      A8F489ACF381A3F17D9FEE87A8F182A4EF6F97EB80A6F282A3F188A9F184A4F1
+      779CEF7CA0EE86A9F08AABF182A3ED82A4EE87A9F18AABF1789EEB779FEC7BA1
+      EB7CA0EB7B9FEB749DEA78A1EB759BE87DA1E7799EE3779BE37298DF7499E180
+      A3DF739AD56C95C73B5F9A2D4A772E5652325740345E47366B4C3062442B5F42
+      306647326945316847356A4B366B4A326647346849336648386A4F3A6C523569
+      4C32694C356D4E34664B396A523B6F54375F4E2F56443060492A5E462B5E4141
+      7368D7E1E2F7F7F3EBEDEAECF0ECEBF0EBE7ECE8EEF3EFFFFFFFC3CBBAA6B3B6
+      F6FAFAEEF2EBEBEDECE6E8EBF9FAEF626A4007130A17311B1527161729191828
+      1F1A2628182729162924172A2717292A1A282A1B2929172B2A1D2C2F1C2C3006
+      0F1B6D8090FEFEFFEBEDEDFFFFFE9DA08E354039546353545C524D5754445052
+      445251495C6198B6C3BFDBE3BAD1DBBED5DABAD0D2B9CED2B6CCCEBAD2D5BDD4
+      D6BAD1D3BED3D5BFD4D7BCD1D5BBD1D5BDD3D4BDD3D4BCD2D3BAD1CFBBD1D2BF
+      D3D7BED3D6BAD1D2BACFCFBDD2D4BED4D7BED4D6BED4D7C0D4D8C0D7DAC1D7DA
+      C4D8DBC4DADDCCDEE1C9D9DCC3D5D8C1D6DAC6DCDEC8DADCC4D6D8C4D5D8C2D4
+      D7C5DADCCDE0E2CCDEE0CBDEE0CCDEE0CCDEE1CDDEE1CADEE0CADEE0CCDFE1CF
+      E3E4D0E3E7CFE2E4D4E6E9D8E9EBD1E4E4D0E3E3D0E3E4D1E4E4D0E3E4D2E4E4
+      D2E4E4D2E4E6D1E4E4CFE3E4CFE3E4CEE2E2CCE0E0D0E2E3D1E3E3D1E2E2CFE1
+      E2D2E3E4D3E3E4DEF0F1A5B3AA6571629EADA6E2F0EEF1FDFDEDF7F8F1FAFDEF
+      F7F69096886C7769849185A5B2A9D3DEDBE5F3F3DCEAEDDBE8E9E0EDEBE1ECEC
+      E1EBECE2EDEDE1EDECE2EFEEE3EFEFE2EEEFE2EEEEE2EEEEE2EDEEE1EDEDE2EE
+      EEE3F0F0E3EFEFE2EEEEE2EDEEE3EEEEE2EFEFE2EEEFE2EEEEE2EEEEE4EFEEE5
+      F0F0E4F0F0E4EFEFE5F3F1D9E6E3D1E2E0EBFDFFEAFAFCF7FFFFDEEBEAE2EEEC
+      EEFAFAE9F7F5EFF9FADDEBECEEFAFEF1FCFFF2FDFFF1FAFED7E5E4E9F6F5EFF9
+      FBF0FAFBE8F3F4DCECEEF4FFFFEDFAFFF6FFFFEAF6F3D5E4DFEFF8FBF1FAFCEC
+      F8FAD3E4E4D0E3E2ECFAFEDAF0F2B8D5DA8FB2B5658B836E9993608A87597E78
+      5378754D70695C7E7493B8B3B7D9DD52746F34564B40655D466158405F53375E
+      533C5F58446E655A87834165593D564E405951415E52445E54426157334E4430
+      4C3F45685E4059523E544A3D5A503C564E37544939574C32474033473D3E5749
+      365042325042314C402E4A3F2E493E29453A264337375A532D4F473150443E5F
+      543A534A394F4739564E3B5C5139554841594F384E45374E4733493E374E4239
+      4F46334A41324B404C6052465A4B3C52483D594E3B5749416052425F52435B50
+      465E52425A4E425C513D54473C4E42395047364E46384D44384F443C52443C51
+      443C53463C52444152455261545C6C5E636E60697360667164656E6061695865
+      6C5D6D75686A73655E66575F65585C6D5F566F654D69634C6A625276714C766F
+      42706546716B436564436C64416A633F63604062603D68604F7773435E5B395F
+      543B6059496F6B41544442422D54523952533C494D3640462B4A4C304B4A2F45
+      46293637172C2C122C311D263019232414191E141E1E14222011212515242416
+      2B2D1622231623291C242F182125161A22111C1F131F20153533244A4A39494D
+      364C4F3A4C4E393F493133372144422B403E2744412A46432A45463148442B53
+      4B3049492E4347324546332E2A1E3F3E378888858A997E48542F393D2F626966
+      66755D454F3B4D5743545C48596254576054626C5F656A5F5E685B6B77697782
+      748A9685A2AFA0B2B9B0D5DBD0E7E8E6F1F2E3878A789CA5C1FFFFFFFFFFFFFF
+      FFFFFCFBF1E1E4D5BEC5AE9DA88F99A6909CA693BFC7A781866B545C3C17250D
+      2E322429322C3D53596E776E707D6C67736567786D586C745266803F5F6F485F
+      655363535A6252535D4A6F77698287807B856C4A4E403C413D9CA199A5AF9CAA
+      B29FB6BBAEBBC1B2BBC1B0BABEACBCC2B0B5BAA9BCC2B4BEC7BABCC0B7BABBB9
+      ADB8B2A6B1AF7B90804A5B547D8B98AAAEA7C6CABED1DCC7939D836068516E7A
+      6352573E343924272C161F2618252824282D2A3A463B3C4B3E424F4149534347
+      5042444C3B45493A3A47353848313940293C412B323A223338223238252D331F
+      2831212A2A162E311C272D1D2A2B192828162229172229191E251A74807A5F6C
+      6150665E5B6C645F71625B6F64606E694C625A647669607168546C5D4D5C516A
+      766C6670685E6C5B5B6E5F65746665736662736251605353655B607161576C5E
+      5A6D5E4D645A5F7063576A595B6C5F5C665A606F615A6A5B566A5D55655A495A
+      545E6F61606E625F6E625165575B6E615B6D5F5A6B5D61715A59695365746566
+      71656374615E6A5A54665861735D62735D6571604C604E5B6F5F606E625F6E5E
+      6271604F60515C7163647365607061637360586555606F645F6F625F74626070
+      615368576274635E6F605264585970604D5E555B7362596F5F5F6C6261746352
+      655A616C64636E65637160667464586A57626D5F6C7366627160647062596F56
+      5B6A5461735E6371655F6F62976923303C25313D25323E253341273342273343
+      26334626344727344825334727344726354A25354B26354C24314526314A303E
+      6A3D52A64C63CE536CD8546DD85971DB6179DF5E77DF627CE2667FE3657EE463
+      79E46E87EA6C85EA607CE45876D9627FDA5F7EDA5171D74065CF4061CB415DC5
+      3D5CC23A57BF3852BD3954BD3853BC3750BC324BB9304CB72D49B02844A63351
+      B23756B63956B04161B53C61B43A5DB73C5FBF3C60C33C60C13B5DC13857C130
+      51BE3754BE4969C5486EC63456BE2946B32642B02A47B22842AE2D44AC3A52B1
+      3D59B33A56B43C59B4425EB74C6BBD597AC56587CF698AD36C8DD76B8BD8648B
+      D96189D8638BD8648DDB6E93E37598E97699ED7D9FF582A0FB82A2FA89A9FD87
+      A5FB86A4FD8FADFD8DABFD90ADFD8FADFB88A9FA92B2FD92B1FA88A9FA88A6FA
+      8FB0FA8DB0FA85A8F980A3F67D9EF582A1F586A5F987A4F986A5F580A0F481A1
+      F584A0F5809FF484A3F687A6F987AAFA89AAF984A0F286A5F585A4F1809FF084
+      A2F488A8F689ABF57EA2F188A8F58DACF586A8F28CACF58CADF485A8F37CA0F1
+      7B9FF186AAF38CACF187A8F17EA3F182A2F1779AEB79A0F07EA6F278A1EE87AB
+      F282A4F17EA1EF86A8F17CA0EB7EA0E88CA9EF7EA1EC87A8F181A2EC789DE97B
+      9EEB7D9FEB81A4EB789FEB7CA1EC779FE680A4E8799FE7779BE47DA1E4749AE2
+      789EE0799CD97DA1D54D76AB28437A2C47552C543F3859472F533C2F59423B5E
+      4441614136553C2F573E2B51382B513B365C4639593D3654383C61442E53342C
+      4E393C5D48436348395639415B473C594A3D634F375C4E416056536E57546D55
+      3D533A3A5454D1DBE0F4F5F0EBEDE9EBEEEBE7EBE8EBEFE9D8E2DAC4CECBCAD0
+      C4A6B4A9CED5D8EEF3EEDCE2DCE0E4E4FAFBF18D8A65464530585C4059574257
+      57455757435854445753435755445A57475B5A48595949585646575646595947
+      5C5947434038969FA2FDFDFDF1F3F3FFFFFE9CA18F3A47504D5E664C5B65515D
+      62515C5E4B5451424C46495A574C605A4555566175738E9999929E998A958859
+      5C4C6D776E939F9A8F9B91909A90919C91909A918D988F8E9A8F909B90909991
+      919A908F9B928F9A90909A8F909A91909C92929D91969F95949F988F9E978896
+      8B7D8A7F7C8D857C8B8577868086968F909F96919D968F9A95AFBAB5CFD7D5CD
+      D5D3C0C7C2A1ABA286988E8D9F9794A59F9BABA49DAAA09AA99F98A29D98A39F
+      91A19B84968D81968D879B9180958980938B98A9A49BAAA69AAAA29AA9A499A9
+      A297AAA39DACA6A2ADA69DABA59CACA3A1AFA49CADA59AAAA3A2ADA6A0AEA89B
+      ABA69BABA599ADA59DAFA8A3B3AC8999917E938DA4BCBDC3D9DCCCDBE3C9DADF
+      C9DBDFCCD9DC878F80899686C6D1CDE6F2F2E8F6F6E1EFEEE2EEF0E2EFF1E8F3
+      F2EAF3F3EAF5F4EAF3F4E7F3F3E5F3F2E7F3F2E8F3F2E7F3F2E6F3F1E7F3F2E9
+      F2F2E8F3F2E6F3F2E8F3F2E8F3F3E9F3F3E9F3F4E6F4F3E5F3F2E7F2F1E9F2F3
+      E5F2F3E5F3F2E6F3F3E7F3F1EDF6F5E2EBEACDDED9EBF7FAEBF7FBF1FCFFDDEB
+      F0E4EFF5EBFAFDE8F7FAF1FBFFDBECEDE6F5F6EBFAFBEAF8FBEDF9FEDBEBEAEB
+      F8FAF1FAFFEFFAFFEAF8FDE1EDEEEFFAFDEAF7FCF1FCFEECF7FBDAECECF1FCFF
+      EFFAFEE5F5F6DEEDEED3E6E6E0F6F9C8E4EA99C1C6678E8E648A83729F96638E
+      876D91924F6F6A85A59FA2C5C388B0B76D9AA2416C656083749DBAB27B9D9D32
+      504B3A564C51706A44666040635E3F5D5247645E45635D45695D486D6244645A
+      374E45324A3E3E5C513D5A4F3C5A5142635A3F5D543C5B4F3C594F3A51483348
+      3F3C564A3E5E5136524633473E3E534A2D483E2A463A3A57492F4D3F2F4D3E34
+      514432524638564C3E5C5331514535594B385A4E355448324E45314E46355348
+      385649304C42304D443352473654483C594C3A554C38554E38574E4265593E63
+      583F635A4063593C594E425A51475B4F445E513D5D563E5A4F4456483E56493A
+      5C523C574F365148405E5542655B3E64593D655D426961506D62596C5E596B5E
+      5F6E60697666606E634F5F545F6B60556961496C664B766F4C7571517973517E
+      764A7772406B69456F7146656B476C6941686242605F4762614269614C787347
+      6A684065634A6C6A466A6642594E393C2A494B344B5138464C35414936555139
+      55522F5A5C35353B182328112B2B18343725373B254447325451354A43224341
+      24403F2539381A292D17202916292D1A242A151F2411191E112423183A3A2840
+      432E4146314C4F384B4C3848502F312F1C403C2346442B44462943462848432B
+      464C30494A33484A333F482D4244343B4033383B2D888B87909C7C58643F3C42
+      305963609BA19790957E969D899EA398A6A999ACAF9BA8B0A0A8AD98A8AC95AD
+      B1A8B4B9AABAC0B1BFC2B7C0C5B5BEC3B7BCC1BDBCC7AF606B5B6C7784E3E4E7
+      CAD3D0C3CAC3CBD2C4D7DCCEE1E4D5E6E7DBE5E5DBDCDFCDB7C1A554634E6E79
+      59171A0D222A22273524394442737D74666F64646F686675743E516D59719648
+      628132495B536056585E4E4C5742888B7E84897D626E553C46343F473D636F61
+      525A49576250606A60646E616675666D7A6D707C6C74806E818F7F8A998B9CA4
+      9CADB8B2BEC5C3E7EAEBFFFFFF69706CBFC6D4F9FAFBE9EEE4E2E7D4DEE3CB7E
+      876C4D5A3E3F4731434A3432372528352931362E2228273F4E47465045575E57
+      54665659695A546357545D5050574549553E48503C414B35474C3344492C3C40
+      2E33362129301F3B3E29403F31464539454934454A363C4028393E2B3A3D2E72
+      797159666555686357665E6275685F706062716550615D63716B65746A536B5F
+      45565265756A627563576A5D596C5F6377646371695F756A4D605352625F6675
+      615A6D5E56695D556B5961715D586C5B586D5F556D575A6C605B6F5F52685B51
+      6A5A475F505A6D60596D5E617061576654616F645F6D615C6E60647666556458
+      6374656373616975685C6D5D55645462756063755D5E756352634C5E6B616370
+      5E5E6C5D656E62535E4F697461647360616D6264746257685362716063735E62
+      735F5F7360566656607061647365516559586E5B5464585C6F666070635E6F63
+      66736353635260705B62745F5F6F616271645B6D5661705F63715F5F715D6474
+      635C6A5E5C6A5A5F7360616F6264716597692935452936462B374A2C384B2C39
+      4B2B394A2C394F2B374F2B3A512938502938502C39522C3A542A39582D3B5A2F
+      3C592A37512E3B613D4F9C4B65C9506CDA546DDA5A73DA5E77DC5973DC5A75E0
+      6982E4637DE36078E46780E76680E8617EE16380DA6788DF6081DF5678DA486E
+      D53E63CD4163C93E5FC43B5AC34061C23F5FC23E5DC13B5BC13C5EC34061C440
+      62C43C60C33D5FC13E5FC34163C14164BE3D63BE3C5EBF3D60C13C5FC13B5EC4
+      3A5EC3395BC53453C3314EBC3554BF3050BD2D4AB82A47B6233FB0233EAF2840
+      AF263AA92C42AC3651B73C5CB84061B93F61BD597AC96C8BD06A8BD36A8BD569
+      8DD7668BD96189D75F87D8698EE07396E77597E97598ED799BF57697F67DA0F9
+      81A3FD85A4FE8EACFE92B1FE88A8FB89ABFA8AA9FA8EADFD8DB0FD89ACFA88A8
+      F98DACFA8AABF684A4F584A4F686A8F88AAAFA8AACF982A4F885A2F884A3F584
+      A2F88CA8FA8CAAF88AAAFA89AAF686A5F589AAF988A8F88EAAF887A5F684A3F4
+      89AAF58FACF88AA9F586A8F388AAF58DACF586A9F586A4F586A3F586A4F286A5
+      F384A5F487AAF58CACF38AABF189AAF284A3F180A3F27CA3F184AAF1799CEC86
+      A5F187A8F17DA2EF7EA1EE7D9FEC6C95E7759DEB84A6EC81A2EB7DA0EB779DEA
+      86A6EE759BE9729AE981A4EC7DA0EA7B9CE8799FEB80A4EC7CA1E8779BE2769C
+      E481A5E6779EDA7D9FD75E83B72B48853045684A5954605F46636353454F372D
+      2D1B424C457D806E81644267432765493547392224231E727A716E736C464751
+      454844272A2022292566695F726E52464D38425A4E46574B334E45637E739DA8
+      9AB3B3A0928D6951504BD6DCE4F4F6F0E8EBE7EBEDEBF1F2F1E2E5DDA8B4A9C1
+      C8C6F8F7F3DEE2D7C6CECDE3EAE3DBE0DAEBEDEBF2F3F1F6F4F0F8F3EEF6F0EC
+      F7F3EFF6F2EEF6F1EBF6F2EBF7F3EDF6F2ECF7F3EDF9F5EFF8F3EDF7F3ECF8F3
+      EEF8F4EEF7F3EDF4F2ECF6F5F1F2F4F3F1F4F4FFFFFFABAF924149434D5D5B4C
+      5E6B4F5E7550616F4B5B65495659424C4641493C384231394638535E54546157
+      8896838C8E745A5A477B85789AA59F97A197949E929AA39798A19898A29697A1
+      979DA49B9EA5989DA4999BA499A3AB9CA1ACA5A1ADA39EA6989BA59999A39A9B
+      AA9DB5BBAEC5C7B8C2C6B4AAA88F6E6E5A848D809EA89B99A0928E9889A3B2A7
+      B8C6BEB8C4C0CBD2CAB8C1B675897F73897E7C8B7D808B7F8C968CACB9AFB1B9
+      B29BA4989CA699B1B1A3B7B9A9BDBEAF92937C616657949E93B7C0B9B1BBAFB5
+      BFB6AFB3A79DA196B8C1B7B8C0B6B1BAB1AAB7AEB2BAAEB3BAABB0BAB1BBC1B7
+      A8B1A7A2ABA2ACB1A7A4B0A5A6B1A3AAB0A3ADBEBDA0AB9A73867392A69F8799
+      8C7383769AA69D98A19688978DBFD0CEE5F5FAD6E7EBD0E0DFCFDFDFD2E2E3DC
+      EDEFD8E7E8D7E4E4D2E2E1D5E5E8E0EDF1DAE8EAE3F2F2D6E6E6D9E7E8E1F0F3
+      D6E8EBDAE9EBCFDFE0DAE9EBEDF9FCE3F0F1E6F2F4D6E3E4E2EDEEE7F6F6E6F3
+      F5E6F4F8D8E4E7D8E4E4DAE7E7E1EBEBDAE7E9CBD8DACBDCDEEFFDFFF2FFFFF1
+      FFFFD7EAEBDDF0F5E8F8FDE7F4F9E6F6FAD7EBEEEDFBFFF0FFFFEBF8FDE5F4F8
+      D7EAEBEBFCFFECFAFFEBFBFFE4F4F8DAEAECE7F9FCE4F6FAE5F7FAE5F0F5D9E9
+      ECEEFFFFEEFDFFF3FFFFE6F4F6C5E0E2BFE4E8A5C6CD8AB1B186A5A47396976D
+      97926B95906691916B8F8585A8A8618B91456865547C744F736D89AFAE97C3C8
+      5F838539544E4F6E6352716A41635E486B644A696444635E44665E476D634369
+      5F45655B3C574F385347364F433D5A4C46655E3C5A513A554A3C574F2E4C4335
+      53493753493A5449466056385349364F4738544A334F442E493C37574B3C5C51
+      3C5C5139564E31504635594C365A4F345045314941223E342444353352432D48
+      3F2F4E452D4B41324C4429473B38564837544B3C5E53385A4E34524A3C5C533F
+      62593C5C5440655B3D645A3D5E543D574F465D534A665B40635E3E5F5665786D
+      536A6137554F3957503D5D574065613B665F3C6A623C6F6A3F76723C6C69446B
+      623B615D4166614768613C5B543B5B554D66654B696B406161466C69547A7850
+      77755078744B746F4C7875507C7C47666E466B6B4A7471496C6D456865446B65
+      46746D476E6C486E724D706E4969633F594747474055533E4D543D474D34434A
+      314548313E4729383E1C393E1E3036181E1F0D171D0E151D121E1B1620230D28
+      26163033213238213A422734391F2B2D1830301B312C11262816171E0F172016
+      31371F474A33504E3954523A4D523846493033331F4341294442284445274649
+      2A43402A3B45253C412942462D414628474B372F3B28323B2D8086858D9A7C4C
+      5733373F30565F5E727C72424A3A4650414B53444B5648586055565E545A6355
+      555F4E6A7768727F6F818D80A3A69DAAB39ACCD1C4DEE1D8E9ECE08F93858E90
+      A6FFFFFFFFFFFFFFFFFFFBF7F1DEE4D7BFC8B697AA9593A0909CA895CAC9AC82
+      906F5260411F20162B33282B3225363C34636B64626E615C6B5B5F6E61616C6A
+      5F6D6E5F6E665F6B615E635352604056604C88897D616350585C434F513E3F43
+      36989E93A5AD9BA8AFA0B0B3A3B0B7A7B6BAACAFB8A5B2B8A3A5AC98ACB2A9AC
+      B2ABAAB1A69DA99C9AA99C8E958F8A9284545F538DA0A9CDD4D7DADFD5E0E4DA
+      E5E7DBEBF0E4E6E7D5767E65343F242D32212D36252D33282C372A3C4D444F5D
+      585A685E616D60666F636971635A635551594747533E4A4C3B4A4B3C42462F43
+      443043472C3940212D3525414836374123363F25343D263239263A3F2A3B402E
+      323B2B737F725B6D5D556A5F556D645F71655F70665E71614C655660756C6074
+      66586F654759526C786E6274685A6B5D5C6D6069766966716864716551624F54
+      66536373625C6C605B6B5D516658647463576B5D5A6B5B5B6D5D5E6D5E596961
+      58695F556A594C5E4C616F615E6C625F75645563565F6F61616D615E6D5F5B71
+      645A685A667162667362667468606B5B5765546073666273626175634F614E57
+      6C5A5E6F5B5C6F5D636F5D556253636F6261705F637564637563586959626F63
+      63755E61736263706055645760715E5E6E60556857596B5B4F614E5F6F60626E
+      625E6E636271635366555F705E61715F6570646477635C695D5E6E5F62736563
+      745F6475615E6E5B5A6D5D5F705F5E705E5F706100002F3B502C3B4F2F3C5230
+      3C542F3B53313D53303D55303E562F3D57303F582D3C562F3D5A2F3E5B303F5F
+      323F64324165334365333F6235416C3B4D8D435EBA516BD85B75DC6178DC6178
+      DE607AE1607CE16B86E76982E8657DE4657DE6607DE35C7EDE6785E16B88E36B
+      87E35C7EDD4873D84369D24163CD4064CA3F63C94163C74060C54566C84369C7
+      4164C64263C54364C54366C63E60C63F62C74066C73E62C53D61C5385DC33C5D
+      C43C5DC73357C53254C43555C83051C42E4FC22B4EC12C4ABD2946B9223CB31D
+      34AC1F34AB283FB2354FB63E5CBA4669BF4368BE476AC2597DCA6487CF6689D3
+      6589D5698AD86B8FD95C88D5608ADB6F92E47497EA7396EB7296EE7296F37D9E
+      F97E9FFB7E9EFB8AA8FD90ACFC8DABFA88A5FA82A4FA8AAAFD8FB0FD89ADFB7B
+      9FF686A5F88EB0FA7DA0F684A4FA92B2FC8CADF991B2FD91B0F98FAEF689A6F6
+      86A3F588A5F88AA8FA89A9F88EACFA8AA9F989A9F885A6F587A6F187A5F47D9E
+      F384A3F489A6F688A6F48DADF48AACF58CACF58CABF587A8F58DAAF586A2F381
+      A4F484A5F48CAAF687A9F287A8F28AABF389A9F188A6F188ABF18AADF481A3EE
+      7EA0F080A3EE729BE6789EED80A2EE7097E87DA3F07EA4F07EA2EC7D9FEB779B
+      EA7DA3ED7DA2EE7098E8789EEB7B9EEA7798E480A1E97EA0EC80A3EC779DE484
+      A4E684A6E77BA0DD7DA1DB789CCC29478B2840782C455E3C524E5E5A4457594C
+      555D493832203A4E456083778678547B4E26734A2D563A1D2E3422617F7D6068
+      663E3A3E49484838372C1E23213B5345535F43434F3A49605039463B3249465F
+      776F5C70605B6C60666D516D6D6ADDE3EBFAFAF5EBEEEAE6E9E4E3E6DFCAD0C8
+      D3D7D4EDF3F0E7EFE8C8D4CAB2BFB9E0E6E4F1F3F0F3F3F1F2F4F4F1F6F5F4F7
+      F9F3F7F8F6F8FAF7FAFAF7F9FAF8FAFBF8FAFBF8FAFBF8FAFBF9FAFBF9FAFCF9
+      FAFBFAFBFCFAFBFCFAFAFDFBFCFDF8F9F8F3F6F2F3F5F5FFFFFFB3B69746503E
+      5061505360544D5C5947545F505E6C48596647566346555B404D483C46394B55
+      3F4B5A3F5464528C9C8E868E7559624C667865748575889389818D817D877884
+      8D848E9A92889B8F889D938D9E9799A99D939B88888F7F7D867899A49A899988
+      7281746F7A6E7D897CC6CBC2D1D7CDD3D8C8AAB09C9DA9969DAA97A8B4A9BCC5
+      BFB3BDB5A7AFA3A2AA9DB7BFB6A0AB9B6E7A66889680A1A995AFB8AAB4BEB56F
+      7D6D5F73699AA899BAC3B9E1E7DFE5E4D9DEDED4C2C3B3B3BCB1B6C1B85E6B60
+      61766C57685D829595BDC5BD606E636B827D8896857E8574868E848A9EA2859B
+      95788777A6B2ABB1C6C2A4B9B2AABAB3B0C0B5ABB9AEB6C5C6B5BDA8787D6462
+      736B8F998060665178887E647362B0C1BFD2DEDB90A099A7B7AEBBC6BDBDCAC4
+      B7C5C3919E99ACB9B4B5C4BEBCCCC7B7C4BEA2AEA4B5BAB27B8880ABBEB8B7C5
+      C08C9C92AABAB0A4B4AAC8D3CFA3B2AF6A827E91ABA38DA59AC5D3CFA2B2B080
+      9C9A89A0A07E9E9AC6D6D7BDD0D0B2CAC8D3E1E0C3CBC997A9A36C877E8DA8A3
+      96AFAFB7D1D4D0E2E28FA8A0C3D3D0D1DCDAE2EEEFC4D4D66F88849CB7B0AFC5
+      C4DBEEF1BDCFCD849D96B2C8C1B2C5C0DAEBEEBBCACAADBFB4CFDED9D2E2DCEC
+      F7FBB2C3C48DABA5B8CFCCB9D1D0D5E9EC92B3B75E898982A19A8AAFAC81A5A6
+      5477735C807D5777746B8B8693AEB04F716D42635E4B665F52756B6185814A6C
+      69446A615F817652766D486B654B6E64466A604A716B496C66405F55405F5645
+      645E405F563B5A50345044334B403C5A513B57513A534C3C574E39554B355248
+      345349314C432D483F36534A3C574E31504732544A294A3F3D5E573452473453
+      473D5C553D5C543C5C533856503253493D5F563F6158314F462B43392E493B2C
+      4B3E365547355A4F345D532F51452841352B433836564C40655E3D5C55334E46
+      33534A3A5A543F5E563C59523E5D57415F5B3F5F5A4F6C66506C64405F563C5F
+      5944635F3F5D573B595041666047736D436E6A41706A406D66426F6D43706F3E
+      686846767146716D3E6A643F6F6244826C4A887643756F45766F4885724A8F75
+      51937F4F8D7F4F877F4F877F4D86784A7D724C7D774F7D7C45706D446D66466F
+      6A426F6943756D426961496F6A486E6C426862445D4B3A402F494D394D4F3950
+      502F4C4C3155513455533B555938272F121F220F1F2011172112181D141C1812
+      1B180D1C1B0D28251A2B2A162525163638212D2A162828172E2A1626220F1B1B
+      141A1B16393625383C2D42463355553E5A563E524F3333331844422C45432A44
+      482C46462C46423040422B464B3346492E4A453349472F3B3E2C393A2F81877D
+      8A9378616947394132495153979C8D788069818A7E87927FA3A38EA4AC97AFB4
+      9DB5B9A5B7B9A6B6B9A9D7D1C7E6E0D3E9E8DAECEFDFF6F5EFF7FAF2F6F5EB6C
+      74646A7483E1DEE3B4BEBD94A49D9EA897B3BAAABECABCDCE2D4E5E8DAEAEFDB
+      CED2B6606D54707960151A0B1F281B202C21364033434E455B6B605F69566271
+      605A6D5566705F626F60646C636065595B624A7576665C60444D4F3346473240
+      4532474C4257654F3948343F473D4C5445515E50535E4E5865555965516A715F
+      7B8076889181A0AB9CBBC4B9D1D9D2FFFFFFFFFFFF787E78B7BCCAFFFFFFEEF3
+      E9E0E3D9C5CBBFA1AFA094A08FBDC1ABA1A8893C46262E2F21343B32414E444C
+      544E535C5A6270666C7C6C76806F8493848C9A897988716D7662676A57606048
+      625F42635D4461593E59573F596258AAA997999C85787F64555C3E5056404A55
+      3E4951393E4634727A725B685E5A6B615362615B6E6460716B5C706B435E5960
+      7369627168616F624A53496A786A5B7161586C5E5B6C6067716C6775665E7362
+      54614F545F53617368606B5E5C6A60586958616F5F566B5A54685A566459576E
+      60596C6057695E596A544D5C4C606E63586F605F7463535F545C6D666071635F
+      6C5D6B786559665A6770616374616777665E6D5F56655867756A65715F667162
+      5262565B6B5E6575655A6E5F5E70615263556670626571646174605F70605468
+      596075625F6D6165736466736558695760715D65736454655A596D5D53665460
+      6F6265705E637061657364566655616F5F6273656070626473655768585F6F61
+      6473635E70626473645C6E5E596C5B6471626170616373630000313E56323F57
+      324057324058343F5A343F5D313D5A333F5B323E5B323F5B3440603241613341
+      6135426437446A38446C38476D38477238466F36416C39487C4255A85169D35C
+      77DF5C75DE647DE2627CDF617ADF6B85E66A82E4657CE4637AE35C7AE2607FDF
+      748FE47691EA6B88E65E81E3597FDF5076DB4D73D84D71D9476DD4476AD04B6F
+      D2486DCF4569CE4B6DCF5373CF5171CD4F6ECE496CCE4368CA4264C94268CB40
+      69CC3F64C93E61C73D61C93A5ECA3657C93555CA3251C92A4BC42544BF253FB9
+      243EB72540B82C47B83452BA3C5DBF3C5DBE3B5ABC3E5CBD5676C76185CD6287
+      D06588D56589D7678BD9698ED85986D5698FE17497E86E93EA7495EE7497F075
+      98F27B9CFA7B99FA7D9EFA7EA1FA82A2F888A6FA82A5FC8AABFB93B4FE86A9FB
+      7DA0FA81A6FC8FB0FE87A8FA86A8F990B0FD90B0FA92B2FA87A9F67D9CF281A0
+      F57D9EF886A4F989A9F98AABFA86A4F587A4F588A4F886A1F57C9DF27E9EF280
+      9EF4829FF385A5F58EABF588A9F47CA0F286A5F58CABF589A8F684A1F386A1F0
+      88A8F579A0F5799BF186A3F384A5F186A6F188A6F08AAAF18FAFF385A6F182A3
+      F182A1EF8FB0F581A5EF769DEA84A3EE84A4EF82A8F285A6EF80A4EC7BA0EB75
+      9AE888A9F07E9EEB7299E7799FEA7B9CE9779BE67C9FEA82A3ED84A6EC82A2E9
+      7B9EE47EA3E782A5E37CA1DE87A9DC3A5A9C172C7F395086324A5B39554F3A52
+      453F5B4A3C5541334C3E2D523B2859424666514754324A512C414A282C503539
+      655960615149402C3F3D2E3F3B343342352E5F42315A44415F514C63533E5945
+      385D5D556A7E485B4F4F5E4F515A45566462DCE4EAFCFAF8EBEEEBE5E9E4E2E6
+      DFE7EAE7E7E9E6DDE3DBCCD4C9B0BCB2B1BFB7C5D2CDE6EEEBEBEFECE5E9E6E4
+      E8E7EAEDECEFF3F1F1F4F2F1F3F2F1F3F1F2F5F2F2F4F2F2F4F2F2F5F3F1F5F3
+      F2F5F3F2F5F3F3F6F4F3F7F5F4F7F4F4F6F4F4F6F2F4F7F3F2F5F5FFFFFDB6B8
+      9D51604F576D595A6D5B4B5D5241504A55655B47534F4453503C4D5B4251663F
+      4A495563505E6F575E6B555B69556779646B7A5E66755569775FB3BAB3D1D4CC
+      C9CCC3CFD3D0EBEDEBADBAAC758F867E958E9DB4B0CED6CBCACDB982866E8790
+      8394A08B8C978172796079836D9AA293A1B0AABDD1CC7D8E8096A196B2BAAAB8
+      C7C1BED0CC99AAA2CBD6D2D6DCD5CED4CEC2C6BAB5B7A4BBC0AEC6CEC3E9F3EF
+      E6F0EA3138260B0F0D97A596D1DDD7C5D5D0818A7AAAB4AEBFC7C0D3E0E0C9D5
+      CE2120113D4031292317738585CADDD20E0C051D211E70766CD1CAB9A7AE9F61
+      7A9251636261695DD2DCDCBED8DAA4C1BEA7BFB9C0D9D7BDD5D3B5BEBF738073
+      767F6921252197A0936F715D3B42341F2318BAD1D2EFFAFA626B5D8F9F93BAC9
+      C1CFDFDDC2D2CE606A5DA0ADA2B3C5BCD9EAE8BFCCC46C7563B6BFB29BA597D2
+      E2DEAFBDB96A7466C0CBC0BCC7BFEFFAFA8D9D930B180D526653485F4CE0EEEC
+      818A8116291D3C4B39313A2DD4E7E8D1E8EBACC9C7B6CECCDEF3F3C4D5D32831
+      2434412E2933245C7166D5E4E26C7364B8C5B9D3DED8E6F5F3B4C2BE424A3B99
+      A695A8BBAFE3F0F0ADB7B25C6552B2BCAAB4BEB1E2EDEFB5BFB89AA68FDAE3D5
+      F0F6EFF9FFFFA6B4AF37453776887C799286BFD7D7698585324B40849E907CA1
+      998DB1B061857E5270695169617B9D9696BAC23D5B53526F6454756E5171695F
+      8780466A62516D69476B5F3D62574870694D746D51766C4B6E68405F5A476B63
+      40605B40605D3D5B552F493E2C4539314B403C60593C5956334D4637544B3654
+      4B34544B31504529443B213A30304D423B5F5435564C40685E3A5F563F605937
+      544B39594F3C5D563C5B573F5D543C5B5236554F3C5D553F62593E5E57365049
+      37544B33544B395F523153492B4C4228463B2941342B45383A5C52385B533450
+      4A345249395E55385A533D5B5540605A3C5A553E5A563F605E4669664665613C
+      5C523C60573E6461456F6C487372487874497F7A497F7F47757340686344706B
+      4777743F6C6944716C47746F45796D4987764F9F884FA58F4F9C884F988750A1
+      8B50A58B53A18E50988D50938B539A8F4A90834A897E4F8B83508B8840767149
+      746D486E6A345F553A6A5E487469416F663F6F6A3E69634C6B593B463050513C
+      5356374B5035454826494F303C40233A41242F3816141A0A171E13181E131B1B
+      11181B0F1B180D211E1426251226280F24221443472F2F35162C2B1A27261627
+      23161D1E141C1B1434351F4B4531514E3C4D533D484F38484C3336381C44422D
+      41462E4746284541274A472C4C4A334F4D384B4E36464729464832494D313F3F
+      307C817F9AA6976B7A57313628565B5B878B7A505B4751594B5963565F6A5B66
+      70596C75616D78636C75637C816C8D927F999D8EA8AE9CACB6A0BBC1B3BFC6BD
+      C6CBC17D887570768DFFFFFFFFFFFFFFFFFFF6F7ECE6E8DAD5D8C8C1C8B7B6BE
+      ACB2BAA9BDC0A9747F5F616B54121B0D24302B293426333C3148564858615758
+      665A5C685A5E68535E6854616A575760565560575E63536163515F5E4855573F
+      5357404F503A43433484897C87907E8C96809A9F8FA4AB9AADB3A4B1B9A9B3BA
+      AAB3B8A8BFC2B6C9CBC3CCD0C5D0D2CCCBD0CDC9CECBDADCD056665A8C9DA8D6
+      D6D9BAC6BAB6C5B5BCCAB9D2D6CAD5DCCDC6CCBECED0B959684431392A2F3939
+      485C574851454D5A51596A5E6475686C7D746D7D6D5B6C57505D4949503F3F4A
+      3A434C36494A324246283B452B444B3773786B4A5043404C4245514457615049
+      523F39443133402D323C28738173616D6459685A475B556173656171655A736C
+      495E5A64756B66736D5F71684655516A786F677466596E60596C5F6575686573
+      6264716552644B5463556271655B6D5E596C5E51605461736A556A5B616A5E56
+      685D5E6F5D5C6D6151695F57665E43594A6270615E7161606E6254685D5E6D65
+      5F70625E6B5F6371605265576274656970616373625A6C5D5766586576646273
+      626373625461535C6B5A62735F5F6C5D5F6F625566546470646473625E6D5E61
+      78635564585B6F635C7062666F66657062546453637163626D6056695D586D60
+      5261526170635F6E606270606775665464535F6E615B74656271626373615E6C
+      5A5E6D5B656F605F70626676615E6F5B5A6E58657463656F6269716397693543
+      5B34425E36435F35426034436234426134405D34425E34425F35416336436838
+      456937456A37446C39466C3B48713949743A4A783C4A7D3A487C39487639497C
+      3E52984963C4536DDB5971DE6178DD6079DF627AE25F78DF5E76E3637AE4647D
+      E3607CE36685E47B99EA8CA3F1829BEE7590E86C8DE66B88E66283E1567DDE5A
+      7DDD5A7EDA557DDA5579DA597ADA5B7CD95B7AD85B7CD75879D65375D44C71D4
+      4B70D34D74D4476ED04069CD4265CC486BCC3B61C7355BCA3657CB3352C92A4B
+      C52746C12B44BE2D4DBF3453C13C5BC23F5EC24064C04466C24160C05071C65E
+      82CE6287D26487D46989D8678BD85B85D55F88DA6B90E47093E97496EE7496F1
+      7093F17899F47799F57799FA7D9FF97C9FF980A2FA89A8FB8AAAFB89A9FA84A4
+      FA80A0FA84A5FD87AAFE86A9FD87A8FA90AFFB8AADFC84A9FA82A3F6799BF480
+      A2F986A5FA80A1F888A9FA92B1FC89AAF884A2F580A1F67D9EF47898F27D9BF4
+      84A1F689A9FA89A8F87E9DF17D9CF080A2F381A3F484A2F485A2F187A6F586A6
+      F387A4F282A2F27D9FF280A1F281A1F1799EEF8CAAF38EADF388A9F08AABF186
+      A5F086A6F187A6F18FAFF388A8F17E9DEE84A3EF87A6F081A2EE80A1EB81A3EB
+      7BA0ED7EA3EE799FEB7499E885A6EB7CA1EA789CE97DA0EA80A3EB88AAEE80A3
+      E97498E0799EE481A6E979A1E28CAEE65F87C1112A832842912E487A30444C35
+      4D423557493354422A48393050433151432745353352402D4D3E2A4938214730
+      1E3C2B1C3C2F445040534E4A4F534E424A402F42332E5040345549385E503656
+      482F4E3E365A50465B5A516159586C643541363F4E51E0E5EAF9F7F5F0F3EFEE
+      F2EDF1F3F0EBEDEAE1E7E0E6EBE4E8E9E4DCE1DBD4DBD5BBC6BDC4D1C9D7DEDB
+      D4DAD9E5E7E9EEF0F0F2F3F2F3F5F3F2F3F1F2F3F1F3F4F3F2F4F2F2F3F2F2F4
+      F2F4F5F3F3F4F2F3F5F3F6F6F4F4F6F4F4F6F4F3F6F4F3F5F3F6F7F5EBEEEDFD
+      FDF9A8AC994B5F5A5B70655F73664B5B4F46534B5B6C624A554E394434303941
+      4C5E753F4C4F516050596A5A606E5A64735B64755B6C7E637482626C7C62BAC2
+      C1EFF1EFEEF4F2FDFDFEFDFDFDC1C9BD708D81778E84A4BABEFDFDFDFDFDFD99
+      9F86798675A5B1A6BFCDC48D9983A5B1A6CED1CBCAD1CFBCCDC46C746090998D
+      B4BEB3B9CAC5B5C5B96E7968A0AFAAB7C4BEBACBC6DEE9E6DBDED6BCC1B3C1CA
+      C2E5EFEDCDDED6525742555B4CA1AF9FB6C6BFBDCEC669746193A69BABBCB2C3
+      D5D6B6C7C16C745FADB3A8BABBB0D1DCDAB2C0B54A51427C827286958BE8F4F5
+      B9C6BE4C5D62606C645C6559D2DEDDBED6D6A5BEBAA2B8B1C2DBDAC6DEDCC1CE
+      C275837384A99D4B6050415D56B9D9D681978654685EA2B8B7E4F3F466705F82
+      9C8FA2BBB2BCD4D3C0D2CF666F5F9CAC9FAFBDB4D0E2DFB9C8C2656E60B1C1B8
+      C5D4CDDDEDECA8B8AF707A6BBAC7C1BBCCC5E6F6F691A1971A281B495C4B3F50
+      45D0E4E4949D9166705DA8B3A5A7B0A3DAE9EAC6E0E3ACC5C2B2C7C4DEF7F9BF
+      D2D553574A6A745D949F8DB5C5BCCDDDDA6A7565A3B9AEBCCFC6DCF1F1B9C5C3
+      707968BECDC5BDD0C7E3F1F0B1BCB889907FD5DBD5DAE1DCEEF8FAA4B2AA8A99
+      84BDCCBFD0DED6F8FFFFAFBBB83343397C8F83738875CEE1DE7E9291304A3D75
+      9A9178A29B9CC4C56A87855C776D768E8472918961888B45635E5C7E754A706D
+      648E817C9C975774666F8B834C69633D5C52476D644669684A70695378734365
+      5F41665E3C5C5533524B3C574F334B3F304B402E4A3E3C6056405C5336514732
+      524738564B3152462F4D40264235274638314F43355C5133544A3D6158395E56
+      3A5C513B5B5035564C3E61583F5F593E60583E5F5439554F3D5C544465603D5F
+      5A3F665D436E643B625A2C50432D4D402C4B3E2F5043314F41324F4134534732
+      54483C5F5336544837564C3F615743655E49706C3F615A3C5D54456D68456D68
+      47696242625A42635D4B77754F828448787C4D7D7F4D80834B80854A787A446D
+      6D4674734A7C80497C7A4D817D4C817E4B83754F9081448A7C4B968457AE9C58
+      B3A654B1A34FAC9B56A89C57A09A569C9856A199549F98559C96528B854D8781
+      49827F4A7874426964436D6448746B46736D45756C3D6B603B61584366523542
+      2851533E5554384F4D2E504B2D5754385C553A58543E484B231F24092021121A
+      1D101921161B1A12171B0E212113292916292B162D29164C4D393238222C2D16
+      2C27162528141F210E1B180D3C3C2C3A341D4849384D4F3B56593B534F2F3738
+      233E3F2E40452541432446462A4043333E463B343C3D39403A42433549473545
+      4C36393D2C7C82788D977E636E4F3A3E31484C4C9BA19173816980866F989B84
+      A6AA95ACAD9DB5B4A5BFBCA3B5B6A2B2B8A8D2D4CAE5E4D5F6F2E3FAF7ECFDFD
+      F6FDFAF8F2F5E964765E69708BC2C5CFAAB4AE96A29AA3B2A5B8BDAEC8CBB9DA
+      E0CFE8EDDDECEEDED8D8C45C6F4A727E620F1409161E1A1C221F2D3B2C404A3C
+      4C5048465A47505B4B505F4E53604C565B485059484D59424850404A5243484D
+      3F4C4D40474B373F49333B43355E68593E482F4A513C4854454C5648515C4A67
+      6B62676F666D766A869586919D8EABB6B0C0CDC7DEE7E1FFFFFFFFFFFF7E8174
+      A3B3C5FAFAFCF1F2EAD6DBCDBBC3B598A492A3AB9AC1CABADEE4CF919A7F3242
+      2C313D38475A554553455663555E6F6369786C707F73818D81818B7C707E645E
+      6A515A644C5B5E41605A42595C475653425355417C7C6E788A787B8873758376
+      7D817A878F80899384849387868F7A777F6C656F665F6D5F526A615F74665A6F
+      695E7766485E5264756960746A6471663A514165796D69776A65706C495C4C6A
+      796C627362617564505B4E4F5E4E627565586A595C6C5E51685B6370665C6C5E
+      536958596B5B5F6F64586C5857695A596B5B46564B5E6F636070606174655364
+      565A6B5A606F5F6070615F706353695A6575636371616376625B6F5E53645663
+      74655E6F626575654D5F515B6A5B6471635F6D5E5B7061476251617360657362
+      6570616371635B66596170615F6F6069756665716256654E6477636273635165
+      5A586C605364516674616671626470625F73635A695B5E6F615F73666270625F
+      73635E6B5E616E616675635E6F5F627063586B6257696062745D5A715D637365
+      976938446237456437446438446837446835446236456036436237446639466A
+      3A476B3B486E3B49733A48753C4A753B4C783B4B7D3C4C7E3C4C7F3C4C803C4D
+      833C4E803D4D803F518F485FB84C6AD45771DB5C74DD5B74DD5E76DE546FDD64
+      7DE46981E45F79E1627EE16787E47093E88AA3F08DA1F27E9AEE7793EB7290EA
+      6E8DE6728DE66D8BE46789E36688E36587E06C88E16585DF6183DD5F82DB5B81
+      DB5B80DC577DDB587DDA5479D84C75D74870D4456CCF3F68CD3B61CB3C5FCA3B
+      5ECA3A5DCB3355C83654C8385BC53153C03856C33E5FC33F62C2476BC4456AC3
+      4A70C95379CD5F85D46285D66788D7698DD85B87D8658BE36C8FE87293EC7D9C
+      F17596F17799F582A1F87698F47498F67D9DF582A1F97E9FFA84A2FA86A3FA7C
+      9BF97B9DFA80A2FC88A9FD8DABFD89A9FB90B0FB88A9FA89AEFC86ABFB82A3F6
+      84A3F989ACFC85A6F982A3F588A9FA86A3F67E9EF385A4F87CA0F87597F482A0
+      F58AA6F584A4F57C9DF37B9BF180A0F58AAAFA8DAAF686A2F187A6F38EADF68A
+      ABF386A6F27DA1F47D9EF184A2F17DA0F180A1F188A8F388ABF481A4F086A8EF
+      87A6EF84A2F184A4F186A8F287A8EF84A2ED80A2F081A6F181A5F185A5EE82A5
+      EE84A3EF88A6F17EA2EB739AE7779DE9799EE86F98E47599E482A2EB7EA0E979
+      9DE4779BE4759BE3759BE285A6E785A8E388ACE02D4D9718358D466BAA2E4C6C
+      3550462D453B2D4A403654482E4B3C273D32294138244136284238263B2F1727
+      1A111F161A221612180F1320162130232231241E2C2220332A2B3E332D3A3032
+      473C2D4134233A3235594B3C5545374A45334A43223224343C44E5E7EEFAFAF5
+      F0F3EFF1F5F1F2F4F1EEF0EDEAEDEBEDF0EDEDF1EEDCE4DEE0E4DFE5E7E3DEE3
+      DFE4E6E4EAEBEDEAECEDF1F3F1F3F5F3F3F5F3F2F4F2F2F4F2F3F5F3F3F5F3F2
+      F4F2F3F5F3F4F6F4F3F5F3F3F5F3F4F6F4F4F6F4F3F5F3F3F5F3F4F6F4F6F7F8
+      F0F3F2FEFEFA9B9F914D636F677E83697C845B6B715A6B6857696045514C3942
+      35343F434F667D3E4F4F4C5B4B536455586B5760755B62775F697D626E806067
+      7D64BDC7C7F7F8F9FBFDFEFCFDFEFDFDFDBDC6BC779187869A8DA4BDBEE7F8FD
+      DEECEA7E876E6F77648F9A92B7CAC776826B808B7DA2AB9FA7B4B0B7CBC3616A
+      536E786888978892AAA6AFC0B8616A598090838C9C8E9CB7B4AFC6BF7D886FA0
+      A996A1AC9DC9D7D4C2D6CE5F6955829184899D8C94ABA9B8CBC6656B59818D7E
+      8D9D8DA8BDBAB1C2BD62695991A1999AABA3BCD4D4A4B4AC5F69599DB3A88CA2
+      91AFCACE9CAFA4535D498D9C87738671B2C8C5C4DADAA6C0BAA7BDB8C4DEE1B9
+      D1D3A2B49FA4AE9799ACA389957D77836EB5CDC2A4B3A897A496B1BBB6D6E7E7
+      5860536B817385A192A5C3C2BCD0CD606355919B8DA3ACA3C9DBD8B5C3BF565D
+      4E8EA29397AA9FCDE0DEA8B9AF5E6450A0AB9D9CABA0DEF0F18D9B9112170D3E
+      493A20281FC1D7D794A099727C6DABBFB7ABC5BFD4E7E8C9E2E3B0C8C5BBCDCB
+      E0F6F6B7CDCC60665879836EB0BFB3CEE3E1C4D5D657604F879C8C97AA9FCADF
+      DEC1CECB5C6553A2B1A7ABBAB0DEEDECACBAB5737C69C3CDC4C2CFC7E8F7F691
+      9D9776816EBAC5BCB7C6BDF6FFFF8F9E9F18251E4F6255354539D4E6E67E9090
+      233A304C695D476A6096BCC05B737169877A74968E70938C78989846605B4465
+      5D46656278A29A9BBBC05B75686C8B78436661436A613F5F5A476463496C6452
+      7E764F7C743F64583755483A5A4B3855493A5B4B3A574C2742362B493D3C564B
+      3B574A3B60523C6153365D4E395A4E3751462F4B3E315345355A4C3350463553
+      4838564940655A335449305043426158314F4635574F3D605636544A3C5A5144
+      655F3F655B40695D416C5F375E543153492F50443152453556493A5B50324F46
+      3551453C5C4F3A5B503B5B4E3C594F426058436A624266634369604A746A436C
+      643D625843645B486B64456963446C683B696340736A4D7E7A4C7A7D507C8450
+      7F834C7A7D48777553858551807A4F807C52828452837D4D80724F7F715A8D7F
+      4C83733F7C6541826A42866D447F6B4A82734781754686744B86764B80754D7F
+      774D7C754A7372466F6C436F694C786F4A766B3F685E42665B3F63574065594D
+      70613C4B3C51533E525234494D3043482E44492C40462641432B4B492E3D401E
+      18200A191F131B1D0F1C1D0F1F1D12201E132A27182C2A1B1D2413494A363D3D
+      1B2E32172C2C1326271323221217170B3737283F4029474D38504F3B50513849
+      492C33371D4445314143293D4526444735303C3F323A4E2E374828334543443F
+      48472F4C48373C3A2D898B818C8D7C545D3E3F412F4F50529C9F957982657E85
+      6E828672848874868D7C898F7A8689747B836C7D887D8997878E90858D98838A
+      9684868F8081887A87918163755E727586FCFAFFFFFFFFFFFFFFFEFEF6F8F8E9
+      F1F2E4E3E4D2CDD2BFB4BAA9A2B18C69735165715924341F31382E2A362C3138
+      2B464E49495C4E5361535865585B695E606B5E5C64555F68585B6456515A4952
+      5B4450503E51523F52513B464F36373C307B877D80866E898F7596A28CA3A592
+      B3B3A5B6BEABC9CCBAC8CBBACFD3C4CDD4C1D9D8D0E5E7DCD5D7D3BBC5C4BEC8
+      BF4F5E497E929BBDC4C7ADB8ABBAC6B9D2D8CDF2F4E4FAFAF1DCDED3B5BEA770
+      7D6549523D3844374B5E524D5549526150616F5D6578686B7C6D6A796B5C6B55
+      4F5A443F4D39404A343F44333A3C2B393E243D41263339276E776B4F57474452
+      3F535B49696C5D6C75647E8976969E89ACB2A479806D5E6B5D607364566C685C
+      6A655F756363786B475E546171696275656171664C595064776C66786564706C
+      4F62596D79735C736364756554625047554B657669566B5F576A5B51634F6675
+      69586E5F516B55546B5D5F6F665F6C595B6B5558695D45524A616E635F705E63
+      7162556557586B5E5E705D5A6C616174665968596273626073616375635B6E5B
+      5265586574656771616174695160515B69586470615C6C5D5B6F614C5C4F6074
+      65607361626E6369706652685263745E637461606E6264716353635363736167
+      6F615266545F6E5D57655661705E62715F657462677663576B585C6F60677166
+      5F756166786B59665B636E6167736362705F5F74646170635E6C5D6276605F76
+      6060736697693A486B3A476B3946693A48693A47663A46683745683845683B47
+      6C3C49713C4A743D4A763C4B7A3C4B7E3E4D813E4D803D4E803E4E833C4E843E
+      50863E50883F538B41528E40518840538E435AA64B65C6576FDA5971DB617CDC
+      657DE0647DE26B83E66780E46B82E7607CE45477DD6482E1728FE96F90E86C90
+      E86F90E87290E97693EB7795EA6B8BE46489E16588E06083DE6589E16B8DDF64
+      88DD6588E06B88E06787E06386E06185DF5B81DE547FDB4B78D9446FD5426AD3
+      3F64CD3B61CA3C61CA3A5DC93A5FC93A5EC73E65C83C61C53D61C53C61C53D63
+      C6476ECA5078CC577CD25E81D55C83D7668AD96189D65F87DC6A8EE66F92EB75
+      96EF7998F27E9DF57D9EF57393F16F90F47395F87B9AF87C9AF57799F67B9CF9
+      7B9CFA7B9EFA84A3FC87A5FB8AAAFB8AABFA87A6FA8AACFA85A8FA81A6FB82A6
+      FB88A8FC86A8FB86A8F87D9FF885A5F982A2F87E9FF585A6F982A4F87B9BF482
+      A4F986A8F687A3F584A2F682A2F889A9F986A9F884A5F389A9F38AAAF68FAEF9
+      87A5F485A4F28AACF486A9F584A4F17C9FF17C9FF18AABF587A9F481A3F08AAD
+      F287A9F27DA0EF82A2F189AAF285A6F081A2EC88A9F18EAEF281A3EE81A5F088
+      AAF085A9EF89A8EF799DE77CA1E87B9DE885A5EB6F98E6648FE1789BE67D9DE7
+      80A1E86B92DF729AE4759BE1799DE281A4E089ABE16086C3193D8C496FAF3D60
+      9A304E5D33544B37595034504736574B3857482B4235274034253D33263E361F
+      372A18291B18241A19271A17271B17271E14211617251B2A392D24342825372B
+      26382C374F42344E3F2A443A2F5147345041293E34263C2E1E3422415358E6E8
+      F0FBFBF6F1F3F0F1F3F2F2F3F2F2F3F3F1F3F0EDF1EDEAEEEBE5E8E4E7ECE7F0
+      F4F1EDF0F0E1E4E8EAEDF0F2F4F4F3F5F4F3F5F3F3F5F3F3F5F3F3F5F3F3F5F3
+      F3F5F3F4F6F4F4F6F4F4F6F4F4F6F4F4F6F4F4F6F4F6F7F5F4F6F4F4F6F4F4F6
+      F4F6F7F5F6F7F8FEFEFC999C8D4D6271748896748899778A99778A976B7D8865
+      747F57626348555F4B61763C4749474F40525C4957614F5E6A57636D57677359
+      6C7558677360D6DEE0FDFDFEFDFDFEFCFDFEFDFDFDC1C9C0809B908DA296A8BF
+      BEB2CBC992AAA5A7B8ACAFBAABB4BEB5C5D8D2AAB8A9AAB9ACACBCB0B5C7BFC5
+      D7D4A3B0A2A7B6A7A6B4A5B4C6BEC2D2C9A0AC9BABBAACAAB7A9BDCCC9C3D1C9
+      ACB8AABAC6BEADBCB3C5D4D2CFDEDAA0ACA0AAB7ABA8B4A9B6C3C2CAD8D5AAB0
+      A4B3BAB2B4BAB2C5D3CFC8D4CE9DA69BABB9B1A6B4ABC4D4D4C0D0CB9BA497A8
+      B8B0A3AEA6C4D7D5BDCDC7AAB0A5BDC7C3BAC4BEC8D9DABBD4D3A2BFB7A6BCB8
+      BDD9DBB0CBC799ABA5D0D7CFDADDD6E0E4DEDAE3DACED3C7DAE2DBE2E4DCE5ED
+      EAD1E0DE9BA59BA7B2A9A6B3AABED1CFCBDBD99EAA9CB4BEB2B2BBB3D1E0DDC6
+      D6D299A091ACB9AAAAB3AAD3E2DFC2D1CA9CA597B0BCB1ABBAAFDAE9E9B9C5BE
+      8E9684A5AC9A969F90D4E4E1B5C0B793A090A5B3A6AAB9B1D4E6E7C6E1E3B0C8
+      C5BDD1CDDCF3F5B6CDCB7D8E7DA5B09CABB8A9C6D3CFD2DFDE979D90A6B0A0A3
+      AFA4C9DDD8CFDDDA96A18CB2BDAFB1BBAEDBE7E6C4D0CB96A291B4C0B3B2BEB2
+      DDEBE9B9C2BDA0A899B9C1B7BAC6BDEBF7F6B3BFB9757F6B8A917E798273DBE8
+      E8A7B4B07C8B7C7E8F806B887AA0C1BE889D96789183728F858DACA3B2C9C86E
+      7F786F877782998E729A966F969D49656145665B375D4F4D746B425E5B3F5F59
+      527973517975446B6336594C385B4E466C5F3B5C523C60523A594A3651443250
+      453551493D5B523C60543A5F53325045324F463B5953304E4332524537524437
+      5448395A4E4060543D5E563150453855473E5C54314D4336544B3F5F593E5E52
+      3854493C595243655D406859365D4F3D5F5639554E314F4638594E3654453857
+      4B3B5E55385549354F4439544C3E6358416259405F573C5B5239564E42685F43
+      665E3E5C553F5D5641625E43665F3C5F533E60563F625B436B66446F694B7877
+      59828B527D834D797A436D6F4F7A7C4F7872446B664D73724B736D4D766F4666
+      60587A7443645624442F2B4B372D4F3C2A4D3B355B4A3E685D396255375C4E39
+      6051487368466F6A466D6A497574487572456E6A426B6241665A3C5E543E6057
+      395F533E65583F514469685A6F6A525B613D565B38555537524D32524B305352
+      35494C271B2109171E121D1E1317180F1E1E12181B1327291A2D2B1B2D271653
+      4F363B3D1E2A331C2429182626182220131A190D3C3D2E37351F44473051523E
+      59523F5553392C2F163E3D2D48452C4145294848353C3D37404648484D513A3E
+      3A40423A4748304B492F4541397D8675545B435152344746323E403C999B9575
+      7D6480856D868B76A2A38FA0A38FAAB099BABBA8B3B7A3AFB6A7C4C9BDDBDACA
+      F0EDDFECEDE3F6F7ECF9FBF3F2F3EB66715770798BADBECBB3B9B6B4BEB2C3CB
+      BFCDD1C1D1D6C3D5DAC9DEE2CFE1E4CFD3D8BE6771537081651F2C1B2C342930
+      352F2B3A293C4B41475C4B55685B65786B6A7C6C7D8B7F758576707E6D6B796A
+      60685558614B565E4849563D49533A49563B3E493C5F6B63616C55636E586D78
+      69707A6A727C6A7683747C897A818D7D949B8FA4AD9BBBC3B5C8CCC5D4DBD3EA
+      ECEDFAFAFA82877DA2ABB9FDFCFDEEF1E9E0E4DAD2D6C7BBC5B3B0BCABBCC2B3
+      CED2BFA3A5903C4B333241355161554855475864566774646E776E7580748291
+      81808D786F7A646168545A62485E5E49585C475757405C5D3F575C4873786E94
+      9B898A95789299879EA192A4A896AAADA2B1B4AAB8BAAC757A685E6A5D597065
+      57696162756A5E6E6563786B53645861716A627465647665485D4F69786B6475
+      68617463596862677666647765637462586555556058637165596C5E576D5D50
+      6154647663666E6156685D4B5E4F596B5A5F745B596C58596A5D3B4C415F6F61
+      606D62616F64526558596F635F6E605F6E626071615764556073606174686071
+      645F6F5E5563596071656171616574664D60505864575E7062586A5B616F6053
+      62545C73686474626270616371615466585C7062626E6361735F61755F506453
+      617664646F63576659576C595465536473645C6C65636F6666705F586A555C6D
+      62647464657068617763586D5A5B6F5A63745D64705D6671645F6D59566E5B5F
+      71645E715A63736397693E4B6F3C4A6E3C4A6D3C4A6C3C4A6E3B4A6E3C49713C
+      4A713D4C733D4C773E4D7D3F4E7E3F4F80405084415287415085404F87405189
+      40508940528D41538F42549244569344579344569141548F4155974B62B95471
+      D85A77DE647FDE637EDF647CE06B83E26D86E76981E96A82E96583E76585E467
+      87E46185E15E82DF6083E36082E16386E25177DC5178DB557CDD4470D9567CDA
+      5278D94976D85C81DB6282DE6686DE6A89E0698BE26289E05C85DE577FDE527C
+      DD4C79DA4771D7406AD23E64CC3E65CB3C63CB375ECB3B61CA3D63C93D63C83D
+      65C7426ACB486FCD5078CF5880D35F83D6668AD8638AD75986D86489E36E8FE9
+      7493EF7393F17B98F3809AF57998F26B8BF16F8FF57395F56D8FF26E90F27699
+      F680A0F97D9DF87799F587A6FA86A5FA85A4FA80A2FA84A4F984A4F88AABFB7E
+      A5FA80A6FC82A8FB7EA3F8809FF581A2F97DA1F97DA1F587A8FA86A5FA7D9FF4
+      86A6F981A4F5789BF47D9FF47B9CF381A2F688A9F686A3F384A0F187A6F385A5
+      F580A1F289A9F58CABF589AAF486A5F17EA1F180A1F284A4F482A2F280A1EF89
+      A9F38AAAF1779DED779CEE82A3F087A6F081A3EF88A9F288AAF084A4EE80A0EE
+      87A6F087A9EF89ACEE80A2EA779CE77DA2EB84A6EB7DA0E8769AE66B97E2628F
+      DD7298E2749AE3759BE46F9AE1739ADF88A8E780A1DE799BD75780B65682B74F
+      74AE1F396F2741412540372C484139574E33564B3A5A4E304A3E2B473C203326
+      1A29201E2F25202D221A2B1F1828202032271B2B221A281F263A2E2133272637
+      2B23372A1F352A3653483C594C243832334D473856452B443A2F493C1C33243F
+      5359EAEDF4FBFAF5F2F5F1F1F4F2F2F4F2F1F3F2F2F5F2F3F6F2F1F4F1F2F5F1
+      F0F2F0EBEEEDE7EBEEE5E7ECEFF1F1F2F4F3F4F6F4F3F5F3F3F5F3F4F6F4F2F4
+      F2F2F4F2F2F4F2F3F5F3F4F6F4F4F6F4F3F5F3F4F6F4F6F7F5F4F6F4F4F6F4F4
+      F6F4F4F6F4F6F7F5F3F6F6FEFEFE979689475460738995758A96788B997C8F9F
+      7C90A0788D9C7585996E7A8E505A71626A749C9E93A3A599ADAEA5B6B8ACBABD
+      B3C0C4B9C6C9BEC8C8C1EBF1F1FDFDFEFDFDFEFDFDFEFDFDFECCD1C8819E918A
+      A096A8BEBDA6BEB68DA49FBAD5D9BDD7DAC2D9DBB8D1CDB6CECFC1DADCBAD5D6
+      BDD9D9B8D0CCB7D0CFBEDADEB9D5D9C6DEDEBAD0CFBED5D6C3DEDFBFDADBC6E2
+      E2B8D2D0BCD2D7C2D9DDBFDBDAC2DDDEB7CFCEBDD6D8C8E2E2C4DEDFCAE2E4BB
+      D4D5BFDAD9C8E2E3C2DEE1CBE4E4C0D6D8C1D9DCCAE1E4C4DEE1C6E1E3BCD5D8
+      C8DFE2C9E1E4CAE2E1CBE2E3BDD5D9C6E0E2C5DFE2C9E4E6CFE5EBB6CDCEA3BF
+      B9A6BCB7BFDADAB3CCC99BB8B5C3DEE0C4E0E1C9E0E4B7D2D8B5D5D8C2E0E1C2
+      DDE0C5E2E4BEDBDBC4DEE0D4E9EDCCE4E8D2EAECC4DEDFC6E1E2D2EAECCBE4E6
+      D4E7EDC9DEE0CCE4E4D3E7EACEE4E7D0EBECC9DFE1D2E7ECD2E7EBD1E6EAD6E6
+      EBCADFE4D9EFF3D8EEF1DCF4F8D8E7EBCCDFE1D6EDEFD2E6E9D7E9EDD4E9EFC0
+      D8DBB2C6C4BBD0CAD7ECF0B4CACAA6C2BDD5EDEFD0E7EAD7EDF0CFE4E9D0E6EA
+      D7EDF0D1E8E9D7F0F1CDE4E8D2E6EAD3E8ECCEE5E7D7ECEFCEE2E4D2E7EBD2E8
+      EAD1E7E8D5EDF0D1E4E9D9EDF0D4E9EBD9EAEEDCEEF5D0E4E6E1F2F3E2F3F6E5
+      F6FBD9EBF1CBDEE0E1F3F4BFD9DCA5C9CCBAD4D7BCD5D7B8D8DAA4C7C7BFDEDE
+      C0D9E1ABC5C7CEE4E4B5D3D987B1B36D9392668B85577E7E436863608981668B
+      893F64594268603C5B5636534941665840655A3A60553D685D416A5F385A4C3B
+      594E35524634504539574E3A5A4C3C5D5339554E39534A345147325145385A50
+      36524438564939564E3C5C5339564F3C5B523F5D523B5A4C3A594A3C5F563C5C
+      5637544A39574C3C564F3D5A543C5E523A6154395D5539564E3E5F57375B5030
+      4F40395E503E685D3A594E3750473C5B513F635840645A42625D426259426356
+      44686043625E45625A466661466B664161583653483C5C5241645B456963466C
+      664F7A7C5B8F925582884975763D6A6C3D6969527E7D4B6F6C3A564C37544544
+      6E623C5E53446358476C5D2C503C2F55412E51412A4F3F2B5141355C5235574E
+      2B50412D5142385A4F385A53395C55436A663F62603B5F5A3E635D3D5F553D62
+      593E5F57375C50416C5D5366566D6E606F6D5D5F6442565E3E494F3249482B44
+      46244A4E2E4C512E242611171D121A1D11191E15161D131A1E132A2818312B19
+      2B28164947314045222A2F1A29291F292716201F111A1A0D3E392A4741294B45
+      32434A31424A2E40432A2E34182A281F473F3046452946472E4546304F49384A
+      4A3946453448483343472F4345328A85805C63494A4E39484F344D45354A4C4A
+      A0A19A8D977C8E92809293808D927E8792808A8F808D927F828676767F728187
+      7678826D737C6C6F7A6B6F7A6D767D778793816A7054748695F6FBFFFFFFFFFF
+      FFFFFFFEF6FDFDF2F9F8EBE2E4CFC8CEBAABB3A3A1AC8D757F65727A661A2913
+      30392538433A3C4B424C574A5A695D5E7064707E6D7682737E887F8A99868C97
+      7F7883726D745F646A5665655162614361644561624A4D4F4090938BB1BA98B2
+      B6A0BEBEAEC4C5B3CBCFBCD4D5C4D4D6C6D6D7C8D3D5C9D4D3C7D3D2CAD1CFCB
+      C4C6C2B5BEBECCCFC64C59437D8A98A2AAB3B2BBB3D4DDCDEDF0E3FAF9F0F9F7
+      EDD3D6C6B0B39F889376515B4439473D515E56525950596156667364707A696E
+      7D6C7781746E786A5F6A5B515A40535C42464C3B4B4D394B4D39444630494E3A
+      7074696E73666D79637B856F919A819EA692BEBDB19BA1893B4835616E69666D
+      6C5E70685769625E7562586D636478714F64565E75666771666276693F54486B
+      7A6B6777696373655C6B606074686470666676655865555760526376665F6F63
+      5F6E6358635A647066616D615E6A615B6F61607466606B5F5A665A5A6A584757
+      49607062636E68606E634F605152665E5E70635C6E5B6676654A605262746662
+      6E6369786A5B6E5D51604F67736A617063647564525F4C5764556474605B6E5F
+      5F7162516052636E5F6574636270635E7164546356656E64636F625C70605A6F
+      5A4D6154627768616F6154665B5C6F6057655564756261745D6471656473635F
+      6B5B616D61657064696F686A716A5F6B615B6D5B667764617361667361616E60
+      5E6B5B6676615F755A65756300003F4D743F4D71404D733D4B723C4B733C4C77
+      404E783F4D7C404E7D42518140508142528541538843538943548944578F4356
+      91435692435692435591455996485996495997465B97445A9846599745569341
+      5595445CB0546FD35E7ADE5F79DF607ADD627DDD637FE16B81E6708AE9728BEB
+      738AEE748BEE728EEC6D89EB6E88EB6C87E96B87EB6D8AEC6F8AED708EEF6D8B
+      EE6786EC6987EB6788EB6686E85B7CE1587CDF587EDD5980DC5681DA5C83DE60
+      87DE5F87E15883E04F7CDB4B77DA4771D5436DD0406BCE3F66CE3C62CD3B62CB
+      3F66CC446CCD4971CE4B74CF517AD05983D46487D6698DD75F86D65F86DE6A8F
+      EA7393ED7796F07695F37B98F57D9AF5809DF87D9BF67D9BF87998F57091F176
+      98F57D9DF87697F46F90F27D9FF886A6F97D9EF6779DF87DA0F880A1F58AABFB
+      85A5FA86A5F984A6F980A4F97EA1F685A4F981A3F5799EF47EA0F87DA1FA7C9E
+      F68CA9F886A5F87598F37C9DF57B9CF380A1F57EA3F6779CF17C9DF07D9CF17E
+      9DF180A4F382A5F38DAAF585A6F47DA0F17D9CEF799EF1789DEF7DA0F17E9DF1
+      86A3F284A5F17D9FEE7B9EEE82A2F188A8F289ABF482A5F18AA9F186A5F080A2
+      EF88A9ED87A8ED89ABF07DA0EB7BA1EA81A5EF7C9FEA80A2E6769CE47EA1EA6D
+      97E1628FDE769DE67098E37BA0E6779DE37CA0E389AAE4799CDA668AC85781B0
+      3C5A8E2039532C474128403330473A273B3431474037554A3251462D43382136
+      281C2B221C2A211E29201E2C221D2F241F2C231E2C24202F252131262131251E
+      312525362D1E2C2120352B405D55314E42203C36365A4F395A4B354E45335043
+      223B2A485961F3F3FAFEFDFAF6F6F3F6F7F5F8F7F5F8F7F5F9F7F6FAF7F6FAF7
+      F6F8F7F6F4F5F5EBEDF1E8EAEFF0F2F3F8F7F6F8F7F5F8F7F5F7F7F5F7F7F5F8
+      F7F5F7F7F4F8F7F5F8F7F5F8F7F5F9F7F5F8F7F5F7F7F5F9F7F5FAF8F6F7F7F5
+      F6F7F5F7F7F5F7F7F4F7F7F5F8F9FBFEFEFE9493894D626E6D85917083937386
+      95778B997D8F9C7C8F9C7C8B9C707C8D555E757C8796BFC9C2C2CBC5CDD3D0D6
+      DDDAE1E4E4EAECEDEDF1F0EBF2F0F6F7F9FDFDFDFDFDFEFDFDFEFDFDFED5DAD3
+      88A095869C91A4BDBCAFC5C18FA4A096AEAC96AEAC92ABAC9BB6B69BB4B294B0
+      AE97B2B09BB1B1A1B9B69AB2B480A6AF87ACB398B4B699B7BA97B0B19BB1B19B
+      B1B19EB7B5A1BAB993ADB29AB1B19BB4B4A1B7B7A5BAB59BB3B298B1AF98B2B0
+      A0B7B7A1B9BA98B2B298B0AE9BB3B29EB7B6A1BAB89EB4B29EB8B59CB4B391B3
+      B998B6B89AB3B484ADB486AFB39BBABCA3BABF9BB6B698B4B38EB0B497BCC1B5
+      CECFA5C1BDA3BAB5BCD6D9B4C9C89DB6B3A2BFBE9EBCBAA8BFBEA5BEBFA4BEC1
+      A3BDBDA1BBB8A0B9B7A6BFC0A3BCBDA3BABCA5BDBEA8C0C1AAC2C3AABDC0A2BA
+      BD9DBABEA5C0C2A7C4C49AB9BCA2BABFA3BBBDA4C2C5B0C7CAA1BEC0A2BFC1A6
+      BFC3AAC4C8ABC5C8A8C1C4A5BFC5A4C1C8ADC6CCADC7CBA6C0C4A7C2C6A5C1C4
+      B3D1D3BFDDDDB0C7C4BACDCAD8ECEDB8D1D29EB9BCACC6C8A4C1C3A8C5C9ADC6
+      CBA2C1C4A4C3C7A5C0C1AAC4C7ACC5CCA6C2C8A8C4C79ABDC4A6C9CDADC9CBA6
+      C1C5ACC8CAA3C3C8A7CBD0B2CBCEABC8CBA2C2C9A1C5CBB8D6DAB6D1D5ADC6CB
+      ADC6CEABC8D2ACCDD5ABCACF9BC2CA82A9B385ACB59EC3CC88B0B779A5B0709C
+      A097B8B5A2BEC782ACB093B6B48FBBC16E9CA34F706F5378784F767540635B4D
+      7A7363918D4D736D3C5C514F7168486F683F685E3C5F553C5E524264593E6256
+      4062554162583C595037544938594B38534B3C5E563959513B594E3851433953
+      4636554C34534839564E35524A38554C3E5E5443625A3B5A513E61543E5D523B
+      5A513C5F5339594F37524A39544E36514A36524B37544C3152493A5F563A5A51
+      36564B3C5E503B5C503D60573C5B523D5A513A5A514062583F625742655F4266
+      6044685E486D64456C66426860446860405F5A3B5A5137524A3D5D553F5F573C
+      5C55446A654B716E517C784B7E7E4075763C6A6643736C527E7E54807C40645A
+      375044486D604B70664A6A613D5F4E2F553E2F5745305642335A45335B48355D
+      4C335646345B4635604E2D57412C513D395B4C4169613C635D3B5E563D605744
+      665E41665D3E62584062593E665859715E707463777A696D70565E65465C5C3E
+      5955365B56375754334D4B26282810191D151D1D151F1E131B1F17191B162D29
+      19352C1A322A194948314143253234192D2F1B2627161F231317160F3B372839
+      3A1E4C4C385051394F52374950303033182F2D1D3A3324504B30524D2F4A4A35
+      514A36514B3A4C4A324A46374F4E3A625E506F6A54514F364A493740442B3D3F
+      2E4548428487775562445F6357636C6175816C7E836D878F7D949D878F968194
+      9B89A8AD9DBEC2B2D0D7C6DBE0CFFAFAF3FFFFFEFFFFFD75826B7C8092E2E4ED
+      E5E6E7E0E2DBD7DDD2C9CEBAADB7A6A8B2A6B7BAACCDD0C3D8DDC68299716675
+      5E212A0F212F1933423C48575D45523B4859435E6B5E6A77716F7E788A928888
+      9081868975757E69636F5959634B5A5B4A585B495559445255456769687D8572
+      676F5B6D7360606A5D656D615F6C53646D566B6D63696F61797F72868F7E9EA4
+      97B4B8AECBCDC8E7E9EBF0F2F19095859EABC0FFFFFFFFFFFFFDFCF2E2E4D4B1
+      B8A79AA695AFB9A8D2D2C4BCBDA93E4C35293A384D5E57424E3F53615A637061
+      727969757F7487907F87917A79806F696B556269495F614C60624C5E5E496063
+      4C5A5C457D80749DA5959EA6919BA18CA0A48C9499858F9784616B564D5F523F
+      514C5E6E6A5A6C6A576A665B7062576D6261746C53685865716869746C657C6A
+      465A4A6171666B756C667164566A5D66786B667364647565576657565E546A76
+      6B6270635F6C5E54635266796B5F6C615F6B5E5A6E625E71615F6B5F55695A5C
+      6D584C5D445E6F62586C635F6F645665585A6A61606E6264735F60756655645A
+      6373646070636171645F6E5F4F5E556671636373666171664A5A4C4F61516170
+      665C6E605B6D61515F526173666373635F7061656F635266546370665E6F6361
+      6C5E6476615063556471606270635466575F6C605464566571646A6F65616F61
+      647166596A595F6E6166716364736565736A616B5D61705F64705F63735E6371
+      655C6F60596C5B62736462716565746497693F5078405076424F78405078404F
+      7A41507F41528043548544558845558B43558C44578E44558F44578F44578F48
+      5993495C98495C97485B97495B98495C98485C99485D9C485C9B445A9846599B
+      465A9C425599425499475CAA536CCB5B76DE627EE06480E06782E26D86E46A83
+      E47089EA7088EB7089EE768FF1748DEE788FF17C93F57E96F6829CF98299FA7D
+      96F88198F8849AFB859BFA879DFA849AF97D95F6748FF36685ED5C7DE34F75DB
+      4973D85277D85980DB5C83DD5A82DE5680DD507DDB4775DA426FD4426AD24166
+      D0426ACE416ACD456BCF4B74D04F77D0537ED05C83D56387D75A82D65881DC65
+      8BE77093ED7697F17B9AF3819DF37D9BF57D9BF67D9CF67999F57998F27697F3
+      789AF87598F56E8FF16E91F17C9DF684A3F97D9CF27396F2739AF3799DF47DA0
+      F5789DF67698F488A9F686A8F87DA0F67EA1F984A5F97BA0F381A3F684A3F57D
+      A0F584A3F981A1F5799AF5809FF484A4F57E9EF589A8F881A1F3789BF17599EF
+      81A0F384A5F57DA0F384A1F287A5F27EA2F17D9FF17C9DF1799FF36D95F17396
+      EE7C9EF184A3F384A3F181A1F184A3F186A5F284A3F180A1EF87A8EF88A8EC89
+      A9F287A9F184A4EB87A8EF7EA0EB7EA3F082A6EF85A5EE799DE7749AE4739BE4
+      759CE8749AE37CA0E7759BE4799EE4779BE1799EE381A4E77EA3DF7BA1D7466B
+      AF21437C2C504F2A463A314D3F2F473B2D463A273D3122342830493D324D3F21
+      33251D281E2331262130252130241E2920202B232433281F2D241F2F2427362B
+      2030242236292031261E2B22344C4344645A30473926403B41645A395549344C
+      423651432A44354D626CEBF4FFFEFEFFFEFEFFFDFEFFFAFBFDF7F8FAF7F9FAF2
+      F7F6F1F7F6F1F7FAEBF2F9E9F0F9EEF6FBF6FAFBF8FAFDF9FDFFFAFDFEF9FBFD
+      F6FAFAF7FAFDF6FBFEF8FDFFFCFFFFFCFFFFFDFFFFFDFFFFF4FAF6F6FAFDF7FA
+      FDF8FAFBF7FAFAF4F9FAF3F8FAF8FBFCF6FBFCFDFEFDB9BCAF828E918996977B
+      878E6F818D6E82927789998495A08695A26E7A88545E72798697B7BFB9BEC5BE
+      C9CEC9D4D8D4DBE0DCE3E7E4EAECEBE9ECEBF9F9F9FDFDFDFDFDFEFDFDFEFDFD
+      FED4DBD5869F937B968BA3C0BFB3CBC7A7BEBDB6CECFABC5C7A6C4C9A4C5CBAA
+      C8CBACC7CBABC7CAB3CBCEB1C8CEB4CCD396C0CF92C2CFA4CAD39EC5D2A6C4CB
+      B4CACBB7CBCCB4C8C9ACC6C99DC1C9ADC9CCADCACEB2CACEB3CBCBB1CDCFB3CC
+      CCB2CACBB4CACBB0C9CAADC5C9B4CACAB6CBCCB1C7CBABC6C9B6CCD0AFCBD0AB
+      C9CE8DBACB92BDC9A7C8D086BCCF87BECEA2C8D3A4CAD7AACDD6ABCBD290C0D3
+      97C3D2B6CCCF9CB8B292ABA5B7D2D6B3CCCCB2C8CABFD5DAB9D2D8BDD4DAB9D1
+      D8B9D1D8B8D1D9B6D1DAB5CED6B6CED2B8D1D5BBD3D7BBD5D8B5D0D5B6D0D2BF
+      D5D9B0CED5B3CFD7BBD1D6BAD3D8A4CED8ABD1D8C0D4D8B4CDD3BED4D8BDD6DA
+      BBD4D9BED7DBB4D0D6B8D2DAC0DAE1B9D6E0B7D6E2B1D2DCB2D4DBBFD8DEC2D9
+      DEC0D8DCBDDBDCBBDAD9A5BFBAB0C4C2D7EDF0BDD5D4B6D0D2C8DEE2BDD5DBB9
+      D4DAB0CFD6AFD1D6BFD9DCC5D7DCB9CFD5B0CFD7B7D7DABFDADCADD2DEB2D3DC
+      BCD5DAC1D8DBC6DCDFB1D6E0A8D2DBBDD8DAC1DCE1AAD2DEAAD2DCBEDBDEC6E0
+      E4C6DEE6C0DBE2C1DEE4ABD5E2AAD5E69AC7D5A1CCD9A6D3E391C9DE80BCCC7B
+      B7C489B8BFC0D9DAB7D6E0A8D0D99EC5CE70A4B743646445665F5F8B8D5B9097
+      5B82853C605B54807E5376734A6C6575A09D4F777634544C3D61564163573C5D
+      5342665D3F62563C5D514162583D5D524263573F5C563857503351473F62553C
+      5A4B365345395A503C59513D5E573B5B533C5D533C5B523F5F563B5C543F6058
+      3C595337574B3B605243645F3D5C5534514A304E4433524A35514B395A4F3455
+      4C3C594F3E5F533C5D503B594F3E5C523C5B503E5D5342625942625B4061573C
+      5E533D5B5144625745685F446E66446F66456B654464603C5A5239554E3D5B54
+      405E594562614A6B694C6D6943615A3F6B633E746F43716B5580754F776F4F7A
+      6F4B776D4568604F7169567973607F7C57776E43665A426A614B6D64496C6248
+      6D6345645E415B533C544E37534833534039564A456562486E6A466F6642655B
+      496961476963446A6140665A3D5C54476660697C6C82806C75776162684F5A63
+      474D5436444C2644482743482B4B4E2B2A2B0D1B1B0D161A12201F1220201020
+      1E122D281A2E2C1B2823144B48344748243234192E2F162526132022131A1A0D
+      3130243A381F3D402B3E422F4347354046322C34162A2C1831312147462E4244
+      2749472F3C3D294542323F412D44493242462E47402C534B37534E374F4B3652
+      4B37464836504947909891989A818E9285969C8D969588909A7F8F997E969990
+      8D92807E8B7D848D7A737E767C827E7B7E74727E747D8A80A3A99970795E7988
+      93F1F2FAFBFBFAF8F9F4F2F4EBEEF3E4F1F3E4DCE1CDC3CBBAA7B6A5B0B79CA2
+      AB8C5B6F4F1F2D0F2C34263943415362584F544A576358606D646F786C72816E
+      79857C8892818E9A887C88746C6E5A6969575F62425E5E42595A445157456163
+      6090958998A0889B9D8CA6A897ACB09BB2B8A5B6BAA9BFC2B0BBBDAEC4C6B9C3
+      C7C0C6CBC0C3CCBEC4C9C1C9CDC5D6DDD55565548F93A0CED1DAC9CDC2D1D5CA
+      D8E0D2E6E9DCE5E7DAD3D8CAC1CAB396A0854B59413A4439505E544455485460
+      53646E646C766C6F7D6E77857774816967715F565F4A565C4350533B4D4F3A48
+      4E344A5238464B3D72776C777D6E6D766279806C7E89748C99818E907C444D3A
+      5C6863AFB3AA667364546B655066645F706454695D5E766C5369586270666474
+      6965776A48594B61716566786C627968596A5D6576686576636275665A69604D
+      5B506B7465697561606E585264566577695C70605E6F5D5A6C62616E655E6D64
+      5466605B6D57465A485C6F6260706161706254695858685D6471625A6D5F6075
+      66566B5B627361637066667065626C60586B5D60765F6175636677684D5F4C51
+      644F62735F5E6D6160705F3C473459665A6776626271606471645664555C6F61
+      607161616D5F6471644961506974646471614F6659566E625264596471666670
+      605C6F5F6174635E6959616C5B6371626474666677685A6A56616E5F626F6465
+      6E626675635C6B5B5C6D5D607568637061647362976942517F42527E42517E43
+      538345538444528447558648578C495A90495B90465A91465992495793465A93
+      495A984C5B994C5D9A4B5E9A4C5F9C4B5E9C4C5E9C4D5FA04A5FA24B5E9F485F
+      A0445B9F475B9D455CA24659A042569D4559A54B62BA5974D76A83E06A82E16B
+      86E36D89E46F89E86F88E96D87EA768DEF7089ED6E89ED7790F17791F17B95F4
+      7C93F57990F57790F57D93F8819AF9829AF589A1F989A1FC8199FA7E95F97C93
+      F6758FF16280E65174DF4F74DC496DD74C73D65881DA5581DE517FDD4977DB45
+      70D7446ED3426BD3476ED24771CF4971CE5077CF547ED3577ECF5880D35880DB
+      6188E47291EF7596F3799AF57D9AF5829EF87D9BF67998F57C98F67392F57596
+      F57295F46F95F36E90F07596F47C9DF8789AF47596F47397F1759AF1779BF277
+      9AF2789EF57498F17EA2F580A3F27EA1F47EA2F57EA3F584A5F584A4F686A3F3
+      86A3F37D9EF57D9EF87D9CF67E9DF582A2F481A2F47E9DF37E9DF17E9CF17B9B
+      F2799AEE87A4F382A1F47C9BF0799CF06B95E9789FF0799DF07DA2F37CA0F373
+      97F17497F084A4F181A3F17D9EF07D9EF181A3F181A5F17CA0EE7EA1ED86A6ED
+      82A5EE80A3EE87ABF089ABF1799DEC7D9FEB87A9EF82A3EC779CE679A1E96F97
+      E46F97E17CA0E77B9FE4749AE17299E1779BE27B9DE27B9FE17CA0DF779BDA7D
+      A1D936558C325146375949324F413550442E473C2B46392C4537202F2426362C
+      2D3C31222F231F2A20222D242533271D2F241F30251B271C202C221F3025202D
+      242531282A393024352A1D2B222A3B3134493F3B574F2F4236243E3A44695E36
+      4E412B423630463D30493B334746566D745B78766689887393957D9D9D81A1A0
+      82A09D87A09B879B9A7E93938299977D908D82918B8E9B928A9E9292A9A2A0AF
+      AAA0AEA99BACA48F9F99819791768D856E827A74878177979186A19DAFBBB691
+      A29B8CA5A2A2B2A8A8B6ACA2B1A8B4C2B9B4BEB3ABBBB4A5BAB08C998BA3B0A4
+      A1AFA5B1BAB4B6BAB7A1A9A9939D9F8D979C848E9678828E5A5F77778091BDC5
+      BFC6CCC4CFD2CFDADCDAE1E3E1E6EAE8EEEFEDF1F3F0FBFCFBFDFDFEFDFDFEFD
+      FDFEFDFDFEDEE0D99AA49785907D99AAA09AADA68D9F9FA4BDC2ABC3C6B3C9C4
+      AAC4C1A6BDC0AABDBDACBCB9A7BDB9A5BBBAA5BFBC96B9C199B4BDA4BAC19BBA
+      BFA4BCBCACC0BFACC2BFACBFC0ACBEC0A0BABAADC0C1ABBFC2ABC2C1B1C4C4A8
+      C0C3ABC3C6B0C3C7B2C2C4B0C3C3A4BCC1A3BFC3A8C4C4B0C6C8B2C4C5BAC8CB
+      B7C8CEB7CCCFA5C3CFA7C5CFB6CAD2A3C2D3A2C4D3B0C7CEA8C4CDA6C5CBABC6
+      CA9CC1CEA1C3CEB8C9C7A8B9B19BADA4C9DEDDBED0D2ADC1C2BCD1D4B5CBCFB5
+      CCCFB5CBCEBACECFB7CCCEB3CAD0B1CAD2B6CBD2B6CDD2BCD1D7BDCFD5A5BFC4
+      AAC0C3BACDD3B2CDD7B3CED4BDD1D4BBD1D8AACBD7B2CFD6B6D1D3ADCCD3B8D1
+      D7BCD5DBBBD3D9BCD4D6B9D2D8BBD2DABCD7DBB6D2D9B6D1DBB4D2DDAFD1D9BA
+      D5DAC0D7DCBCD5DAB8D4D9BCD4D5A1B9B3A0B9B3DDF3F4BFD5D4B0CBCAC2D8DC
+      BCD1D9BED3DAB7D3DAB3D1DABBD7DCBCD5DABAD4DAADD1DAB2D5DFBDD9E2B0D4
+      DFB2D3DCB9D4DBBDD7DBC0DAE0B1D4E2A7D1DFB9D6DFC1DAE2ABD3DEA8D1DDBC
+      D8E1C2DCE3BEDBE6BDDBE3BDDBE2B1D7E6AAD5E8ABD4E4B1D8E7A8D2E499C8DB
+      96C6D991C5DA98C8D9B0D0DA88B7C68DBAC797BDCA456D7D56787598BDC56799
+      A25A8A935C7D83446A63557D76597972678D8C6691923C605D3C605742695D3F
+      63593D625A41655B395B50406157476B62415F573E5C544060593D5C5437564B
+      42685B3453463655474064574061593F605A4261573C5D533E5E543E61553C5E
+      543759503D5E543B5D50345A4C3C5F564565603C575238564B37564C3A57513A
+      5C51395C523D5C543E5D53415C57405D5A46655B4260553D5B5143625A405D59
+      3F5D56436258405D53415E5543635B43655B43635D4369643F665D3F5F56405E
+      5843615D4B757145696844635F4D767150766F50736C4C756D527F7A557D7454
+      776C587E75537C754D706C516F6A536F6A5A7A7660828452767752777853757C
+      4C706E4B736D476965476862455F5E2D39372E3B34384D4B45656A476A6C476C
+      6640635D48686343615E3E5C5A3D5C553D564F405C55677C6E8187767C7E696F
+      6F5467654862613E5F5C3A57553558543452512F29310E181D0C181E0F1E2315
+      1D1F112422152927182F301E2E2B194D483146462432341A2C2F12252C132322
+      0F1B160B353428363A234F4839494E38454631444B2E2F31162828162E2F1B3B
+      3F25353B1D373C22323B243A3C243C3E213C3B223B3B23383C263B3E293E4129
+      3C41223D3A26373A273C3C37727C73404F3547493A474B3A525B4B55634B5C6A
+      526F766B7277667D83759299899BA396AFB4AEC5C5C2E6E9DFFFFFFDFFFFFF91
+      9676828991EBECF6ECF2F1DDE2DCC8D1BFB4BEB2A4AEA0B0B2A5C3C9B9E0E2D7
+      EFEFDBA0A9908D9778333E1C20301E273B335463574450424C594F58665F6779
+      6970826C848F7C888D7C7B85716B7A665F6B575B6249585A44585A4050543D47
+      4E3A626C62797C6D565F4A4D5743575E4E555E4C5660505C6659646F626B7564
+      848A7D919991ABB19FBDC4B1CED5CAE9EAE3F8FAF6939C8BA4A5B2FFFFFFFFFF
+      FDEBEDDDC8CEBEA7AE9AA2AB9BB6BEAED9DFCDC0C4AF484F3922382B4A5E513D
+      4538505B4E5A6C5E6774646E7A717083747687786B78615F644E5E6349585944
+      56573D5B593B5151394A523E7B7E72798373747F6C6E7A6A747462797D6A6271
+      602F42292F3D3B616F6D5A6F6256695F54685D5F716A4B625860716A56685A63
+      6D62636D6666777542595262706B6576646276685B695D627969637766617366
+      5F6D5E5361516976655F70635C706155645562786A5F705E5C6B615B655D5E6F
+      5E626C605A6C5A5C706046594A6071615E6F5D607563526357576A5A61706261
+      6D685870685C695D62736360705F606E6360716259685E647465606F5D617563
+      5766565C68596573635E6D5F5E6F605B6558647165637463616F616374655462
+      576070626471625C6D606471604C5F4E697766626E605366565E716247574A60
+      7464666F615E6E6063716561695D5F6C5D6375606273636575625B6C575F6A5E
+      6270616470636373636A70615E6A5B6373646670636473659769455283455383
+      45558545568845548746558948598F495A91495C964B5E964A5D964A5D984B5B
+      9A4C5E9B4D5E9D4D5F9C4D609D4F5FA04F5FA24D60A34C60A34F60A24D61A24D
+      60A34C5FA5495FA64B5EA44C5FA54A5EA7485EA6465BA243569B4A5FB35974D4
+      627DDE657EE06C88E4708BE66E88E66D87E87990EF768EED728BEE7990F0758F
+      EE7691F07992F37B93F57C93F67992F47890F48299F8819BF6859EF8889FFA85
+      9BF67E99F57C96F47E97F47892F1748DF1637FEB4B71DD456ED74B75D65480DA
+      547EDA527EDA4C79D94673D54C74D64C75D34974D24C76D04C75CF5076D25A80
+      DB6085E46F8FEC7D9AF37C9AF582A0FA809FF97997F57D9BF482A0F67D9CF877
+      98F57897F57090F17292F07797F17898F27695F27799F27699F16B8EEE7596F0
+      7397F0789DF3759BF3789DF27C9FF57B9CF37DA0F57EA2F581A1F382A1F380A0
+      F57C9FF47E9EF47C9CF67C9DF57D9FF57D9FF47B9DF37599F47699F17D9EF37D
+      9EF37D9DF17C9DF080A0F37595EE7295EA7CA0F06E97EE7C9DF1779CF1779DF1
+      779BEF6D91EE7497F181A2F17D9EEE7B9CEF84A5F189A9F27CA0EC7EA4EC7DA1
+      ED7EA2EE81A5F084A4EF89ABEF7D9FE980A1EC7EA1EB799FE786A6EC7EA2EB81
+      A4EB79A0E4779DE47499E26D96DE769CE2799DE2739AE07EA0E47B9FDF7599D7
+      6F93D4577EBE3952732B3B32334B403754473450422D473D2F483D30493D2A3E
+      31202C2324322A2030241D291F202F251F2F241C2C2422382D1E312419251B20
+      34281F2F241D28202231281F2F2618291F273A2E2B3F3538524A253C2F284239
+      3C6559395646293E312C423933473B2C3F332333250F1E1009150C0E1B141425
+      1D1A2D261F352E29433C334F4E395150405752435A53465E57546B64586C625E
+      6D626C7D7277867A657563525E4B5C634C50553E4B503E49503E394130565C51
+      B7BBB3BFC5B6C0C7BDBEBFB0BBBEB3D0D5CCDEE1D5CAC7B5B9B8AAB7BAAEC8C5
+      B7D3D1C6B5BAB0E2E7E6F7F8FCF4F5F5EBEBEADEDEDACDCECBBCBBB59798939C
+      9E9BCCCBC3D2D1CCD8DCD7E5E7E6F3F4F5FAFCFDFDFDFEFDFDFEFDFDFEFDFDFE
+      FDFDFEFDFDFEFDFDFEF1F6F2EAECE7F6F3ECE5DFD8B6B09D7B785F626553757A
+      6C8C8F8591978BA1ADA5A0AA9C99A395A8B3A8A5A99A9E9E8C9DA08D9DA3919D
+      A393A0A8979EA896A0A6999BA19298998B9C9D8D96A2909BA89BA2ABA0A5AD9D
+      A7B09DA2AA99A3AC9DA5AEA0A3AEA09BA698949D8E9B9E909EA0928592838498
+      8B899C9192A89C919F93909E9187968986998E89998F82908598A599A0A69A99
+      A0919D9F8FA1A49598A49793A292969F9297A1929BAC9F98A39994A19598A698
+      96A39699A4989DA89C9DAA9B99A89798A899A0ACA09EAA9B8F998C8C9B90A0AD
+      A2CCCBC1CCCDC3A2ACA09BA99C9EAEA3A1ACA29EADA3A0ADA2A2AEA2A3AB9DA1
+      AA9A9EAA9B96A4979EADA2A3B0A6A2B1A7A3B2A7A1B0A3A3AFA4A6B4AAA2B0A5
+      A2AB9DA7B1A5A8B6AA9EB0A5ACBAAFD6DED7BBC5BCB3BBB1A3B0A6A5B3AEA7B3
+      AAA8B7ABA8B8ACABB8A9ACB8AFA8BAB3A7B8AC98A39597A29099A699A1B1A8A0
+      AC9F9CA99BA5B3A9AFBBB1B1BDB3B3BFB7B7BCB7B2BCB9B2C0B9B5BFB9B5C0B9
+      B4C1BDAFBAB5B2BDB8B5C2C0B6C3C0B6C2B9A1ACA09DA8A0A1AEA9B0BCB7B7C3
+      BDD4DBD8B7BEB9889792798E897E908B6177746E817693A39D54766E6A877C97
+      A8A280958E617A75637F7A4B736B5F817C587D72587C774D706C3D645A446A62
+      40625945695E4A6E644163573D5E5346645E44625E3A5B5541635A44635E4266
+      5E3D63573C5E523F60523E5E523E5F534065593C5F543B5F573C62593E64593F
+      62573F62593B60543C5C513B59513C60553C60503D5B5037544C446A6041685E
+      3F625A3E5F563C60563E5F5A415F58405C56415D5B42605B47686246645F4462
+      5B4260593F5D5543625B44636047656245615A4A68624B6A65415F5A41645B46
+      6A6144625E4A6E6B53837F4A756E4C746D557F7A507974567873557973517871
+      557D725A80775B7E7C567C7656756E54716C4C6A655375725A8080557E7C547E
+      8352787F4F73715374734A6D6F456669415E5B33433D2E39332F3D3B405E5F49
+      6E74446C6C436C68436865436264425D5F394D483A4F463E5D5376897E929384
+      81816E696B52616342545937474F2E464D2F494E2C515431303312221E10191E
+      0C1C20131F221021231626271D2B2C172D2A18514D324546263332162A2B1A28
+      2A161F2114191A0E3C3829393726454A385A5A48595C4552553E2B3218323021
+      3537214C4B2F504F334D5131504E34505135504D354B4C324D4D344D4E35504B
+      384F4D39464E324B4B30484932373A34808380888B7A8287768E907D9697819D
+      9F88A5A595A1A698A4AA989EA89BB0B0A8ADB0A4B0B6ACBABCB3BABDB4BBC0BF
+      CCD2CD6673597D888FD0D2DBE2E4E1D9DED6E0E4D8ECF1E3FAF7E9ECEDE2E0E4
+      D8CBD0BCB5BCA88F9A7F8A96772D3A17303D3036443E57605D51594A58615562
+      6D5F6D7D6C6E8177788B7C80917A808871798168646F545E644A595F425A5A45
+      535A404D573E5A6354898B77878B738E96819DA08EA6A993B5B8A8C1C5B7CBCA
+      BDCFD0BFD6D7C6E0DECCE7E8DEE7ECE1EBEDE3ECF3F1F8F8F5646B55738893A6
+      BABD9AA996BABDACD1D6C3E8E9DAEDEFDFE7E8D6CAD0BC909F7E556448374135
+      4B574C525548535F515E6D5E6775686E7F6D748371777E6C676E5A5F634E565C
+      3E484F32474D334A482F474A33414C366771646A756066715A6E7C638E927686
+      89765869582C3F260B130E0F202756736D586959485F57536F5F4462555A7166
+      535C546370615C6C5F69786C4652476270656679666671635A6E636B756A6773
+      646573655A6B5F455B4E66796C5C6E616471664B5C515771656073645C6D605F
+      6D5E677566566E5E566C59616F624751505B6E635A6D625B70625164575C6C61
+      61736162706363766A5B6957636F63606E625F746463706354645A6275625E73
+      605F75645462555768596973605E695F5E6F615063556774625E7064636F6663
+      71655E695E606F60626F61606E615F706356655B6175666073615765565E6E59
+      4D5F50647464607163616D5B677361596957566655667660607062636F6A5B6A
+      5D5A695A6274655E7160646F615B6F6060705D62716463746066746297694955
+      8545548747568B49598B4A598E4A5B92495B954B5D974D5E994F619A50619D50
+      609F4D5E9D5161A25260A35062A35061A45261A55063A65263A54F62A64F62A7
+      4F62A64C61A74F61A84C60A74B62A94F61A94D61A94F61A94D61A9495FA6465B
+      A44760B15A75CE6F8AE36C88E36682E06B86E4738BEA738BEB738BEC708AEC74
+      8DEE7892F07B93F17991F08099F47E97F57E98F48098F37B93F57D96F5849CF8
+      89A1FA889FF8859EF87C98F47790F27E96F18096F07C93F2738BF16180E95778
+      E04A70D8456FD04870D0466FD03F6ACD406ECE466ECE406BCC446ECD4C76D65C
+      81E26589E77292EC7D99F17D9AF37B99F37D9BF6799AF67798F3809DF37E9DF3
+      799BF57D9EF47D9AF07897F17B9AF1779AF27497F47599F17D9CF07395EE6F93
+      EF7393EE7499EF7DA0F37B9DF4779AF3799DF67C9EF87B9CF37698F37498F276
+      9CF3759BF47D9EF585A4F581A1F57D9DF57B9FF57DA0F582A0F5789CF37B9EF2
+      7D9FF57B9DF17B9BEF809FF26F95EB6A8FE8799CED80A0F1799DF17B9BEF7C9F
+      F1789BEF799CF07299F1709BF16C95E96D95EA85A6F18CACF184A4ED7CA1EC80
+      A3EE88A8F184A5F07EA1EB85A5EC7EA1EA789CE781A1E87C9EE87DA0E880A4EA
+      85A5EB769AE1789CE381A4E8779BE37096DE7BA0E4789DDF799CE07398DB759A
+      DA789DD56187C73859A03C4F5D334136354B41355347344E3F294133354D4127
+      4135253A2C202A201C28211F2F241D2D231E2C231C271D1F2B231A291F1D2B1E
+      1B271B1B2B201F2F24202F231A281C1726191C2F2321382C31483B33493D2D45
+      392C453D325A523A5D4F314D40354E3F25382D263B33253E31253E2C2032241F
+      30201E2C1D1C271C1B2A1C182B1F1B2D261C3229173127213E3526403A29483F
+      35534B36514B3C5B564866644765604D6A645B706B5A756B6780755B6A5D5F6E
+      68BBCAC9D9EDEEDEF3F6E3F7FADEF2F1DBF0F4E4F6FCF9FFFFFFFFFFFDFDFDFF
+      FFFFFFFFFFFEFEFFFDFDFEF9FAFDF6F7FCF6F7FBF6F7FCF7F8FCF9FAFDFAFAFD
+      E0E4DAC9D8D8CEE0DFC2D4D5C1D5D5A8BFB7809E987B969387A5A79CBCC3A0C2
+      C59CBFC09EBEC09DBFC09BBABC8AA8A9A7BDC2D1DEE2C6DAD9B9CEC49DB7A286
+      987F64715A737A71A8AB9D888B7C969B958F978B909A90B4BAB0CFCEC4D9D3C7
+      CBC5B2B7B4A2A3A8908E988C9EA69BB2B7A8CED0C0C5C7B9B5B8A7999E8B9296
+      88A2A69BA2AD9DABAFA2ACB2A2ABB09FA8AD9CA2A89BB0B4A9E6E4DABBC0B038
+      53412F4D3E3D5A48416653233F302033231C3626284E41294A3B334838758773
+      9DAA95ABB2A2C3C6B9A7B19F97A28E9BA3939EA59796A08D8C9B869BA9969CAA
+      969DA9979DA99794A28F909F8F93A0909CA597A2AB9AA5B19F9DAC9DAFB0A4A0
+      A393B0B8ACFAFAF8E0E1DA909D8D8E9E8E909E9097A2919CA6939CA5959AA393
+      BEC3B7E5E3D9BFC0B0979D8B9DA392A0A8969CA697A1AA9AA3A8999BA3939AA5
+      92B5BCA9D8D3C6C3C3B5939B8C7D8A77BBC5B9FFFEFDD4D5CED2D7CF989D8EA1
+      AF9DA7B1A3A4AD9DA2AA9D9AA99AA4B1A298A293A4AE9FD7D8CED6D8CBB6BCAE
+      9B9F8B898E729DA48CACB29FB0B7A7ADB3A79CA191A6AA99AAAE9DA3AB9AB1B9
+      ABB1B0A2ABAC9AB7BBAAB2B4A4AAAE9FA3AD9DAFB7A7CAC9B8CFCAB9A8A99588
+      8F7E939F89D1D8CBBEBEB4C1C0B0A8AF9DA2AB9893A08F728776607F735B796D
+      667F776F8E8657766E4C6E65496E65426A6642666440625A3D5B4F3D5D56446E
+      6846706A4769614A6E634A6F6141635B46645E4060564260583D605940625D41
+      5F5A3A5E57395D523A5B4F4265593F60563E5D523F645443645941645F3C6158
+      3A605343685B42655B3C60543554493C5F56466461425F573F6156395C523C62
+      583E665D3A60553E5E5642655B41645E46695E43645A3F625D3F60584363594A
+      686245625F42605741605743625F4869664F6F6F4B6B6B476866496866445F5E
+      486560476661476562496C68507C76537F7858807E56777656766F53716B5371
+      6C54766C52766D547772567A775276735477715677724F736D517A7755767351
+      756B578083587F84567F7F56767C4B666D4761663C4D4E394541343F3A303A34
+      3D534F4A6868426361466B6A466B6C4462663D5B573E594E3E594F48665F818F
+      83908F7E817F686A735664694E5B603E615B3B5F573C5C56355754313235131E
+      1E0D212014181B121F22162022132624192F2F1A3732204F48374C4F2C36361A
+      2E2D1F2A2A18202413151A0D3635273734234D4A3D64614A5E5E3F595C3E353A
+      1E3638283E3E3045493441472F41492A3C422D3E41303C42253E45313C45303C
+      402742452F4043303C422C3E4828404429383D316E766F464F3E4D54434F5942
+      565F485B64516C715A75796576816C929D8D9DA398B7BDAAD9DBC7E7E4D3FFFF
+      F5FFFFFFFFFFFF8F9A737B888EE8E7F1F1F2F4E7EAE3D1D4C5B1B8A89DAC97B0
+      B8A6C2C8B8E2E3D8EEEFD8B2B39A9AA28E4C5235323A28353D35515E564A5041
+      4F5A4C5C6A626A796E738173828D81828F7F7583726E79685F69555A634C535A
+      3E5159424D523C424D385E6858757D6C525C4B56604F5A6352606B5966706075
+      796979866F868D7C9AA097ADB4A4C0C5BACED1C6D3DACEDCDFDEE7E9E886927D
+      8A98A9FDFFFFF1F2EED8DED0C5CDBFBDC5B4BBC5B4C8CFC0CFD1BEB7C0AA5862
+      472330224B5C4F3B483E4D5952616B5F6675656E776C7885776F806D636F595E
+      6350565E43545A4254533E57553C53523B534E3C78776B87897578806D7C8272
+      7D8374777D6C62705D3F513819341D1832263951514A5E5A485D5B596C5F4059
+      45516A64505E5A5A6B5E5969606573714655495F6E666374656275655B695F67
+      73696574696474685F706146554A6978685F6E655E6F624C5D4A5F7565627066
+      606C61596B5A6275635F6F615B6D5D5C6F5E4054456273665C6D625F6F635163
+      565465576171616073635C75615C695B627060677462566B5A606E6155635A60
+      74655E756562706558645757645860735E59695E626F61546555647163657565
+      5F7060667368566B5B5F7364637464586C5F61746652625762756160715F5664
+      565F73635664536673636471625B6D5A62705E606E585F6B6162716263746367
+      75655864545969576270636271615F74625A6E585264536373655F735F607660
+      000049578949598B495A8D4B5B904C5D934C5D964C5E98505F9C50619B52629D
+      5162A05262A35464A65264A55364A65365A75466A85464A95465AA5565AA5265
+      A95266AB5465AB5165AB5063AB4F63AA5065AC5065AC5166AE5165AC4F65AC4D
+      63AC4B60AA485EA84B62AE5A75C56681D96580E16C87E4748EE7708AE8758FEB
+      758EEB6E89EB708BEF748DEE748EEE758FF07E97F47D97F47791F27C97F58099
+      F47B97F2829BF489A2F8849DF8809BF57995F4728AF17993F17892EF7892F17D
+      96F4778EF26D8AED6988ED6586EA6585E66383E75B80E75578E05579DD5F81E4
+      6C8EEE7091F16E8EEF7791EE7593ED7593F17795F27998F3789AF57C9AF57E9E
+      F8799AF67698F1819EF47998F17795F17998F27C9EF4799AF46D90EE6C8EEB77
+      96EE7495EE7596EE789BF1799DF17697F17999F2799CF3789DF5799BF3779AF4
+      749AF5789DF5799BF57E9EF582A5F5779DF47499F480A2F682A2F67E9EF47D9E
+      F57B9CF57D9DF2789AEF7699EF7C9CF16B93EA7299EB7DA0EF799BED789BF17E
+      A1F080A1F07D9FF084A4F281A5F4779EF06B96E9759DEE89AAF182A3EC7EA0EC
+      7DA0ED81A3F184A4EF80A1EB7C9DE880A2EA80A2EB789EE87398E37EA2EA7CA0
+      E77EA1E885A5E97EA1E87C9EE67B9DE37B9EE4779BE4769AE0799CDF7C9FDF70
+      97D96C93D35C82C24C6EAC3A4D63364437303D33384D412D4C3E335242294235
+      2C43372F443925372B2233271B291D1D281F1D31261B2F2419261C1B2D211928
+      1D1C2B1E172B1B18281C182C221A30231D2F201827181A2B201E32292A443830
+      4337344F43305142335B543B5F533553463E5C4E2A3E311E31271D3427263E32
+      233C30243D2F223728213A29223D2E1F3B2C2C45382A3F34253E31243D2E2539
+      2B2B4133234030203F301B35281F382C2741362A453E2D4A47385E5A3B615633
+      5D4F36635B45746E3D6C6541706D41736E3E6D64436B65496B74C9D3E0FFFFFF
+      FFFFFFFFFFFFFFFFFFFEFEFFFBFCFDF7F9FCF6F7FBF4F7FBF6F7FBF8F9FCF9FA
+      FDFAFBFDDADED26F9086527E7C577C784F6B6A446459365645293A2D263D3433
+      5D50397563407F6B437C694075643C5D51354F4330423C546C6172917E809D8D
+      89AF9F8DB8A652806D4C7774C1D5D28E977F9AB1B0BCBEAE8C968494B6AC9EBF
+      B2A8CAC0B4D5D0D4E9E7DBDBCEC5C3B6BCC0AFA5BDB8B7C6C1D0D3CCDAE3E1EE
+      EFEABBC3B3779A8C789A8D809B9186A0999EB4AEC1CDC798A59C89A19997B6AF
+      618A7A3D685638614E3655412F493B223B2E2336262B47363B61504665565F79
+      6876907E89A299BDC4BFDBDDD3A0A69C7E928890A9A08AA2979EB2A9B7BBB19B
+      A49993A99C94A99D98A99C9BAA9CA0AD9C9EACA09AA5A09BABA3A3AFAA9AAEA9
+      BCCDC2B0B7B19BA9A298ACA89BAA9FB7BDABA5B0A29BA597A3B0A594A49292A2
+      9591A39999ADA4AFBEBAA2B2AB9BACA49EAEA59DAFA496AA9F8EA4988FA598AB
+      B7ABA4ACA0ADBAAFCDD3D29EB3B0AAB6A9C2C1B5B2BFB8BCD2D3B4BBB6BCBAB2
+      B0B3A796A49691A39897A59CA1AD9FB8BCAC9EAB9FB2BCB0B7BEB0C8CBC2C9CC
+      C58D9588B8C4BAD0D6CD98A89C96A59B98A89DB2BEAEB6C1B59DAFA6C5CAC1CD
+      CBC2A1B0A7BCC7C5C2C9C7C8D1CCE4E6E2C6C7BF98A292BDC7BDFEFEFFF1F7FA
+      E5E9E7B5B4A6A4A693DAE1E6A7BDC488ACA780A6A7709E9866928847746F3D68
+      634C706B486C693659533B5C554369623C5F5540635D426B633F615945665B43
+      665D436C68436D68476A64476B61476E6241655E3E5D58476A60486B62466360
+      4160583C5F553A5B523B574F3D5D543F655D4568613F5F553E63574A6E664973
+      6A3D63594062593F61553C5E5343685F3C62593F6258486D6343655D3F645D3F
+      635B36574E3C5E543E615840605843655D45696246665F446A6241666143625A
+      48665D496A6443615F44615D45655D476A63496B66486B69436A684368644B68
+      6547646148686441605B44645F4B7069517C745986815C878553767153746A4F
+      6F664C6C654C6E6451716C506D6B51706D567675537A7458827C57817A537C78
+      4F6A6644655A4F7C7A537C774D746E5174764B6C6D4364633F52563D49494251
+      4C3D4C463948453C4F483C524B3E55543D565239524B3C56533F5E5A3F5B573C
+      534E8F988C939588858272777356696A47585B3B5653375554344A4C2E565233
+      333415232110211F141C1E132021112422132827172E2A1F3B362445432B4B4C
+      2E3538182C2B192A281922221619191134362B353A2443463758594B5C5E4E58
+      5F4843462E4849333D3A245A513E5A573D5C5B3E5A573D5A5C405C5B405B5A3D
+      5A563C5E593E5A563C5A5A3B5B59365B5B3655533E5554528D9089969E88979D
+      899198839CA18CA3A690A5AB96AFB09CACB2A3AAAC9FB3B4A9B2B7A8B4B9AEB6
+      B9ACB3B8ACB8BBB3C5CCC0636E5577858BCBCBD4D9DBDCCAD2CAE0E2D5F2F3E4
+      FCFAEDF0F0E2DEE2D3CDD3C3BAC1AC99A38888977D39412539412E353C315968
+      5E4C59475663525E6B62727A73778375808F80899280828A7A737C6C616D585E
+      644E5A5D44545D435A5D45585C415E63558D96899CA692979B85A2AA95B0B1A0
+      BDBAA9CBCAB5D2D1C1CDD0BFD1D2C8D8D9CDE3E4DAE9E8E0E7E7E0DADADDDDDF
+      D751644C6E858FAFB7B9BDC3B8D1DBCEE4E7DEF6F5EAF1F5E2DCE3CEBDC3AB99
+      A6895B69503441334D5C49494E3A4F5B4B626D626775666D76687985746C7765
+      646E585A624A5760415257425254444F523D4B51355256426A6F609B93858F8F
+      7F999F8BADAD97C1C0A9CFCEB86573513C54302F493621392B1D3824233F2E37
+      52422D413758706B4C636051665E425D505B74693C493E5A696259705F587165
+      5363595E7369626F695F6F665A6C6841534F627668596D5D5E7162485A516377
+      6C5E6F5F6270625C6B5A656E626473645C6C5D617161435447606F62656E6264
+      706358625758695A6070605E74656471635468556174685E7160606E6166715F
+      5968596576685F71616074655A655258655D6571635F6D5A5C6C605765586173
+      6067745F6570616370655A695964706161715D616E6063716456655761756462
+      75615A6A595E6F605564585E7062637161616F61657463606B5E5F6E5D626F64
+      637163627163606D605B6F5F6674636471636575635C6F5A5365586676626071
+      6164736597694A5B8F4B5C914B5D934C5D964D5F9A4F5E9B52609D5463A25365
+      A35465A55566A55366A75469AB5366A95569AB5569AC5468AB5768AB5568AC55
+      69AE5569AE5468AE5668AC5366AC5165AF5265AF5569B0546AB0536AB15369B0
+      536BB05269B05065AF5065B04D62AB4D63AE5770C56682DB6781DE6C86E36E88
+      E4708DE87691E9728DEA6E8AEA7692EE758EEF6F88EE7993F3829CF57B97F17B
+      96F27D98F28099F58099F4859EF5859EF67D98F57D97F5819AF67D99F47B93F0
+      7993EF7893F07995F1879FF58DA4FA8AA3FB8DA3FD8CA4FE8DA5FF88A2FD8CA4
+      FD88A3FC7C98F67893F67390F36F8BEF708DEE7595F17C99F57C99F3789AF57D
+      9DF57C99F57997F87B99F37797F17595F27999F37C9CF57798F37595F17596F0
+      7497F07092EE7091EE6D90EC7296EE7395EF7499F17B9EF4809FF47397F16E92
+      F1799DF4779AF57D9EF47E9FF4789BF37498F47399F3799FF280A4F5799CF375
+      99F0799CF3779BF47C9BF27998ED7599ED759CEE81A4F36C96ED638AE67C9CEE
+      7D9DF07D9DED7E9DEE80A0EF7D9FEE7E9FEE84A2F184A4F189A8F188A5EE81A3
+      EB80A1ED81A1EE80A1EB84A3EB7C9FE9799DE781A2EB81A2EB7399E479A0E977
+      9CE4799DE27CA0E4799EE48AA9EB779BE17498E0789CE27399DE7598DD769ADC
+      6F95D57396D5698ECB4869AA3B4E6236453D32403437473D3C52453750413757
+      4B3153482D4B403652482D473D263F3323392D23382B2035291F352920352A22
+      3B2E243F31203A2C1D3C2B20392920382A1F3D2F223C2F234134244236264439
+      27483B334F453C5F53355747325751436B5E37594C3B5B4E324D3F2B4D3F2E4E
+      402A4A3D2B50413553452C493B2C493A28463826493D35594F3252462A473B33
+      51463554473955492C4E40315C52355D56385D513B60543E6356385B4C3A6150
+      3C5A4937534739564A3353423C5C493E624F395F4A3956463B513F2A423CBCCA
+      D6FFFFFFFFFFFFFFFFFFFFFFFFFDFDFEFAFBFDF7F8FCF6F7FBF6F7FBF7F8FCF8
+      F9FCFAFAFDFAFBFDD4DACB4965472F4B3E3D4F3F343B323951464B6D5B3B4F3E
+      364D3E456457426B5B427360457764436E5F435B4F435D4F39483D30453C4065
+      5A597D6F7D9E91739787486E5F37554A678180425A4F567A7EDEE0E397AC983F
+      79684687764F8E7D41816F47827CA7C1C5DDE7EAC0CAC03C5C53AACDD4F9F4EF
+      86918564858C749C90497E6B4B786A3F6659446C61476C654C6C653C56493A55
+      483C645843706544796839776033654C2D533E2E503E4168593F594B3B5E4F43
+      6E5E3F605545696141666392ACB0C2CFD362756C3B564C3E5E55375346678B8C
+      C6D1CB677161465950465D523E53487B8D86C3C5BFB1BAAC6B77664A5B50485C
+      4A4D61693E556C405045525C513C4B447C968ED8DCD47D897EA0AE9F869386A8
+      AEAA8F9284495E515F736561797164827C59796F54756A5B7E7355796A446557
+      3E5F535B796C3E594982989084918726443D6A8883C1D0D07488862A474085A0
+      98D7DBD5848B7F32403E3C554E46625A55786FB1BDBA495952587465C8D2C6E8
+      E7DFCECBBDA4A993A8AFA7939C9660827C79979164868485ACAB89ADAC3C514F
+      738F8991A6A54C6460496661496561516A64BAC5C296A19F455752566B647788
+      854F6B659ABAB8C3D3CF99A9AA526A71446E6B3B746C3D79734077733F6C6641
+      686141635B45685F486F6643665D49686046645E41605643655A43695D41655B
+      43655F42685F47736D486E6A456662466A634B6E6347685D44655D496D654D6F
+      6B45655F3E605643655B46685E42645B3F635A3F655D3E615A4569613E685F3B
+      5F5240655A42645F46656243635E44655A44665B42665F41655D3E665E456D62
+      40665A3C61573A5B5341645B44666040605A3F665E486F6C486C6941665F4163
+      604665634B6A6543686240646142636244655E42645A46686340635D395A5040
+      605A51706D517474456B684669634C756D537F78547D78598381547F7E4F7672
+      4D706A4C69624C6C634A6A6248645D506E69526D6A4F6E6954807A5588865281
+      7E4B6F6C4A686542655F487A76517C74506A6242655E4A756E4B706F4D62684B
+      56594752573F4C503F4F4F394B453B4E463C514C3C5148374C413F54523E5455
+      405755435C598E9B8D8D8F867B83746F735A646643616240625F3E5B56375953
+      3957553737371620220D201E14222114171D0E2325162225162F321F45382243
+      3E27525035353718312B1F2B251C261F131D190D36312E34382345463661614E
+      6360475A59404B493945463345462A484A33444B2C4148293D46273F46304144
+      324146333C412C3F452F3F452C3F482E3F432E3C4228333E2F5F6866818B7F51
+      5F453F52424A5B4E526254606859767E6A80866F929388A4A4A0B5B9ABC5C8BA
+      D9DECFE6E8DFF2F7EFF0F2EFEAEDE977867351696BE0E6F2F8F7F5ECF2EBCDD0
+      C4A6AA9FA3AC99B8C0B1D2D4C3E3E4D0ECEAD7B2B99B949D834D5D3E37402C32
+      4036505D554552434C574C5E6A6066796C6D816D74887A7E867C76816C6E7A65
+      666C525A604954563E4D5937445136434B395A62517980725964515A604F636D
+      5D6B736570796B7C877589917D8A967FA2A495B1B2A4C2C9B8C9D1C3D6DCD3EB
+      EDE8FDFCFB9CA491748299ECF3F9E0E4DBD4DACFCFD1C6BEC7B4BEC8B4CBD1C2
+      D1D1C2C3C5AA626F5422312343554A3C4D394954475E6A5F69746B6F7A6C7C86
+      74747D69696F5D5B644F555D485259405154384D513B4C513A474A396F756A75
+      796E6570616A7365737769757E6C868D7C74806663785B576B553E513B314829
+      344A302B4730203826334F40324A4040524A31453D6379743145374C645B546B
+      5E596F6350605464746A6473665C6B66606E623C504A64746C606C5E5E70633F
+      524A5C756A61705F5C6D5D5A6D5F6373655F705E576B5A6274643D4F415F6F65
+      5B6A6167716355635756645A6171635F6F5D6674615868586274635E6F63606D
+      61646F585968556774656273646474615866535A665E5B745E596C5B626E6255
+      645A5C6F616375615F735F63756457695863736864735E60715D637365536452
+      5E74625F70615E695B5F6D60556459607061606F655F71626373615E6F60616F
+      616571606271646475685B6D635A6F5E67756363716063736A5B6C645F6F6267
+      73635E6F616374639769505E9650609B50619C50629F5263A05363A35463A456
+      65A65368A55669A9596AA9566BA9566BAE576BAF576BAF566BAF566AAF596AAF
+      566BB0556BB0576BB1576CB0576BB0556AB05468B0556AB1556BB3566DB2566D
+      B3576DB5566EB4566DB2546AB2556CB4576EB6586EB85770B9536BB7556FC962
+      7FDC6C87E46580DF6983E2748FEA738EEB748DEB748EEC7995F07992F07992F0
+      7D98F27E98F27B93F2819BF57D99F4829AF5829BF6859DF67E98F47D99F37E9A
+      F27993F07590EE708BED7590ED7993F07B97F17B95F17D97F3849DF886A0F686
+      A1F689A3FA849FF87B98F57997F67493F26F91F17291F27591F17B97F37E9BF4
+      7E9CF57C9CF47997F47997F57796F57392F37798F281A0F57E9DF37695F27595
+      F1799AEF7698F07295EF6C8FEC6A8DEB7297EF7697F17D9FF47C9EF57B9DF873
+      97F36E92EF7396F17B9DF57B9DF47498F17499F27297F1779CF17DA1F47C9DF3
+      789BF2779CF3799CF37C9FF27598F07698EE759BEF769CEF799BEF6E96ED7599
+      EE7C9EEE7B9CEC7898EB7B9BEE7D9FF07B9DEE7D9FEE84A3EE82A1EC82A3EE82
+      A4ED7EA0EB80A0EC86A6EC86A6EB81A1EB7B9EE97B9FE980A1EA7B9EE77CA0EA
+      7C9FE66F96DE769BE17C9FE4799DE3779ADF7297DD7097DE7499DF6C93D86E95
+      D96F95D66990D06B8FCB5377B9435F8636443B344135313D3236483C3D574A3C
+      52483A52453B544A3C534A37524731483E31453B273A33253B32253E31264035
+      2A453A263C30203A2C20382A203B2F284538263E312B453A2A41382A473D2D4C
+      402C483E2A483D3B5A523F5E533A594A385A534162573B554A425C5233483D38
+      534B3B5A513552453B55482F4C3F36554B324C3E2F4337314D4333564F38574B
+      344B3F425C53405F533144393143382F4539334B3E3A52443A50443C4E413947
+      3936483B3D4E413F4A3E3F483F3A443B485C4B485C4B3C4D403C4E43424F3F33
+      4442CBD6E2FFFFFFFFFFFFFFFFFFFFFFFFFDFDFEFAFAFDF6F8FCF6F7FBF6F7FB
+      F7F8FCF8F9FCFAFAFDFAFBFDDADDCC4B5F493A50444453483C483E3D4F443F51
+      4539473A39473B37483C395242395B463A5A473E604F3F54483D4D4439493D3B
+      463E364D40385244465C513E5A4B3C5D4B465C4A2E3D34334336425955738F97
+      4F65582D4B39446A58587769466250315A3F3C6D584A746C57766E2A4339B8DC
+      E9FEFEFE7D8D751835283559454262514460524560524761523A5043354F4043
+      5D4F3D54463F594C40645D42796A477C6C3E6B5B477C683B6B583464543D6657
+      416152416D5E466C634D70694A6B65436666405D5B3C554E4560544760554660
+      524B685F8DA2A2667968526254516456495D4E7B908BC5D1D4B6C0BD848A7C60
+      6859555E4E56665F586A6F5664575964585565586C8D8D698E93597676819EA2
+      78969299B7C1849C9F5F79746A89866B88866B8983587D73588076557E74567D
+      75577A734768592C473B314E3D4F6D6941574E2A422F35504541655F42625844
+      5E4F4A645F536F6D374B413C4D403A51464A645B4055503B504A3B4D41293B32
+      4A6B63BDD0CAE7E8E1E3E0D4CECEBC807E6D596B63AAC7C598BDBF608081425A
+      583B49412C43372844393C53473C5147354A3B3C534355665F273A3321312424
+      32242B3A2B2F4538456A684668683E544C365C4E47796D487D72447A6F4D8076
+      4D7872446F654A756B4D6F6A50766E476D6343685F42645B476A604569604668
+      5F496A6446656241635B4B716C50766E496F68446B6348696249686246695F44
+      6A624C706C476B6446696343635F41605B466C65486D65466B6240685E3E635A
+      41665D44665D42665E3F635B4A6F6B476A66456A6043665D486B64476D63406A
+      6242666047695F42695F40686040685E3B625743695E436A613F625943655B3F
+      60574364604B706C45645F40635B436C65466F6D43686442615D42616040625D
+      41615942605B4866654A6A6C4C747150757457818155818653767858807D4D76
+      75486D6A54706D465A54445F564B6A633F595249645B526B644F6F664C74734A
+      7A7C558885517A754D696843645F4C7A744C746C4A7065436A62486B69466862
+      49625D626E735056644A525E4656593F544C3C4B403E4F483C51483F554A4356
+      5441544F425952425F5A8A988B8F8D877D8171727661636A52565B3B474E3249
+      4B33474B30505436363716201E0E1C22162524151F2310141D122B271B373522
+      3937193F3B2C534F3235351A282818262714212416171A132F30223B3A233A3E
+      2D545A496263535E6149494B35524F34454427625D4364624067644460644460
+      5E3F646245605D425C573D5B5A3D5E5B3E5A5A3C5E5A3A5B563C575541676362
+      79837A5F6D57757C6E7883738E9589929C90969E8D9DA19A989F998F988D949D
+      95989F9598A9A398A9A492A5A490A5A384A1A3A1B9B5C1D1D2B3BECEC5CBCAC6
+      CDC7E0E3DAFAF7EBFFFFF6FDFEF2F0F4E4D8D8C8ADBA9CA0A58388967732411C
+      323A2834423A4F5E564A5947555F53606A5D6C796C6E7F727D887D8793877D8A
+      7C747962646B585C654E6164496162446061485A5D495F6054939B8CADB89AAD
+      B096B7B8A6BABEAEBFC4B5CCCFBDD5D4C2D4D5C3CFD1C1DAD8CAD8DBD0DADACE
+      C5C6C2A8B4B1A1ACAA4D5F4A62787FC9D4D8D2D7CCE2E5DAEFF2E6FDFCF3EFF1
+      E7CFD5C5AFB6A3A6AE956473552E3C2A45564A3C4B3A4D544E5E6557626B5F64
+      6D626F776169715D5F66585B5F4B585E455B5F405E5A3C5F57445C5942585A49
+      6A6E63A6AFA4AAB19FB4BAA4C5C5AFCFCEBAD2D1C0DADAC8D7DAC9D8DCCCDEE2
+      CA9DA8884C6142415A3E42563C365233325133243D29142C1E394F4833473945
+      5C52314C41475C5D44544A5B6E6B5A6C5E53685D5970624155425B6F6557645D
+      5A6E6041534963746F596D5E576C5B586D5B6176666370625F6D5F5F74643C50
+      42607061636D5D5C6D5B55665A5A6A5B616F615E7060677663586959636F6361
+      70635B6A566A7361576458657663636F62637464526457566352617164576B5F
+      61706255655761716165756263746264736257645860736460715F5E70606273
+      625365576271616473615C6C5A61705E5666585F6E6164715E5F735F6175665A
+      6C5D5F6E5F65705F6973656574645F6E5F60705E667364647361677669616D63
+      5E6D5A667362627064637463000051619D5363A05365A25566A45866A65669A6
+      5769A9586AAC586CAC596DAE596DAE586DAE5B6DB05B6FB25C6FB2596EB3596D
+      B3586FB2586FB2596EB3586EB45A6FB45A6FB4586EB4596FB5596EB55970B55C
+      71B65B70B65971B65970B65970B5566DB3576DB55870B6566DB4536AB15266AF
+      5069B4546EC15B76D05E79DA607DDE6B86E4738BE8758EE9748DEA728BE9748E
+      EB758EEC7C96F17C97F37C97F17C98F17893F08099F38098F37D96F37E9AF47C
+      97F1819AF17B95F37692F27692EF708EEC708DED7C98F17C97EF7C97F47C98F5
+      809BF585A1F688A4FA86A1F985A2F985A2F8829FF57D9BF27695F27392F27093
+      F17796F27B99F27798F37C9CF5789BF57B9BF57E9CF57E9EF47E9FF57D9DF17B
+      9CF37598F17293EF7393EF7092EE6C8FEB769BF1769AF07D9EF47C9BF27B9AF2
+      7D9EF57499F2698DEC789AF481A2F67398F16F97F1739AF2779DF17DA0F4799A
+      F57698F17C9DF5799EF57B9FF5789BF17599EF7599F07497EE7598EF799DF17E
+      A1EF7C9FED7699EB7B9BED7D9FEC7DA0EE7EA0F086A4EF85A4ED81A0ED7D9EEC
+      7DA0EB81A4EF85A4EF82A5EA7D9FE885A6ED7599E87C9EE984A4EB7098E0789D
+      E47EA0E66F93DD789CE27CA0E47298DD7397DE769AE1668DD76A92DC6B91DA67
+      8DD66E96D5638BCC638ACA527ABA3D5EA23E596B394A3E384537303B2E36473B
+      3F574B3B4D41394C3E394E413E514539473A2835282E3E2E3044312F4938344D
+      3E35493E2F463B2F483C2E44372A41342F473C3046392B3E2C3641343242352F
+      3F33364035334233324738374E433A4D3F4057493B594F4660553C463D3D4D44
+      38483837453C41564F3C51413A48392632232B3B2F3442373B453B434F463B49
+      3E3A4A3E3F483E3C453B3542342B33242F392B32432E3A4F35394D3B3B4E3C39
+      503D3F5D413B57413C5A4240634C3E6952426450455D4E425A4A42655241604E
+      405B44374B47B3C2D0F1F9FCE6F0F5EBF7FDF4FDFFF2FAFEE7F1F5DEEBF1E0EC
+      F4E2EDF5E2EDF5E2EDF5E4EEFAEBF4FABFCBBC4C66503D5C4E435E513C4E3F45
+      5E4E465B4B3948393845383C4F4046755E4C90714F8E6D4B8366425E4E3E5146
+      394A3F3D5146496C5D4B6D5B405B4A44745B4A83664A6D57394538425C4B4576
+      5D3669504274594B9371519A77597F6D54896F51A37A4C9D734D7F653C5C4B42
+      685772A9AF8EAFC16A81733E6D56508B74518A6F4C7C68496C5B455B4F40554A
+      4A6A59476A59446455445C4F445E5147695F528077477065325B4B336150335F
+      4C3C705F4F776B577C7558817F516F6649656047645F4A6155445A4E465B5051
+      6C604A6B604A665E546E69567369516F6355766C597A6E5377715B7F7F5C7F7D
+      6487806D8E87607C7A61827F60867D5E7D7A5977755F82805A8284537E805C86
+      88588081608A8C59858B5B888E638F93628D90668E916790906492926491924C
+      756A486D64537A733E604F2E43333A55483F5E523B53453F5C4E54746853746A
+      4A6A5B4A6557404F423341353B4F433B4F4135483B41594E3B4D40384A3D4660
+      52455C513750473C574E9CB3ABE2E7DEE7EADCE5E5DAABAFA391AFAB92B7BA6A
+      83834C685F4B6859435B4C445B4E445C4F435B50476058425A502F4136364437
+      36402E31413041544A455D534163573A50463A44374B7363539088457E764B81
+      7847837A467C764A8278548D8353777352746E4F70694A6F65466B6146655E48
+      69604A6E68476B6843656046685E476B634B6E66496B6443635E476861456563
+      456660466960476F6A4B746E44685F3C5F5343685B476E684C746C4A6F664065
+      5E3E63594164584C6F6A476D693D66603F6C63456E66446862426862476A634A
+      6B61486F654368604869614B6D6541655B3E605342655944655D496A6545655F
+      3F5D53416359466C64416A633D5F584A6A644A756E416B6443686241625E4565
+      623F635F44696444666244605E3F5C5543665F4F71745A7F8846666E3E5C5659
+      817D587E80537672526A68435752425F5549666047615B496359506B684C6C63
+      42635D4C79775887885983854C6E6C41635A527E764B747148706D4C7772476C
+      6847665F43615A455C544A5C564F5E603C4F4A41574B44564B3C4A3F3B4B3F42
+      554C42594E44574C475B574059558697898A8A838283716E755E616B535E5B3F
+      55563D55523B5451335855393E3B2022210F23241624261926271520200E2B29
+      163D3B24312B1A403A2F55503835351F302D1C2B2B162323161A1B0F35332339
+      3D1E47432F5E5F4A646250646344525237464B2E40472B4B4E39514F2F4B4E2B
+      464C32494B35464B34464E34484E304C49354847324B4C31484A33494C374143
+      35575B5A7D8A91819D9A88A19F93ACA9A1BAB6A8C1C2BAD1CFC1D6D6CEE3E2E0
+      EEF0E1EFF1E9F7F6E9F8F9E5F7F6E9F8FAE7F8FAE7F8FCE6F8F9ECFAFAEBEFF4
+      FCFFFFF8FAF8E6E7E0D3D8C9C8CEB8BDC2AFBFC4B1CCD1C0DADCC6CBCAB1929C
+      83495738303A2A2B37314A59574753404859485768596E776A747E71818B7C80
+      8B7E7C8F7A737D64636D5559634C595645595C3E5154414C523E5C5D4E8A9086
+      737F6C6E786172796B727A6B767F6E777F7177816F78806E868F8084917E989C
+      8B9CA59BBDC1BCE9EBE4FFFFFFB0B3A966707FF0F1F5F3F7F0EFF3E9E6E7DAC0
+      C5B7B0B4A3B8C1ACD2D5C2C9C7B1737F63202C1C4251493B4334454C405F6958
+      697368747E6E7E89776F816E666F5D5C604A585C4553533E4B4D3852513D4B4C
+      3B41483C6E746D60735D556651586152585F505E6554646B56616D5D6C76637D
+      866F89927ABBC4AFE3E6D5EAEEE4D5DAC98197713146262A432D2E462D263F29
+      17321A20361917302427403C3F524E566B644F5B514F5E565C7163374A395F70
+      624C5F56596C65405548607468596A5856665D586B5D677569616F63576B5F65
+      70623C4E406475626473605B71615565565163526370625A6E5F637765576457
+      69746A606E605E6E5F5B6E5B596259676F626C716163736657665B5668556270
+      5A5B6E59616F60556453616D6265706661705F6975635E685D6271615B6E6061
+      70646373634A5D5067776063715F5F6F59606F5A5669595A6E6062716161705B
+      6171615C6F60606D5F66706366716065755F5F6D57616C5F656E5D6574626371
+      646170645B6D5A60715F5F74645E736197695564A25666A35B6AA85C6BAA5A6C
+      AA596CAB5B6DAC5E6EB05A6FB25B70B35C71B25A70B35C71B35F71B55E73B660
+      71B65F71B75B71B65E71B65F71B75C74B75C73B76174B85E73B65C74B95F74B9
+      5F75BA5F76BA5F76B95E76B85C75B75C73B85B73B6596FB6596FB65870B6586F
+      B7576FB6566DB3566BB15268B65674CD6281DC6C86E26A85E26B86E4708EE96E
+      89E7708BE7738BEA7792EC7893EE7791ED7791EB7892EF7C99F1809AF27D97F3
+      7D95F38098F27C95F1809CF286A1F48299F3809AF27895EE7893EE7B97EF7693
+      F08099F3829DF6849FF98AA6FB8CA9FA87A2F986A1F985A0F8859FF57D9AF376
+      98F37597F17796F17393F17495F1799AF57B9AF57B98F47E9EF582A0F57D9DF5
+      80A0F57B9CF37396F07495F07496ED7698EC7B9FF17C9CF37C9CF17897F07997
+      F07B9CF17095EE6F93EE7599F17C9EF37498F17699F1769AF37399F2779AF37D
+      9EF57D9CF5789BF1779BF2799EF4799DF4759AF1779AEF7598EF759AED7C9DF1
+      7DA0F17C9CEB7898EB7799ED7EA1F07E9EED7E9EEE82A0EE81A1EE82A1EF82A2
+      EF7DA0EB82A4EE85A6EF7E9FE97B9DE780A1EB81A2EB7B9FE9799DE7769CE472
+      99E37296DE6D91DA7598E1799DE3749ADF678ED8779AE06D93DB5E87D46C91D8
+      5F87D26187D36D92D5628EC95A85C25077B03C57683D5C4A3C5244394739333F
+      3239473E3B51473A4D4036453935463B41544A364439364B3A3F6A49406D4844
+      6B4B3E54433844373441353C52453A524632463D3C48403F554143745341664C
+      3D533F36403240534542644E466A5137503D3D5A464D6E593D5C504368563E51
+      403C52413C5740415E47415A48415E48354736384E3D3C5A3E3C503E3D4A3F40
+      4F413B483B39483B3F4E413C493E373E2F2830203045323B564234513A34563F
+      415C463F5C453D78553E78563E76544585654A98745092714B5E50465F524C7D
+      65466954416252485E544C645A4A685F405A574D6F6958766E516D6449696247
+      626049716C4D7A744F66694B63653E535545626048695D436555466D5A486553
+      3D50403F574A445B4A3C4C3B3E4E3F3C52423E634F4B866A4B8A6E4A7F644461
+      513F564B3F51463C4D42456455466254425D5047735B4C79624A69553D514441
+      60504976604F86694D785F477C605391724C715F4B7E64549675549072527D6A
+      48665E4765583C5A47394F4A8198904F705B4975624F79654B73624463564660
+      55496054506C6147695E476859466958466355425F534C7569406F5F42645647
+      6E604D776D527A75517E74587D775B807E597872536F68506B664D665E4F655D
+      4D645B4C665E4F6C62516D604963544B6C6149685E4562574162564B6E623E5F
+      4F36534541625A5275714D6D69435F594869644C6A63425E55496C65405C5449
+      655B3D5D52415D534D6D644D706A52716B55777150746F537A7559807D648A88
+      618884587C715373634C6E5F3A56442C44313149393B53423C50423E5B4E4C6D
+      65456052455E504960563D4F443F5245415B4E3B4E423C4F42425E553E53473C
+      4E3F405C4E496153465E503A564842685F82A29C8AA1997B988F6E8E855E7E77
+      62817F56756C5070615B74694961594A685D527063526B5F49635841574C3E50
+      443C4C4039483A303F3039483D4055493A4E453E4C433E4F42465D50456D644B
+      867F4B79734B7D754A7D7746706B4F77734F716D4C6B6852706A53706858766E
+      5271694B6A614B6E6542645B41605847685E4A70654A6E6946636045615F4864
+      6141605A4665614A6B63426661476F6A4D716C45645F486C65486E68426A6041
+      6B6141655947655B43685E41625B3F5F59476A64436660446B64496963446861
+      446B644B6A64446862496C6647696345656046655B48655D4464604869634868
+      64486B6344665D486C684B756D426B624068624D77754A736F41655D45695E44
+      6860446A66426A66486C654266603F625D456A6144635A4D6D6A597C7F52706C
+      506C63557473506E6E59797557767346615A435E544560564360554B685F4861
+      5D4B625D4B61584D7872558389598286476B6844645E53817E4D797C4A6C714F
+      79744B70684868604D6F69435B523F55493E50423B4A3C3C4D4041564C44594E
+      40524543554C40564A455D5241545146575589968B908E80807C6E6F7458636A
+      495B5B3E484A2E44432745462759543C3C3C1C2224101E1F152023182A2C1822
+      200D2826193C38222C27183A36275651352F331D212B18282B16232113161A13
+      3132233C3F263C3F2A56594A62645066634850543E4F5236434529625A456B61
+      436C6042676248696545625C3B625C39625B3E5E5D3E5C55375E5635605A3B5F
+      5A405852435A5C60A8B8CDCFE7EAD1E4E0D0E3E3CFE6E4D0E6E4D1E7E7D4E7EA
+      D5EAEBDCEBECDAEBEEDDEFF5E2F0F5E5F0F6E5F5FAF1FFFFE6F7FAE5F3F9E0F3
+      F2AFC1C8BFC9C7C5CCC8DCE7DCF7F7EDFFFFF5FFFFF2EFF2E3D9DDC7AFB89CA4
+      AE8F8E997C3C4B2D2B38282C32334D5A574A523F4C5B485B685A6775666A7A69
+      707F6B788673787E6A7075605F684F63684C635E4362623F605E495B5C456262
+      52949889ADB49DB2B09AACAF99B5B8A4B5B8A4BEBAABC1C7B3BFC2B4B7BAA7C1
+      BEB2B2BAAEB6B7AFA3ABA2929F9CB0B4B5787F6B626A6DE5E4E9E6E8E4E5E7DF
+      EBEDE4F0F1E3DEE4D8C9CEBDB5BCA6ADB79B7B8666293324444E433E473B4850
+      4157645661695F6971656D75626A6F596268515E634A58604759554055533E54
+      523D55553E4F5140666F60939B88929984989F89A5A893ACB29DB6BAA9BCC1AF
+      BEC3B0C3C8B3BCC2AECACEC1C5C9BEC8CDC6D3D8D7C8D0BC3C4D39A7B7AE9AAA
+      91546C473B5135394A2B2F4326243B21233924263C2D293A2B33433C6B77733E
+      4E485C6C5F42554954635B3D524461736958655B56685F596D5D61706A636E62
+      586B6164736244493F6373695F6F625F69615463555465566071625E6E5E6373
+      62556558657069616D5A606E60606E5A55645A6476666371616574625A685656
+      6856646F645C6B5F607061526457607462677165657166637365566854607464
+      66735F606F5E61736055655961705E6374605B6D5E626F63586256616F626173
+      635E6E5E6674665A6C5E5E6C5E6574666374636675645F6D5F5E6B5F65786164
+      715E6371636371645C6E6266756261735F60766397695566A65A6AA95A6CAB5C
+      6FAF5E6EAF5E6EB06070B06271B45E73B45F73B65F74B56074B66075B76075B7
+      6073B86275B96175BA6076B96176B96377B96378BC5F77BA6277B96277BA6176
+      BC6378BD6379BE6479BE6279BD617CBC6379BC6077BC5E76BA5F75BA5C74B95B
+      73B95B74B85971B85970B8596FB6566DB2546DB65771C45E79D06581DC6582E2
+      6381E16E8AE77792EA7590E8738EE97993EC7B96EC7996EE7892EE7792ED819B
+      F1829DF17D99F17C96F17D98F17D99F1829DF1819BF37C93F37790EE7893EF82
+      9BF17E9AF27D99F384A0F686A3F887A1F987A1FA86A0F986A1F8809EF9819EF8
+      809DF47D9BF37999F17796F17292F0799AF27C9CF3809EF382A1F47E9FF67999
+      F37497F1789AF27898F17799F17D9EF17B9BF17797EF7495ED7391ED7393EC72
+      92EC7B9EF1799DF26A90EB6D92EB779CF0769AEF799EF2779CF37498F0789BF1
+      799AF27C9BF37295EE6B91EB779CF2769BF37096EF7399F0779BF07D9FF07B9E
+      F1799DF1799AED789AEC7799EA7B9DED7B9DED789CEC7C9FED7D9FED7B9BEB7E
+      A1EC7BA0EB799EE97C9FEA84A8EC7B9CE87B9EEA80A1EA82A4EC7BA0E8779DE4
+      799DE37C9FE66E93DF7398E07999E17699E16A93DA7096E06C92D95982D06D93
+      DA678ED2638DD06C93D56A92D45E86C74A70A640565E3D51433C5241364B3D38
+      483A33403435433B3C504735463B38453B38483D3B4A3F38483C43594A446854
+      3C604C435C4B3E504139463B343E3439493D374B3F36463E3B4A433A4F413F5C
+      483F594940544538453A3C4F433D5C4B415B4B38493A39514547655543625649
+      6D5E394B3C3C54483E5B4B3F55433C4E3D39513E3B4B3D3A4C404F6A5D475F4F
+      39493D3B4B3F37453B3B4A3D3C4D3E3C483D3A44362E3726303C2B3240313042
+      31415C48435742334435467D6463987E61927E5C8D734C7E604C826642564940
+      56494C695B486053465D50495B4E3F5140384635384A3A37473831443236533F
+      405A4B384B3E3A4F423E54473D4D443C4A3E303B2C3545393F514852685B495E
+      4F45564A424D433A493E475C5141514339483C41564A546A5E4A6156445A4C46
+      5C4C4153473B4F4539483E3E4E444251463C483C4452453F514544594C4C6357
+      3F52463D4F43455A4B3B48394C62586A897D3F51403E4A3F3B4A3D3A483B3C4B
+      3E516960516C66435F534C5D504D645F607E7A4257463B4D3E435448445B4F49
+      635A496C614360514661584B6A6248695B476C5D43635645695D466C5E48695F
+      577F7753887F517977577375557A73597F775A7D755779715370684F66624A63
+      5B4D6960516E66516E665071644D6C5E526C5E526E63526B60475D4F445B5153
+      716A4D6E6247665951706954776E506E63435A4C425F514F6E62415F52405B4F
+      42594C4C6A5D476A5B425A4C425B4F4D6E654F685D455E504B6B624B6F655175
+      6C5F7E7661837C5B8078577A6E4C6E5E38533F3A553E344A362D4132445E5045
+      6054445D5243574942594E455B513F50443C5143425D4F3D51443F55494A7472
+      4F6E644760504964594C63584D66594964564A6C61426357374F45325148436B
+      6256767351706B5F827767877F576F6B4761585A7C6F4F6E644F685F526C6448
+      61574051463C4D413A4A3E3140343E4F43455D5044574E39483E3F5649465D50
+      3B4C3F415E524762564A685B4A6E6546635D44635D4F6F6B55706B54706A5674
+      6D60807754756C506D654465574060534865614864614A6D6447685F47686047
+      666145635A40605544625A4666604A6E6A446A654A6D6A506E6A486C66456962
+      466B6141685B476C634F6F6A4C746E3F6C633C665B466E634C6E68476F6A496D
+      6850736B496F6945636044645F496B64496C684669634669604A6B6443656249
+      6B66456462486E664A7069496F6C476F6C456D6540685E436E664A706D456662
+      43655F44635F426861477069446962466C65456A6349706B476D694D736B4F70
+      6B50746F577A7C526D6D4A6A6456787451706D4966604761583F5B4E425F5247
+      655D4B69634A615E475B504F6D635A86895783844D736C45655A51807D4F7577
+      44645A5785834C757645645E425F543F554E445C5343554B3C4B403B4A3E3546
+      3B3E52463E4F4444534944574F425C5242564E45534A858F7F8588747B7E696D
+      755B636C4A5C5D3E58563B5A56385851335956333D411B1F25121E221427291D
+      2A2B1A2928141F1F122B2C1C2725173F3C2758513335381E2B2D182629162223
+      141E1E12312D23313A2144453758544563644E636551514E394A4A30403C2453
+      49364D4C3A4D4C35525030504E35515539595738535335585336505335585734
+      595536565038514F3D545561B1BCD2C0DBDBC1D8DAC4DBDAC1D9DAC6DFE0D3E7
+      E7D5E9E8DBECEDE8FAFBEBFBFEE7F8F9EDFDFEE5F7FAEBF5F6AFCAC9E1F4FFE4
+      F7F9E7F5F6EFF7FAFFFFFFFFFFFFFFFFFFF6F7EAD5DAC4ACB2A0A1A899B4BBA8
+      D6D6C3DDDDC49AA18C5A6841313927272D2C45514E4553394354405764576A77
+      68737F6F7B877D848D7C7E876E6C7664626A555A604A55564156563D4D4F3948
+      4B3F51554A868A7E5A664E505D45555F4E4F5D485763535964505F6853616B55
+      76806B81867AA8AE9FBEC0BADEE0D5FFFFFCFFFFFFBBBEA954616CF9F7FBF8FA
+      F5F0F1E7D3D4C8ACB4A3ABB3A3C9CCB9E1E0CDC5C5AF80876C303825454B4141
+      4A3E424C4557605764696070776E788573737E656A6E5A5B614F565A424C4C3A
+      4646374349333F42313B4630647063616A59464D384D56455A5F556165556A74
+      656F7C6A808B74A2A690A7B19DCAD1BFE8E9E3FCFDF6FFFFFFFAFDF6505B5AE2
+      E7E8DEE1DBD6D9C3A8B395A3AD92546A42354E262F48243148232C4216183117
+      172F1F1E2D1F49574B314636485A52313F365A6E605360574C5F50546356596C
+      605970625A6A6064755F3F4F3E61736A616D5F596C5F51625556625A6571655E
+      6A5E656D635B665E646F655E6D5E5B6C5A66705A5965536571605F6E5D617062
+      5E6D525665546277645B6E5964716554604E64715E667364626C626473625B6C
+      5663745D6171655C6E5F657366516254616F6061705F5B6C5A64715E5865585F
+      7362607362606D626776665F6C5F5E6B6064716264735E6375635B6E5F5C6E5B
+      6574616473606676645F705F5E6E5B63746363716162746497695A6BAB5A6CAC
+      5C6EAE5E70B06070B26171B36275B56375B66276B56175B76177B96277BA6377
+      BA6379BC6378BD6277BD6378BD647CBE647ABE667CBF657CBF657ABD647ABE66
+      7CBF667DBF657DBF657DC0667CC1657CC0627CBF637CBE617ABE6079BC6077BC
+      5F77BD5F77BA5F76BA5F76BC5E74BA5A73B95A73B7586EB4536BB3516AB4566F
+      C35C79D85F7EDC6987E2728FE66D89E3748FE97E97EC7996EA7D98EB7993EB73
+      8DEA7B96EC7B97EB7D99ED819BF085A0F2859EF58099F37E9AF17D99F17891EE
+      7490ED7592EE7792EF7390EE7E99F2829EF5859FF888A3FA8AA6FA88A2F887A3
+      FA82A1FA819EF5819FF5809CF482A0F57E9FF57B9BF3819EF1829FF17B9CF179
+      9BF2799AF47C9EF57B9CF27797F17796F17596F07295EF6E90EB6989E86D8FEB
+      6F93EB779CF0769CEE6E93EB7598EE769CF1779BF07C9DF17499F07097F1769B
+      F27DA0F47B9EF16E95ED6991EB6F97EF7599F2759BF17499EE779BEF80A2F17D
+      A0F1799BEF7B9CEE779AED789BEC779BEA799DEB789CEB799FEB779DEB7B9CEB
+      7B9DE97B9EE9779CE8769BE781A2EC7EA2EC769AE7799BE7779BE47B9FE87B9F
+      E87BA1E981A3E8769AE0799DE37097E06F95DF6F93DD678ED97398DC6991D766
+      8FD86588CF6281C55B78B5506A9650667F44575D3A4941324035334134354136
+      3242373A473B3740342A382D304539303E3237433839483D3340343644383B4A
+      3E354037323A3131382D333F343A483D353F353A473E323E3129372B36473C2D
+      382E353E333B453A37443A344339354135313B2F30392D293226313D34445A4B
+      3F524A475F5636453937443C3644393F4C3E384132303B2D353E332F382F4456
+      4C495A4E404D413D4D423A473C3A4A3E3E4F3F3943322F3A283138272F352429
+      2F2042534E4F6A69638577516E6BAAD0D778918985A1A5709385495F5A5A6D64
+      414C3F3F5043485F53475F52465C4E43574C485C51414F413E4B3D434E414A5F
+      595B77714A5D564B5F59495C5753605B48575043554A3B4C3E3743386177768D
+      AAA44653443F4E413D4F42313E344B635D4C635A404C41516459566E68506560
+      485547464E454651484452483F4E434A645B4A5C52586E6861776B353C314F5E
+      57556E633F524544554741514231382C455C5988ABAA4953473C463D3F47373A
+      413644514656706A4969624A645D596F664C60583D514C546C65577168466355
+      42605547635945665D3E5A4F45605449645A47655E48625A4666594B71664765
+      594D6A63507573527E7A537573597774628381577A76587A745779724C6B644D
+      6B624B665D4A655A516F654B6B625174685170644F685D4F695F4A685D486559
+      49645D58777655787347665B4F6D69557A745779734C655B40574B4B6B655070
+      6A496358455E51456459506F664A665E49685A4F71655579714F73665273694B
+      6E644F736C5F817F5C7E7656786F59817A4F6C5F324A373E634C3C5E482D463A
+      46685B4C6B604A645B4B6257506B5E425B4C435749435D513F56483E5447415C
+      5156868651756A506A5B4A685B3E554A4D695F4B665948645853736653685E4D
+      685E526F694B6A624A6A5F4F6D6655716D516C654F6A6054736A55706A526C65
+      506B644560573C4F433D4E433C4C423C4B3F40574A43594C3D504536493D4156
+      4A42594C3C504142594A526F66516F694B6A634A6C6355796E6285815C79755E
+      77755877715C7E745875714B6A644F706647665D4C6961506B634D6C654B6661
+      47645D45655E3F5E533C5A503C564E48695F4A6E69476A634A6D6352776C486F
+      6A456D6950766C4A6D61476E684B716E51776D45746E3C6962436C5F4B716D49
+      736D4C70715475734D706A4469644C6B66476A65466D694C716C486D68466B66
+      436661496B664A6A69476C6A4A6D69466A66456B65436D66426A613E645D4B71
+      6F496A69456562436460466C64486D66406460456B68466963466A63476B6950
+      736B486A62517A775F85895774724D6A61587976506B6D4A615F516B6348655A
+      415E5545625B4A6663425953465F534F696154787754777A49645D4762534974
+      6F4C7173425751547D77537A7A425A513D50433C5246425A5042554B3D4C463A
+      4A3E3B493C3A4A3E3D4E4246574B445A4F465F5445574C48564B87907D888778
+      7E7D656A70535F6548595D414C51374A482A464526534E374444252324121A21
+      1625281D2F311D2F33202B2A16211F14292B1C2E2B1F5450343A371D282C1628
+      2A1B2021121C190F2F2F224240283D3D2C55554265634F64684E54543C4C4B38
+      4748335E5A41635D41615E425E593E5C59395F5D3E5B563858563E55533E5553
+      3E5B523A5A573656533756553E5155579CB0C6C4DBDDB5D1BE4F6F65B7D1E3D9
+      F0EF4865576D90A9D7EFF1486953446578C3D8CD102526C4DBEB75998E93AEB5
+      8CA0B5E1F3FBE5F5F5CEDEE1E0E4E4D6DED9CDD6C8D5D9CCE4E8DAEDF0DCEAED
+      DBDCDFCBC3CAB8B0BC9F929F8554613E3A3D2D33392D464D484A5542515A4B54
+      63576771656A776A75807279817172786B6A6F5D656A515F624B5A5D42585B41
+      5A594256563F5860508C9283949C8092967F9C9E88A4A591AAAD9CB5BAA7C2C1
+      ACC5C5B4C3C5B8CFD1C2D3D5D0D6D8CDCFD2CACED1CBDADCDA7B9077566563CF
+      CFD9C6CCC5C8CCC0D7DCCEEAECDEEAECDADBDCCFC2C6B0A4AC97818B6E383C24
+      414B3E333D36474F47565E5255625A5C635B636D5F636B595F634F595E485559
+      4552523A59543B4D513D4D553849513D656363949E8E9C9B8DA6A297A8B3A2B6
+      BBAFC6C6B2CAD0BCD3D3C1D1D0BFC2C6B8D3D8CFD3D8CDBFC8CAADBCB893A493
+      34413AD0D1D6DEE5DDF9F9EEF7F9EDBAC7B42F3E291A2917516447344925374E
+      1F2F4A24283F16283919172D181223132B413C39453E65756C384F423B4E4551
+      63536270635B6B6053655B62755D2A3C2C62766B5B6A56576B5B455A4A4C6257
+      637063616E5E60736052685A607063576F5B586A5D626B5D5661586975646370
+      58616F625A6959586559656F615F6D585E6F685363536370606473655E6C5D6B
+      73665A6562637464657164606F5E6270634B604F667869607062596E60637668
+      5566545F73616571605F6E5B6374665F6D61626A5F626F646474646575685C6E
+      635C6C606575626471636975686070625C6C6161756063765E64716397695E6D
+      AE5F6DB0616FB15F71B36074B56375B66175B76176B76377B96478BC6678BE64
+      78BF647ABE677ABF667CC16579C16679C1677DC1677FC16980C2697FC2697EC1
+      677EC1677DC26A7FC2677FC16A7FC3667FC1677FC2677EC2657FC1637CC0657C
+      C0637ABF6179BD6279BE6379BE6279BE5F76BD5E75BA5B75BA5A73B85A70B659
+      6FB3576EB3556FBD5C77CA607ED46485DC6787E0748FE47C96E77891E47C96E8
+      7E98EC7893EB7793EA7895EB7B98EB819BED819CEE809BEC829CF1809AF2829B
+      F4829BF37998F07290EB708DEB7793EF7997F07B98F27C99F3819BF3849FF882
+      A1FA88A4FA88A4F985A1F87E9AF37C99F37C9DF47C9CF37896F07592EC7291ED
+      7597F27597F2799BF37D9DF47698F16F92EC7596EC7496ED7899EE7798EE7497
+      ED7699EC7398EC7296ED7296EC7298EB789CEF779BF17498F17499F17397F174
+      99EF799DF17BA0F17399ED6E96EB759BF0769DF07298EE759BF07EA2F17C9FEF
+      7C9EEF7C9FEF769AEB6F97EA749BEC7497E97599EB769AEB7599E87497E7789B
+      EA7599E8759AE8779DEC7EA2EE7E9FEA789CE87297E47299E17BA0E8759BE472
+      99E37B9FE8789EE4799DE17699DF789CE47097E07397DF7095DA678ED35E86CB
+      6388CE5C7FC64F69A545567544565E3F53493E50453C4C403B453C323F323342
+      3637463B36463A374438343C302D372B2A3A2B2F3E2F31403234443732403431
+      3F33323F33343F31333C2D323D2E333E3337443A38473C3D5047343E2E243024
+      3C4E452E3C2F3D4D403E4E41364337374438354535343F2F2C35252A37273340
+      33485C4F415349485D523A4A3E363E343A483C4156483C46393C463A3E493E3E
+      4A3E3F4F4347564B4250453E4E42445247404D433D4C3E3A4732313D2A2D3929
+      2D3725282F204359576C95A097C9CF90C5D6CCF3FFB2CDC7B2D5D464887C5A7A
+      8DACCCCE55604A424E454B6255496154495D50455B4F4D645A495F524D60554B
+      5F514C686A6A8B9356746C526B6A4F6A6653696246554F495A53405145334239
+      6981876E8E8845594E45564A4152473C4A40465D5551635D435148515E54424F
+      453C4B413F4F4248564A47564B4F5E524D5D524F686152665F556E7150655D3D
+      483A485D544C645A4C65574D6658425145374231363F3156655B4C5D50435347
+      3E493A3D4E434F655B4B66604F6C65536C634C61564B5F554B61554660566383
+      7D5B7669415D5148645746655945615A4A6A6147665945665E4F69634A655844
+      61554D6A61486C633F5F574D696556716E5B7A775A7978577976567773587772
+      516E66496A614C7063517064506E644A696054776E53766D4C6B635271644662
+      5644645A4F716652706D56756D4866584B6D6551746F5376714B695E43574B4D
+      706A587D77516F664A655A47685A4C6C624D6B65587C76547A72517672577E7C
+      5A7F7751776E4A716B587D765B7E7252716450716857786C3E6250395A4A3957
+      484261523A5347445F5348645A48655A4A685E49665B486456405F5345625646
+      5F52394F4343605E4D6960435F504560554662574D685F5570644963584C6960
+      56716B62817A64837C516E63486155475F58506C635B796E56736D4C6B664F6A
+      6445615A3C564A476153435B4E374A3E394B3E40564A3E574B3E54473F53463C
+      50443B4E413E5447405B4C456155496A634F6A68415653506B636A8F89759A98
+      648580516B615A776C577773617F7D4F70684D736C496661445B534D6960526E
+      66485E5646625846635B445B533F57503F5A51496A5F4B6C604D6E634C6D6450
+      716B486A6A4C6E6C4D6F6C4A6C684D76714C736C51716C5077753D6562466E65
+      4C77714D786F5276764F6F6E466D68417373456B6B4A706B48746E49706B4C6F
+      6B4B6F6C4C6D694C6A654F6E6A476B694B6E6C4C7471436B66476B69496C6A44
+      66634569644D706C4A6B6642635F476A654A6C68496B664A706C4A706D4C6C6C
+      43605A4460584F6F6A5C808057787A54746F4D6C634D6C664A68664D65634A63
+      5E45615A4B66604D685F4A5F59425951465C52475D54465F5B4C68634F635840
+      544740605B4A6D6A4359514A746D597F7E4D6B66475D5443564B3C5146404F45
+      424F463C4D4041514442564A435A4F42574C485F55495F55475C514B5C538C95
+      837E8376787D6970715B676A5060633F66603F6159425B573852553A41462423
+      251420201624261D3135232E30192428161D1D1027291A42372F5C543E36371D
+      2D311A2D3216202115201F0D2F281E3F3A26444334585A485761495F66505356
+      41484B38363A24424530484A2D4C4A35484B334D4D394F4E3B55513C53513E55
+      5742554F3F5B533B5B543E56553E515139535C5F9AAEC5BCD8D8CDE4D7536B5D
+      9BADC9C9DDE9506455829CB8EFFDFF809B817C95A9AAC4B4273E3C7595AE7093
+      89677F957691A7DCF2FAE5F7F5EBF9FAFFFFFFFFFFFFFFFFFFF6F7EBD6D9C5AC
+      B4A2A2AC97B3BBA7CCD4C6D9DECAA0A8906A7752383E2F2D352A414A4444523F
+      454F3D515F546A766A75817284908091998B889080777C66606A585C5F4B5857
+      424D533F47513B474C394A4F447D877F4D5E4C48543E5059494A5347535D4C5C
+      6351666E616C77638E8F7F9DA48DBFC3B6DEE1D6F1F2E8FBFBF6FBFBFBB7BAA8
+      50595BF1F0F8F9F9F5D8DBCFB6BDAAA8AEA3BCC2AFD7DCCAE1E4CEB5BB9D7C93
+      732B3A2836493E3B443E424C4954605F61696465716A7C827772796B626D5E56
+      644E575D454A4F3E464B38474F38414932434A385E625A5962554F5A54576252
+      60615F656D6A6A746C6D766A5C6A5B626E62626A63828D8B81928E8193969BA4
+      AA9DA5A8586A6074818855656661707355655D646D605C66516F766C565B4841
+      462D4247313A4829374A26344724344824334527293D211832182034231E2F21
+      233A3143555065716B415044394F3F6774653443316371644C61504B5D524B57
+      4B50635D596D625566595E71665B6A5B5F6F60616B58586B5E5E6D6058655363
+      73685A6E5E5F6E615B6C5D5865596574635E6C60627162526053637164617063
+      606D5D6A7663586B5A6273635F71625E6E6161736253624B6073685F6D5F626E
+      5E6470625A685862705F6574615C6C5B62715E606D5D5F6D5B6573605E705D6A
+      75665C6F5E5A6E61626F6463746164755F626F5F5F6F6062736264715E647560
+      97695E71B26273B46273B46374B56376B66376B76377B86579BA6579BC657ABF
+      677CC0677CC1677DC1697DC16A7EC1697DC3677CC36A7EC36A81C46B82C36D81
+      C46B80C46A80C46B81C46C82C46B81C36B81C46781C36780C36980C36A81C369
+      80C1677FC1657DC0657EC0647CC1657CC0647CBF617CBF6078BC6077BA5E75BA
+      5F77BA5C75B95A73B55A71B4596FB6576EB75A75C36280D26585DA6987DE6E8A
+      E1728EE27390E47791E67996E47C96EB7D97EC7D9AEB7B96EA7895EB7B98EC79
+      95EC758FEB7993EF7691EB7B98EF7E98F17D98EF7E99F07E9BF27B9AF1809CF1
+      86A0F5809EF6829FF8849EF5819CF5819CF47E9DF37C9DF37797F07595EE7091
+      ED7799F1809EF37E9FF17B9CF07798EC7596ED789BEF7597EF7093EC7597EC78
+      99EE7497ED7293EC6E92EB6C91EB7396EE7396EB6E92E97497ED7798F07096EE
+      779DF1789CF1769CEF789CF07B9CF07DA0F1789EF1759AEF7699EE7B9DEE7DA1
+      F1789EF0779DED779CEA769AEB6F96EB7599EC769BEB799BEC7498EC6E95E86C
+      92E66C92E46A90E2769CE7799CEA7EA1ED769BE6658DDE6F97E37DA2EB739AE4
+      7097E2789CE3779DE4739BE16990DB6E93DC7BA0E1759ADD7396DA6089CB5882
+      C65677C25A73BA4B608F3B474635413638473A3A4C403B4C3F364336373F3535
+      42363A4B3E38493E38473B334134313E30314030313F30334033324035344237
+      313F33303C30343F34374237313F323242343A463B3F4B3F3D4D413E4F463440
+      2E2533263C524A3646383B493E3E50423D4C3F374336404C3E3B4639404D3E3C
+      4D3B3A493944574B405246465C52445B4E39463C36453B3C4F433A493D3E4D40
+      3E4D41435A4C4A5F534253464250443D4E4145554A4755463F4D3D35412E303C
+      272D3C272E3A25343B28495C5A86B8C793C0C76C9AAEA0D4E2C1E8EDBAEAEF4F
+      5E4C6A7E8FC2E7F04D5D494B4E425563574C5F534B5A4E495D5051655E4C645A
+      50685F4F62594A5E5A5165665268634A615949605A4457504B5E57505F564757
+      4C445449526660485D5144544945564C495B514C5D533F5145404B4143504645
+      5347444D41424F4247564C4F5E514355484C6056516357455C53485E54404F42
+      3C493C40504242594C4F645D4D655A486254495C504450444557464F5C4E4B56
+      494D5F504555463F554A4C655B50645A51655F5169634F6960536F63546D5B47
+      605158786E5770664A65584C695844615247665F486D694C746B497063486B60
+      4768604F70694A6A664868613F5D524B665F5878765778765775735777765977
+      755878735270684F6E63506F634A6B5F51706855746A517368517169516F6650
+      7168496359465F5249685D506D69597C724461524363595C7E7A496862466156
+      455E5251756F587E7A4C6C664F6A60537365537169516D66537874557A725271
+      68597D76567E7A55807A57807A597E754C6D5E3F5D4C3F5C5056766E557E7241
+      63553A52443F5C4C445E5345605544615354786C46645D425E56496659436154
+      45645A4761563F5647394A3E40554A3F574A475C5248685D47665E5270665A7C
+      725C7C735773685B7A7152716B54756D51695D49625453716657766E506D6650
+      6C66425A51425C4F465D514A61564A635A435B4E364A3E3E594C435E53466056
+      4D6C61445F55394B3F3B4E4146645E4D6B66506A6041594E37493D4961565E7F
+      7A64827F5A756E4C64585B776E48666351706C587A775777744C665F3E544A48
+      635A4B645F42565244635D425D5940554F425D534F6C6247645E4B655B557068
+      4F68614B68604F6D6954746F4F716C486A64567975567C7552747243706E3D6F
+      6A4D7975507978517C75547D77517471497572447F8341737547706C4B736D4C
+      6F6B4B6F6B4F736D4B716D476D694D6C684D75724B74734D706E476B694C6D6C
+      4C6D6A4B6D694869644C6E6A4F746F486C684966654D6F6E4B716C50706A5479
+      77496E6C4664583F5A4F4F6E685E807C55746F4C68644D6964486056465B5044
+      59534A62614D6A694F68634B6158485B5349605741544B42574C4A6158496258
+      4B6459455C51435B50445A52415F534C6D68536D6A49686341564F3F4E443B4D
+      423D52473F52473D51443F5549465D534C6357465D554961544B6255495E564F
+      5F589198867C836E797D686E73566969515C5F3F5053324F5233464D2E4D5238
+      44462524250F1E21133537334D4C426A696549532E222D162024162E2D1F5651
+      3B39391D2E3117282D1621220F201F123027223C3B2C3C3C295155425F614E64
+      6450555740494B364B49335B55405C5A3B5653365257374C5137484E344B4D34
+      4A4C36424831484B33484933444636444A354244375355618EA3BCB7D4D6D2E8
+      DB5B7363657386657A885A746F8CA6BC9BBABE94A6A26C869697AEA9BED1DA3C
+      5561889F9DADBCCA9BADBFDAEFF6E6F9F6E5E8F0E6E8EEC9D0CEA7B0A6B2B9A9
+      D0D3C2E6E9D7EBEFDEE8ECDAD7DCC9BCC9B08E9E8765775A3C4834394238414F
+      404854414F5D4C575F55616660626C5E6C78686D77686F74666D6E5A61644F62
+      604B5C5E3D555A4056594257553F585A4C8D8F899CA48D99A28CACAA96B5BAA3
+      C1C3ABD1CFBFDDDBCBE5E3D3DEDDCEE3E1D4E6E7D5DADDD0CCD2C8BDC3C0C4CB
+      C86C7859576A5AA0A3B2C0C3C0D5D8CFF2F4E8FFFFF6F2F5E7D4D6C4AFB39BA2
+      A9907B887535514F39504F2D40372F3F3C3144402C3D3A31403D2E3832323F36
+      3A473D3B4338364231333F31313E372C3A292D3929273929425042334134252F
+      212837292A362F223124202C272834242730282A332E3A413D2032263B4D4964
+      797872867F9AA49CA5AEA255695E92A398B6B6AF9EA19286836E353A262E3824
+      3B3F2C3E46313C413445473142442C4046303C442D394527374629374A272D46
+      2332461C1E39170E1F0B283931263B2B203D3161716139493D596A6335493B43
+      4E493C4B44445C5352635243554455685B58645E5965635162565264585C695D
+      4C5E4F64716C666963636D615F695B54654F63755E596959626D61505E536373
+      6863706256685A6374625C6855606F655B6F60586B596271625063555F736360
+      715E606C58667463586456616E5F6570605B6C5E5F74645E6C605A6B5A657063
+      66736064746261715F6170616273636476626574646271635B6D606975686370
+      6367756300006274B36575B56277B76677B76677B76679BA677ABC697DBF697E
+      BF677DC0697FC16B7EC26C7DC26B80C36C7FC46C7FC56A7FC36C80C56D83C76F
+      85C77285C66E85C66D83C46D85C56E85C56E85C56C82C56C82C56B82C46A82C4
+      6C81C46B81C4677FC26980C36A7FC2697EC1677FC1677FC1647EC0647ABF6479
+      BE6179BD5F78BD5F77BD5F75BA5E74B95B73B65A6FB4596DB0566FB55975C35B
+      79CD6182D96585DC6788E06B88DE6F8ADF7895E77996E77996E67B97E8829BEC
+      7E98EB7E9AEB7996E87B97EC7D99ED7D99EC829CF0819BF0819BEE84A0F0819D
+      F17C9BF37D9BF0859FF486A3F5809EF5829EF585A1F57D9BF27B99F27E9CF17D
+      9DF17697F07C99F17697F07495EC7796ED7B98EE7D9CF1819EF17696EE7493ED
+      7697EE7593EE7695EC7492EE6C8FEE7293EC7397EB7095EE6E91EB6E95EB7598
+      ED7697ED789BF0799CF1799BF27E9EF184A3F187A6F47EA2F2779EF07B9EEE7D
+      9EEF7C9FEF799EEE739BEA739AE9789AEB789DEC799EED7CA0EC7D9FED779CEC
+      7397E97398E67098E4759DEB7CA1EB7C9CE8759BE4709BE46E97E47298E6799D
+      E86D93E16C95E17298E2739AE3779EE46691DB6991DC7CA0DF7397DA6790D658
+      81CA597AC2566EA843556537433E333E333340353A483E3C494136453D364235
+      303B2D333E343A483D37473C3442373544373040322D3D303442343541343540
+      38333E33333D31313F33313D32343E3433403438483C3A4B3E4352464454483C
+      4B3F3541322A362428352937463A45554A485A4E405044303E33495950596B60
+      596A5A42513F39483C3C4D423A463E3C4F49485E5342564E465F54455A4B3E51
+      433E4B3E36453A3B4F424A63564D63554F60513E5143435A4C43574337442F2C
+      37242F3B2837412C3C473744504248544A5A757C8EBCC96C8F8D6F979B8AB3B6
+      6388813F443B849A9C6B867A373E2E525B4F5B6A5D4D60544A5E524A60535369
+      5D4C62564C5E564F5F5A53615B515E59505F594A5B55404E45313D34566D6B60
+      7168455448485A5053635853625747594E4A5F555162584C5E53475A4F3F4C42
+      3F4C414051424354474B5E53596D62526257475B5051645A4D6259496358506A
+      5F455C4E425649475E504961544F665D546C6048625444594B3C4B41485D5150
+      6053515E51516456526859536E62506D6454665D495E524461554D665E56776D
+      5B776D546C63506C604B6A5D4A695D45655648685A4A6B61486D654D746D4B6E
+      68476B604A6E685277764A6E6851716C53716D506F6552746D50716E52716D58
+      797756757255766E4A6D615170665473694F6D6358787155766A53756A57766E
+      4B65594D6A60507168526D634F696056746D5B7F74416253415F55516F684965
+      5E4866594D6E614A6D6450736A5776715A796F52746A57767155756F55797357
+      817C587F785F85815A8583557E785A827F58796E4260504B6A5B4A6858506F65
+      597F73476B5B3D59483C544638534748645B506F65587A6F4D6D6548695B4A69
+      5B486558445F5245605547615748625540594C4C66594D6A5E4D6C624966604C
+      6A615578715F827D5E7C7256776D506F655B7C7558776E4A6658537068587875
+      53716C4F6C65475F544961544C6358485D53435D53435D523E544741594B4564
+      5952746A4B695F415B5341574B41574A4A656047625E455D51415A4B43574A41
+      574A4F695A596E634F635D3F5B4F4D6B634C6B6647645E53716E526F6E527069
+      45645A4D6C664055503C5649496A5F475D55415A4F425B4F4C66594F665E5069
+      5F536D6350695D50665E4C6962567673567E7850716C547371597E7C53716E44
+      6E6A437773578386547E83527F7F577F815175744F756F4D7C784C7C7E48706D
+      4C6D68526E6F4C6E6D4C6F6C4B6E695376755276784D74735171724F6D6F5173
+      745271734868684C6D6A4F6E6B4F6B6A4B6D6E4C6F714D706E5276744C716C57
+      797858787A4F6F6C506E6448625A49635D587671587774516E6B4C65614F645D
+      4B5F553C4B423D52494D6A6549605B42564E495D554C64594A63594B6258495F
+      54475D514C64594B645B42594C425749455A4F4A5F56445A4F455B4F42594C3F
+      51463C493E3A4C3F3B50433F54493D52483F5245455B4C526960506661455A54
+      44544F546259969C85787A6A7378626D715D65694C646347595D3A575A385953
+      355E5234454D2824270E1E2112242B2029303AE7E9F1707C4A3641261C231552
+      4B4C554F3F39391C2B2D172B2B162424131B191224261C37371D424130585741
+      5E604A61625055573E4C4A30393D2741442E46462B484C2E4D4D39484F375450
+      35505236564F38535137504D3E57543B5C563958533D5154445357588D98A9B8
+      D1D7C6E3D73C5A4A637785546D75263D3626383C324349637874536B72567177
+      99B7C2608884B3D0D08EAEAFC2D8E7E8F9FFE3F3F5E3EDEEFAFAFAFFFFFFFFFF
+      FDF1F4E2D6D9C8C0C7B5B7BEAAC3C9B8CACEBED4DBC599A88F6D7D5F3C433037
+      3B293C483C494F3F444B3E4C5C4E616E616D7668778176828B7778836C6D745D
+      62684E5C604955564353543E4B533C4C50404A4F48898A85747E6A67705F6C74
+      626C7464707766797F6D7B826F8087748D938498A18FAAAFA0BABEB3C5CEC2DB
+      E1D7E8EAE4B3B8A4505D5BE3E3F1F6F7F3E0E4D9D1D5C6C3C7B9BEC3B1C3CCB8
+      C9CDBAB3BAA277857DC0D1DEE7F0F3B5C8BC90AAA259746C4A615A405657AFBA
+      B76B7F6C596D605C6F6C52615E3C4A4223332C657474576A62586B68596C6261
+      71686E7A6F4A57452B423E8A9EA0A7B3A5AFBAAEC3CDBFD2D9CC9EAE9D60736B
+      C3CBCAD2D2CAC6CEC2A4B09D898F83BEC1B59A9B8F84856E6C6C5856523E373C
+      273A42313E453B3A45393D48344247374245394243353F442C3F402A3F43304B
+      553933472C334821314B24314722233A18223718152C152E3E292F403158716B
+      344D3F3D524A3D4C40445A4E425B4933493E526361556561576861495E4F4A5A
+      4F5B645A4F5D5067716565685F616E6159685A54645267705D5A6555616E6252
+      6657596F63657459576659607163586958626E5F647064616C5E607165536052
+      5F6F656171615B6E5664766056685E626F5F6B73615E6E60627466636E625E6D
+      5F6475625A736664776E5E6C585A6C5D657362657163636F616170605E6E5F67
+      7469636E6163716597696478B76778B86679B9667AB9667ABC677CBD6A7DBD6B
+      7EBF6D7EC16D80C26B80C26C81C36D82C46C80C46D81C66D81C66D81C56C83C6
+      6D86C77086C87589C97388C97086C77086C67086C67287C77286C87086C86E86
+      C66D85C66F83C66E83C56B82C46A85C46B81C46C81C46B81C46981C36A7FC369
+      7EC2677EC1667DC1647ABE637ABE6378BE6178BC5E76B85E74B75C71B45A6FB2
+      5A6EB05A6FB25B75BE5F7AC8617ECF6181D86686DD6E8DE16587DF6788DE7492
+      E27793E67591E77C99E87C96E9809AEB86A1EE88A0ED849EEE86A1F1849FEF80
+      9BEF809BF17D9AF17999F0819DF1809AEF7696ED819EF189A4F5809FF47999F0
+      7898F1799BF17899ED7999EF7595EF6F90EA7998F1819FF37B9AEF7491EC7897
+      EC7E9DF07999EF7697EE7799EF7696EB7093ED7698EE789BED789BEF6C90EB69
+      8DEB7093EC7495ED7398EE799CEF7D9DF2819FF2809FEE80A0EF84A5F180A2F1
+      81A2ED7C9FED81A4F17CA0EE759BEB7EA0EF7D9FEC7D9FEC7DA1EB7B9EEB79A0
+      ED789FEC759AE97B9FEB81A4EE7EA2ED6E96E4749AE76E97E27299E67B9EE974
+      9BE6799DE66F95E2729BE6739BE77299E485A8EB789CE26F96DD7399DA6E93D4
+      6490D55878BC50628E3E4C4C354237333F333240353342373B493F3E4C423846
+      3C343E33313B2E3843373C4A403C4C413A493D3542372E3B312E3A31313E3230
+      3B2F333E33323F31313F33324034333F33313D3134403438453B37453B3A473D
+      3C4C413A463A364433323D2E2F372C2C372B3643393C4C403C4A3E37433A3745
+      3D48594C3E4E3F3846393B493E3C493E3C4A4340524A3C4D424051464C625846
+      5E4F4255463C4A3E3B493E3E504343534746574B465A4C425547465C4C3C4C3B
+      303A283742313D4B3A3842313D493B485A50506452484F437BA0B281AFB57CA3
+      AA82A497545950738E8F768F8143513D46544445554A53695D51695A4C635652
+      685A54695E4F655D51635D51625F5463605364604D615B495C5643564A3C4A40
+      526865637E774B5E544C5D54505F544B5E544C63584D665A4D61574B5D53485A
+      4F45544841524646594B455A4F435B4F4B665A5165594D5D5250625851695E4C
+      64594D665B4F6B5F4A64584C64574962554D695B516A5E465D4F43574B415246
+      51625451635548574A46554B4F665B587165536C5E4D6658445D4E455F514F64
+      5B506C63516A614F665E516E62506E6147655A4263554C6D644D6E634B6D654F
+      736E4D6E6A50706A4C6B654869665278735579765375714D6E6851716A517571
+      4D706B52736D52716A55766C5073695173694D6E6356746B5B7D7654756B5271
+      6C54746E4F6E624763574A696054756E54786F4F70654B6A6053736952756F48
+      696350716951746B54776D5271654D6C6250716D57797456797154766F51706B
+      54787357827E55807C587F7D577F7A51786F527571587D714B705F4162535275
+      665076683A5F4C4163553B51441E291C2D3D304C685B54776F4D6C65435D5548
+      695D4F6C624764594B6A5E4B685B45605444605548645A4D6A61506F684D6C64
+      4B69624F6D684F6F6A57787356786F587E765C81765B7A75516D6A4D6A635575
+      7153756D4560564660564660564860554D685A496356425C4F435D52445D5041
+      5B4E48665E4A69614A685F506C654662583C544743594F455B5042594E475E52
+      496256455F52556D625973694861564560565C7F7652736B58756C526E65425F
+      56526D664D68634A695F3D564B4A65594D695F4A6056475F523E514443564B4F
+      6B5F587468506C60516C5D465B4E4155494F6A6154757157777659777655746F
+      3E5F57496B624C6D65577D78578184537E815A7F84557C7E547C774F7A724D7D
+      7A4D7571537171536F734F6C6D5371755A777C59787C4F767A4D6F6D56736E51
+      7674527474577677527073517575557978536F6D516E6F547576537776597A7C
+      516F6D52747753777A5C7C7A46615A465E54485F55496059536D6851706A4D65
+      5E51665F4860583A4C3F415545465D524154494B5D524C60574D64574F685F49
+      60594A62574D65574B6154465F553C50453C5044485D52455B4E41564B465D53
+      4B6357455A4E42544743574C41564B3E52484154484155483C51464D665A5062
+      5B404E48414F44586659969F8675796673755D6D6D56676A505E604458593752
+      52344B4A2A4C4E2D494A25232615191E0F2926289491A4D6D5D755613E343D21
+      282D16282A234A49333B3C1F2F2D1B2C2B162022121C1F132925193D3C283F3F
+      2E55534461624E6B694F605C3F4A4A33484A315452355B5B3B51523554533750
+      53384B4D2D4B4E31454D31494831464733434A32424631434A3040483148524B
+      8093A4B6D1D2B8D3CA729277799895A1BCBCACC8BDC6DEDAD6EAE7A5C3B497B9
+      C0F6FFFFEBFDFDECF9FACDE3DD8AA8A4628A96DBF0F6E5F3F0D9E4E4DDE3E4BF
+      C5C4B0B7A9B6C0ABD2D6C3E6EAD8F1F3E3EDEFDED5DAC9C9D1B98A9A83728369
+      3D47333A3E30424B3E42493D515344555F4E5966525E6B5A646C5D636B5E6266
+      586569526361455B5F425759425A5945565C43525642585D438A8983ADAE99A7
+      AB95B4B4A5BEC1AABEC5B4CFD0BFD5D3C2D3D4C3D7D6C4D1D1BDC9CFBECBD0C3
+      BDC0B7B8BAB4BABABA6A765D5463629CABB7DEE0DFF1F4E9FEFEF4FCFCEEE5E7
+      D6C2C7B9A6B4A0A5AE936C8274243C3BBDC7CFE3E7EBFDFDFEF0F7F3A4B4A97E
+      8D84A8B6BCFBFCFBB0B9A9919B8F9CA8A4939A84556059BEC3C8B8BCB3B2BAAE
+      ACB3B0B2BAABBAC5AC646E61B4BEC6BEC3BFB0BBBABAC1BEADB1A25F6961939E
+      98D0D4D0C1C9BD9BA597919A8D97998D9D9E8F666A5860644C5557434C513C42
+      4530303621343D263C43324244353F41353F48364647344347334045303A3D2E
+      3D3F2D444731464A34404B32444C30465033405330364A24364A2531441E2031
+      14172B181A301822332238473946574E41564833483D41554452605750635649
+      5C4B3F55495968594B594A6575685869595E6B5E5A69595462546A745E576455
+      616D6251635360736160715D59695B5E71605865566070646171645C685E6470
+      664B604C5F73655F6D615E6E5A647464586958616D61677361636F6367746662
+      6E605C6C5F6271616171646A75685F6C5E5B6E586371635F736465755F607160
+      5E6D60667464646F6164746597696A7DBC697DBC677EBC697EBD697EBF6A7EC0
+      6B80C16C81C16F81C37085C56E82C56D83C36E86C57286C76F83C76F83C86F85
+      C76F86C97287C8738AC8758BCB768BCB758ACB7388C9758AC97589C87289CA74
+      8AC97489C97288C76D88C76F87C77086C76D86C66E85C57087C76F86C66D86C5
+      6D85C56B83C46B82C26A80C36A80C1667EBE657ABE6479BD6178B96174B85F74
+      B75C74B55C73B25C6FB15A6EB05B70B25C74B55F77BF627AC86682CC6182D065
+      86DA6E8DDC6F90DD7592E47591E47B97E87D99E68099E8849DE9809AEA849EEB
+      819DEA7B98EC7D9AEE829CED7E9BED7D9CEC7E9BEC819EEF86A2F289A3F5829F
+      F384A1F17D9AF17999F17999EC7596EC7798EF7595EC7695EC7C99EF7495EC6F
+      8EEA7595EA7496EA7396EB7597EB7597EB7697EB7595EA6E95EC7295EB7696EC
+      769AEF7597EF7495EC7297EB6D95EB7B9CF085A3F182A1F182A1F17E9FEE80A1
+      ED84A4F184A3F17B9EF17B9FEF7BA0EE789EED7D9FEF7EA2ED779CEB7BA0ED7D
+      A0EC7D9FED7699E9769CEB77A0EE7CA0EB7599E7749BE977A0EB79A0EB769CEB
+      789DE97EA2E778A0E7759BE6769DE46F97E27BA0E97EA2EA7B9FE6769DDE6F99
+      D26189CA5373AE445A6837433B323C3236413632423732433636423935433839
+      473E3C483E3B463B3A483B3C4B3E3D4E443C4B4138453D333E34303C2D2D382B
+      2D392C2E3A2F344132354434344538323E33323F32313F31323D333641383742
+      393C483E3C4B41394537313F2B2B372A303B2F39473B3F4D423E4A3F3D4C403B
+      4B3E3847393C493E3E4C403C4B3E3B493B3B443A3D5147455D5342564B42544A
+      4B605B516E634B5E51404F423F4E42445548424F423E4D4146554B49594C4959
+      4A424E3F3C44363D493A3E4D3E3D483A45524550605452655A5156485E6F6D73
+      9DA56380806578695C685D5A6D624D605254665B58695E46554852695E546B5F
+      53685B586F64526A61516A6357706D546D695266625365604C635D4B61594A5F
+      564C60544960584D68604F6358475D50475B50495D525062584F625849605548
+      6156495D51495A4C42554846574E495D52455D50475E52506055536257516459
+      4F695D51685B54695F485F5549615652695F465D5050685A4F695B425A4B3F55
+      484B665A546D6150645845574A48594C526A5D546A5F4D645647635348625448
+      6153485D524C655B50685A506A5D5270625071655174694A6D5F48695D4C7066
+      53797352767450736F50746E4D6E6949666053716F53736D4D6D664B6A645070
+      6A567D7850756D4F736955776E53746B55746E57756D526F6554746A597D775A
+      7D7555776D587974587A7554746D54706952756C4F73684D70634F716955756B
+      567A6F5170664D71695B827F55787252716955766D50716850716B567A755377
+      71547C75598581567D78537A765C8381577C75547D6E55796C5A7F755682754F
+      75654B6B5D5171643C62523F63563D5A4C34483A3E56484F706348665D48665D
+      44615347685A4F6C604F6D624B6C624C6B5F4762553F5B4C4D6B60506B63465E
+      574A635B4C6A60506F684F6B62526F64536F665B7874516F664A665B4A655A4A
+      685B4D6861415C51445A534B61584A62594C645A516D614C6A61516A6249645A
+      47615549665D4B695F4661564460554B69624A6B62496559405749425A4B4762
+      56465F5449665A4762564A6058456057496457526C62577971526F6850695F41
+      5B4F425C4F485F5846605747645A476359445E53455D524960543C52453A493E
+      4353464A695D557064516D614A685B486357506D60567568537066516D63516C
+      635A797339656038655B506F68517771547C78557A7E588180597D7E5C818051
+      7E7A4B7D7D5B86845B8081506F72506C6B54717356777C5B7D84577C8056767A
+      597A7F567F7C527877557A7E5A8186577C815675775374715B8180577A7D5675
+      73557071546F714A65624C6B655F7E7E4B615F3D50484D655E4D665A516A5E57
+      7069556E64546D624A6158415549486052445B50445B4E4A60584B64584D6658
+      495E554860554F685B536C614B615541574B445B4E455B4F476154486051495F
+      55425950445A51415549445C4F485F564755503E4D43445C4E455D5042594F44
+      5A4F42564B43594E465C5067786C989C816F715D6D6E59696D526B6E52596140
+      55533A59593B53513242432431381D25261622231624251D25242335372E5353
+      3F69695E75755E171706393D283C371E312C1D2B29162424171B1D1320251C31
+      321E363C275E574A666250636952575B3E4548333C3F2A3C452A404B323F4B31
+      464D31444A3050513D494B2E5350384F4E3550513B52523852533D54553E4D53
+      415456568F9CB0BED3DABED6D9D4E7EBD7EDEED2E9EBD3EAEBD3EBEBD8ECECA5
+      C0B4A3C3C2E1F3F9DCF0F2DEF0F1E8F9FAF7FFFFFAFFFFE7F7FAE3F3F4E9F3F2
+      FAFDFDFFFFFFFFFFFCEFF0E9DCE0D0C9CDBCBDC5AEBEC3AEC3CCB9D4D9C3A1AD
+      95788368434C383A44373E473D404A3E444E41505B4E636E626B7365787F727D
+      8576757E6C6D71596965535A5D4851563E4F533C4C503E4A4B394A4F3E888983
+      727A66696F5A6A6E5D6971616D746479806C7B836F878D7A909B8B9EA592AAAD
+      9BB8C0B0CCCFC6E3E5DCEEEEEDB6BEA7505C5EC3CCDAE5E9E4D4D9CECED4C7CF
+      D1C2D4DBCBC8D2C6A6B0A56B7969384C416D766FB0AFA7B5B8B7A8B3BDFAFDFF
+      FFFFFFF0F5F07D8B838A9AA0E5E9ECD5D8CA9DAF959AA5957B806C74807DCCD3
+      D0A1A698A1AA9FA6B3AAA3A996656F68C0CCC9B2B8AFB3B7ABBEC2B678877CB3
+      BBB4C4C9C2A7ACA38D9286999E91919B8F8C8B756C715E51553A272C1625291C
+      2126182F32233A3E25373A263B422D42442E3D45333E442E3C422D3D422C3D45
+      303A3D2B3A3A28353825414732444734464834434C35444F383240273540243B
+      4A283448232D431D344522283E171C3316152A0F1F311D1C35243D5B44566D5E
+      5C6B5B4B5E4F3749384F60504855456377645C63565468575468564C5F526973
+      635163515A6A6153604B666F5D646E5D5A695B616C615165525C6E6065716356
+      6C5E6473634F5E4C5C71636270615469566375695F6C5F6670606A74625F6D60
+      6574655E6C5F616F5E6371636371635E76625B6D5D576A5B5E706561715E6574
+      686770635C6C5B627863607156636E6397696B7EBE6C80BF6B81BE6D81BF6D81
+      C16D81C26E83C36F83C46F86C57088C77287C77488C87489C97589C97287C972
+      87C97287CA7389CA738AC9768BCA788DCA788ECC778ECB768BCA768BCA768DCB
+      778DCB778ECB7990CC768ECB748BCA748AC97089C97289C97388C97289C97389
+      C97289C86F88C77089C76E86C56C82C46B82C36980C1697FC0667EBE637ABC62
+      76B85F75B75F75B66075B55C74B45F75B56175B46075B55F75B26076B55F76B5
+      6079B8617DC1617DC5617EC86986D26C8AD97391DD7695E07896E37B97E67E99
+      EA7D9AE87591E48099EC849FEF86A0ED88A3EF849FEF7E9DEE829EF0809DF07D
+      9DEE7D9BF084A0F1819EF0829EF17897EE7392EB7497EA7496EC7496EB6F91EA
+      6F90EB7595E87696EA7495EB7697EB7496EB7093EA7096EB7495EB7393EC7496
+      ED7B9BED84A1F182A0F280A0F181A1F17EA0F07E9FF07D9DEE7E9EEF7D9EEE7C
+      9BED7B9BEC7B9CEE7D9DEF7B9DF07498EB779CEC779EEC7599EB799DED759BEC
+      769BEB7297E97397E97C9FEB78A1EB769CEB7399E8739BE782A8F07DA2EB779D
+      E979A1EB7B9FE97DA1E879A0EA749BE9769CE67CA0E781A3E96F96DF739AE17D
+      A1E27097D7426AAC3B4F613B473C354034353F3439443F39483C354639344437
+      3442373A483D3F4D413D4A3E3D4C413E4E483C4B4038483E37473D3845393441
+      332F3C2D32403233413638453A38483C35453832403432413434413534413533
+      40363542373C493E3E4B3F3845352D38262A362427332237453B415145435246
+      4250453F4F423B4D3D3E4E414451463E4B3C3948383A4435364136445B544961
+      58405046435751526D6952695F3F4E3F3F4D4248574E44534743534748574B4B
+      5A4F4654494352453F4C3A323E2C3A46394952464755474D5D4F4C5A4F515A4B
+      58645F63766E4A5A4A58645957685952615258655A63706859695B4F5C4C5262
+      57566C63586E655B736B58736C57706C58777456756E526B64556B66586F6852
+      6A6250655B51645D4C645B4C645A536C5F4861544860554D63584C61564C6256
+      4B63584D655A4D65594A6256475E534B60554D65594B64584A5D505162565668
+      5E55695E506A5D4F695B53695D46574E4C6359557165526C61526C61526E6148
+      6254455B504F6A5E536E62556D6150685B49615350695A546D604F685A4D695A
+      516D604D6A5D4A62564B63565E7A6E607A6F50685A4B65595470655270655171
+      6852736D51736B537774578281557C784D6A62455C4E4B655F4B6B6352706652
+      706C51706E53766E516F6654776D537C74577A7156786F55766F5777715B7E75
+      55756E597A755A7E76587C73597C7453756D53716A55776C55756E57776E567A
+      745A7D7E597D7C587A6F4B6C6253787257787252706952746C51716653746854
+      7A75597F7C5C817A557E78547874597D7C5B85805C857A5A877D527A6C537466
+      577F75618B815A7D6E4D7060446C5D3C5F513D59493A5347466558506C61425A
+      4C4764585275685573694F6C645170684A665A4C665F4A6A5D425F524A685F4D
+      6C6143594E4A60574C645E52706858756B4D6A5F57756B4D696249645B4A6456
+      455D4E4A635949645B4661574A6158485E554D635A516C62527169536F695671
+      6A526D654B6B63506E6A4C6B6348655A4159504861564C6C624D6D63415C4F42
+      5A4C425A4E4760574F695E465C5143594E476154506960506A5F4F6B60536F6A
+      55736B516A61465E5240554C415F54496B60547069546F63435A4A4A62564A65
+      58415749495E514961564F6B61516A614A62564A655A4D6B625C7A755F7F7647
+      5F54465D4F57706648736D3C6D664F6E6A486D69416C68547774567A76587573
+      5C82815B87855982885B8186597F80567A7C57767756736F5877755F7D855879
+      7E557C7F5879805B8183597F804869695174755F838C56737851706D61868658
+      797E5C7A7C4D66644A6363475D57455C504A635F526666435450495E564B6256
+      4F6559576D65567068536B634A6159495D52435447435C4F4A605548574F4C63
+      57526B61506962526C63526A614D645B4962574A62564F655B4962594B62574A
+      5E524A6053495F55495A554D62594B6358455E52425349445349486052496254
+      4A635850625B4C5B53455B51455B516E7A6E4D5F515960506769536968526464
+      4B5860444B5432464B2F4548293D3D2535321E31361A2D2B162A2C1E232C1F25
+      291E2B2A1928271E272919201E142424183634212F2F172D2B1626241B393C37
+      4A4C364342283C392450513E66624F696652615A434F4C354B4B356059455B5B
+      41575939535139504F384550314349314A4D31494A35434A36454A34444E3B40
+      4935424B374648438191A5C3DAE3C8E0DDC9E0DECADFE0CCE2E2CBE2E4CBE4E8
+      D3E7EAD9EEEBDEF1F0DBEEEEE0F3F0E3F3F6E5F5FAE3F4F9E6F7FBE5F7FDECF8
+      FAD5DFDAD5DEDDBBC4C0BABDB5C1C5B6D2D6C4E9E9DAF1F2E0F3F1E3DCDBCABA
+      C6AB90A085808F6F454C3D3C44353C46373543354151414F5E49525E555B6255
+      576356595D52585E4B5C5D495B5D44585B4452553E51573E54533E5553425454
+      4986857FA1A69DA3A891B1B29DB3B4A6B6BEAAC8C5BAC4C9B4C5CCBCC0C4B5B3
+      BAA8ADB8A8AFB7ACA4A9A2919C968797916F7657597068B3BACCFDFDFDFAFAF6
+      F1F5F0AFB8B155615F212F28667672939888B4B4A0E8DACBEBDEC2CEC9B2ABA6
+      95484E49708286F1F3F8FCFDFCEAF0EDA4B3B1849396F6FBFAA8B1A08D9A8062
+      7363CDD2D6C5C9BF9DA69BACB0A365695698A1A2B4BAB8B6BEBA828A7D819189
+      C3C7C3AAAFA89EA498A09B92787C6D454F43ABB8BAF6F7EB7B8162515A3B1F22
+      0E2226192F2C233130243A3A2A3A3C2E40433745453741423443442F3C45303B
+      452D3D41303B3C303738273C3B2C424532454734464832464B394C523E535C43
+      565D485A61485A6245414D313645273947243348233246242B3F1F2539172439
+      1E20341D3A4A3C3245393A4F43596C5F48564B626F6158634F51625554665A4D
+      5F4F5A695E505E4F55665853604E677562636F5D5765565E6E5D536252606F60
+      6370635566595F6E625160526176615E70625E6E5B637564606D5D5E6E615F6E
+      62607362637863606D5D5A6F5B66735E6270646774635E6B5A5C6C5F6371605F
+      735F6574695F715F616E5F6A7465656C5B5F715D97696D80BF6F85C07083C270
+      85C47085C57285C47287C67389C67589C8768AC9758AC8768AC9788BCC768BCC
+      748DCB768BCA758DCA768DCA778BCB788ECD7C91CD7C90CD788ECD788FCC788F
+      CD7890CE7990CD7B91CD7991CD7991CD7B90CE768ECC758ECB768DCB768DCB75
+      8ECB768ECA768DC9748AC9748AC77289C77087C66E85C46D83C46B82C16B80C0
+      697EBE6479BA6377B76376B66177B76177B66176B66378B96579B9647CB8637A
+      B7657CBA6279B86177B66077B65E77B86078BC627CC1617DC46582CA6C8AD374
+      91DB7E9BE4819DE77796E47996E8829BEB849EEC849FED849FED859FEF819EEF
+      85A0EF82A0EF7C9AEC7898EC809EED7E9CED7898EB7999EB7799EB7E9BEF7B9A
+      EC6B8EE66F93E97596EB7593EC7393EB6E90E97291E77696EA7798ED7899EC77
+      96ED7092ED7093EA7593EA7D9BEF789AEC7C9BEF809FF17C9DED7B9EF081A2F1
+      85A4EF7E9FED7B9DEB7D9FEC80A0EC7D9DEC799BEB789BEB789DED81A2F081A0
+      EF7497E76B92E4739CEA7BA0EB779CEB759BE87398E8769AEA7EA1ED84A3ED77
+      97E6799EEB87AAEE7CA0EA7C9EEA799DEA779EEA739BE47BA1E77CA1E66F96DA
+      789CE180A2E45983C833569137474A39453B39463B3A473C36413637463A3B4C
+      4138483C3D4D403F4F433F4D4142514A42524C3E4E433D4E433A493E3C4A3E3C
+      4B3F38463A37463A39473B34433633413636443937463A38443A364237374337
+      3742353340343641363C493C3F4C40333F32323E2A343F2B323D2E3442373D4D
+      413D4C403F4E414555494153464354473F4D413F4E434456463E4B3A37413742
+      544B4A5E5346544B485B56546E6E57706C4250433E483E41504446564A455549
+      45544743524547564A4759473C4A363743343F4D3E515E4E4F5D4B4F5D4C5762
+      56616C5D616C585A635555645856655958665A5662585C695D5360515564565C
+      6A5A545F5154655B566C655C75725A77745B787559797457716C556B685A7571
+      5A756E576F6952685F536A62526961516A5F576F65536C61556D62546D624B65
+      5A4C665A4F6559485E53465E534A6357526A5E51695B4D695B465F52495C5059
+      6B5F536055526358506D604C6A5D50665A546C604D665B4A685D4F6C63516C63
+      495F554A5E53526A60556D645A73695B756C567568516E60556D60556D60526A
+      5D536B5F516A5D4A6054485E51486153597468627C6F4C6053475A4E4A5D5144
+      5B4F4F6A63607F7E56736D55766E577D7854756E4D6C6252716654797253756D
+      5678685776695A7873597C7357756C5979735C827F5A8078557C73577A715575
+      6B59787358766E587C735A807A587A7557777254736B516E64506D6355756C57
+      7972597C76547773557C7A5A817D54756C4F6E6552766E53786D54756D587871
+      5C81785A8280567D754F6F644C6E645379735B85815E88855F8B855E89804F75
+      6B57797360827E598076648B81537A6C4165533A533E2F3F2F415F5249736352
+      716649645749665D4A6C63526F664F6B634F6E644C66594B635849665B4C6D62
+      506E654A68594560514D695D4D6A6152706349685B4F6C6158766B4A69624F69
+      60546E634B695B4763594D6D6453746B536A61485E544C635A526F6959787155
+      716A52706B55736F557672516D6A4D6B6348685F4360544C695B506E664C6B63
+      476054465D4F475E4F475F55496459445E51476054486256506B624A6359465C
+      515A746C637D7A506A633F5A4A47615548635A4761584D69604D6C634F685F48
+      5F554866574D6B5E526C60465F524B695F506A614D65584F6859425B4E4D665D
+      5C7A72536C64425A4C516A5E53746B507A734A6C6649696248776C527F785776
+      725C7A7758807E5F898760888B597C7F5A7C7F5A7E7D5E7E7C658185607E8159
+      757756747C53797E577F80587E815C7E804B6664527374577C8351707154706D
+      56757455787658777C587074465B563E5047475B4F42544B4257504A6159495B
+      5244524847554B51655B53665E52655D52665E4F605544544746574C46544A47
+      554A495E554F645E536A63536E684F665D495D5050695B506A5F4F665F536E65
+      546D634F665A4F655A52695F4D645B4D645F4A6159475D50445B4E4B6055485F
+      534762554F665D4D625951605544524843564A465B4F4A60524D594A565B4B60
+      654C5E604B585A4150543C4F533551513248472A3F3F2833391E363A253E4131
+      3F412E3B40253C3E283E3B233F3D22363B1C202A1335352034331D2D2B1D2724
+      2275748082866C3F442444452C56574162664F646A54596048454C343D42294D
+      463758503C58573D59563958553A5C5D3F5B5C3E5A5A3B5F573C5A5A3D5E5B3F
+      5B5A3D5C5B415F61495454528C9AACC6DAE1C6DEDDCADEDDC5DEDFC9E0DFCFE3
+      E4CDE3E4D1E7E9D6E8ECD9EBEFE0F1F2E4F4F6E3F3F6E5F7FCE5FAFBE7F9FCE7
+      F9FCE8F7FADDE9EAFBFDFDFFFFFFFFFFFDF8FAF1F6F7EBE7E5D8CFD4BFB4B8A9
+      A7B3A2C1C7B1AFB4A07482683C453A3C423B3C413B39453947504A4A5A51636F
+      6263715B6F766B80836C797E6C6A6E59626850545C484D563D53523F4A4E3B40
+      4B39414A40898385646A5D4D5A485E65595A69596575656D73686F7A6D6C7C6E
+      7B8A7C92988EADB8B2CFD6D0DADED9EEEEF0EBECED9AA49F444D5681809C7482
+      8942555938494C656F6D67746C5F6C62BCB9AEE6D3BFEFDEC5ECD9C2E8D7BDF1
+      E0CBFDECD4FDF2D7CAC6AFE0D4C9DDD9D8D6DBD8FAFBFCF1F7F6809595F6FCFC
+      C3C8B97D806A748080DEE5E7ABB8AB818F7C4C524CA8B8B8C1C7BA8D968E8A9C
+      95C1C6C59298898889869096833E4736272D293D413C9CA9B1FBFBFAB4BAA353
+      5B3C1F261620261A23281E2B3124333A2832382C373E33373F2D3C3F2B3D442F
+      383F2F3C44303945322E392E3237253739253D40354044363B44303C47303F45
+      313A412F3A463146503C53594562685454543E43493139432731402235482536
+      491F35461B384B25283D1E21341F10221131463934483B627164525C504C615D
+      51635149594C5465574C5C455365584A5B4A606E60586D585461505B69584D61
+      52596D5F6073605764545F6D5E4B5E505B6C5F606E625F68596574625A6C5F61
+      6F5F6071635E6E5F626F636070615A6B596474645F7061626F63616D63616E5F
+      6173655E6F626371626371615E6D5E6971655F6C60626E6197697085C37286C4
+      7488C57488C57489C77589C67589C7758AC9758DCA778DCA788ECA798FCD7B8F
+      CD798FCE7B8FCD7C8FCD7890CC7B90CD7C91CF7C92CF7D93D07E93CF7C92D07B
+      91CE7D92CF7C93D07C95CF7E92CF7D93CF7D93CF7D92CF7891CE7891CD7990CD
+      788FCC778FCC7890CB7890CB788FCA768EC9758DC9728AC67288C56F86C56D85
+      C36E83C06C81BF667DBC667CBA667AB8677AB96579B76277B76479BA677CBC69
+      7DBC677EBC677FBD677DBD677DBD677EBD657EBE667CBA657ABC637CBC637ABC
+      637DBF667FC36F8BCF7692DA7998E1799AE47E9BE6809BE8819DEB849EEA849D
+      E984A0ED7E9CEB7D9AEA849FEB829FEB809DEC7D9BEA819FED819EEC7D9AEC7B
+      9AE97898E97696E87B9BE87698E97595EB7697EB7597EA6F90E47493E77B9AED
+      7396EA6A8FE7698DE8678AE4698EEA6F91E86B8DE46D8FE87496EB769AEE7E9E
+      F185A3EF82A2ED809FEC82A3EC86A9EB7DA0EA7C9EEC7B9EEB779CE8769CEB72
+      97E76C91E47298E67DA1EC81A2EF7CA0EA7DA1EB799DE8789DE97EA0EE7E9EEE
+      7799EB7B9CEC84A6EE81A2EB86A9EF799EEA789EE97EA2EB749BE4739AE2769C
+      E06C93DB6A92DD5C83C95478B4476AA035485A3440353644383443373C4A3E3C
+      4B3F3C4B403C4B3F3D4C404050444250484250474050453D4D413C4D413D4D42
+      3C4B433E4C413D493D38443835423634423635433737453A38463B3843393944
+      3A3C483B3741343542373B463D404D3E3844373944383844302A36233B45393E
+      4D424150443F4C4044534743554A42554A43544941514445564B46574B404C3F
+      414C4146534747574B495E555266604C645D4A5F54404E3E43514446554A4756
+      4A4A5A4E46564944524653625445554543523E485942485748485A4C5562545B
+      6556606A5E7B89767281685962515E695F5C6C605563575E685D5F6A5D505E4F
+      5E6A5E5C6C5E5260555A6D64576F6B5873725776745F7A765F7A7459746F5C74
+      6F637A74587069546C62536A61566F66546B62516A60556E6559716A64786C5B
+      7468526B5F546D62576E624D625650685B526B5F4F665A4F6557536C5E516457
+      4A5C52546359485347455046557064587569546C5F536E62526B604F685B4A62
+      564B635652685A506155495E515774665C786D5B736959756A607F72617D715F
+      796D556E61547062516C5E43534639473C475A4C485C504F685B516B5B455747
+      4250433C4D3F425B4E52716B546F6956756E577D785577715277725177745175
+      73557671567A715E807858796F5471684A625954706D577775577F7C58827D58
+      7D7356776B55786E5B7F775E89835C86805E7E7C5775725B7C734D6D624D6E62
+      567C6E52756F5A7E7D57796F52766E5579755477735A7A775878755A7F765B7D
+      755B7C775F85835E8787577E734C6F60506F6355776E5E837F608584628B8B61
+      8A7F567C6E5B807C5E81786089805E837D597C744C6E605174645A7D6F446555
+      3F5F51567C7355746D51706454766955716A4F6C614C6D624F69614C665D516E
+      6958787555716D516B604968594F6F6455756C526D614D6A60617F7855716949
+      6A62536E654F69604D6F63496A5E4B655E4D686050655F465D5249625754716B
+      516F66506C655475715A78765776734F6F684D6A634F68614C695A4A695B5171
+      6C516C664F665E506A61526C61536C624D695E476457536F644C685B54706851
+      6D634B6256536D62566F6A4C685D425E4F4864584C655B4B6157526C614B695E
+      4D6E634A66584B6857526D61526C614D695A5370654D69614A6459435B4F455B
+      4C4C63554F685E587671516F68517169597A7454796F50766C526D6652786E57
+      8A876182816385835C83816087855E85835F817F5C7C7C5C7E7D607F7E638185
+      617F7F5975715573744D6B6E587A7D597F855A7980556F6E3E4F4C3D4F4C4F66
+      60506961516A64536F6C506C6B4D6665475A524453464A5E5347594B41524544
+      574E47594E49574C4555494C5D51515E544D5F54505F554B5B51495A4F4D5D53
+      4C594F46564B4C5F554F6358475F534C63574C61564B5F53495E54495D55495E
+      5750645D4C625A485D544A60584861574F6A5B516B624C645D4B5F56495D5547
+      5A504A5D524A625750625946564A4F6054434E453F5144445E50485F53293A28
+      2D382C3E453E454C424C5147414D3C454E35454C35534E3D8177664B532C2122
+      116A626982816B2E2F133B37243D3F2440422D3D43283E40253B3B20393B2033
+      311C20201A383F345A60583B3C2A3A3D294B4C3663614E656552606249434F35
+      42463253543E58543C56553A51553B4D54394D503A4A4D36494A35444E33474B
+      32454A2D434B2E434C36474939484A45828DA3C6DFE2C6DFDEC2DDDEC5DEDECA
+      DFE4CCE1E3C8E3E4CFE6E8D8E8EED8ECEDDEEEF3E3F3F6E5F4F9E5F7FBE5F7FA
+      E8F8FBE8FAFDE7F8FCC1D1D7CDD6D7CED2D4D1D9CFD8DECFE1E3D0DEE2CEE5E5
+      D3E3E4D4D5D9C6C2C8B6949F879BA9931C2C1E4C63686374712F3D353543403D
+      4A48414B413B4D413845424452454A554A4653483E4A3E3F4C3D3F47323B4433
+      323C2F363D31353F365055473946323241313C473937413438463C4A5149484F
+      48465348434C42454D493547413143454F5E5F566465616B6E81908D97A49D5F
+      70696B7C83C4CACAB2BAB09EA091B1AF9FDCD2BFEADEC8EBDAC3E9D7BEEDD7C1
+      EADAC4E9DAC8E9D9C4E9DFC7EFE5CBE9DEC9E5DAC6D6C9B9CAC9C0E0E0DAE9ED
+      EBB1C1C2D8E1E6ECEDE4556354A7B1B2D1D6CD646E58596861CDD3CF989D8CA7
+      B2B1C4CDCAAAB4B1AFB6A8E4E7DCDDDFC6141E0E404547363C3597A1AEF2F7F6
+      E4E7D558613E212B18202718262F1F2A34212F3626343E2D384131353E2D3540
+      2A32412E344031373C2C333E2A2F3A272E371E323325314030373F32333E2C3C
+      423036422A3B44313340323B45303E412C39412C3F412D3F4230363D282B3525
+      454F3B47533B3A4627354A232E481F2F45232C461E243B191732172034231726
+      1D4051525A706A536A5D556459445B4B53635B4A5D52586C61566B5B54635453
+      69554356436073695C6F635762575B6B5F48574A606E60636E615A6455637160
+      606E5B5C705E5E6E59606E5E677466606C5960705B636F63626C6166716B5F69
+      5F5C6F5F6973635F705F62765E5A6F5A5F6C615C73625F6C5F5E6C5E97697587
+      C57588C6768AC6768AC6778BC7778DC9778ECA7B8ECB788ECB788FCC7C90CD7D
+      92CF7D92CF7D92CF7E92D08195CF7D95D08096D38195D28195D27E96D37D96D0
+      7E95D27E96D28197D28297D28196D08196D28096D28197D28096D27D96D07B95
+      CF7B93CE7C91CD7C91CD7992CD7B91CD7C90CD7890CC778FC9748AC6738AC672
+      89C57288C27087C16F83C06D80BD6D80BD6C80B96B7EBA6A80BD667DBA667DBA
+      677EBC6A7FBD6981BE6A80BF6981BF6980BF6A81C06A81C16C82C06981C16A81
+      C16B80C06980C06A81C1657EC06A83C36F8BCD708BD37390D87493DB7592DF7D
+      9AE6819FE7809DE77392E37796E8849EEB7E9BE97999E87E9CEB7D9EEB7C9BEB
+      7C98EA7798E87B9BEB7B98EA7393E47595E47899E87998E97B98E97493E47292
+      E77799EB6E91E76D92E67493EA6D8EE96A8FEA6B8FE77295EA7C9DEE7998EB76
+      98EB7B9AEC789AEB7B9BEB7E9EEE809EEE7899E77B9AEA789BEB7598EA7395E9
+      7093E87096E97398E97B9EEC789BED779CEC7E9FEB80A0EB7E9DEB799BE9789B
+      EA7D9BEC769CEB759CEB7EA1EB81A4EC81A3EE779DEA779DE9759BE87298E370
+      98DF6B93DB6C93DE658FDA4870B542619B4866A03F5C7F39453E38463A384539
+      3B483D3D4D413C4B4038473C39473D3D4C4142524C4050454151453D4D413C4C
+      413C4C4139483E3C4A3F3C493D3740343844383A473B39443837463A37453939
+      473C3B483D3A433A3943393D483E3E4A3F414D3E3843354552463E4B3B2E3C2A
+      364234404D4349594C4A5A4E43554943554944554945564A485A4E475A4E4556
+      4A465449475348485549465549485A4F4D645A48594C44524443524446554848
+      564A49594C5162554D5F52515F565361524652415B685963745E5163504D5D52
+      606C5E6671616F7A6B8791837785725E6B59657364606D615A6B5F627364626F
+      62636F655B6C5F59695B5A6660677A75627977586F6D5E7978658381627A7556
+      706C657A75677871586F66587369587066566E64576F65556F65556E6963766D
+      75857C66786D576D6061786C657D71546C5F566E62536B5F4F6156506457546B
+      5F4C625640514548564E4B594E526056546C6457746D546D614F6558546E6659
+      766D4F6A5B4D6A5D526A60576B5F566F625E7D71638074627D735F7D745E7C6E
+      5C786A607A6F5874665575664F6A593B493A3D4B3F4D68595065584D63584F6A
+      5D3F4C3E3C49394154404052413F54474C64585370665375715C7F7856777151
+      736F527371567975567F7F597E7D59786D566F624C61554D64594A645A537471
+      567C775379735B7D755A7E78577F7A577D7A597E785C7E784F6E66537069516F
+      6450716252766950736D567774547775587A7A58767352736E587A7558777360
+      807F5C7C7A52736C57777157797A5A827A567A6D55756F54716856796C577E76
+      5B837F5C867A598075567F785C827D668A8559807A5F837F587C735679746080
+      783C5646486559567671506D695777715A7C7355746B4F6E6553716D506B6552
+      6F6A577672517069516F6957756D53736653756B5876724B685E4D6B5E566F6B
+      637F7756766B53746A556F634C66594D6B5E4863574A605550665D4861574864
+      57516D6252716956746B516E655579735677744F6C63506A614F6962506F654F
+      7168577673536864536C6358767258736F58746A5270655571685B776D506B61
+      506D63526F66546E624960554C695E4B695D46625549655A4D6A6050695F566F
+      665877714C6C61537164577365567365546D61506B5F4C6E61506D62465A5043
+      5A4E4860534C63564B63584F6961506E685578715C817A527A72557E78546F6A
+      5571695F868362838364817F608686638A876A8A876587885E7F7D6281816281
+      86597A785A78735F7672566F6D3E5951506D6954767643625D4760583A493E3F
+      4E404B5D554B61574C65574B645E4B6560465F52465A4B4A5D51495C51495C50
+      45534A44524A45564B46564B47574A4A5B4E516056505E574B59504B594E5363
+      5952655A4F6055495B504D61554F625644574B4556494B5D514A605446594C46
+      544A475C52495C52495C50455B4E4D665951665B51695D5A756C556C654B5E57
+      4C5F574D61584A60564C63594B5F55475A4E5364594B5B514C61564A6358495F
+      5761756B506453384D4033463D31403635443A2E3D312E37253F46398F888958
+      643E2930183C3A37423F3B42493A2B3321212F1A1C2217151F162428173C401F
+      3C3E213935242027161C24161613152F321D454337575A4C5E5F4E6166525C62
+      504C513B383D2A444A38585240615E425F5E48635F49656144635F47615E4165
+      5C44655C40645E42665C45655F4B635E4A5A55508890A5C1DADFBFD9DAC3DDE0
+      C1DCDDC6DFE4CAE1E1CAE2E4D2E6E7D2EAECD9EBEEE0F1F4E1F2F5E5F5F9E6F7
+      FAE9FAFDE5F7FBE7F7FDE4F3F8D5E5E8FFFFFFFDFFFFFFFFFAFEFEF6FDFDF1E5
+      E7D3C9CDBEA7B29BA7B19DBEC3B09CA498CED2D2D2DDDCD4E5ECFBFCFDD8E4DB
+      8D9F93678075516458475B589EABB35369525E76625B6F65586C684C5E542E3A
+      283C46475B66665B68665B6E6E76877D7485726A7C6F4456401F352F8D9CA6B6
+      C4B4BBC4B2BEC7B8CED3CAD2D5C8374C3E728889E2E4E3DEDFD6DBDCDB9AA297
+      6F776CCFD1CEBDC0B9797D6DAAA295F3E5D0F2E3CDE6DAC6E5D8C3E9DAC5E7DA
+      C1E5DBC1E9DAC3EDDFC8EBDDCCEADDC9EBDBC6EDDDC7EAD9C2E9DBC4E8DAC2FA
+      EDD49E967C546261374845657788828889889999A3B0B3A3B0A79AAFB0C8D1D4
+      ACBEB8C6D7DB8AA2A07D9598FFFFFFF1F3EBE4E4D02E34272C3A2C2E372C97A0
+      A6EFF7F1F0F3E3BABA9F2129111C251720291D2528212E352C2530232B36272A
+      362B303A2B303828353A283039243437243239272B2F1F2C2F292D37292E3A28
+      343A2D32352C323A28343A2236392432372130351E3135263135212F33212630
+      1F232A1E343A34313A31343D2A313C243240222C3D232B3E242D432431452433
+      461E2F441C23361F1C3421293D2A39473B3146384B625958625B5E6B645E6C5A
+      526155586A5844594E5B6C625E6F60506254556B5A4959486471635F6E605662
+      565C6B5D5F6D5D5B6C5E5E6B5D5A6D61637164606E615B6B606673656270615E
+      70655B6B5D5C6E5E606E615E71606473605F6F5E5B6C60657665616F615A6C5B
+      97697589C77789C8798DC9788EC9798FCB7B90CB7990CB7C91CC7B92CD7C91CD
+      7D92CF7E95CF8195D08096D28497D48499D2859AD48699D48499D48499D48299
+      D48099D48298D48499D4849AD4859AD5849BD5859BD48499D48299D48199D481
+      98D28097D27D97D08196CF8197D07D96CF8095CE7E95CE7B92CD7B90CA778FC8
+      768DC7758BC6758AC47388C27085C16E82C06E82BE6F83BD6E85BE6E85BD6E82
+      BE6D81BD6C81BD6C81BE6D82BF6D82BF6C85C06D86C16D86C16F87C37287C370
+      86C47086C46F87C46E87C46D86C46C83C46A81C36681C3657EC1657FC46682C7
+      6A87CE7592D67C9ADC7695DB7692DE7C9BE47E9AE4859EE9829FE97D9BE77799
+      E87D9CEB829DE9819DE87998E77596E47697E97897E97696E66E90E47091E372
+      93E67395E67496E47597E77695E86E91E66C90E87395EA7698EA7598E97598E8
+      7093E87798EB769AEA6C91E46D91E67496E87796E97393E87596EA7797E97495
+      E96D90E77295EA779AEA7799EB7091EA7899ED769AEB7393E87693E97C9BEB78
+      99EA7292E77C9EEB759AEA6F96E97398E9789FEA779BE9759BE8739CE76F97E4
+      779BE36E96DC678EDA6A90DB698FD45E81BD4163A33855963A59953E597C3D4D
+      443C483D3A473B3A4A3E3C4A3E3A483D39473C3C4B41404F444555494253473E
+      4E42425145414D413C483E3C483D39473B3845393C4A3E3C4B3E3A473C38463A
+      3A483D3C4A3F39463A38443A3C493E414E423E4A3E424F414351454B594C3C49
+      393C4B3E4351444150444A5A4F4A5D5144564A48594C48574B48594C4B5D514B
+      5C5047574B46554946554948594C495A4C485A4E475C504B5B504A594B495A4B
+      4C5C4F4C5D504F5F535363584C5D50536156626F6261705D66756569766A5261
+      5359685A7481747B8677828D7F808A7D7782736F7C6B6F7D6F6674666B796C65
+      75695F6C5D5E6B5B5C6A626370666C796F6D7D77697F7A647C766783815E817D
+      5F79745C7871657A7360716A61776F637C7260766C5B736961796E5E766D647A
+      7375857C808B837281776A7E7373867C657A6E51695D536B5F5066594D635756
+      6A5F576D61445A4B3E5040505E525160554B6252425A4B3C4D464D645A5A756A
+      5169614D6158445C50516A5E5060534F5F504D6057546965647E776581786080
+      755E7F7360796F60796D5873654F6F61547665536859475549506A5E5771664B
+      6257495D503C493841574348614C4B6251495C50485F504F6D5E59796E59766C
+      56756B51716854716A5777756085865C858058796D5974665C73655671605371
+      65587773537771527A7156786F567871577E755678715B807854796E50706352
+      71655471665270624C6D5F50706955746F577C775A7F7D5577745B79775C7C77
+      55746F597E7A577A744C6B624F6E645678725A7D77587D755578715270665277
+      6A577E7660878360898059827C57827E59837E658E885B837F577E78597F7A58
+      7F7A5E827D587F7451786F567A7455766F58777559777657777254716C4F6B63
+      4A685A4B696149655F47655A4B6B6351716D5B7A765B7D76536F6A4B6B5F4A68
+      58425B515E827A5C7E7455746A57786D506F644F6E64506F68506B6154716350
+      6D624D6C6155736D55746E5A797159766E56756E5A79775B787558756E52706B
+      567571597977597473526A6657746D58736C536D6854756D57786E54736A526E
+      655871695169614F665E4F6A624C685F4F6D634A685E526F644F6C5F4B6A5B57
+      746A57736D5F7C7758756B59766A5A756B56706858746A5571654C6B60537168
+      516D61486254506A5B4B685A4F685951665B4C686155766F60817E5A7D78597F
+      7D53736A58766D608080607C7E5E7975618080617F845A7778617E816782856A
+      7F836277775C756F607972627C735F78714D6A5E456155506B684A66603E554A
+      3F524755665951655A4B645A4D645750655A4D635A4B6456485F524F63585163
+      57485A5045524947554A46544946544A4C5D50495A4C4B5A4F4C5B5149564A49
+      554954625B576C6551685D4B63554F66585064574F61554F65585164574B6255
+      4D61554A5D52485D51465A4E4A5F524B635551645753655A536C60567169566C
+      655060594B5E54495F53485F544D6358495E534C625753695E4C635849615647
+      5F55465E56496158495F564961554A5F544A5B50526359596A5E586A5A515A47
+      7D867D67734B282D114343439898965F6C5848564028312B848E937C876B5A62
+      3E42442E494D2F423D262E331A2B302D7B7F814448373C4436504D3E605F5263
+      654F5F5F474F4F3741422E474C3A4F513D4C4F374C4C384A4C334B4C344B4D35
+      494B30484B30484A30464835474C3C434637424A39444F4E6B7F92BBD3DFBFD6
+      DAC2DBDBC5DFDCC6DEE1C8DFE2CAE1E3D3E5E9D6E9EEDBEBF0DDEEF4E2F3F6E4
+      F4F8E8F7FBE9F7FAE9F8FCE5F7F6E5F7F6D7E4EAECEEF2EBEEEEE3E7E2D9DDD0
+      C4CAB5B2BCA8C1C7B1D9D9C9E4E4CEC5CFB582958372807881959AF0EFF1E7EA
+      F0FEFFFFFFFFFFE7EDE4A4B0A0788D84C8D1D6F1F2F1B8C2ABA8B0A3A1ACA69E
+      A3995563538A90A2E0E2DEAAB8A9AFB9AEAAB4A9ACB4AFAFB8A758664E829292
+      C1CBCABDC2BCC1C7BCBFC2BCCACAC2707E719DACA9D4D7DAC2CAC7C1C9C18A92
+      8B9DA5A2D0D1CA969B90A29D89DDCFBEF2E1CAEEDCC2E9DDC4ECDBC8E7DBC5EB
+      DCC6E9D8C0E8DBC3EDDCC7ECDCCAE7DDC8EBDDC7EADCC7E6D9C2EBD7C5EBD8C4
+      F1DDC4DBD0B16360441B211D222B2A1D272D2130332E3E433C505A5E6F746777
+      7E6A8185738F92556B71233A3C3046538196A5EFF3F3E5E6D94F5B4A45564533
+      4331929BA4F1F9FDE5EAE3C4C6AC18230B171E1619201A1B23211D2B251E2A25
+      22322C25322B283128293629253125282D2F2A3129242B212128221E221C272B
+      25212D2625322C262F2A272C2727311E2A2D22232B211E281E1D2B1E1923171C
+      2717171E12151A1613191911171611170D141B11171D13171B0E0D1304111E0A
+      283417344324394924394924324C232F431D25391613290D25372A2740323C52
+      4F627665536C5B546157495B4B596A5D546555575F4F5464554856486271635A
+      6A5D5362525765555F705A6474604F62535366595E70625F705D5B6C5B617161
+      616F63636E625B6A585466575E7161566B59667363606D5E586A5860715E596D
+      5D5A685F0000768AC9788BCB7C8ECC7D90CB7D92CD7D93CE7D93CD8093CE8095
+      CF8096D08097D28296D38599D48699D5879BD5879CD4889CD4889DD5869CD787
+      9CD8879CD6889DD7889DD6879CD6889DD7899ED7889DD6889DD6889ED7879DD7
+      879CD5869BD4849AD4829AD3849AD38499D28298D08299D08197CF7E96CD7D93
+      CB7990C97790C7768DC7758DC5748BC47288C37086C16F86BF7387BF7387C172
+      88C07286C06F86C06F85C06F85C06F85BF6F87C16F87C37288C3748AC4708BC4
+      748AC5758AC57589C5758DC7728AC77289C67088C66F88C76E88C97088C96F89
+      C96D86C86D86C76F87C57288C9758DCD738DCE708DD27692D8809BDE809BE079
+      9ADE819FE4819EE77D9BE47C9AE27C9BE47898E47E9CE97C9CE97696E67092E2
+      7697E77C9BEB7797E77292E36D91E26C8FE36D90E27095E87093E67395E76E90
+      E76C90E47295E67293E76E91E86A8EE76C8FE86B91E66F96E67093E86F91E777
+      97E97493E77392E87797EA7899EA7493E87695EA7495EA6788E37295E66F91E1
+      7B9AEA7596E96E90E67398E47297E76C90E86A90E47296E47398E87397E4759C
+      E67097E46E95DF6D92DC678EDA5F89D55179C4557ABD5176B44666A63A579632
+      4F8E3E54713D4B3E3E4D3F3E4E413C4A3F3A463D3C483E3D4C40435246445347
+      4151454151454252464050443E4F43435044404D403D4E403E4D403D4D413F4F
+      43414F433F4E423A483D37463A3C4B3F3E4E43445346434F43414F4348594E49
+      574A425041435247495A4F45554845554A4C5F544A5D514B5B4F4D5E524B5D51
+      4D5F5356655A5363584F60544D5F5451645851655A4C62565263565564595262
+      564F61535062554D605352625558685A505D5257625759655A5F6E6264746963
+      7168616C626B796C6F807589968D929D92859085747F756F7A716F7D727B897E
+      6C7A6D67766D6C786C606D5F6B78717080756371695E6B645A6F6A7489846F8B
+      895F868362807C67837C647D74637A736E817D70827D6D817C6A827C66817A6A
+      817C7B8B86868F867D837676857C73867F707F765C70665A7166597166576E62
+      5E776B5F746A54695E4D665751655A5F6D5E4D604E4B5F50465C4A3D4D3D485E
+      51425C50445447434F40435446424B3B464B394B5A453C483949574F697C756F
+      867F698276617E75607E77607D72627C6E556D5F546F635A7368556B5F5C766A
+      5871654F61524F59494B5D4E4B64564D6154556A5B536D5F445F504C64575F7C
+      74627F755470647696886F89785974695976725E837E5A7F7557776A5970635B
+      766D5677715A7D725B837A578176587C6E59807A5C88835A837E598078567971
+      577A6E577A6C51736459756A56796E5579745A7E7A5E817E5B7F7D5B807E5980
+      7F5E828055756D50716A52756852746A577A786185835C7E7C54797553786E56
+      786C557971597E7A5F868359817852776F577D78547D765B827D5B7D7C597C7A
+      5C88855A868356838058858058807C597C7A5679775A7A7655747152706F5470
+      6D4F6A5E4A695D4A655A4D685E4D6F664C6E6553736C55757352746C506C6052
+      7369526D644D645B587C785E817F5A7D7650706A55736E55706C516F664F6C63
+      516E66597874577771587875607D7A5C7D77607F7A5C766F5B75715B76765676
+      73567672536E6F5A767E597375556E6B55716F59736A55746B5376715A7A7457
+      767157766E55736A546D65556C644F6B62496B624F6C644C6A6057756B587569
+      5773665A7871587573607C775A776D5B76695E766B5771665A7A6D5C7A6F607A
+      7257786E5B7A6E536C5F5166595A766B536E63597366546F6656736E6483845F
+      7C775F807D5978745C7E745E7C77617978607C7664807E5E7876445D585A6C62
+      76867F707D755E6D5F5A6C6263786D67807462766A4F645B374E4540594E455D
+      55445B4E586D605C6D61566E6350696352665F556B604F655D4A63584B645850
+      635954645B49594F3E4D4148554849574C4C5B51505F524F5C514A564B515D52
+      525D534C574B4B5B5152625A53665F4F685F516B624F645D54655D52685B495B
+      4F4F61554C63584D655A4D6055495A4E485A4C495D504F635550625553695D58
+      6E65556A634D6259495D524A5F534F64594A61544B605351695E50655B4A6156
+      465B50455950465C544A60584D615A485E54495B5045554B4A5F544D5E574A57
+      52616F646D76666E734E2A2D1456556AE4E7E66D786096A09067705FA8AEB8F1
+      EFDF464C2644442D4C43294948333D3B244A504EA2ABAA404C32504F41545044
+      56565061634C5A61454F4D39373D28464734544F3C5E5940645A45696341655E
+      41675F406C5D3E695B3D635A3E5F5A3E5C5B3E5B5A47615B42505245737E95C0
+      D6E1C1D8DBC1DBDCC1D9DDC5DEE0C6DFE3C8E0E6D1E4EAD6E8EDD8EAEFDDF0F4
+      E3F2F6E5F3F6E6F7FAE8F7FCE5F5FAE5F5FAE5F7F6D9E9E8F8FDFDF9FBF8F8F7
+      F3F9F9F1FDFDF1E5E7D7C5CBB9AFB6A4A5B09DC5CEBC96A895606F637B868DE5
+      DEDAE4DDC9E2DBCFDCDFDEFFFFFFFDFFFFEBF0EDC9D2CA7E918FA2B0B4EDF3ED
+      BAC0B397A193A5AC99646D5BC6CBD2DADED6A8B1A4A8ACA5B2B7AAAAAEA3565D
+      57BCC2CABCC8C6B2B9B2B1BAB0AAB0A9636E639DA5A6C9D1CFADB7B08F9E9B8E
+      969298A29FABAAA0ADA996DBCBB4EBD5BFEBD3B9E9D4BAE8DAC1ECDCC2EBD6BE
+      ECDAC1EBD9BFEBDAC0ECDAC1ECDBC3EAD9C3EDDAC5E8DAC2ECDAC0ECDCC0EBD9
+      C0EBD4BFF1E2C4A29A68353A1A232419181F181C261E1B292418231F151E1824
+      333120302D263D342C423A374B47455F5860716C869795E5EDE4E5E7D9A0ABAE
+      F7F9F6787D6B889198F9FBFDE6E8DFA2A988424D372A35292F38314456544B57
+      4C4252443D50413B493936483B333E2D343F31303B2F263023282B2620281D1C
+      28242B3A312D3D322A382E30372E303A2C263824233221262D1D232A18202616
+      1E291A1F22181C26192831243B3E2F3F45394C5447606352636D55616A506B6F
+      586C6E5777785A7779635F5D403D4823404C263046233247233148212E401A20
+      38161530181D2F211F362C5669615060526474665F6E61556951566557475747
+      59705B5669565461525F6A5B5F6D5D60705E4D614F5364575A6E615C6E615E6B
+      5F5E6C5F5B6A605C6E615968595469595B6C59546B585B6C5E5C6F6255645262
+      7766586B5D5664570000788BCA7B90CC7D90CE8193CE8297CF8197D08597D085
+      97D28598D2869AD5869AD5869AD5899CD6889DD58A9FD68D9FD78C9FD78C9FD7
+      8C9FD78CA0D88C9FD88D9FD98A9FD98CA0D98CA0D98D9FD88DA0D98C9FD88CA0
+      D88DA0D88C9FD8889ED7899DD6889DD6879DD6879CD5869BD3859BD08598D082
+      97CC8198CC7D93CB7C91C9778FC6768EC7778DC5768BC4758AC37489C27589C1
+      768BC1768BC3758AC2758AC47589C37489C37489C2758AC4748BC4778BC5768E
+      C6778EC6778EC7778FC87890C97891C9778FC9778FC9768FCA778EC9798FCA76
+      8FCC738FCB738BCB728BCA758DCC748BCB748DCA748ACA6F87C97088CA758ECD
+      7790CF7691D3738ED0738ED37593D97898DA7C9BDD7B98DE7B99E07393DE7696
+      E07C9CE4799AE47C9BE47597E37090E07392E17398E67798E67292E36E90E46D
+      8FE46B8EE46C8DE46D8EE7698DE4678BE46C8EE66E90E7698DE66A8EE47393E8
+      7493E97492E87493E97595E97797E96D8EE47392E87898E8648ADE648BE46F93
+      E46F91E37290E76D90E76C90E36E91E17498E77297E76B93E46E95E67597E678
+      9AE67298E76990E2668DDE6B90DC6D91D9618ACF547DC84871BE466DB44B6FAF
+      4B6BA32C498C2F46884052554251444353473E4E423D4B40404D414151444959
+      4F4553494C5749505D503E4E4340534841544643514546554943524641504440
+      4E423F51444351463D493E3B4A3E3C4B403D4D43435247445348566054616B5A
+      4C5B4C4C5B4E4F5E514F5C52515E544F5E524856494B5E535062594B5B504F5C
+      54556156525F525A665A5C695B59695E56665E5F6D627380766C7E756B7D6E5C
+      6A5D5662555665585363574F5E546F796B6F7A6664705D7C826B787E65727A6E
+      868D7E9A9881908F7D949A8E91988C9BA298A0A89C90988B869083818E838893
+      8793998D888B7D808A7D7E8B7F909785757F6C6B75686A6F5B7273617B816F7D
+      85776D7E74607F785F7E77657E78637872748078848D8380877C828A837C837E
+      737D6F7D87777B7F6C868672ABA892989B88798275707D6F6F7A6E6B786B6373
+      695C6F655F776F7D8A80747F736F80777280778A927858664E6774656071626A
+      7C6B7886725664575B6A57495D484359464756405663516475635C6E5B748071
+      879185758A7F6C877C60796E607971657D746A8276627C6D5C71634C5E505F70
+      626E7F71566A5E586E5F657563617161556A59526150677461556D58445F4962
+      736160766B4F6457677C729DB9B38AA29573897D62796E5C79725B7971628173
+      6783755975695F786F6E83775F80765887855C887F53776C5579734F6F634965
+      5656746A5A8076577D6F597668637E7460817C597A7360817E5C7E7D5A7C775B
+      7E7D587E7D587A7553746D51716854746A5577715576756282835E81805A7F7D
+      5E817C5E80765C7F74567A6F577C735C7F7654796E537C74577C755579715A7D
+      7A587D7C5B8381608986618A896085865F817F597D7E577E81587E7A5877714D
+      6C654F6E66546F66506F6456756A546F6852746C55777156746E516E6A466459
+      4B6A5B5678724F6C664A61594D6C69597D7E5C7E7D5B7C7857767554706B526C
+      6255736A53706A55706B5A7672597776607E7D5E7D7D61817D617E78556E644F
+      645D4F68644F6A614B625B4B646347645E4F6C615B7873617F7A5C7D745B7C75
+      5A797359797459787459756F607D7559776D556F6655736B57736B4F6A624D68
+      5F58766C5E7D745B77715A736E5E7773607C73607A71586F6659716B67867F60
+      7E7263857A64837C607A6E5F776A647E72617D715B766C5C766E5E766C617C73
+      66827F637C7A617C775F7D76648076607D756078716379735B7571536C643D4D
+      43787F65A6AA938991806E786B5E69606976696C7E775E7065657166586D6048
+      65583F5C514962595B7169556B5E5670684B6664506860546E654B645B455E51
+      5065584B5F544D60574D5C5347564C4A594E4C5A504D5C535362565462564F5C
+      51535E546D7565737664636D5F525E5246554C4D5F5852696151656055645A57
+      645B4A5C50516557516A5F526A5F5061584D5E534B5D534B5F5454665A536058
+      4F605758706554695F50655A4F64594D665A556C6353685D52665A556D635268
+      604D65594F64584A5E554C62574D61564F615752645A525F5A4A5C5450655B51
+      625A4B5B554B5A545C6B5A3D462A2F321F424659E0DEE888997C858A808D9585
+      6D776A919B9270745F93978FB0AE924D52364848374B494C9EAA9A3741272E37
+      265452495355415E5E43565743504B363C3D294448354545344448303F452F41
+      46314147304447303E412B41472E3E432C41462D3E47303C45373D43353E463A
+      767F95C5D7E3BDD8D7C1D9DBC0DDD9C4DCE0C6DEDFCAE1E3CDE5E9D3E8EAD8EC
+      F0DEEFF4DDF1F6E1F2F6E5F4F9E5F7F8E5F5FAE5F4F9E5F7F9DEEAEFF7FAFDED
+      F0F1DADDD5C4CABEADB2A5ADB1A2C3CDBADEE6DAD7DBD28E998F1D291B4D4F50
+      C4BAB6F0E3CAEBDDC3E6D8B4303516314143CDD1DBF0F4F8FCFDFEFDFEFAC2CE
+      C397A2A9FBFBFBCFD4CA8D9E88909F917B7E80EEEFF6C8CAC0ADB6ABAFB6A9A4
+      AB995F665FBFC8CDB6C3B9A8B6B4B6C5BE708075A6B0B8D1D4D597A49F74817C
+      969F9C929998829592D7D2CDF1D6BDEBD1B1E5D5B2E8D1B7EBD6B9E8D6BAEBD4
+      BCE8D7B9E4D1B5E8D0B7E9D6BFEBD7BEEBD9BFEAD7BDE8D3BCECD8BCEAD7B9E7
+      D4B7EBD8BFE8D7B9E9D6BAFFEDCCA89F6B807F607B73586B6B5866735E748068
+      9BA38EB8C2A9C5CCB5E5E9D9E9EEE1FFFFFAFFFFFAFDFDF8F0F2E9ECEBE3EBEB
+      DAA7A69B59645B7C8873818B92FAFBFCECF1E8A1ACA27787736D796B46554CAC
+      B1B3E3E7DBD0D2C2A0AB9794A39590A39198A9969BA9999DA59A79806A5B6047
+      474F3969767AB6C4BFACBAA9BAC4B3B7BCACB7BBACB1B7A9A5AE9B909C848A8F
+      78807F667469535F5641383F2D6369598E856E9B937C928F7888857290876C87
+      8064887F69847D6567634A3F40283D41276F6A52867C6378785E5960443F4828
+      3A4721364A21364721334624253A1E20351B23331F2F402F4251453C534B5568
+      5F50604F6073665C6D5B556356586B5E546559607160536451505F515A6D5E58
+      6E585869575A6B5A5368575869595B6859566554596B5755685554645759685F
+      556153637560566858545E5300007B8FCB7C92CE8092CE8196D08498D2869BD2
+      8699D3889AD3889BD3899DD68A9ED88A9FD68DA1D78EA0D78EA0D88EA1DA8DA1
+      D88EA2D98EA3DA8FA3DA90A3DA8FA3DA8FA3DA8EA4DA8EA4DA90A3DA90A2DA8F
+      A3DA90A3DA90A2D98FA2D98CA2D88CA0D78C9FD7899ED6899FD6889ED4879CD2
+      879BD2859ACD8199CB8098CA7E95CA7C92C87B91C77C90C77990C57890C5778E
+      C5788DC5788EC4788FC47990C57D91C67C91C67B8FC67B8FC77C92C77B92C879
+      92C97B92C97E92C97B92C97D95CB7E96CB7C95CB7E96CC8095CC7D93CD7B93CC
+      8095CC7D93CE7C92CE7791CE7691CF7992CF7C92CD7B92CE7990CD768ECC768E
+      CB758BCD778DCC768BCB6F89CA7088C9738BCB758DCE748BD0758DCE758ECE6E
+      8ACE728FD2728DD06B8ACE6D89D06A89CF6988CF6686CE698AD56E8FD96D8BD8
+      7090DE6E90E06C8EDE6B8AE36587E26589E26488DF678BE16B8FE46A8BE66A8D
+      E66A8FE66A8FE4668BE36D8FE4789AEA6E91E86D8EE86D91E46389DE6B90E372
+      96E86D8FE47396E77498EA7293E47093E1799AE77C9DEA749AE67299E46C95E3
+      7295E27697E46F93E46B92E07096E27093DE7092D76589CF5E83CE5A80C9466E
+      BA3D64AE4365A636549718307631498145534C43534744544844534748564849
+      5A4E5261575461525C69575662524C5B4F465649415043404F43425246415044
+      4252464050444050443F4E423D4A3F4150444452495763595E6A5A616A5D757D
+      6F727F686976645F6A5B596454606B5E626F6259685E636E61666F5F69716174
+      7A6D677161667162737D6C81856F9899818A907C747F72909887B5B6A6BDBCAB
+      A4AB966E7C69546459596C615F6C5D757F6E9DA390939981949B84AFB098B3AF
+      96ABAB95BBBAA5DED9C2D9D3BADAD7C2DBD8C4D2D0BCD3D0BDCFCBB6C3C5ACB0
+      B69DB4B8A3C9C7B2DEDAC5C3C4A9ABAE97C2C0AA8E8F76A6A691D3CAAFD2C9AA
+      CEC7A6C4BC9FBBB79BB4B7A2ABAF9CA1A08EA3A591C0BFABBBB9A2ABA98EA6A4
+      8DB7AF96BFB799BFB89BB5B090C3C0A5E9E7D3CBCBACB3B192B4B69BB5B69DAA
+      AA90A5A28E999C8579806EC4C2B3D7D3C0BFC0A8A0A189BBB79B9E9E84BABAA6
+      C0BAA89B9F8BA5A890989D8E8C96856B745B616C53929C85929883979D898288
+      75929885969E8E738A8067877E617C6F63786C77857A808E846B807463786862
+      74656371636575656A7D6E74897C6F85776E8176697C6975806A94988173806A
+      6C796179876D475B47656A599EA09393A1998A989198A1938792836274695E77
+      6D5E777157786D486155859587BABEAA969F817893855479715477695274664B
+      6A585473635F8378587E736381766A837866867D658278678577668885628685
+      5C7E7A57766E5A79755A7A7457787156766E55746D506F6854766C597A745675
+      7358797759807C567C755C7F7859787257766D56776D5A867D56827C57787255
+      736E5377735B837F597974597C765F7F7F607E835B807F537F7C577E7E577D7A
+      57797352736958787158777354736E58777354716E52736C5A797454706C5673
+      7153706B516E6552716D516E684B655D4460574968615B7A755B7F7C587D785E
+      7F7A5B7C75577A7355756D4B645B4861594D6861516B665C7A7855706D506D66
+      526F62506B5F4B645A4D63574F6558485D51445A4E47625554736961817A6983
+      7E657E7A617C785B78735A7773637D7D61817D608076607A73617E76617D7758
+      706D546B68617C7861807E5C7976607A75607A6F617E716380745A75685A7469
+      708E856A897F6281766F8F86708E85627A6F6680766681785B756D60776F6077
+      6D60776E6077726D85816D8580657D76698078668078627A726980775369603B
+      4E415B6A4EB6B993E5DEC4D2CDB7AFAC99A4A18FA1A1907B867C768071949D8C
+      939B886974685364586373686470685B6E64556C65425B55435D51556E645169
+      5F4961544F64584B5D515060554A554C4D5A50505E535262564A5A4E48594B55
+      6359586258747D6BB0AE96B6B2978A897262665D6A746291967F737A6E5E6D64
+      65766B5B6A6055665A586B5F586E6255665D54665B54685B4F605852635A5463
+      57616D605B66595C6A5E626F64546A5B50695E4C625B536960586D64556C6356
+      6E6853695F526A5E536D6352695F52665B4D61545161584F5D5642514645554B
+      4F605856655E505E59495652475547474F3930352443445AE5DEF3C5CAC7727E
+      6BC1C7BE78876C4F563F7071669A9FA6E1E6CA5C6A3F575B3E494F4347524100
+      05001B221F3C443A464B434C5348575547494A383D3C284242344F503C51513C
+      5A553D5B563B59543C56513D58573C53543A55513D55513C50523B4B533D5054
+      3D514F416A7687C8DEEABFD7DCC5DBDFC4DDE2C4DEE2C4DDDEC8E1E1CBE4E7D2
+      E7EBD6EBEEDCEDF3E0EFF4E1F3F4E5F4F9E3F3F6E4F3F9E5F4FAEDFCFEC6D8D6
+      EAF3F5EFF7F6E3E8E4E0E4DFCDD2CAA8B2A58997895E6C62343F35333A38A2A2
+      91D0C6B7EFDFC8EEDBC2E9D8BDEFDEC0EADCB9BEB4916C6D5D7C8688CCCBCDF6
+      F5F6FDFBFFE3E7E7ACBDC0EBF2F1CED1C7BCC1B0667764728189E7E9EBA7B1A7
+      A2B0A5909B896E7983C2D1D6BCC3C1A7B4AB7583738F9F9AC0CDCB94A19A8088
+      8497A4A2AFB2B1868A80678190D9DCDDE5D1ABEAD2AFEAD2B2EBD1AFEBD3B3EB
+      D4B1EED7B7E5CEB0E8CEAEE5D1AEF0D6BEEAD5BCECD6BEE7D7BAE9D5BCEAD2BE
+      EBD6BAE3D1B4E5D5B9E7D5B9E5D6B8F0E1BECBB98E5F5C43706F556F6F5E8681
+      6C989585B6BAACE1DFD7D2D4C6E2E4D7EEEEE8FFFFF8FFFFFFF6F7F3E5E9E7EB
+      EFE4E2E5CF767164B1B3A0BDBCA2828786FEFEFFC2CBBED7DAD9CAD1C4BCC6C4
+      96A1996C766CC5D0CFDCE0E0E1E7DDABB9AA9CA9999BA89AA3ADA3A0AB9FB0B9
+      A981866D5F644B566164D1D8DAA7B3AAADBBB1B7BEB4B3BBB0B1B7A99EA89A8F
+      9B8F888F816C735A625E4A544C39555744817F6D7D78617B7A627C7663807A65
+      8277637B756377705B5A533E3E3A254F51357B7856847862827F66665F4C433F
+      2D3B3A244D5235424A293C4628374A27233F152B3C15384E2331401620320D14
+      2412293A3331473960766A647463576B60637166394F435063585E6A5D4B624C
+      576C5A5E6F5D57695958685B536A564C5B495464565866575868545060514353
+      4550605051605267745D535D4E475C4B97698095CE8095CF8295D08298D38599
+      D4889CD58A9ED68A9FD58C9FD68EA1D890A2D98FA2D890A4DA92A3DA90A4D88F
+      A4DA91A4DA92A5DA93A5DA91A5DA92A5DA91A6DA92A6DB94A6DC92A8DB91A8DB
+      92A5DB92A6DB92A8DB91A5DB92A4DA90A3D88EA1D88EA1D78EA1D78DA1D78DA0
+      D58A9ED3889DD2879BCF8599CD8599CB8298CA8196C98195C88195C97D93C77D
+      91C77D93C77C91C77D91C77E92C77E95C88095C98197C98296C98496CB8498CB
+      8499CC849ACD859ACD8599CD8298CD8499CD8299CD819ACE859ACE859ACE8198
+      CF7E98CF8298D0859AD28198D07B96CF7D97D28298D28297D08196CF7E96D07B
+      93CE7C91CE7C92CF7E93D07C91CF7991CF7991CF788FCD768ECE778DD2758BCD
+      758BCB758BCB738BCC738ACB7389CB6F89CC7288CB6E86CB6481C8627DC5637D
+      C46782C76181C95F7ECB6280CF6283D35B7CD65578D65E81DA5E83DB6087DE5F
+      86DF6387E06789E26589E26087E16D92E4698DE4648AE36B90E1658AE2698DEA
+      6B91E97095E77092E67897E97698EA6E91E17496E4789AE67597E47396E47497
+      E76E92E27398E47597E47498E47096E47499E47497DE7093DA6B8ED56186CF5E
+      83CC547DC4446AB83C5DA64061A0223F8518307F3F577D435348455548435446
+      4A5B51485654787D6EADAA8E9298786C77625B6959424E404C564A49594C3C4C
+      3F3C4C40425246415246404F443F4F4448574E4B594F576257747A7188908398
+      9F8F8995807783716B75697E8676AAA69094967D7B866F737E6C868A7DB3B19A
+      B1AE90ABAC8E999B7E9A9D85B0B09CC6C3B2E7E0C9D8D3B8C4C2AECCCBB6D5D3
+      C0EAE5D0DDD9C0C3C1A9949981929788AAA996BDBA9FA3A88D979D88B3B09ACC
+      C8B4D8D5BEC4C4A9BFBDABE2DFCEEBE8D5E8E5D3EBE7D5EBE7D4EBE7D5E9E6D3
+      E7E4CAD3D0B7CCCAB4DCDBC8ECECD9E8E6CDE2DDC8D7D2BCC8C5AEE1E0CCF1EF
+      DBEDEBD9EDEBDAF0EBD8EEEBD6EDE9D5ECE7D3E8E1CDE7E4D0EAE7D5E7E3D0E5
+      E0CBE1DFC8E6E4D3EBE8D6EAE6D5E7E4D2E7E5D5E4E4D3E0DEC8E6E3CDE9E6CF
+      E7E4CDE6E4CDE8E5D0E4E0C4B1AC8ED2D1BFF1EFDFEBE8D5DAD5B9DAD7C1E6E2
+      CEE9E5D2EFEDD8CBC6A2BBB393CAC4AFB0AD92A69E80CDC8AFE1DECAD9D5BDCB
+      C7AFADAB93B5B19BADAC988E9785849286829181909D8DA7AD968D927F6C7A71
+      657A6F63796F77877A82908396A19387938885918699A290778169A0A187BBB6
+      9A9A997FB6B79AB6B090878669C4C5B0E3DFC8AFAD8EB4B7A3D8DAC8D9D5BCA3
+      A3875669593C524660655192927AD8D8C6F4F2DDE7E4C78D997C4A6855436357
+      4D70624B6D5F48695F567D756A8A8073897F7D9587708A7C76897D8296896F8D
+      896082805A7C7663857A61827A5A80785C857E597C7659797356756B53746C50
+      6F694F6D62506E665A7C775C807D5A7F7C597E785A7A7358786D587E7A597E77
+      56766E5473715877735E817C587A7453736C587771516F6A53746F547C775075
+      73577877567D7A597D78597871577A71597A7757767255766F5A7975607C7658
+      776F56766F57766F4F6E65506F68516F654D6B604962573F564948645B577674
+      5E7F7D5A7C7A597C7D597C77506A6442574E4B62554A6255445E50567166526C
+      634F695D546C614F6A5D4C6658566D645470644F66574F61584860584C685E55
+      6E68637D7A5F79776178736B7D756E7D7460786F5E7D76627F7A617D7565817E
+      607C775C7872667F7E6B838467807F6A857E66827866827769837869857C6581
+      756A827775918874938D6680776D8A8170928969827A637A72617A715C766A6A
+      8576647E715E766D637A6F6E8A806D898169827E6B817D6E8681678075667A72
+      6E7A714B5640949D77EEEDD7EEEBD9EDE8D6EBE7D3E9E5D0DCD6C2B6B69FCDCB
+      B3BBB7A77E897A7B8978707A6B747E6D91968187907C75806D808D7661736150
+      625750695E4C665A566A6048564B4352474B5F5447554B455147505F505F6A59
+      626B606B7C6E707C6AA0A58CBEBEA8C6C5AEBDB9A28986768F987CE6E2C8B3AA
+      99757D7160706A5C71645E6F625B6B6366796E5E6B615B706561766F55656054
+      63595C6D5A8790748A8E74898E768A8F846473694C63594B5C53536155526154
+      4D635750655A526257556960526863556A62556960506256405046415146404F
+      434452454553474D5E524C5C526C7869666E51484E35343B283D3956F8F2FAFB
+      FBFCACB8AAC1CCCCD4D9CA616F57626B549198A3F6FAEFA0A873555A41484D4F
+      A0A89B64795F0C1B0B08130D1C2C212836293B3E383F3F343338253E413E404C
+      39434E3C444E31464D33404A334146324549344348364247384249353C493641
+      46303E4A393F4A3A656E7ED4E7F4C5DEDECBE6E6D1EAEBD0E8EAD7EBF3D8ECF6
+      D9EFF5E4F7FAE8F8FAE6FAFDEBFDFFEDFEFFEEFEFFF1FDFFEBFAFFE9FBFEEFFE
+      FFCCDDDA7D938D485B5A223031132124636B6AA7AA9CB1B4A091937DB4A687ED
+      DABFF1D9C0EEDAC2ECDAC4EBDDC3EEDDC3EAD9BFECDEC2F0D9BEEADCC4F6DFC3
+      EAD6B9EBDCC2F1E2CCD1C7BCBEBDC0F6F8F9F2F8F9CCD7CDECF2EB7481696C7C
+      7CD8E1E4A8B3A6708169818D97B8C8C69DAEA4596D6AB6C2C08DA095B4BBBC8F
+      998FDCDDE1EDECEFFFFFF9A2AC8D627575D2E0EDDDD5BFEBD2AEEBD2AEEBD1B1
+      EAD1B0E8CFB1E8D0B3EAD1AEE9D1B2E6D1B2E9D1B3E8D3B6EBD3BCEAD4BAEBD6
+      BAEBD5B9E5D1BAEAD5BCE8D6BAEAD8BEEBD7BDF1DFC0BFAE806B6A643F4A3842
+      47344F554B646A6A82898DB8C4C7D9E0DDBECABF98A09C86908C697371536168
+      F9FAF8EAEAE1EDEEDE4A4E3DE6DEDAC9BDA7777D85FEFDFFEAECE3B7BEB1DCDF
+      DAB8C4BEDEE4E3D4E1D99EACA394A59FA7B4B0E2E5DEDCE2D7ACB9A998A39898
+      A099A7AC9FA6AF9C7D8575565B4F899397C6CCC8A1ABA5ACB6B2B0B8ABA7B4A3
+      9DA49B879788808B736569535B5D3F4444326E745F817D637B76587D765E7B78
+      5E7C76627C705E6D685145412C3C3521605A428C866D736C596260424442233C
+      371F544B30605437524D2D4D452B313417111606A19D77847E5A3A4A24394921
+      3C46243146253042211328141D301D2A3E313E4F4E525F5E2338232A41325868
+      59516055566D5F5B6C60626F635F7164616B5F55635555665E576D6160766251
+      6252485B51596A5F53665566796545564A4252480000879AD2879AD2899CD387
+      9BD5879CD58A9ED68EA1D78EA2D790A2D893A4DA92A5DA92A5DA93A5DB96A6DC
+      93A6DA96A8DA97A9DC94A8DB97A9DC97AADC98AADD98AADD97AADC98AADD97AA
+      DD96A9DC97A9DC97A9DC96AADD96AADC96A6DA93A6DA91A4D992A4D990A3D991
+      A3D890A3D78EA1D58C9ED48A9ED0899DCF889BCD879ACB869AC98699C98598C9
+      8498CA8497CA8296C98296C88293C88295CA8596CB8598CB879BCC879BCD899C
+      CE8A9DCF899ECF8D9FD08D9ED08A9FCF8C9FD0899ECF889ED0889FD28AA0D389
+      9FD2889DD2879DD3899CD48A9DD3889DD4859BD4879BD3869BD4879BD4869BD3
+      8499D38498D38297D28297D28297D28196D28196D38096D37E96D37C95D07D93
+      D37C92D07991D0788FCF7890D07991D3798FD07791D27890D3788FD2778FD375
+      8ECF7089CB7287CB6A83CA6681C96783CB6686CB5F7FCC5271C85171CC5578D6
+      5B7DD85C7DDA5E80DD5E82DE587ADC6186DE6C90E36085E16186DF6D8FE66E91
+      E97396EC7296ED7091EA6F91E87797EB6E91E47498E97899EB7593E47592E47B
+      98E97B9AE97797E87D9DEA789BE87B9EE9759AE77398E47698E36F92DC6C90D7
+      6C8ED46286D2577ECA5479C23D60AB34559B3A5B9D1931782C44874C5C634451
+      454353484B594F76776FC3BBAAEAE2C7B2B9915C6956555E51757A6978806642
+      51433C4B403F4E434453493F50433C4B4146534B666F6586887CB5B09BB1AF90
+      868975A0A08E858A71747D6B868E78A4A891C6C3AEBEBAA3B4B19AA1A3899EA1
+      8CC2C1A9CFCBB1D0CCB0DAD5BDE3DDC7E1DCC7E5E1CCE5E1CCE7E2CDEBE5D0E6
+      E1CCE4DEC9E5E0CBE8E4CDEAE6CEE5DFC6E3DDC5E7E1C9DAD6BAB8B99DC0C0AC
+      DDD9C5E5DFCAE5E3CAD9D5C0DEDBC8E5E2CDE5E2CDE4E0CEE5E0CEE5E2D2E5E2
+      CFE5E3CDE6E4CFE5E2CEE1DECAE3E1CEE3E1CDE5E1CFEAE5D3E8E4D0EBE7D4E6
+      E4D0E4E1CCE4E1CDE4DFCDE5E1CEE5E2CEE3E1CCE3E0CEE3E2D2E1E1D0E1DECE
+      E1DECDE3E0CEE3E0CEE1DECDE1DECEE2E0CDE4E1CEE3E0CDE3DECBE5E2CEE6E3
+      CFE5E2CEE5E2CEE5E3CFE5E4D2E9E5D0D6D3BAD9D8C4E5E2CDE5E1CEE9E5D4E5
+      E5D2E5E6D3E5E4D2E4E3CFE8E4CFE6E2CBEAE6D0E6E2CAE4E1CAECEAD8E9E9D5
+      EDEAD9EBE5D3E3DEC9E5E0C9D8D3BACFCBB0C0C1A8B8BCA8B6BCABCCCDB7BABB
+      A5A0A89699A190ABAF9BC5C4B1B3B6A5B9BEAEB5B9A6D2D1C2E5DEC6A8A27FC0
+      BFA0E4E1C8DEDBC3EBE7D2EDE7D0E6E0C9E8E6D3EBEAD5E7E5CCE8E6D3E9E7D6
+      F4F2DDE5DFC473765780886DE5DDC6F0ECD3EBE8D6EAE7D9EDE8D7A7A9875266
+      4A415644476150506E584159424461555C7D768E998F969F91829386B3B9ABCB
+      CABAA2AB9D829188668381698F886D8F8461837C5A8076597C765879725B7A72
+      54746F53736B57776B5C776E627E7A5F82805C7F7F5C817F5B817C5B817A5776
+      71547169567A725778765C7A765E7A78597A7555776B506D6453736C4A686050
+      6E69537574567775597E80577E7E5A7F7A5B7F775979765B7F7A5B7A7763817D
+      617F755877725E817C5C807C56766C57766C54746C54756F506E66465E533F59
+      4B476056546E654A665E55736E526E6A42594C4C6255536D614B6457546E5F57
+      736A58746C5A706A586E68526A6052695B52695E557166546E60506659506A60
+      4F6A5F536A5F58706C5069635E766A808F85828F84677D735C776F5A70656077
+      6D5C7E765B786E5E766D657E7A6E87856A827E76938C77968E738E876A857E69
+      827A6985776C897F769188728D886C857F6981786583785F786D627A6E60796C
+      5E786B6B897D66827759706659756B5A7A775C7774637D7470867C6C86816E81
+      72999F86C2BFAC9B9A7CCBCCABEFEDDAE5E3D0E7E4D3E8E5D5E7E4D2E3DFC9E5
+      E2CBEBE8D3D8D1BF8E8B7D7B816D8F967EA6AB97BBBAA5A0A5917E8D7C818D7C
+      6070634A5F534C635548605444594A425344435647425246324133464F3D7076
+      63585F54525C4B6D7965929D84AFB097BABBA6C3C2AEC0BDA8B4B098A5AB88E7
+      E6CBE2D8C6ABA8986C736A6571686E7A6E6C796E788878969E8B8E9687707D75
+      56665F5264565F6C5E7E88719EA1879EA08B9095885F6C6256685A5B6B5E5662
+      56606A59596656556358606D5F56645850605A56685F58695D535E50535B4A4B
+      534649564B48564A48534848594B4B5B4E6E7C6B6E75574F543A3C3E28342F3A
+      E0DBEEE0DEDCEAE7E499A19CC0CACBFFFFFFD7D8C388888BEBEDEBE7E9D27981
+      5450564A9EAAB3B6BDB59AA89DD8E0E0ADBDAB768D75394F3D1C33273F504B3B
+      473B344436324033354134383C2C333A2A303C2B323C2D343E2B364032394130
+      383C29393C2A3C3C2C35392D455362B0C4D8A2BABD89A19F6C8386617E845C7F
+      8E6B8D996786976A85926F8A9A7495A073969B6D8A9066869154717E58768598
+      AFB8A2B8B892A59F7C8D7A7B83788A938C8A9392ACADA5A6A08B9E9976E2C6A2
+      FFE2B6F3D3A7EECFA6F1DAB6F1D9BFEFDCC3F1DEC4F1DBBFF1DBBEEBD8B8EED6
+      B1F8DEC1F1D7AEEED19DEBCEA2FAE0BFEED9BCBDB0A2EEEAE6D7D9CC99A4A7FA
+      F9FE656A65BCCED7C6CFCC7E897698A4ACE8EDF097A99DE7F0FAFCFDFDDADDD4
+      FFFAF16F786BFAF8FFF3F3EDF6F9EEB2BB9B6A766EA1B7C5E4E2D6E2CCA7EBD0
+      A9EAD1A6E8CFA8E6CEAEE5CEB2E8CEB0E7CCACE5D1B2E4D1B0E8D3B5E6D3B8E9
+      D6C0EAD5C0E9D4BDE5D5C0ECDAC1E6D8C0E8D8C5E8D9C1F6E4C7AFA375313924
+      3B43383D3E312F382B293E35384E58A3C1E0D5E5F39AAA992B2A1A2D3527484F
+      4F4C5D62FCFAFDEBEDE4F0F0E1AAA67C4A4A37D1C5B86E787DFCFCFFE5E7E0FB
+      F5EBC8BBA6FBF7F4B1BAA98FA19CEDF2F5F6F9F9F2F7F2939E9B8F9B93DDE0DF
+      D9DFD7C3CDC1929F91969F91A0A89969716150574B8D999FE0DFDEA6B0A7ACB3
+      A9A5AE9F919F92869080737A655A5D4748513A34392A7E7E6975735B72705A79
+      705B7B745D6561484843303B34235F5C45867D686E6A5245412A46432D444224
+      3D3A1C776944C9B98FE3C69BA592653C39211A1A0B180F0CCABEB5EEE4D32F32
+      19727456C6C4A6807C493C471A33481C304825283C1E1A2A1523341C30402323
+      3717253B26263A243244303248322B43302E412A25361F313F252A3B26293E2B
+      253D2A1D361D22341F293E2A23351F2C3B2424371A21351C00008F9FD48EA0D5
+      8EA1D68D9FD78EA1D98EA1D88FA1D992A4DA93A6DA94A5DA92A8DB96A9DB98A9
+      DB98AADE98ABDE99ABDD99ABDD97ABDC98ACDC9BAEDE9BADDF9CADDE9CADDE9A
+      ADDE99ADDE9AABDD9AACDD99ABDD99ACDD99ADDE99ACDC94AADC91A8DA93A6DA
+      93A6D993A5D892A6D690A4D58FA2D48EA0D28CA0CF8AA0CE8A9ECD899DCC899D
+      CB879ACA899CCC889BCC879ACB8598CA879ACD8799CD8798CD8C9CCD8D9ECD8C
+      A0CF8EA2D290A1D390A2D292A4D492A4D58FA3D491A4D490A3D491A3D492A3D5
+      92A4D691A3D68FA2D58FA2D48FA2D58DA0D58DA1D58CA0D68CA0D68DA1D68E9F
+      D68A9FD58A9ED58C9DD5899DD5889DD5879BD5889CD5869AD68599D58499D581
+      97D38497D38197D47D96D47B93D27992D37992D37993D47B93D47793D47791D3
+      7991D27992D27792D37891D47B91D37E93D47891D3738ECF6E89CB627EC6506F
+      C45273CD5A7AD85977D75A7DDA5A80DF597DDD6387E06487E25A7EDE6185E06B
+      8BE77391EA6F90E86D8EE76D90E76A8DE66F92EB7391E87E9CEE7997EC7998E9
+      819DED829EED7D9BEA7E9DEE7E9EEB7E9FEB819EEB7B9CE87699E47497E47293
+      DF6E92DC6E91DA698ED66386D0587FC9486CB93556A6375BA2213B7F1F327552
+      668D78806C666C5A868574DAD2C2EFE8D5E5E1C79DA4805A64527D7E6EACAC93
+      78856A3E4C3E444E43495349536052424F41505A4F7076669C9D8BCDC8B7EDE4
+      D2E5E0C6CEC9AED5CEB2CCC6A8ADAB90ABAB91B2B097CBC8B0C4C3A6B8B89FB4
+      B39BC4C1ABDBD6BEDBD7BFE8E3CDE8E4CFE5E2CCE5E0CBE3DECAE2DEC8E2DEC8
+      E3DEC9E4DFCAE5E0CBE4DFCAE4DFCAE2DEC8E5E1CEE7E2CFE5E0CDE2DEC8E4DF
+      CBE9E4D5E6E1D0E6E2D0E5E2D0E5E1D3E8E4D5E6E4D3E5E2CEE5E1CDE5E2CEE5
+      E2D0E6E2CFE5E2CDE5E2CEE5E4D0E7E4D3E5E2CFE2E0CEE2DFCEE1DFCEE3E0CF
+      E3DFCEE3DFCEE3E1CEE3E1CCE4E1CCE5E1CDE5E1CDE4E0CDE4E0CCE3DFCCE2DE
+      CCE1DECDE1DECCE1DECCE1DECBE2DECCE4E0CDE2DFCCE3DFCCE4E0CDE3DFCCE3
+      DFCCE4E1CDE4E1CDE4E1CDE4E1CDE4E1CEE4E0CEE8E4D4E5E4CFE2E0CCE4E2CE
+      E5E2CEE3E2CEE2E2CDE4E2CEE5E2D0E5E3D2E5E4D3E5E2D2E9E5D5E8E7D5E5E4
+      D0E4E3CEE4E3D0E5E4CFE8E6D3E9E6D3EAE6D2E9E5D0D8D5BEDBDAC3C9C9B3D2
+      D3BDE5E4CDE2DEC6E5E1CBEEEAD7E9E7CFE0DCC6E7E2CEEAE6D0E8E7D3EAE8D5
+      E6E3CBE6E4D2E9E7DAE9E9D6E5E5D0E6E5D4EAE7D7E6E4D0E3E2CDE5E4D2E5E4
+      D0E5E4CDE3E3D0F0EDDCB6B695B8BAA3F2F3E4E7E6D2E5E4CEE3E2CFEAE8D7F1
+      EAD2ADAC8C4A604B3D5B474968533D564241564261755AB5BAA3B5B8A0858E77
+      D9DBCBEFE9D9E5E0CADAD4BF949F956280835E8281678A815F81756181786180
+      7A5B7E76597A755E7C7565837A65837E5F7E7863857E6786865F7E805C827F58
+      827D577D75597C76577A7458776F5878755877755B7A7656766E55736B58736C
+      52695F586E645A736A637E7664807F62828363858560858459817D5A807D5C7C
+      7A61807D63857D61817E6183836181806783816786835F7D7A577674536F6E55
+      6E69576F634C6558526C60516C5F506C5E536E63455A4E4B615558766D567569
+      526D61536E66576E695269624F685F546B635A746A5770654F655B4C6357536A
+      5E57706648605650685A5E7669526A5F64796E9AA493AFB3A38792896B7E746D
+      7D6F69796E5774685773655C776B5C7A735C7C75607F746D8A86708D8B728D87
+      66827C637F7666857A6F8E84749089748E87728B81678275617D6D4F65594F66
+      59566E61576E64576C624A60534F61574F625951655E7B887AAAAC989CA19376
+      8276AAB098EAE7CDF1ECD8E1DBC4E6E3D0E5E4D5E5E3D0E7E4D2E6E3D0E7E4CF
+      E7E4CFE9E5D2E8E4D2E9E6D2DAD5C0D5CFB8DBD8C1C2BFAAB9BAA3A8A8994B5B
+      504C6154536457456053475E524A5C525160524D5F4E4A5E4E3B4A3B6E755A94
+      9377737D6A3742344353366E775E848E7DABB397CCC9B2CAC6B3BFBFA7C5C5A9
+      D6D4B9E7E4CFE7E4D2CAC4B1A8A5938D9389818985909D86B4B89DC5C4ACC5C2
+      AB9E9D8E6A71656675646E77656F7C6598A1898F9581828A7A6674667882756B
+      766678836E767F6E5E665D5B6A5B737D6B626A5A4655495362576670637D826E
+      878B765E655945514649574B4B5A4E4F5E524B5B505F6C606D745451563F4144
+      323C363DE1CEE8EAE4DCEDE4D6CFC7B1929895A1A393575D478E9199EBEFF3E5
+      E6DAAAB080646E58C1C2D6CFD3D89CB0AFCED6E2B2C2C7E9ECF1FDFDF3B0BDB3
+      E6F2F5FDFDF6CED7C87D9A80667C6A66785F49554E8FA1A6657C6A58755A636D
+      65606C5E5A685757664B2D351F3F4D4A616A6446514A4F5A5657645E58665E77
+      817752614B1A322584919AB0B7B2B4B9B4BBC1B7B4B8B0A5B2AAA7B7B2697F75
+      9BA5A9BBBEBCC0C2B7A8AF9F787D6FA6A6999E9E91777D6BCBC9C0FBF5E3E7D2
+      ACF1D3A0F3D1A2F1D1A0F6D29CEED3A7F6DBAFEED1A8F6D8B3EFD3A9EED2A7EE
+      D3A6F1D59FF1D29CF2D49BF1D198F2D49BF2D1A2F1D0A4FDE0B0F6E2B1D7C89D
+      5C5B443944534654574B575F60707D75878F7D909D92ABB391ACBD8DA2B37991
+      9D6B7677938D7E575E5AF1F7FEF2F1EEFAF9EFB8C3A2707D6B607577B7B8BDEB
+      D5BEE8CE9FEACFA9E5CEA9E4CDA8E6CEB0E5CCAEE7CEB4E5D1B2E8D1B7E5D1B8
+      E5D1B9E6D6C0E4D8C0E5D7BFE6DCC3E4D7C3E7DBC7EDDDC9E9DCC9EAE1C7BDB8
+      90505340424532373A2846524A425552425E68C0D9E8DBE7F18791833F4A3E4F
+      51414D514E3C4A53FAFBFFECEEE6EEEEE1F1E0BFA1936456543C6D7780FCFCFD
+      E7E8E2F0EDE3E2D2B6C6BAA8F8F2EBB0B7A997988CB6B1A9C9CECAEFF1F2EAED
+      EDC2CAC8C2C9C6C8D1CADBDED6B4C0AB9EAA988495875F6556484E4AA7AEB1C4
+      CAC79AA29AA0A6998E9A8C7C857C5A645350553F3B412C45473D847E6C726C57
+      706D56676A555A53413F3A283A3722615B406766534243313C3A1F443E245F57
+      3A766C40C1B07CF9E0A9F7D5A7F2D6A7A892603E3A21201B0B020301807C684D
+      5035847659E3D5B6BFAD8EA79060AA9A6A605A2942491C394722284021263B1F
+      2D3F1E273D23243A1F3143212D401E3040232D431E3244193546242F3F1B2F44
+      1E3144212F441B30441831401F30401D32431A30421A2E3E1F2C3E1A000094A4
+      D694A4D793A5D793A5D993A6DA93A5DA94A5DB93A8DC97AADC97AADB98ABDD9B
+      ACDD9AACDD99ACDF99ADDF9AADDE9BAEDF9AAEDE9CAEDE9DAFE09EB0E09EB0E0
+      9DB0E09DB1E0A0B0DF9EAFE09DAFDF9DAFDE9DAFDE9DAFDF9BAFDE9AADDC98AB
+      DB96ABDA96ABDA96A9DA96A9D793A6D591A4D490A3D48FA2D08FA2D08EA1CF8C
+      A0CD8EA0CD8DA0CC8D9ECC8D9ECD8D9ECD8C9DCD8C9DCE8A9CCE8C9DCF8E9FD0
+      92A2D292A4D392A5D494A6D597A9D697ABD798A9D797A9D797AAD797AAD899A9
+      D898A9D899AAD897AAD992A6D894A6D794A6D993A8D890A6D791A4D891A3D791
+      A4D791A4D890A3D890A3D88FA2D88EA1D88DA1D88EA0D78C9FD7899ED68A9DD7
+      899BD5879DD7869CD6849AD68499D58199D48097D58197D47E97D47D96D57C96
+      D57E96D57D96D47D97D57E96D57B95D47995D47D95D38096D47C95D4758ECC74
+      8DCE708BCF5A78C9526FCD5979D76485E06383E16587E26E8DE66385E45E80DE
+      5E81E15F81E26083E25C80DF6285E36388E36688E47390E8738FE87696EA7795
+      E97897EB7C98ED7E9AEB7C9AE9819FEC809DEC7D9DEB84A0EF7E9EEB779AE776
+      99E47497E37597E27595DD6F90D9678AD55C81CD5578C53E60B031539D244187
+      1B31733C5388999D89A4A183B8B09CE6E0CFE9E5CFDAD7BAA5A47F939378BAB8
+      A5B0B3934B5442646D5A5B63507078687B836E818171B0AC90B6B193CBC6B2DB
+      D9C4DBD9C6E3E1CBEBE5D2E7E4D0EBE7D0E7DDC3CCC5ABCECBB3E2DEC9DDDAC1
+      D2CDB5D8D2C0E5E0CBE6E2CDE5E1CEE2E0CDE1DECBE3DEC9E3DEC7E3DEC8E2DE
+      C8E2DEC9E4DFC9E4DFCAE4E0CAE3E1C9E3DEC9E5DECAE4DFCBE2DECAE3DFCBE5
+      E0CCE6E3CFE5E4D0E5E3D0E6E2D0E6E4D4E6E4D3E5E3CFE5E2D0E5E2CEE5E2CE
+      E6E3CFE6E3CFE6E3CFE5E3D0E5E2CFE4DFCEE2DECFE0DECEDEDECEDEDECEE0DE
+      CEE1DECEE2DFCEE3DFCEE4E2CEE4E2CDE5E2CDE5E2CEE5E2CEE5E2CEE5E2CFE4
+      E1CEE2DECCE2E0CBE2DFCCE3DFCDE3DFCDE3E0CDE2DFCCE2DFCCE3E0CDE5E1CE
+      E4E1CDE4E0CDE4E1CDE4E1CDE5E2CEE5E2CEE3E3CDE4E2CFE5E2D2E5E1CEE4E2
+      D3E2E3CFE4E2CDE4E3CFE3E4CFE3E2D0E4E3D2E4E2D2E4E3D2E4E3D2E5E3D3E5
+      E4D0E5E4CFE5E4D0E4E4CEE5E4CFE5E3D2E5E3D2E6E4D2E6E4D3E7E5D3E9E6D4
+      EBE6D2E6E4D0E7E6D3EBE7D5EBE7D6E5E4D2E5E5D0E9E7D5E8E4D4E7E6D5E6E6
+      D0E5E4D2E9E7D9E7E6D4E5E4D0E5E4CFE6E4D2E5E3D5E5E4D2E5E4D0E4E4CFE4
+      E4CFE5E4D0E5E4CFE3E3CFE7E7D7DADAC3D7D6C0E8E6D6E5E4D0E5E4CFE5E4D0
+      E2E3D0EFEFE0E9E4CD818763526343485E466F7F639B9F81DAD9BEE2E0C7DEDD
+      C2CBCAAFE4E3D0E8E5D7ECE9D8EEEBD4D6D3C0A2AB9F7E96907D9892738E876E
+      8A846683815B7A78617F7E69817C7088816B88816981777D8E8185998F6C8784
+      60807F6085865E8585567A78597E7A57797354756E56766E5878745677745576
+      6E657C716A796F758575B4BAA596A29090998BB5B9AA8499926383856286845E
+      838062817F62817E61837D67837A778D857B918865837F5676724C645F3D4D47
+      43544E5B786D58786E557169576F69526861536A605B756B4D63574A62575E7A
+      745A716A50635B526A615A756F57706D536E655A7468657F745F776F4F645D4B
+      645A5C766A5F73694A5E52526959657D736C7F7875867D98A597BBC0AEA5AD9D
+      87968986938978897E6D8073697C7174887E6E877F56746E5878745C7974607A
+      766982805E7D775A7C74668178758A8569817C6F87816E867E6B83785B756A46
+      5D4F415945485F514A61575C6A54868A6D525C4A3D4B39A7AD8BEAE4CCE5DECC
+      B3B2A29BA08CD1D2BCE1DFCAE3E2CFEAEAD9E6E4D4E5E3D0E6E4D2E7E4D2E7E4
+      D2E5E2CEE6E3CEE6E3CEE5E2CDE6E3D0EBE8D8EEECD8EBE7D6DBD6C4D8D5BDDA
+      D5BC9B9A816C7961818D735B6657475950546053818A746F7A6E4251463C4838
+      6B785E6F7663384437344231425236646B53666F55B4BA9DDAD5BFC5C2B0C2C2
+      A8C2C2A7E0DDC5E7E2CEE7E2CFD7D1B9BFBCA3A3A4908A957EB3B89BCBC8B2BE
+      C0AAC2C2ABA09E8F7D82739CA389ADAD97818572828D78868D78999C89878878
+      82887A7B87777C8A7770796B616960616E606A78696370644D5C4F656E61696E
+      60575F524B5C4A4C5F524A5A4F495C504C5D524D5E534655496574627B83645E
+      5F43424732383338B7A3BEEFE4E1EBE5CCCBC69CA09C8DDAD6CC888868888891
+      F0EEF2E5E4DAE2E6CB899377566A6E53686F54696F384E53243239313845868D
+      A6E4E4EEF3F7F8E3E6EAFBFDFEFAFCF5C1CDBC88967E808B7FC8CFDAF1F3EF8A
+      9E81849A8599A19F9CA5999CA18D626955BCBAC6E1E0D9B4BAA0B1B2A9BAB6AA
+      B7BAACC0C0AC757A626C736FBBBEC0AFB3A5A5AE9DA6A49DB4B1ACA2A693737A
+      74ACB1B1C1C5C4C4C7B7979C8C8A8F77AAAAA09E9D8FB2ACA7F6F1EEF8F7ECF1
+      E8D0E4D1A4F2D39BF0D49FF0CF99F6D19FF0D39CEFCF98F3D398EED199F0D299
+      F2D196F2D298EFD29BF3D696F1D198F7D69DF1D19BF6D49CFAD8A3DABC7A3831
+      0D1C16011918161E2D2925323030393831393A2F3C3C33424335454C2F464E3F
+      5658435958334A482A383631444AEFF2FAEFF3F1FBFAF0D0D5B26E78636A7A77
+      6A767FDECFC1EBCCABE7CDA8E6CFAAE8D0B3E1CBB1E5D1B4E3D0B8E5D0B8E9D3
+      B6E5D2B7E4D1BCE7D6BEE5D9BFE2D8C3EBD7C8E6DDC3E8DBCAEDDFCCE9E0CAEB
+      E2C9D6CCA94748363B3F28323F30536D6C5C6D69788D93B5D1DAE7EFEC505D53
+      4C50453744394C5245374448F6FDFBECF0E6E7EEE4D8D6C5EEDBBC9D8F65626B
+      6CFAFEFFEDECE8F0F0DDE1D3BCECD4B1C9BA97E1E0D5BABCA7B3B28CE4D0B5CD
+      BDA7A6A08EC4C1BDCAD1CCF1F3F096A695B8BEBDDEE3D9C2C9BE96A291505B45
+      3D44398D9399C1C3BD919E8C869186606B624A50443C443224261B87866F6C69
+      566B635351503934362431341C52533E4F4637413F2436371C3A3817827853CF
+      BD8DE5C890FFE3B3FDDEA9F6D39AF1D49CF6D49FB0985F443C1A1A1B0A100C03
+      5A6251565439B5A187C3AE988A775278633FC6AB7FF8DAA8543B15433E2B3741
+      2730421C31421D2E401D4A5F407280656476545F734774784875784977774884
+      7F4E8077454D4E2553562F8886528E88518F8952918B5691905594935A9C975F
+      97699AAAD898AADA9AAADA9AACDA9AACDB99ABDA98AADC9AACDD9CAEDF9CB0DE
+      9DB0DE9EAFE19DAFE09CAFE09CB0E09EB0E19EB1E19EB1E1A0B0E19DB0E0A0B1
+      E1A2B2E0A2B2E1A0B2E1A2B2E1A0B2E19EB2E1A1B2E1A2B2E0A1B2DFA0B0DF9E
+      B0DD9BAEDD99ADDC99ADDB98ACDA98ABD998AAD796A9D692A6D592A4D294A5D2
+      92A3D08FA2CE90A1D091A3CF90A3CE92A4D092A3D092A3D290A2D290A2D390A1
+      D393A4D397A8D498A8D59AABD79AADD79BADD89BADD99CADD99DAEDA9EAFDA9D
+      ADDA9DAFDB9CB0DB9EAFDA9DAFDA9BAEDA9BACDA9BADDA9AADDA97ABDA98ABDA
+      98A9DA96A9DA94A8D993A6D994A8DA91A6D992A8DA93A6DA92A4D990A3D88FA2
+      D890A2D88EA1D98CA0D88AA1D98CA0D8899ED8899DD7879BD7879BD7859AD685
+      9AD6859AD7849AD8849AD78199D78198D58199D68099D6819AD68499D68098D6
+      7D97D47E98D57E95D46D88CA5C79C55A79CC5A79D4637FDA6687DD678AE16286
+      E06388DF6385E16080E06386E36385E26387E36585E36B87E66E8BE66F8DE973
+      8EE87590E8748DE9748FE97695E97795E97996EA7797EA7D9CEC85A1EE809FEC
+      799BE97B9BE77698E47798E27797E17391DC6B8ED86487D25A7DC9476BB63B5D
+      A729479119357C334A81A1A296D5CEB7D5D0B8E0DDC7E3DECAE3DEC7E1DCC2DA
+      D7BDCBCCAA8E957381836D999B8381876E888F778F9281B3AFA0D6D0B9DED8BF
+      D4CFB5DDDBC5DEDCC7E2DEC7E2DEC8E2DEC9E1DDC9E5E2CCEAE7D4E8E4D0E3DE
+      CAE5E1CCE9E4CFE6E2CDE3E0CBE3DFCDE5E2D2E4E0CEE4E0CBE4DFCBE3DFC9E3
+      E0C9E3DFCBE3DECDE4E0CBE5E1CCE5E1CCE4E0CBE5E1CCE5E1CEE5E1CDE5E1CD
+      E5E2CDE5E2CFE5E2CFE5E3D0E5E3CFE6E3CFE6E4D2E5E4CFE6E4CEE7E4D0E6E3
+      D0E7E4D2E7E4D2E7E4D0E6E3D3E5E3D4E3E0D2E0DDD0DCDCD0DBDBD0DBDCD2DC
+      DDD2DEDED2E2DFD0E3DFCFE3E1CEE5E3CEE6E3D0E6E4D2E7E4CFE6E3CFE5E3D0
+      E6E3CEE4E1CDE2DECEE2E0CFE4E0CEE4E0CEE3E0CDE3DFCCE3DFCCE5E0CDE5E0
+      CDE5E1CEE4E3CEE4E3CFE4E3CEE5E2CEE5E2CEE5E2CEE4E4CFE4E4CFE4E4CFE5
+      E4D0E5E4D0E4E4D2E4E4CFE4E4CEE4E4CFE4E3D2E4E3D3E5E4D4E5E5D2E5E4D3
+      E6E4D6E6E4D5E5E4D2E5E4D0E5E4CFE5E4D0E6E5D0E5E4D0E5E4CFE5E4D0E5E4
+      D2E5E4D3E6E4D3E6E4D3E5E4D3E5E4D3E5E3D3E6E4D3E7E4D3E5E4CFE5E4D0E5
+      E4D4E5E4D3E5E4D3E6E4D5E6E4D3E6E4D2E6E4D3E6E4D4E5E4D3E5E4D0E5E4D0
+      E5E4D2E5E4D3E5E4D3E5E4D0E5E4D0E4E4CFEBEADBECEAD9E5E3D0E5E4D4E5E4
+      D2E5E4D3E8E4D3E5E3D2EEEBDAE9E4CBCECDAF9CA17FDBDABEF1EFDCEBEBDDEB
+      E9DBEAE7D7EDEADAE7E5D5E4E3D4E4E3D3E6E5D3EDECD9DEDECCBCC1B2B2B9A7
+      ACB4A6899B90899A9199A499A5AFA3A3AD9D94A397768B84919C8CA7AC9A94A1
+      9199A293A3AA9D8898916B8384708A83647D755074774F71745A756D576E6455
+      6F666D867A7E90857E8B80828E7DBDC3AFBCBDA7D8D8BFE7E2CEA2ACA36B8A86
+      6588846283806A8A836C8D83708E83728A7E8A9B8D86968B6A827A4860563F50
+      433441343E504458736C526D6959746B556B6442544B4B635963776E5C70634D
+      685F5C746B62786D526459475C5050696158716C5C766E5F7C6F647F73586F65
+      546C64556E656E82767B8878697D6C536C6265776E7B877D859080A3AD99C2C5
+      B3BDBFAEA8B0A09BA89986968888968888958798A09099A092889388778E885F
+      7872677F75738981617A75546F68678074778E85627E7A64817C6C877D668178
+      5E756A4C64544359416E826C637161808B6EDEDDBD98937C444C32D8DCB9F8F4
+      E4D9D6C7AAAB97B3B49BD6D5BDE2DEC8E6E3CEE6E5D3E5E4D2E5E4D2E5E4D3E6
+      E4D2E7E4D2E6E3D0E7E4CFE6E3CEE5E2CDE7E4CDE7E4CDE5E2CCE5E1CEEAE6D4
+      EBE6D2ECE9D3EBE1D0AAA6928D98856E7569656954626D5D6B7D6E505E4E5863
+      51666E54747C587B7D5D797C5A8A896B8C8B69A19F7FAFAB90C4C3A8E6E2CCD0
+      CBB4CDC8AFD5D2BAE7E3CEE5DFCBE5DFCBE4DEC8D7D1BDD3CBB2CDC8ACCCC6AF
+      C8C3AABDBDA7B4B1A39192837E8674A7AD93C8C4B0A7A69676806D919B83CACA
+      AFCEC6B1A69F906E7465677566818A786A74666B786B6574635B68596C766493
+      9A80B8B69A928F745657433D4C3E495F53515E534C5C52495649636E5E86907C
+      94987570705A555B3E3E3B31655D6BE4D3DBEAE4C9D0D1A755653D3C43333F3F
+      39968DA3F2EDF5E4E4DAE8E8DFEBEDCD1F321821312E1A2424081711131D1C21
+      2A252D372D302D38B3A5B4ECE2DAE7E3DDF8F7F6FFFFFFFFFFFFDEE4D9AAB3A8
+      919F9CCED2D6E2E6E1A5B7A3879281939F92898F7F676966C1C4C7B7BAA9A4AB
+      93A3AB9CA3A89DA8AE995C605393999BBBBEB8B2B8ABB5B9ACACAEA097998B7C
+      8077B4B6B4BBBBB4ABB0A79293809D9A8B9E9986BFAF96817960E5E3EBF8F3F2
+      EBECE1F1EDD7E1D2A2F3D39CF1D19BF1D198F3D29BF6D19CF1D29FF2D19BF1D2
+      99F1D29AF2D29BF3D19BF7D29BF3D298F3D49AF2D399F1D09AF2D29BF8D4A0CD
+      B26D2C2909323A1F292D27232924222D2726352F2A36332F3E35404A44444F47
+      495951637472727D7A768980B0BDB1EBEDE3DEE4E2F7F3EEFBFBF1EAE8CA7D83
+      5D6D7D776F7C78B4A49FEAD1B2E5D0AAE6D0AEE4CEAFE9D3B2E5D1B4E7D1B8E7
+      D1BEE5D1BAE5D2B8E5D4BDE4D5BEE4D5BDE9D9C4E6DAC7E9DDC9EADECBEADACA
+      EBE2CCE8DEC8D9CFAF4B4E3C343C283541375F736F637673C9D6DCFDFFFEBDBE
+      A86D706C5152514456508A8980485250F1F8FBEBF0E6E7ECE4DEE2DBE5DEC9C1
+      B78F5C6466FBFFFFEEEDEBF1F0E3E6D5B7EBD0AAF0D6AFC8BA9FFFFDFDB5BBA3
+      D4BE9CF7D8AFF3D6AFD4C095B3A98DB2B8A5D2D3CBC9CEC79DA59BCAD1CCE6EA
+      E3969E884D5F3E37453EC9D2D0B6BDB46D836D4D554A3C433B1E261E3E4A408D
+      877455573E3E412F1E2516383B27505039393722323213464321927F5BE1C797
+      FBDEA9FAD69FF7D49CF1D39AF2D49BF2D39AF2D49CF1D59CB29860413A1B191B
+      0C3A3A2C4A46325954358E734A645A36AD9A6FE5CEA4B89864F6DAAA50391143
+      402C38402A343A262D3C1B20341FDEE5E0FFFFFFB7B48EBCB08BFFEDC1FCE2B0
+      FDE2B7FFF0BCFFEBBA5C4B254A482FE0CDABFFECB5FFE6B3FFE6B0FFE5AAFFE0
+      A9FFE5B200009DAEDB9EAEDB9CAEDC9EAFDCA1AFDDA0B0DD9DB1DEA0B2DFA2B3
+      E0A2B3E0A1B3DFA2B2E1A3B2E2A4B3E2A2B3E2A2B3E3A2B3E3A1B2E3A1B3E2A2
+      B4E2A3B4E2A4B6E2A6B7E2A5B7E2A5B7E3A4B7E2A3B7E2A4B6E2A5B6E1A4B6E0
+      A3B4E1A2B4DF9EB1DE9DB0DC9EAFDB9DAEDB9CAEDA9AACD999ABD798AAD698AA
+      D596A9D494A8D094A5D294A5D293A5D294A6D296A8D398A8D499AAD598A9D596
+      A5D497A4D697A6D699ABD79AABD99DAFD9A0B0D8A0B0D9A2B1DAA3B3DAA3B4DC
+      A3B3DBA3B3DBA3B6DDA3B7DEA3B3DDA3B3DCA0B2DC9EB1DCA1B3DDA0B2DD9CB1
+      DD9EB0DC9BAEDB99AEDB9BADDB9BACDA9BACDB98ACDB9AACDB9AABDB97AADA94
+      AADA96A8DA92A6DA92A4D991A3DA90A4D990A4DA8EA3DA8DA1DA8DA0DA899DDA
+      889DD8899ED88A9FD8899EDA889ED9869DD8859CD6849CD7859AD7869BD8869C
+      D8829BD7879BD7879BD98299D77992CE738ECC6A86CB6480C85A78C74D6BC650
+      6FCC5476D05578D3607EDA6986DC728EE46B89E46385E16A87E46F8AEA6E8BE7
+      708AE66F89E9738DEB6E89E8708BE77490E7728FE6728FE87491EA799AEB85A1
+      ED809EED799AEB7D9CEA7D9CE87B9AE67897E47595E16F90DC6989D76081CB55
+      7AC44265B02B4B981C37841C347A8898B3E6E3D5E6E3D0E5E0CBE5DFCAE2DFC9
+      E7E4CFEBE7D0C0BE9D99987EAAAB959C9F888F9077A1A2889E9F8BBEBBA8CBC7
+      B3E2DDC8E6E2C9E1DDC8E4E0CBE2DECAE2DEC9E2DEC9E3E0CBE4E0CBE4E0CBE3
+      DFCAE4E0CBE4E0CBE4E1CCE3DFCAE3DFCBE5E1CFE5E2CFE4E0CCE4E0CBE5E1CD
+      E4E1CDE4E1CDE5E1CDE5E2CEE5E2CEE5E2CDE5E2CCE6E3CEE6E3CEE6E3CFE5E2
+      CEE5E2CEE6E4CFE5E3D0E6E3CFE7E4D0E7E4D0E7E4D2E8E4D2E6E4D0E6E4D0E8
+      E4D3E7E4D3E8E4D3E9E5D4E7E4D4E6E4D4E3E0D3DEDCD2DCDCD2DBDCD4DCDDD3
+      DDDDD3DEDED3E1DED2E3E0D3E5E3D3E6E4D2E6E5D2E7E4D2E7E4D2E7E4D0E8E4
+      D2E7E4D3E5E3CEE4E2CFE5E1D2E5E2D4E5E2D0E5E1CFE3E2CFE3E2CFE5E3D0E4
+      E2CEE5E3D0E5E4D0E4E4CFE4E4CFE5E4D0E5E4CFE5E4D0E6E5D2E5E4D0E4E4CF
+      E4E4CFE5E4D0E5E4D3E5E4D4E5E4D3E5E4D2E5E5D4E5E4D4E5E4D4E5E4D4E5E5
+      D2E6E5D3E5E4D5E7E4D6E6E4D4E6E4D3E6E5D3E6E5D4E6E5D3E5E3D3E5E3D4E6
+      E4D4E6E4D3E6E4D2E6E4D3E5E4D2E6E4D3E6E4D3E6E4D3E6E4D4E6E4D3E6E4D4
+      E7E5D4E5E4D4E5E4D5E7E5D5E5E4D3E5E4D4E6E4D5E6E4D4E5E4D4E6E4D4E6E4
+      D4E6E4D3E6E4D4E6E4D4E7E4D5E7E5D4E7E5D6E7E4D6E6E4D5E6E4D4E7E5D5E7
+      E5D4E6E4D3E7E4D5E7E5D4E6E5D3E5E4D3ECEADAF1EFDEF0EDDAEBE9D7E7E7D8
+      E5E4D5E5E4D4E6E5D5E6E5D5E6E4D4E6E4D3E6E4D3E5E4D5E7E7D8DBDCCDC2C6
+      B4D3D7C3C3CAB8BBC2AFCED1C0D1D2C4BEC2B1BDC2AFA6B09CA1AA97D3D1BCDD
+      DBC5D3D4C0DAD9C1E4DFC6D2D0B9BEBEAED2D1BFBCBAA4767D6D809186939E8F
+      8F99886C7E71909D8EB3BAA7B1B6A3B3B69FCBCBB3EAE6D4EEEEDBD9DBC8AFB3
+      A9899B928C9E9389988F8EA09690A29786998D81958C8A9D919BA99899A69660
+      756F4D635D50615456645648594F414F474A5B5352655D475C50475B4E617166
+      6A7C6F5971655871655C766A57706250685A50685D5B6E6264786B647F736179
+      6E61796D627D72617A6F6C80748899897E90837280749BA08DB6B69CC0C0A7DE
+      DEC7DAD7C4D2CDBACFCFBDBFC2B0B4B9A8B3B8A8B1B7A2D2D3B9D3D1B9D7D4BF
+      D1CFBCABAF9DA4ADA0A1ACA297A191939D8B98A09180918767807C72877E7D92
+      856E8175697A715A6D635B6C5E8F9986A5A991CFCFB3F2F0DCD1C9B6888563E3
+      E4C9EDEADBDEDAC7CBCBB1E5E2C9EBE7D3EAE6D5E8E4D3E6E4D2E6E4D0E6E4D0
+      E6E3CFE6E3D0E7E4D2E7E4D2E6E3CFE6E3CEE7E4CFE6E4CFE6E3CEE6E3CEE5E3
+      CDE5E2CDE6E3CEE9E7D3ECE7DA999992465244606B56898E776F786B586A5D59
+      64544D5042788759F1EDD2F9F0DDF1EDD5F0E8D5E2DBC6D6D1BAC1BFA8D2D0B5
+      EAE6D2E9E4CFDDD8C2E0DCC5E6E2CDE5E0CCE3DFCAE5E1CDE7E4D3E9E4D0E9E4
+      D3E2DECCCDCAB7C8C6B5B0B2A0AFB1969499819AA189C9C9B4BCB9A5A4A38BB8
+      BBA5DBDDC5EBE4D2DBD3C1BBB7A4979684919583747D6F697564989C849A9B85
+      9DA08CC2C6ACF4F0DAF8F3DFE5D5C56E66542A3C294554414B55494D5B4B5E6B
+      5B758272A7A98F84866D525D3F373E2D6B596CE5D1D7E4DACEF7F0D665703C3E
+      46233232208F8899EFEEF5E6E6E1E1E8DBDDEAC92A3A213A483C5963598A9B8D
+      BCC3B7EDEEE19E92728E7D72E7CDBFE6D1B6E4D2B6DECEBEE3D9CEFEF9F9FFFF
+      FFFFFFFFE6EAE08F9C8B82898EFBFDFECED4CA768673899B866F7C66727575ED
+      EDEBACB19CABB4A0B2BAAFACB2A064615BB1AFB5BDC2B6B6BAAFAAAFA278806F
+      7D857CC4C3C2A5A9A38C897A82836E9A967EBCA68EF2D6AAFFE5B59B885DD5D1
+      E2F8F7F2ECEEE6F2EEDAE6D7A4F1D19BF1D197F2D199EFD199EDD29BF1D098F2
+      D199F3D19BF6D19AF2D198F1D399F1D19AEFD299F2D39AF1D199F3D29BF3D299
+      F1D298F6D498C0AA6B786D49706C586C6C58757863919687A2A696B2B9A8C2C9
+      BDD3D8CBDCE2D3E9E8DEF1F0E8F9F9EEFFFFFDA1A491D6DEE1F6F7F4F8F8EEFD
+      F3D2A6A0716E756C747C7D848883E5D0B2E6CFAEE4D0AFE7D1B8E6D1B7E9D2BC
+      E4D2BAE3D5BDE5D3BEE9D6BEEAD6BEE5D9C4E5DBC4E9D9C5EADDC7E7DBCAECDE
+      CAEBE1CCEBDFCDECE1CFDCD3B362644E4351485A6B6B849191D3DAE3FAFAFAE5
+      E0CBDED1B2575F4B3F453E72756F3C473D4C555AF6F5F8EBEDE8E3E6D8899386
+      E4E7EACCCAB95E6669FAFDFFEFEEEBF0EFE3E4D5B5EED2AEEFD2B0EBD1ACC5BA
+      A5EEECE0BEBA9BE1CAA2F0D0A5F3D69FEFD1A3E2CB9CCDBA95CEC0A5B7B19BB2
+      B7B0A0AFA7CED3CFCBD2BF606B523A4742BDC5C8818975333C30323A321C2322
+      8087844752412B2C232023153C3B2A48483531351F5C563846462A545439FFE9
+      BCFBDEA5F1D197F1D19AF8D59CF6D49BF7D49FF8D59FF1D39CF7D599B2995F48
+      3E241D1E1250523F312F167E7950B3985F96824EC8AF7DFCDEB1DBBA7FB39B65
+      473E17413F2645453141462C354024566652EAEAE4FFF7E09A825BA08B68F1D6
+      A9EBC892ECCC9AF3D49DE6C58BC5AC786D603A706147FFEDC5F7D3A2F1D499F0
+      D59CF7D59CFFE0A69769A3B3DDA3B3DDA4B4DFA5B6DEA5B4DEA5B4DFA6B8DFA7
+      B9E2A6B8E2A7B8E3A8B8E3A7B8E2A5B8E3A8B9E4A6B9E4A6B9E4A6B9E4A6B7E4
+      A5B7E4A6B7E4A7B8E4A8B9E4A8BAE4AABAE3AABAE3A8BAE3A8BAE3A8B8E2A8B9
+      E2A8BAE3A7B9E2A5B7E0A4B4DFA2B4DEA2B3DDA1B1DCA0B0DA9EB0DA9DADD99D
+      AED79BADD69CADD798ABD599AAD499AAD499AAD49AABD59BADD79CAED89EAED7
+      9CADD69DADD79BABD89BAAD99BADDA9EB0DAA3B2DBA4B4DBA5B6DBA7B6DCAABA
+      DEAABADFAAB9DFAABADFACBADFAABAE0A7B9DFA8B9DFA8BAE0A5B8DFA5B7E0A3
+      B7DFA3B6DFA3B4DEA2B2DDA3B3DDA3B3DEA2B2DEA1B2DD9EB1DDA0AFDDA0B0DD
+      9DAEDD9AACDB99ABDB97AADB98A9DB97A9DC93AADB93A6DA92A6DA94A5DA91A6
+      DA8FA4DA8EA3DA8DA2DA8DA2DA8DA2DA8CA2DA8AA0D98C9FD989A0D98C9FD98C
+      9FDA89A0DA89A1DA8CA1DA8EA0DB8C9FDA899ED9849BD68098D57993D06D89C9
+      5B7AC54964C0445EC04B6DCA5E7DD76480DA6480DA617DDC657FDF6D89E4728D
+      E96F87E76E8AE86D8AE86E8AEB6A85E46B86E46F8AE46C89E3728FE77696EA76
+      95EA7C9AED7E9DEE7C9BEC7D9FEC81A1EB809EE97C99E67495E17395E16E8FDB
+      6787D46385CE476CB82A4A98203E8B112672576B9FDAD9CEDBDBCFE4E0CCE5E1
+      CCE2E0CAE4E0CCE4DFC8D1CFB3C9C6AABBBA9BABAD92BFBCA8CFC9B0D1CDB4D5
+      D2B8D4D1B8E2DFCBE5E2CDE4E1CBE4E0CBE5E1CCE5E1CCE5E1CBE4E0CBE5E1CC
+      E5E1CCE4E0CBE5E2CDE5E2CDE5E1CCE5E1CCE5E1CCE5E2CDE5E2CDE5E1CCE5E2
+      CEE5E2CEE5E3CEE5E3CFE5E3CEE6E4CEE6E3D0E7E4CFE6E4CDE6E3CEE7E4D0E7
+      E4D0E6E4CFE7E4D0E7E4D0E8E4D2E7E4D0E8E4D0E8E4D3E8E5D3E8E5D3E8E5D3
+      E9E5D4E8E4D5E9E5D5E9E6D4E9E6D4E8E4D5E5E3D6E1DED2DDDDD3DCDDD3DCDD
+      D4DCDDD3DDDED3E1E0D5E3E2D4E4E3D5E5E4D2E5E5D4E7E4D6E7E6D4E6E5D2E6
+      E5D2E6E6D3E6E4D4E5E4D2E4E4D3E5E4D4E4E2D4E4E4CFE4E4D2E4E3D4E3E3D3
+      E5E4D3E5E4D0E5E4D0E5E4D0E5E4D0E5E4D0E5E5D0E5E5D2E5E6D2E5E5D2E5E5
+      D2E5E4D0E5E5D0E5E4D4E5E4D5E6E5D6E5E4D5E6E4D5E6E5D6E6E5D5E6E4D5E5
+      E4D4E6E5D4E6E6D3E7E6D3E7E7D3E7E5D4E7E5D6E8E6D6E8E5D6E7E5D5E7E5D3
+      E6E4D3E6E4D3E6E4D4E6E5D5E7E5D4E7E5D4E7E5D4E7E5D4E7E4D4E7E5D5E8E6
+      D5E7E5D5E8E5D5E7E6D3E6E6D3E8E5D5E6E4D4E6E4D4E7E5D5E6E4D4E6E4D4E7
+      E4D6E7E5D6E7E5D6E6E4D4E7E5D5E7E5D5E7E5D4E7E5D5E7E5D6E7E4D6E7E5D5
+      E7E5D5E6E4D4E6E4D4E8E6D5E8E6D5E8E6D5E7E5D4E6E5D4E7E6D5E9E7D8E7E5
+      D5E5E4D4E5E5D5E5E5D5E5E5D5E5E5D5E7E4D6E7E4D5E6E4D5E4E4D6E5E6D6E5
+      E2D2DEDECCD1D5C6B9C0B0C3CAB8BDC4B7B1BBAFA4B19DC3C7B5D9D8C2E4E4CD
+      EBECDAEBEBD9EBEAD8E9EAD7E7E7D4EBE9D4F0ECD9EDEAD9EDE9D3E4DEC4E8E3
+      CBD8D5C0C4C6B4B2B8A5C3C6B0E7E6D0E8E6D3E6E4D0ECE7D6E9E5D4E7E7D6DE
+      DFCCB2B7A5B2BAA6CBCBB6C9C4B3AFB4A99EA89FA6AD9FB1B7A7ACB3A3CACDB7
+      C8C9B675807230413D36463D5968564D5F523E4D413F493C737C668A8F7C8083
+      727B87738D9A8872827460766B60766D61776C60776B62766A657A726C827A69
+      7F746A7D726F82766C857A657C6F63776B677E738A9585B5B69ADAD8C0EDE9D9
+      EBE7D6EBE8D6E5E1CFE4DFCBE7E4CFDAD9C3D3D1BDD9D8C3D8D8C3E7E5D0EFEB
+      D9EBE7D7EDE8D5F0E9D7D5D2C1C4C5B2CDCEB6EBE7D3DCD8C5BABAA7B0AE99AF
+      AE99B6BAA3B1AE989C9F8D9099889BA08EBEC0A7E2E0C6F1ECDAECE9DBE0DDCA
+      DCD9BFEAE6D5E7E3D3E8E4CEEBE7D2EBE6D2E7E3D4E6E2D3E6E3D0E8E3CFE7E3
+      CDE6E3CDE6E2CDE5E2CFE6E3D2E6E3D2E6E3CFE5E2CDE5E2CDE5E2CFE5E2D0E5
+      E2CEE6E3CDE5E2CDE5E1CCE5E4CDEAE4D4B2AD989291767D8671627163677669
+      57695675836C9A9A77C2C29AF0ECDAE8E4D8E8E4D6E6E2CEE3DEC8DAD7C3DBD8
+      C2E6E2CCE5E0CCE5E0CDE5E1CCE5E1CCE5E0CBE5DFCBE5E0CBE5E0CBE5DFCDE5
+      E1CFE7E3D0E7E2CDDBD7C3CDC6B59EA189B4B8A0999B8B85917CC5CAB2D2CDB6
+      C9C2ACB2AE99BABEA9D0D1BAD3D0BCC5BEAEB6B69DAAAA9881837789917EB6B9
+      A5A7A696989984B9BA9CE5E1CBE5E2CFF2EEDDE2D5C1A09778676A52474E3D40
+      4F39525F438D9071A4A286C1C1B2575F3F3F4034655B68E0D2DADAD7C7F3EFDC
+      D5CEA254542A6E6B4E89838BEFEEF6E6E5E2E4E7DCE5E8CECFD2BFE6E8DAF6F7
+      EAF8F7EBEDEDE3D1D5BA81785BBEA393ECD1BDEBD2B2E8D3B2E7D4AFE5CDAED4
+      C2A8EBE2D6F9F5F2FAFAFAFFFFFFF6F7F18C9E99E5E8EAE8ECE3949F8D96A189
+      636E66C4C2CCF1EBEAAFB39DA6AEA5989D8973706EC4C2C2B8BCAFB8BCB19DA4
+      9382867FC9C4C5B0B3A68182728A8A7699937CDCC5A7F1D4B1EED0A3F8DAA9A1
+      8860CFCADCF7F4F5EDEDE3F1EDD9E2D1A3EED199F0D19DF1D298F3D297F1D298
+      F6D39BF1D197F3D398F6D198F6D19AF3D29CF1D19CEFCF97F2D199F1D196F1D3
+      98F1D097F6D19CF1D197F6D3998C753D6562436B6C55746E61908D7EA3A398B4
+      AFAABDBEB5CDD1C6E5E7DAF8F7EEF6F3EBFAEFE1FBEECE807C5AE3E2EEF6F7F5
+      F8F8F1F6F1D5D5C3936B75686678747D8385DCC5AFEBD5B4EAD1B0E9D5B9E5D0
+      B5EAD5BAE8D6BAE9D5BEE4D4C0E3D3BCEADAC5E6D5C4E5DBC7E9DBC5E8D9C7E8
+      DDCAE7DECAEAE1D0EBE1D0EBE4D0DED6B66A6C58627166707D75C5D2D5FFFFFF
+      EEE9E0EBE4CAE5DDB84C4F3A626C552731273C473E4D555EF2F3F5EFF3EBFAF8
+      EA888360515D58CECEC84F5C61FDFCFFEFEEEAF1EFE4E6D6B6EED3A6EDD1A9F1
+      D4A6F7D99FBBA57EEDECE39EA284D9C39AF6D4A2F2D298F2D29AF3D59BFCDA9F
+      FCDBA4DAC191B09D77373A2D475052C6C9CA2B321D000101989D9F27301C0E15
+      133D4A484B564C08140A2F31263E403332352231301F9B8A749A7C542F2502BF
+      AC7FF9D49CF2D297F6D49BF6D69CF7D59AF6D49AF6D49CF6D39BF6D297F8D49C
+      BB9C623E3A17413F302220135E5339D5B987EBCC96FFE5B4EACC91A78A52F6D4
+      A9D6BA805243194140253F422C3D3824B29F7A766A59453F35F0E4C7C29C74A2
+      866CFFE5BAF1D3A3F6D4ACFFE4B5EACC97DABE8DBF9D6C72613A756548F0D5B3
+      FDE2B1F2D5A9E4CCA0CDB9999769A7B7DFA6B9DFA8BADFAABAE1AABAE1ACBBE2
+      ADBBE2ADBBE2AFBCE3ACBCE4ACBBE4ADBCE4ACBCE4ACBBE4ACBCE6ADBCE6ADBB
+      E6ACBBE6AABBE6ACBBE7ADBBE6ACBCE7ADBDE7AFBCE6ACBCE4ADBDE4ADBCE4AD
+      BBE4ACBCE4ADBCE3ABBAE2AABAE2A8B9E1A6B8E0A6B7DFA3B4DDA3B4DBA3B3DA
+      A2B1DAA2B3DAA0B0D7A1B0D79DB0D89DAFD89EAED79EAFD7A0B1D8A2B1D9A3B3
+      DAA4B3DAA4B3DAA2B1DAA2B0DAA3B0DBA4B2DCA7B7DDA8B8DEA8B9DDAABADEAB
+      BADEACBCDFACBDE0AFBDE0B0BEE1B2BFE2B1BEE3AFBFE3B1BEE3B0BDE2ADBDE2
+      ACBCE3ACBBE2ACBBE1AABAE1A8BAE1AABAE1A8BAE0A6B9E1A5B8E1A5B6DFA4B4
+      DEA4B4DFA3B3DFA1B2DFA0B1DEA0B1DE9EAEDE9CADDD9BAEDD9BADDE9AADDC99
+      ACDD97ABDC94AADB92A8DC94A6DB93A6DB91A6DC91A5DB8FA5DA8FA4DA90A4DA
+      91A4DC91A4DB91A4DB92A6DC91A5DC90A4DC91A4DD91A4DC8EA3DB8FA3DB8A9F
+      D9819AD57E9BD7708ED0536EC24966C35270CF5875D45975D5607AD76B83DF72
+      89E46F89E46D8AE46D87E46C87E86E88E96B86E46781E2708AE46D89E46E8BE4
+      7290E77593E77695EB7C9BED7D9CEB7B9AEB7D9EEC809FEB7D9BE77596E37492
+      E07693E06E8FDC6B8BD5557AC52C4EA0224090173077384A81C9CBC8D9D9D2E5
+      E1CFE5E2CCE5E2CBE4E0CCE5E1CCE2DFC8E0DEC3D4D0B2C4C2A7D5D1BDE2DDC6
+      E4DFCBE5E1CDE6E2CEE5E2CDE3E0CBE5E1CBE5E2CDE5E1CCE5E1CEE5E2CEE5E1
+      CCE5E1CCE5E1CCE5E1CCE5E2CDE5E2CDE5E2CDE6E3CEE5E2CDE5E3CCE5E2CDE5
+      E2CFE6E3D0E6E3CFE6E3CEE5E3CFE7E4CFE7E4CFE7E4CFE7E4CFE7E4CFE7E4D0
+      E6E3CFE7E4D0E7E4D0E7E4D2E8E4D2E8E4D2E8E4D2E9E5D3E9E5D4E8E5D3E9E6
+      D4E9E6D4EAE6D5E9E5D6EBE7D7EAE5D5E8E5D3E8E4D4E5E2D5E1E0D4DEDED4DC
+      DED3DEDED2E0DFD4E2E2D5E3E3D5E7E4D6E8E4D4E6E6D3E8E6D4E8E5D5E9E5D4
+      E8E5D3E5E6D2E6E5D4E5E4D5E5E5D3E4E4D3E4E4D4E5E4D2E4E2D4E5E3D4E5E4
+      D2E5E3D3E5E3D3E5E3D3E5E3D3E5E3D3E5E4D3E5E4D4E6E5D5E5E4D4E5E4D4E6
+      E5D4E5E4D4E5E4D3E6E5D4E5E5D3E6E6D3E6E6D4E6E6D4E5E5D4E6E5D5E7E6D6
+      E6E5D5E6E5D5E6E5D6E7E6D5E6E5D5E6E6D3E7E6D4E8E6D6E8E6D6E8E6D6E7E5
+      D5E7E5D5E6E5D2E6E6D0E7E5D3E7E4D5E6E4D4E6E4D4E7E5D4E7E5D4E7E6D3E7
+      E6D2E7E7D2E7E6D4E8E5D5E6E4D3E5E5D2E6E5D2E6E5D3E6E5D3E7E6D4E7E5D5
+      E7E5D5E7E5D5E6E5D3E6E5D2E7E5D3E7E5D6E6E4D4E7E5D4E7E5D5E6E5D5E7E5
+      D5E7E5D5E7E5D5E7E5D5E6E4D4E7E5D4E6E5D2E6E5D3E5E4D3E6E5D3E5E4D3E6
+      E4D3E7E5D4E6E5D3E6E5D3E7E4D6E7E5D6E6E4D6E7E4D5E7E4D5E6E4D5E5E4D6
+      E6E4D4E7E4D5EAE8D9E3E2D0E1DECAE1DECBC0C4B3ABB7A6B3BDAAD7DCC6F1EE
+      DCECE8D8E6E4D4E6E4D3E7E4D3E6E5D3E6E4D0E7E6D0E7E5D2E6E4D3E6E5D5EA
+      EADAEAE8D8EAE7D6E8E5D2EBE7D5EEEAD8E8E5D5E7E5D5E9E6D7E5E4D3E4E2D0
+      E5E4D2E8E4D3DAD9C2D6D5BCE6E2CAEBE5D3C4C5B4B5BAA6CBCBB5C1BFA7BBBB
+      A5E3E1CDE5E4CFDAD5BE7E7D684151463A524B34433A333C2E6E7961B3B89BCF
+      CBB4B3AE99868D758892817C87806E8074929B888E968678877D808D846D837D
+      6C8076A0A899B9BAA8A6AC99818E838E9B8E9DA4908E9684C8CBB3E2DEC4E5E0
+      CBEAE7D8E7E6D7E6E4D4E7E7D6E8E7D7E7E6D3E9E6D3E4E1CBE5E2CCE5E3CDE5
+      E2CDE9E4D0E7E4D3E5E4D4EBE7D5E9E4D2E7E4D2E9E7D5EBEAD8E5E4CFE5E1CD
+      EAE4CFD3D1B8DBDBC2EDE8D5E5E0C8E4DEC8EAE4D0EFEBD6EBE8D3E7E4D2E5E2
+      CEEAE7D6EFEBDBE7E3D0E6E3CEE7E4CEE7E3D2E7E3D0E6E3CFE6E2CEE5E1CDE6
+      E1CCE5E2CEE4E0CDE4E0CAE5E1CCE5E1CDE5E1CDE5E1CBE4E0C9E4DFCBE4DFCC
+      E5E0CBE5E0CBE5E0CBE4DFCAE4DFCAE3DECAE6E0CDF6EFDAD8D1BC6B6F654F5E
+      51545F4F5C6B576A7A5EE0E1C2FAF3E4E5DFCBE5E0CAE4DFCAE6DFCCE9E2CEE7
+      E3CEE7E3CEE5E0CCE4DFCAE4DFCBE5E0CBE5E0CAE4DFCAE4DFCAE5DFC9E4DECA
+      E4DECCE4DFCBE5E0CBE5E0CAE5E0CBDAD3C1B9B29DAAAA9A84897C77836CBABF
+      A7C6C5B1C2BEA9C0BCA8B0B197C2C5AACFCCB7BEB9A6BBB6A2A5A2908E8F7E90
+      9683909580A7A88FC6C2A5DAD4BAE3DFCBE5E0CEE2DECAECEAD7FAF1E1DDD1BC
+      BDB899B1AE8BD5CEB1F4EAD7CFC9AFD4D4C6676D4A434237584F5DD6C8D5EBE5
+      DCEFE6D9EAE2C5B0AF787D7D53867F87EDEAF3E8EAE1E5E4DBE7EBD8BEC1ABC8
+      C9C6D2CCC5D7D3C1E2D4BCDCCCA8E5CCA8EDD1ABEBD3A8EBCEA9EDD2A8E9D0A9
+      E9D1ABEBD1AAE3CCA7DEC9AAE6D1C1E2D7CFE5E0DDE5E6E6EAEEEBF1F3F1C5D1
+      C8EBF0EBA3B199475955A5ABBDC9CBC59DAC998990788D8D92B7BDB99EA39370
+      7A6F8C968D9EA499A7A89B9DA18DB7B3A4D4BEA8EED2B5E9CEABE7CCA9EBCEA5
+      F7D9ABA8966ABCBDCCF7F7FAECEDE3F6F0DFE5D5AAF1D399F1D19BF3D19BF1D0
+      97EFD098F2D19BF3D29CF1D098F1D199F0D197F1D299F6D199F3D199F1D197F1
+      D29CF1D29AF1D097F2D199F1D198F7D79AECD091E1C58E9C8A5E5C5F48696D66
+      777D7C989DA7D3D8DAEFF0EBC6CDB9AFAFA5BAB3A9CEB99DEFD8B2938364D6D9
+      E4F7F7F5FAF7F2F1EBD3E3CD9F7D856C6578746F7878DBC5B8E7D1B0E9D2B1EB
+      D1B4E8D4BCE5D2BAE6D7BEE5D7BFE4D5C1E5D9C2E4D9C1EBDDC7EADAC5E7DBC5
+      E8DEC7E9DECAE7DFCEE8E0CBEBE3CFEAE1CCDAD3B75865556F7A758F9E99F8FD
+      FFFAF7F5E8E1CFEFE7CEF1E4C6585A45949B8C252F233E4944515C5EEEF3F6EB
+      EEEBEDF1E4F6E6C34F49368C887D4A5E60F6FAFEECEFE8F2F2E6E7D9B1F1D3A2
+      ECD09DF0D1A2F1D6A2F7DBA6CBC1A7FDFEF9A7A481EFD19FF6D59BF2D197F2D1
+      96F3D198EFD195FFDDA6BCA4632023040E0C0010130F635E650A0B04262F3453
+      615B080F0B39473F20281D1A2A1B3D3F35292A183F402E706543D0B380413B15
+      78704EFCDBAEF1D299F6D49FF3D59CF2D39CF3D49CF6D29AF9D79BF1D39BF6D5
+      9CF6D39CB2995E3C3A166660480C0700B4A68CFFE9BAF7D59FF6D59AF6D59BEE
+      CE96B4955DF1DCB04F3E17413E2943472B393921D6BD97A88B6C34300F6A624C
+      7E685477634BCAAE8FBDA083BB9E87CCB092CCB093D9B692D9B785F7E0B8362D
+      146F6049655644382F222718110B05009769AFBBE1ADBCE2B0BEE2B0BEE2B0BF
+      E2B1BFE3B3BFE4B3C0E4B3BFE4B2BFE4B2BFE4B2BFE6B2C0E6B3C1E6B4C1E8B3
+      C0E8B1C0E7B3C1E7B2C1E8B1C0E8B3C0E8B1C0E7B2C0E7B2C0E7B2C0E7B3C1E7
+      B2C0E7B2BFE4B1BFE4B1BEE4AFBDE4ADBDE3ADBCE2ADBBE1ABBAE0AABADEA8B9
+      DDA7B7DCA6B7DBA7B6DAA5B4DAA5B4D9A5B6D9A3B3DAA4B4DAA5B6DAA5B4DAA8
+      B8DBA6B8DBA8B8DDABB9DCAAB9DDA7B7DDA8B6DCA8B7DEACBADEB0BCE0B1BEE0
+      B2C0E1B2C1E2B3C2E3B4C2E3B5C2E4B6C2E3B6C3E4B5C3E4B5C3E4B6C3E4B5C2
+      E4B3C1E4B2C0E3B1BFE3B2BFE3B2BFE4B0BEE4AFBEE3AFBFE4AFBCE3ADBCE3AB
+      BCE3AABAE2A8BAE2A8B9E1A7B8E1A5B7E1A5B7E0A4B3E0A3B4DFA1B2DFA2B2E1
+      A0B2E0A0B0E0A0AFDF9DAFE09BAFDE9AACDD9AABDD97AADD98AADD99ABDD99AB
+      DF97ABDE96AADD96A9DD96AADE96ABDE96ABDF96ABDE97AADE98AADF96AADF97
+      AADE97ABDE94AADF91A5DD90A5DC849CD96C89D0526EC7506CCB5471CF5C76D5
+      6B86DD6C86DE657EDC6981E06F87E47089E86F8AE9708DE66C86E36B86E36A85
+      E26E8BE46E8BE47391E67492E87492E97997EB7B9AEB7C9DEB789BEB7D9AE880
+      9CE77896E47897E47896E1728ED96287CF365CB0203D901B34811A2F6D8A98B0
+      D9D9CFDADACFE2E0CDE5E0CDE5E1CCE4E0CBE5E1CCE5E2CCE5E1C9E5E0CAE3DF
+      CAE5E2CDE5E2CEE5E1CCE5E1CBE5E1CBE5E1CCE5E1CCE5E3CDE5E2CDE5E1CDE5
+      E2CEE6E3CEE5E2CDE5E1CCE5E1CCE6E3CEE6E3CEE6E3CEE6E3CEE5E2CDE5E2CD
+      E5E2CDE5E2CFE5E2CFE6E3CFE6E4CEE6E3CEE6E3CFE7E4CFE7E4CFE8E4D2E7E4
+      D0E7E4D0E7E4D0E8E5D2E8E5D3E8E4D2E8E4D2E9E5D3E8E5D3E8E5D3E9E6D4E9
+      E6D4E9E6D4EAE6D5EAE6D5EBE7D6EBE7D7EAE6D5E9E7D4E7E4D4E4E2D3E2E0D4
+      E1DFD4E2E0D3E4E2D3E5E3D4E6E4D6E6E5D6E9E6D5E9E6D3E8E7D4E9E7D4E9E6
+      D3EAE6D3E8E6D3E6E5D3E6E5D4E6E5D4E5E4D2E4E4D2E5E4D3E4E4D2E5E3D4E5
+      E3D5E5E4D0E5E4D2E5E4D3E5E4D3E4E3D0E5E4D3E5E4D4E5E4D4E6E5D6E6E4D5
+      E5E4D4E5E4D4E5E4D4E5E4D4E6E5D6E5E5D4E6E6D4E6E6D4E6E6D3E5E5D4E6E5
+      D5E6E5D5E6E5D5E6E5D5E7E6D6E7E6D6E6E5D5E5E5D2E5E4D3E6E5D5E6E5D5E7
+      E5D5E7E5D5E7E5D5E6E5D4E6E4D3E6E4D3E6E4D4E5E4D3E7E5D4E6E4D4E7E5D4
+      E7E5D4E6E4D0E6E5D2E7E5D4E6E4D4E7E4D5E6E4D4E6E4D3E6E4D3E6E5D2E7E6
+      D2E7E4D5E7E5D5E6E4D4E6E5D2E6E5D2E6E6D2E6E4D4E7E5D5E7E5D5E6E4D4E5
+      E5D5E5E4D3E6E4D4E7E5D5E7E5D5E6E4D4E6E4D4E6E4D2E6E4D3E6E4D3E6E4D3
+      E6E4D2E6E4D2E6E4D3E6E4D3E7E4D4E6E4D4E6E4D5E6E4D5E6E4D4E6E4D3E5E5
+      D4E7E4D5E6E3D5E5E3D4E4E4D4E6E6D6EAE7D7EBE7D9E5E3D2D0D1BDD7D6C3E6
+      E4D2E7E5D5E6E5D3E7E5D3E6E4D4E6E4D5E6E4D5E6E4D4E5E4D2E5E4D0E5E4D2
+      E5E4D2E6E4D2E5E3D0E5E4D2E6E4D3E6E4D3E5E4D3E5E3D0E4E2CFE5E3CFE4E3
+      D0E4E3D0E4E1CFE5E1D0EBE6D5E9E5D2E5E4CFE7E4D2E2DDC9E2DEC8DBD8C1D2
+      CEB5DAD8C2E7E4D2E7E4D4F1EDDAFDF7E09696862D3E394D5A479B9E7F9EA488
+      B9BEA8BFC0AFA6AA93A7AF99ABAE9B9DA291A5B099DDDDC5D4D1BCB1B09BB1B2
+      9CA1A591B0B19CE6E3CEE0DBC5D9D4C2BBBDA9C3C6B2E8E3CEDBD8C3EAE7D3ED
+      E8D9EBE5D5E5E3D0E5E4D2E6E4D3E6E4D3E6E4D3E5E4D3E7E4D3EAE5D6E9E4D5
+      E9E4D4E8E4D5E8E4D4E8E4D4E6E5D4E8E5D4E9E6D5E9E6D7E7E5D4E5E4D3E8E6
+      D5EBE7D6EAE6D5E7E4D0E7E4CFE9E5D4EBE7D5EBE7D5EAE7D5E6E3CEE5E2CDE6
+      E3CDE6E3CDE7E4D0E7E3D2E6E3CEE6E3CEE7E4D0E7E4D2E7E4D2E6E3CFE7E4CE
+      E7E3CEE5E2CDE6E2D0E5E2CFE5E2CCE5E2CCE6E2CDE5E1CBE4E0C9E5E1CAE5E0
+      CCE5E0CCE5E1CBE5E1CCE5E1CCE5E0CBE5E0CBE5E1CCE5E0CBE7E4CEF1EAD8B2
+      AB99747761636C5B525F525A654FD4D9B8F0EAD9E6E2CFE5E2CEE4E1CCE5E1CC
+      E5E1CCE5E1CCE5E0CBE5E0CBE5E1CCE5E1CBE5E0CCE5E0CDE5E0CDE6E1CEE5E0
+      CCE5E1CCE5E0CDE5E1CCE5E1CCE6E3CEDCDAC8CFCDB7D3D0B8BFBAA8939781AB
+      B095BFBEA8B9B7A4B8B99FC0C0A6D1CFB6C9C6B1CACAB3DAD9C2E2DBC7CEC4B1
+      BBB39DADA691A5A28BD1D0B6EDEAD6E9E4D4E5DFCEE4DECDE4DECCE4DECCE3DE
+      CEEAE5D6F3EDDCF7EEDFEFE7D9E6E0D0CEC7AFDBDCCE78815D444B375C505DC5
+      BAC4E5DED2EBE3D4E9DECAF7EECEA5A373807978EEE9F6E5E5DCE8E7E1E7EAD3
+      515F4B57555EBCADA5EDD4B2E5D0AAE7CDA7EECFAAEAD1A3E9CEA7EAD0A9EDD3
+      A8EACDAAE7D1ABE3CEA9E9D1B0E8CEACE4D1ABE2CEAEDBC9B0BCB29C9B9C97D1
+      D6DDF9F9F6919E95F1F3F2A3AC90444847D5D3D9C2C7B1757C69B4B1C0EFEDEA
+      9BA68DC2CEC8F8F8F6CBD0BAEFF1EDA7ADA6DBD9D6D6C6A6E5CEAADECCA8E5CD
+      ACE7D0A8F1D8ACAF9A6DB6B2C5F7F7F9EBEDE2F1F1DCE7D7AFF0D197F0D09BF0
+      CF9CF1D19BEFCE9AF2D197F2D196F3D39CF3D199F1D199F6D099F0D193F2D497
+      F1D298F0D093F1D199F1D196F1D199F3D299F1D096F1CF98FBDC9DB49F5F3A3D
+      29455340394B48657C8BDEEBF5DBEDF3869E8D555C485E5F4A615E4E5F594558
+      5A50CFD2E0F8F7F6F6F8EFF3ECD2E0D1A6A19C726B7A6E647173ADA69BF3D6BF
+      EDCFB3E7D3B6E9D6BDE7D3BAE8D6C1E5D5C0E8D8C3E7D7C2E6D9C5E9DCC7EBDF
+      CBE6DAC4EBDCC9EBDFCAEBE0CEE9DDCBECE1CEFAEFE0A8AF96707673879596E5
+      E7ECFAF9F5E5DED3EBE2CFEFE7CFFAF0CE3C3E2934352F2E362E3B4844515C62
+      E7EDEFEFF3E8ECEADCB5AB91A48F74504C37515B5EF7F9FCF0F0EAF3F3E7EBDB
+      B2F2D19AF2D49CF1D39BF2D09CF1D298EBCD98CAB498EAE7DABEB798E6CB9DF3
+      D49CF6D19CF1D199F2D39AF2D197FAD799DEC387BAA56B6E664849574A4A5B52
+      50645F596F6D5C7873657E7C667F7670877E6A7560807F66D0BA8CFBDFAFB499
+      624D4B25EFD6AFFBD9A0F3D59BF6D39DF6D39AF3D299F6D498F7D49BF7D29BF1
+      D299F1D39BF6D298AF9357645A3B44432C020000BEAA8EFEDFB1F6D49DF3D298
+      F3D29DFCDFA9DABD85C2A66E4A43223F3D2E444330433D29A593692E2D14A093
+      723A38221E18065147266F573765502E564C29403A233C361C3D351D52483837
+      24192E2D164247322D2A1711130514130E11130D9769B5C0E4B4C1E4B3C1E4B4
+      C2E3B5C2E4B8C4E6B8C4E6B8C5E6B7C3E7B7C3E8B7C3E7B7C4E7B8C5E7B8C5E9
+      B9C4EAB8C4E9B8C4E9B8C4E9B8C4EAB7C4E9B6C3E9B7C4E9B7C4E8B5C4E8B6C3
+      E8B6C3E7B6C3E8B6C2E7B5C2E6B4C2E4B3C1E4B1C0E4B1C0E4B1BFE3AFBDE2B0
+      BCE0AFBCDFABBADEACBADDACBADCACBBDCABBADBABB9DAA8B9DCAABADCACBADD
+      ACBADCADBBDEADBCDEB0BDDFB1BEE0B1BEDFB0BDE0B0BDE0B0BCE0B0BDE0B4C0
+      E2B6C2E3B6C4E3B8C6E4BAC6E4B9C6E4B9C6E4B9C6E6BAC7E6BBC7E7BBC6E7BA
+      C7E7BAC7E7B9C5E6B8C5E6B7C5E6B6C4E6B7C4E6B7C4E6B7C3E6B5C3E6B4C1E4
+      B4C0E4B2C1E4B0BFE4AFBDE4AFBCE3ADBCE3AFBDE4ACBBE3AAB9E2A8BAE2A6B8
+      E2A7B8E2A5B6E1A4B6E1A4B6E2A3B3E1A1B2E09EB1E09DB0DF9CAFDF9CAFE09E
+      AFDF9DAFE09DAEE09BAEE09AADDF9BAEE09AAEE09AAEDF9AADDF9BADE19AADE1
+      9AADE09BADDF9CAEE09AADE099ADE098ABDF92A9E092A6E0849BD96782CE536E
+      C75973D36681DA627AD75E76D9637ADE6F89E46F8BE76F8BE66D88E46B83E26A
+      83E3647FDF6B88E27390E1708DE37391E67390E46C8EE66B8FE7789AE9799BEA
+      7E9AEA829BE8829BE87B97E47E98E37D97DF728FDA456FC02145991D37861326
+      6A394C88BBC2C8E2DFD0DDDDD2E4E0CEE5E1CDE5E1CCE4E0CCE5E2CEE7E3CEE6
+      E2CDE5E3CEE5E2CDE5E1CBE5E2CCE5E1CDE5E1CDE5E2CDE6E3CEE5E3CDE5E3CC
+      E5E2CDE5E2CDE6E3CEE5E2CDE5E2CDE6E3CEE6E3CEE6E3CEE7E4CFE6E3CEE5E2
+      CEE6E2CFE5E2CDE6E3CDE5E2CFE6E3CFE6E4CFE7E4CFE7E4CFE7E4CFE8E4D2E8
+      E4D2E7E4D0E8E4D2E8E5D2E8E5D2E9E5D3E9E5D3E8E4D2E9E5D4E8E5D3E8E5D3
+      E9E6D4E9E6D4EAE7D6EAE7D6E9E5D5E9E7D6E9E7D5E8E7D5E7E7D7E8E6D7E5E3
+      D3E3E1D4E4E2D5E5E3D5E5E4D4E7E4D4E9E6D5EAE7D5EAE6D5EAE6D4E9E7D4E9
+      E7D5EAE7D4E8E5D3E7E4D4E6E5D6E6E6D3E6E4D3E5E3D2E5E2D2E6E4D3E5E4D2
+      E5E4D2E6E5D3E5E4D4E5E5D3E5E5D0E5E5D2E5E5D0E5E5D2E5E5D2E5E5D2E5E4
+      D2E5E4D4E5E4D4E5E4D4E6E5D5E5E4D4E5E4D4E5E4D4E6E5D6E6E5D6E6E6D3E5
+      E5D4E6E5D5E6E5D5E6E5D5E6E5D5E5E5D5E6E5D5E6E5D5E5E5D2E5E5D3E6E5D5
+      E7E5D5E6E5D5E5E4D4E6E4D3E7E5D5E6E4D5E7E4D4E7E5D4E7E5D4E6E4D4E7E4
+      D4E7E4D4E6E4D4E5E4D4E6E4D4E5E4D3E6E4D4E6E5D4E5E4D3E5E4D3E5E4D3E5
+      E4D2E5E4D2E7E5D5E7E5D6E6E4D4E6E4D4E5E4D3E6E5D0E7E5D5E7E5D5E5E4D3
+      E6E4D4E6E5D5E6E4D4E7E4D4E6E4D4E6E4D4E6E4D4E7E5D5E7E5D4E7E4D4E5E3
+      D4E5E4D3E6E4D3E7E4D4E5E3D3E5E3D4E6E4D4E6E4D4E5E3D4E5E3D4E5E4D4E6
+      E4D4E5E5D4E5E4D5E5E3D5E6E3D5E7E4D4E5E4D5E5E5D8E4E4D5E8E7D7ECE8D9
+      EAE7D6E7E5D6E6E5D4E6E4D3E7E5D4E6E4D3E5E4D3E5E4D3E5E4D0E5E4D2E5E3
+      D3E5E4CFE5E4CFE5E4D2E5E3D0E5E3D0E5E3D0E5E3D0E5E3D0E4E2CFE4E2CFE4
+      E2CFE4E2CFE3E1CEE4E2CFE5E2CDE5E1CDE5E2CEE4E1CFE5E1CEE7E4D2E9E4D2
+      E5E2CDE6E4CFEAE5D5E6E2CFEBE6D2D5D4C2A7B3A870756A525745818872BBC4
+      B0B0B79DB6B8A4BEBFAAB3B8A3A6B2A4C3C5B3C9CBB3C1C4ABE5E1CCECE7D5DB
+      D8C1E1DEC4E7E2CAE9E4CFE9E5D0D9D8C1DCDBC5E1DDC6E5E1CCEBE7D5EBE7D7
+      E8E4D2E7E4D2E6E4CDE7E4CFE7E4D3E7E4D2E7E4D2E8E4D2E5E4D2E5E3D2E7E4
+      D0E8E4D2E8E4D2E8E4D3E8E4D3E8E4D2E7E4D2E5E5D4E5E5D5E7E4D5E6E4D3E5
+      E4D2E6E4D4E7E4D3E8E4D3E9E5D5E8E4D0E7E3D3E7E4D2E6E3CEE6E3CDE6E3CF
+      E5E2CFE7E4D2E7E4D0E6E3CEE5E3CDE6E3CEE6E3CEE7E4CFE6E3CEE6E4D0E6E3
+      D3E6E3D2E6E4D2E6E4D2E7E4D2E7E4D0E7E4CEE7E4D0E7E4D2E6E3D0E6E3CFE6
+      E3CFE6E3CDE6E3CFE6E3D0E5E2D0E5E2CDE5E1CBE6E3CEE5E2CEE5E2CDE4E0CB
+      EBE7D5DDD7C1CCC9AE727D74515B47A09F7CE2E0C7EBE4D6E6E1CFE6E1CEE5E1
+      CCE5E1CCE4E1CBE5E0CBE5E0CBE5E0CBE5DFCDE5E0CEE5E0CEE5E0CEE5E0CFE5
+      E0CEE5DFCDE5DFCBE5E2CCE5E2CCE5E1CCE7E3CEE4DECCC6C3AFCBC8B4BAB6A5
+      9C9F87B3B99CC9C6B2C2BDABBDBDA5C3C2ABD3D0B9D9D3BFE2DBC8E5E0CEE7E3
+      CEEDE7D3EBE4CEDCD5BFE3DDC5E7E3CEE4DECDE3DECBE3DECBE3DECAE2DEC9E3
+      DECAE2DCCAE2DFCAE2DEC9E2DDCAE5DECCE5DFCECCC5ACD5D4C98A9069484C3A
+      635D6AD4C5CCE5DAC6EADCCDE8DEC7EAE0C9DAD5AC6D6A63EBE9F4E5E7DEE9E7
+      E0E9ECD35E6A5454545FB7A4A2EFD3B4E5CFABE7CFA9EAD1A6E9D1A6EACFAEEA
+      CEABE7CFA8E7D1ABE5CFABE5D0B1E2CDAEE4CCAFE4CDABDECAAADBCBAAE1D0B4
+      E1CCB1ADA590BAB7A3747E6470777DB3B7B4626A599099A4E2E4E2ADB2A8B6BC
+      CCE9E9F1C8CEC7C1CCD9CBD2DABCC4C597A39A2A383AE1DDDDD4C6AAE5CDB0E6
+      D0ABEACEABE4CCAAEFD8B0B19D74AAACBCF3F7F6ECECE4F1F3E3E6D7B8F1CF97
+      F1D097F2D29AF1CF99F3D199F2D196F0D096F1D19AF0D197F0D197F7D39AF1CF
+      96F1D297F2CF9AF1D099F0D196F1D29CEFCF9AF0D197F7D197EED397FBDB9CB4
+      9C576565588289763E524E607686C8D9E3D9E4E6879B7C3D3E253D3D27444834
+      5259414D5350C0CBDAF1F3F5FBF9EFEBE8D4DECBA0B5A98072796B6376727D82
+      7FF0D8BFEBD1B1E8D4B9E6D2B7E8DABDE7D6C0E4D8C0E5DAC1E5D8C3E9DCC6E7
+      DDC3EADDC9E8DEC4E9DCC6EBDFCBEAE1CAEBDFCDFAEDDAD9D1B95C6C59768984
+      CBD2DAFDFFFE788074F1EEF1EEE5D3F1E7D2F8EED07573566D6A5F2127283546
+      41545E5EE5E9EDF0F2E8E9EAD9B6AC86AFA5886B6D59535E60F2F3F8F1EEEBF1
+      F3E4E9DBB1F6D197F6D198F1D198F0CF96F6D399F7D29BF3D5A3C3B18EE7E9E3
+      9E926CE9CE9FF6D199F6D196F0D196F2D397F6D09AF6CE98FFEBAEB39A613D4C
+      384655523B595F496E7D66899BAACCD6DDF2FBF8FFFFE3ECE4BFBD99FEE0ACCD
+      A877322909E6D1A9F8D496F6D299F1D29CF3D398F3D296F8D79CF2D298F2D39B
+      F6D69DF6D49BF6D29AF6D39AB89D723D3F261C1E0D060100B3A187FFE3B1F7D5
+      9BF3D398F3D39AF1D198F6D49FE5CD955944193E3F283A3D28363922CCBA9296
+      88606D61414A45294A4A366F644A99856A9B886B7976596E6C5660624B39402D
+      484C391213060E100C1A1F1641412C282C180F14080F12110000B8C5E6B8C4E6
+      B9C5E7B9C5E6BAC6E7BCC8E8BAC7E7BAC7E7BBC7E8BAC7E9BAC6E9BCC8E9BDC8
+      EABDC9EABCC9EBBDC9EABCC8EABBC8EABCC8EABCC8EABAC7EABBC7EABCC7E9BB
+      C7E9BAC7E9BBC7E9BAC6E9B9C6E8B7C5E8B7C5E7B8C5E6B7C4E4B5C2E4B4C2E4
+      B5C1E3B3C1E2B2BFE1B1BEDFB0BDDEB1BFDFB2BFDEB1BFDDB1BEDEB1BEDEB0BE
+      DEB1BFDFB2BFE0B4C1E1B5C2E2B5C2E2B6C3E2B7C3E2B8C4E2B5C3E3B5C3E3B6
+      C2E2B9C5E4BAC6E4BBC7E4BCC8E6BECAE6BECAE6BECAE7BFCBE9C0CCE9C1CCE9
+      C1CCEAC0CDEABFCCE9BECAE8BDC9E8BDCAEABCC9E9BBC8E8BBC8E8BCC8E9BBC7
+      E7BAC7E7B9C5E7B7C4E6B7C5E7B6C4E6B5C2E6B3C0E4B3C0E4B2C0E4B0BEE4AD
+      BDE4ADBCE4ADBCE4ADBBE4ACBBE4ABBBE4AAB9E3A8B8E3A6B8E2A6B7E2A4B6E1
+      A3B4E2A2B4E2A2B3E1A2B2E1A1B2E1A1B1E1A1B1E19DB1E0A0B2E1A1B1E2A1B2
+      E2A1B2E39EB1E1A0B0E1A0B2E1A0B1E1A1B3E2A2B3E39DB1E29BAEE29AADE292
+      A9DF7B96D56682CD5974CD576FD25B75D7637DDA6987E06F8AE1728DE36A87E4
+      6680E36A85E36A85E16480DE6C89DD6E8EDF728FE27392E26D8DE26E92E6789A
+      E9809CEB819AEB849BEB849CE9809AE7819BE67C96E07691DB668BD43259AC17
+      348118327616296F586EA5C2C8CDE0DED2E4E0CEE5E1CDE5E2CDE4E1CDE3E1CC
+      E5E0CBE5E1CBE5E1CBE5E1CEE5E1CEE5E0CCE5E1CCE5E2CCE5E2CEE5E2CDE5E1
+      CCE5E2CDE5E2CDE6E3CFE5E2CFE5E2CCE5E3CCE6E3CEE6E3CEE6E3CEE6E3CFE6
+      E3CFE6E3CFE5E1CEE5E2CEE6E3CEE6E4CEE7E4D0E7E4D2E8E4D2E8E4D2E8E4D0
+      E8E4D2E7E4D0E8E4D2E8E5D2E7E4D0E8E5D3EAE6D4E9E5D3E9E5D3EAE6D5E9E6
+      D4E9E6D4EAE7D6EAE6D6E9E6D6E9E6D6E9E6D6E9E6D5E8E7D6EAE7D6E9E7D7E8
+      E5D6E6E4D4E5E3D5E6E3D5E7E4D5E8E6D5E9E6D6EAE7D8EAE7D6E9E5D5EAE6D5
+      EAE6D5E9E6D5E9E6D3EAE5D4E7E4D4E5E4D6E6E5D6E7E6D5E6E4D3E6E3D2E5E3
+      D2E6E4D3E6E4D0E6E4D0E7E4D3E6E4D2E6E4D0E7E4D2E7E5D3E6E4D2E5E4D4E5
+      E4D4E5E5D0E5E4D2E5E4D2E5E5D3E6E5D5E5E4D4E5E4D4E5E5D3E5E5D3E5E5D3
+      E5E5D2E5E5D3E5E5D3E6E5D4E5E4D3E5E5D3E5E4D4E5E4D5E5E4D4E6E5D4E8E5
+      D5E8E5D5E8E5D4E7E4D2E5E4D3E6E5D4E6E4D4E7E4D4E6E4D3E6E4D3E6E4D3E6
+      E4D4E6E4D4E6E4D3E6E4D3E7E4D3E7E4D3E6E4D3E6E4D3E6E4D2E6E5D0E5E4D2
+      E5E4D4E5E3D4E5E4D0E5E4D2E5E3D5E6E3D5E5E4D2E5E4D2E5E4D2E6E4D4E6E4
+      D5E5E4D3E5E4D3E5E4D4E5E4D4E6E4D4E5E4D3E5E4D3E6E4D3E6E4D4E6E5D3E6
+      E4D5E5E4D2E5E4D0E5E3D2E5E3D4E5E3D3E5E4D2E5E4D0E5E3D2E5E3D3E5E4D2
+      E5E4D0E5E3D2E5E2D3E5E2D2E5E3D3E5E4D3E5E4D3E5E4D3E5E4D4E5E3D4E5E4
+      D3E5E4D4E5E4D4E5E4D3E6E4D3E6E4D3E6E4D2E5E4D2E5E4D2E5E4D0E5E4CFE5
+      E4D0E5E4D2E5E3D2E5E3D2E5E4D2E5E4D2E5E3D2E5E3D0E5E3D0E5E3D0E5E3D0
+      E5E3D0E5E3D0E4E3CEE3E2CFE5E3CFE5E4CCE4E3CCE5E3CDE6E2CDE5E2CDE5E3
+      CEE5E3D0E5E3D2E4E3D0E5E2D0E5E3D0F3F0DBCBC6B1363C3835433859655448
+      5349475244A1A287D1CEB6E4E0C9C4C4B29CA693C0C5B0CCCAB1D7D5C0E6E3D3
+      E6E4D0E9E7D4E8E5D3EAE6D4EAE6D4E8E4D2E7E5D4E6E4D3E9E7D4E8E6D3E5E5
+      D0E6E4D3E8E4D3E7E4D3E5E4D0E6E5D2E8E6D3E5E3D2E6E3D2E8E4D2E7E4D3E7
+      E4D2E7E4CEE7E4CEE7E4CFE7E4D0E7E4D2E7E4D0E7E4D2E7E4D3E6E4D3E7E4D3
+      E7E4D3E6E4D2E6E3D2E7E4D3E7E4D3E8E4D3E6E4D0E6E4D0E7E4D2E7E4D0E7E4
+      D0E7E4D2E6E3D2E6E3D2E7E4D0E6E3CDE5E2CCE5E3CDE5E2CDE5E2CDE5E1CBE5
+      E2CDE5E2CDE5E1CEE5E1CEE6E2CFE5E2CEE4E0CCE5E1CBE5E1CEE5E1CFE5E2CF
+      E5E2D0E6E1CFE5E1CEE5E2CEE6E2CEE5E2CEE5E1CDE6E1CEE5E1CDE5E1CDE5E1
+      CDE5E0CDE6E2CDE9E2CEA8A4994C5147969975EBE7CBEAE4D2E5DECDE6DFCEE6
+      E0CEE5E0CAE5DFCBE5DECBE5DECCE5DFCBE5DFCAE4DECBE4DFCBE4DFCBE4DECC
+      E4DFCDE5E0CEE5DFCBE5DFCBE5E0CBE5E0CBE4DFCAE4E0C9E6E0CCDDD7C5D2CD
+      B9BDBAA6B1B098B0B299BDBFA8BEBDA7C1BEA8C2C0AAC5C5AEDDDBC3E6DFCCE5
+      DECDE2DECBE4DECBE5DFCBE8E3CCE5E1CBE4DECAE5DDC8E4DCC6E3DDC9E3DEC8
+      E3DEC6E4DEC7E4DDC8E4DDC9E5DECAE4DCCAE5DDCBE6DECDCEC7AFCECEC59096
+      714F4F3D555253BCB3AAE6D5C5E6DBCAE5DAC9E3D1C0F1EBCB847E6EF0E5F1E6
+      E5DFE5E7DEE5EDD47280646065639B8A8DEBD4B5E9D1AEE8D2ACEACDA4EAD1AA
+      EBD1AAE9CFACEBD1B0E5CFACE5CDAFE4CDB0E3CAA9E3CEAAE1C8AEDDC3A7DBCB
+      A8D5C4A9DECDB6EBD3B98A816B424630242D232C393A37403F3540473C485343
+      5354505C643C4C545E686D5763644F5F603C52512B3F3E1C3132BDBBBED7CEB1
+      E7D1AFE4CEAEE8CFAEE8D1A5F6D9A8BFA97C979BA3FCF7FDEBEEE4FBFAEEBEB8
+      95EDD1A4EFD09BF0CE9FF2D19DF1D196F1D199F1D198F2D196F2D19AF1D09BF0
+      D098F2D198F3D097F2D198F2D098F3D299F1D098F1D097F0D19AF1D196EFCE97
+      F9D99FE2C7894B4B3662716E6579738198A2CFDCE3EBEBE4E6D3AAE6CC95D5BC
+      8CB8A672A09668636150BBC2D3F1F4F6FAF7F0F6F2DAE0D1A4D5C0927C7D646D
+      7D786A7877C8BCABEFD5BAEBD3B3ECD4B9EAD8BFE8D6BDE9D9C1E7DAC0EBDBC2
+      E9DDC3E9DEC7EBDFC9E8DDC8EBDEC8EDDFCBEADFCBEFE4D5E3DAC06B745B6B77
+      72BBC6CAFFFFFFBEC4B52E3A38CCC9D4F3E8DCF0E6D5FEF3D451523E4C54402E
+      3829515752535E5AE1E7EBF0EEEFE8E9D9655F3C5E55366F6649505A5EEBF0F6
+      EEEFEFF6F7E4E8D8B8F2D29DF2D19AF1D199F6D29BF6D49BF2D199F0D29AEACF
+      9ADED1C3ECEBE0AFA47EF7D7A5F9D096F1D295F3D29AF9D098F1CF97FED9A3D0
+      B276675E395A5B3E4A54434C626C57788BB1CDDBD3E3EDF9FAFDEBECDEE2D1A5
+      FFE0AB5A492751472CF6D5ABF2D197F1D197F3D49AF1D398F3D397F2D099F7D3
+      9DF3D199F1D298F3D198F6D095FDE2AB735D3A302A11211E0B020000AA9674FF
+      E3AFF0D398F6D199F7D498FCDBA2FEDEA3FBE4A960461C38351E2626161B180C
+      74624C404222302F161F1E0D212014292A1D211D162225162822190F14090E12
+      09262A1A31321A16180A0A0E0B0A0C0631362646442D242A130B0F030000BCC9
+      E7BECAE8BDC9E9BFCAE9BFCBE8C0CCE9C1CCEABFCBEABFCBEABDCAEABFCBEBBF
+      CBEBC1CCEBC3CEEBC1CDEBC1CDEBBFCCEBBFCCEBBFCBEBC1CCEBC0CBEBBECBEB
+      BECBEBBECAEBBECAEABECAEABECAEABDCAEABDCAEABCC8E8BBC7E7BBC7E7BAC6
+      E4B9C5E4B9C5E4B9C6E4B7C4E2B6C2E1B6C2E1B6C2E1B7C3E1B5C2E1B7C3E1B7
+      C3E1B6C4E1B9C5E2B9C4E2BAC6E3B9C6E4BAC7E4BDC9E4BEC9E6BDC9E4BBC7E4
+      BBC7E7BBC7E6BDC9E6BFCBE6C1CCE7C1CDE8C2CFE9C3CFE9C3CFEAC3CFEAC6D1
+      EBC6D1EBC5D1EBC4D1EBC4D0EBC4D0EBC4D0EBC3CFEBC3CFEBC3D0EBC1CEEBC1
+      CDEBBFCCEABECBE9BDC9E9BCC8E8BCC9E9BBC9E9BBC7E8BBC7E9B8C5E8B7C4E7
+      B6C3E7B3C2E7B3C1E7B4C1E6B3C1E7B2C0E6B2BFE6B0BDE6ACBBE4AABBE4ACBB
+      E4ACBBE4A8BAE4A7B9E4A7B9E4A7B8E3A4B7E3A5B7E3A6B7E3A5B7E3A5B8E4A5
+      B6E3A4B6E3A4B7E3A5B6E3A4B6E3A4B7E3A3B6E3A5B8E3A8B9E4A8BAE4A5B8E4
+      A1B3E49DB0E49AAFE491A8DD7895D26783CE5F76D06079D7617AD96781DD6F8A
+      E16B87E36682E16681E16B85E26580DD6481DC6B88DD6F8BDE728FDF7493E477
+      98E37799E47C9AEA809BEB7D98EA7E97EA849EEB859CE97D97E67D98E17695DC
+      436CC017378D1A327C142A6C1D347D657DB3C2C9CFE2DFD0E3E1CFE5E1CDE5E2
+      CDE5E2CDE4E0CBE5E2CCE5E1CCE5E1CCE5E1CDE5E1CDE6E2CCE5E2CCE5E1CCE5
+      E2CDE5E3CEE6E3CEE5E2CDE5E2CDE5E2CDE5E2CDE6E3CDE5E2CDE5E2CDE5E2CD
+      E5E2CDE5E2CEE5E2CEE5E1CEE4E1CEE5E2CEE6E4CFE7E4D0E8E4D0E8E4D0E8E4
+      D0E7E4D0E7E4D0E7E4D0E8E4D2E8E5D2E7E4D2E9E5D3E9E5D3E9E5D4E9E6D4EA
+      E7D5E9E6D4EAE6D5EAE6D5EAE7D6EAE7D6E8E6D7E9E6D7E9E6D6EAE7D6EAE7D6
+      EAE7D6E8E6D6E7E5D6E7E4D5E8E5D5E9E5D5E9E6D4E9E7D7EAE7D8E9E5D5E9E5
+      D3EAE6D4EAE6D4E8E5D3E8E4D3E8E5D4E7E4D3E6E4D3E7E4D4E7E4D3E6E4D2E6
+      E4D2E6E4D2E7E4D2E6E3D0E6E3D0E7E4D0E7E4D0E7E4D2E7E4D2E8E4D2E6E4D2
+      E5E4D4E6E4D3E7E5D2E5E5D2E5E5D2E5E5D2E5E4D4E5E4D4E5E4D4E6E5D2E6E4
+      D2E6E4D2E6E4D2E6E4D2E6E4D2E6E5D4E5E4D3E5E5D0E5E4D3E5E4D5E5E4D4E6
+      E4D3E7E4D4E8E4D4E7E4D0E8E4D0E6E5D2E6E5D4E6E4D5E6E4D4E5E4D3E6E4D3
+      E6E4D3E6E4D3E5E4D2E5E4D2E5E3D0E7E4CFE7E4D0E6E4D2E5E4D2E5E3D0E6E5
+      D0E6E4D4E5E4D3E5E4D3E5E4D0E5E4D0E5E4D4E5E3D4E5E4D3E5E4D3E5E4D4E5
+      E3D4E6E4D5E5E4D3E5E4D3E5E3D4E5E4D4E6E4D4E5E4D2E6E4D3E6E4D4E6E4D3
+      E6E4D3E6E4D3E5E4D0E5E4D0E5E4D2E5E4D3E5E4D3E5E4D2E5E4D0E6E4D3E5E4
+      D2E5E4D0E5E4D0E5E4D3E5E2D3E5E4D3E6E4D3E5E4D3E5E4D3E5E3D2E5E4D2E5
+      E2D3E5E3D3E5E4D2E5E3D3E5E3D3E5E4D2E5E4D2E5E4D2E5E3D3E5E4D3E5E4D2
+      E6E4D3E6E5D3E6E4D2E6E4D3E6E4D4E6E4D2E5E4D2E5E3D4E6E4D3E5E4D2E5E4
+      D2E5E4D2E5E4D2E5E4D0E5E4CFE5E4D2E5E4D2E5E4D0E5E4D0E5E4CFE6E4D0E5
+      E3CFE5E3CFE5E3D0E5E4D2E5E3D0E4E3CFE5E3D0EAE9DADDD9C4A0997C566558
+      3547413A4333898763E0DBC0EFEBD7EBE7D5E2DDC9CCCCB3DDDCC6E9E4D2E9E6
+      D5E5E3D2E5E4CEE5E4D0E5E4D3E5E4D2E6E4D2E6E4D2E6E4D4E5E4D3E6E5D4E7
+      E6D4E6E4D4E6E4D5E6E4D5E6E4D5E5E4D5E6E5D5E7E5D4E6E4D4E6E4D4E7E5D3
+      E6E4D3E8E4D3E8E4D2E7E4D0E7E4D2E7E4D2E7E4D2E7E4D2E7E4D3E8E4D2E7E3
+      D0E7E4D2E7E4D2E7E4D2E7E4D2E7E4D2E7E4D2E7E4D3E5E3D0E5E4CEE8E4CFE7
+      E3CEE6E3CEE6E3CFE7E3CFE7E4D0E6E3CEE6E3CDE6E3CEE6E3CEE5E2CDE5E2CD
+      E5E2CDE6E1CCE5E0CBE5E0CBE5E0CBE5E0CBE6E0CBE5DFCAE5E0CBE6E0CBE5DF
+      CAE6E0CBE5E0CCE5E0CDE5E1CDE5E0CCE5E0CBE5E1CBE5E1CBE5E1CBE5E0CAE5
+      E0CBE5E0CCE5E0CAE7E2D0E6DCCCBAB096BDB796DCD6BDE3DEC9E7E2D2E5DFCD
+      E5DECEE4DFCBE3DEC9E3DEC9E5DECAE3DDCBE3DECAE4DFC9E3DEC9E3DEC9E4DE
+      C9E5DECCE5DECCE5DECCE4DEC9E4DFC9E4DECAE4DECCE3DECAE3DEC8E5DFC9E9
+      E3CCE5DEC8D1CAB4BEB9A3C1BDA6BFBDA5C8C5ACCFCAB4CDC9AFD4D1B6E3DEC8
+      E5DECBE4DECBE3DECBE4DDCAE4DCCAE5DEC8E2DDC8E2DDC9E4DDC9E5DEC8E4DE
+      CBE4DDCAE3DEC7E3DDC7E4DECAE3DCC9E2DCC9E3DDC9E3DDCAE5DECBD1CBB1CC
+      C9C19DA4844C4B46CCC3CEE5D7CAE3D5C4E5D7C3E4D7C1E3D6BDEAE4C37C7C68
+      E8E2ECE5E7DEEAE8DEE3EAD678856D6A736C8C7E85E5CDB1EACEA8E8CEAEE7CF
+      AEEACFACE6CEABE7D2ABE6D1AAE4CFAEE3CEB0E5CCB0E5CDAEE0C8B0E3CAAFDD
+      C9B0DCC7AADECDAABCB38428300B0F13051E2119131D17141D1C1C20161B251B
+      1825242B322E2A3A37353F3939463F3C4E473F54523A4844606F6DBFC5C1F8F7
+      EBE1CEB1E8CEA9EBD0A9EACDA9F0CFA6EFD3A3BCAC7A8E909AF9F7FCE9ECE3F7
+      F9E7B8B395E9C69BEFD295EED19AF1D198F2CD9AF2D19AF1D096F1CF97F6D49B
+      F3D099F2D197F2D199F1D196F2CF97F2D29AF0D096F1D298F6D398F1D399F0D1
+      99F2D198F8D69BE6CD9150553A727F778E989BECF2F6FAF9EFD9C29FEDCC9FEC
+      CF99EFCE9CF6D4A6FFE9B2AF9D75B0B6C2F6F7F8F7F7EDFAF7E7E5D1AAF6DBAB
+      969366646E6396AAB4A6AEA6E3D1B2EBD6B3EBD5BCEBD8C1EBDCC3EBDBC2E5DB
+      C3EADBC0EADBC6EADFC9E6DDC4EBDFCAEBDECAEBE0CEEFE0CBEDE6CD79836F81
+      877FA1ADABF6F9FDD4DBD33F4D3B4F5751454C4CEBE2DEEEE0CCFDF0D36D6E5F
+      69746642463754594B5B635FE1E2E7EEF2EAEDEFE1F2E0B4FFE6B9B0996A5357
+      51EBF0F6EEEEEBFDFDF3939B7ED0B89FFEDBB3F1D19BF1D196F3CF99F2D097F6
+      D396F3D196E3C48CD4C1A8E7E4DABAB08CECD0A2F6D39FF2D093F3D198F3D297
+      F3D097F8D69DFFE0A9FFE1A9E2C49631382B476272A8C8D4CDC7B6E7CB9DEDCF
+      9BF6D59F876D3D453D17CEB385F9D19DF1D298F2D29AF2D299F1D19AF6D39AF6
+      D199F6D19AF2D29AF1D198F3D39AFDDCA8C29F7133351B31321619180A060300
+      967E6AFFEECCFFE9BCFFE7BEF1D4A9D1B38DAD9675796F5F3B36232C311B3331
+      1F33311B2223113335212D301B24271E2D2A2222241C100C090E100D1A190C0E
+      0D060E100B2C2D1C353322191A0D14160D1B1D0D242716474A2F434829323C1F
+      0000C1CCE9C1CDE9C2CEE9C3CFEAC3CFEBC5D0EBC5D1EBC4D0EBC4D0EBC2CFEB
+      C3D0EBC4D0ECC5D0EDC5D1ECC6D1ECC6D1EDC5D0ECC4CFEDC5D0ECC4CEECC4CF
+      EBC4D0EBC3CFECC3CFEBC3CFEBC2CEEBC3CEEBC2CEEBC2CEEAC1CDE9BFCCE9BE
+      CBE8BDCAE8BCC9E6BEC9E6BDC8E4BDC9E4BDC9E4BCC8E4BBC8E3BDC8E3BCC8E3
+      BCC9E4BDC9E4BCC9E4BFCAE4BEC9E4BECAE6BECAE7C1CDE7C2CEE8C3CFE9C3CF
+      E8C2CEE8C1CDE9BFCBE8C2CCE8C5D0E9C6D1EAC8D2EBC8D2EBC9D3EBC9D3EBCB
+      D4EBCCD4ECCCD5EDC9D4ECCBD5EDCBD5EDCAD5EDCBD5EDCBD4EDC9D4ECC6D2EC
+      C5D1ECC6D1ECC5D1ECC3D0EBC2CFEBC2CDEAC1CDEAC0CDEBC1CDEBBFCBEABDCA
+      EABDCAEABCC9E9BAC7E9BBC7EABBC7E9BAC7E9B9C6EAB8C5E9B6C3E8B4C2E7B2
+      C0E6B3C1E7B2C0E7B1BFE6B2BFE6B1BFE7ADBDE6ADBDE4ACBBE4ACBBE4ABBBE4
+      ACBCE6ADBBE6ABBBE6AABBE6ACBAE6ACBBE6ACBBE6ABBBE4ABBBE6ADBCE6ADBD
+      E7AFBDE8ADBDE8AABAE7A5B8E7A3B7E49CB1E192A8DC7E97D76985D36680D663
+      7EDA6580DC6B85DE6782DD637DDD637FE06381DE6686DF6581DE6586DB6B89DC
+      7090E07698E47699E37696E37E9AE48097E87C95EA8098E9869CEA869DE9829A
+      E37491DC5F87D6325AB6193689132A6D1327662841857389B6C1C8CFDCDCD0E5
+      E2CEE7E2CEE6E2CDE5E2CDE5E2CFE5E2CEE6E2CCE6E4CCE6E2CCE6E1CEE6E2CF
+      E6E2CDE6E2CDE5E2CDE5E2CDE5E2CDE5E2CCE5E2CCE5E3CEE6E3CFE5E1CCE6E2
+      CDE6E2CDE5E2CDE5E2CEE5E1CEE5E2CDE5E2CDE5E4CEE6E3D2E6E4CFE7E4CFE8
+      E4D0E8E4D0E7E4D0E7E4D0E8E5D2E8E5D2E8E5D2E9E5D3E9E5D3E8E4D3E8E5D3
+      E9E6D4E9E5D4EAE6D5EBE6D6EAE6D5E9E7D6E8E7D6E7E5D6E8E5D6E8E6D5EAE7
+      D6EAE7D6E8E6D5E9E6D6E7E5D5E7E5D4E9E6D5E9E6D5E9E6D4E9E6D5E9E6D4E9
+      E6D4E8E5D3E8E5D2E8E6D3E7E4D2E7E4D3E7E4D3E6E4D2E7E4D0E7E3D0E7E3D0
+      E5E3D0E5E4D0E6E4D2E5E4D0E6E4D0E6E4D0E6E4D0E5E3CFE6E4D0E6E4D0E6E4
+      D0E6E4D0E6E4CFE7E4D2E7E4D3E5E5D2E5E5D2E5E5D2E7E4D4E7E4D4E6E4D4E7
+      E4D2E7E4D2E7E4D2E7E4D2E6E4D0E7E4D2E8E5D5E7E4D3E6E4D0E7E4D2E6E4D2
+      E7E4D2E6E4D3E8E4D4E8E4D4E7E4D0E7E4CFE6E4D0E7E5D4E8E4D5E8E4D5E7E5
+      D2E6E5D0E5E4CFE5E4D2E5E4D3E5E4D3E6E4D0E7E4CEE7E4CFE6E4CFE5E4D0E5
+      E4D2E6E4D4E6E4D2E5E4CFE6E5CEE5E4D2E5E4D5E6E5D3E6E5D3E5E3D4E5E2D4
+      E5E3D4E5E4D3E5E4D3E6E4D4E6E4D4E5E3D4E5E4D3E6E4D4E6E4D3E6E4D5E6E4
+      D5E6E4D5E5E4D2E6E5CFE6E4D3E5E3D4E5E4D0E5E4CEE6E5D2E6E4D3E5E3D3E5
+      E4D2E5E3D0E5E3D3E6E4D4E6E4D3E5E4D2E5E4D3E6E4D4E6E4D3E6E4D4E5E4D3
+      E6E4D4E5E4D4E5E3D4E6E5D4E6E4D5E5E4D2E6E4D2E6E4D4E7E4D5E6E4D2E6E5
+      D2E6E4D3E6E4D3E7E5D5E7E4D5E6E5D3E6E5D2E6E4D3E6E4D3E6E3D4E5E4D3E6
+      E4D3E6E4D3E6E4D3E6E4D3E6E4D2E5E5CFE5E4D2E5E4D3E5E4D3E6E4D3E6E4D4
+      E5E4D2E5E4D3E5E4D3E5E4D2E6E4D3E6E4D3E5E4D2E5E4D2E5E4D3E9E8D7E5DE
+      C6656456283026666D53F6F3DCF3F2DEE5E3CFE7E3D2E8E4D2E9E6D4E8E5D5E9
+      E5D5E7E4D3E5E4CFE5E4CEE6E4D2E6E4D4E6E4D3E6E4D3E6E4D4E7E6D3E7E5D3
+      E7E5D5E7E5D5E7E5D4E7E4D5E6E5D5E5E5D5E8E4D5E8E5D6E7E5D5E7E5D3E8E6
+      D4E8E6D5E6E5D3E7E5D4E7E5D4E6E4D3E6E4D3E6E4D3E6E4D3E7E4D3E9E4D3E7
+      E4D2E7E4D2E7E4D2E8E4D3E9E4D3E9E4D3E8E4D3E8E4D3E7E5D4E7E4D3E9E4D0
+      E8E4D3E7E3D2E7E3D2E7E4CEE5E3CDE6E3CDE6E2CDE6E2CDE6E2CDE5E2CDE5E2
+      CDE6E3CDE6E3CEE6E2CDE5E1CCE5E2CCE5E1CBE5E1CCE5E1CBE5E1CBE5E1CBE5
+      E1CAE5E0CAE5E0CAE5DFCAE5DFCAE4E0CBE5E0CBE5DFCAE5DFCAE5E0CAE4DFCA
+      E5E0CBE5E0CBE5E1CCE7E2CCE5E3CDE3E1CBF0EAD8F3EFDBEFE8D7E7E2D0E5DF
+      CEE6E2D0E6E1D0E6E1CEE5E0CBE5E0CAE5DECBE5DECDE4DFCCE4DFCAE4DFCAE4
+      DFCAE4DFCAE5E0CCE5E0CBE5E0CCE5E0CBE5E0CBE5E1CCE5E1CFE5E2CFE5E2CE
+      E6E2CEE6E3CFE7E4D0E4DECBDAD5C1DAD5BFDBD5BFE1DCC6E5E0CAE4E0CAE6E1
+      CEE4DFCAE4DFCBE4DECCE5DECBE5DECBE5DECCE6DECCE5DFCCE4DFCDE3E0CDE5
+      E0CDE5E0CFE5E0CEE5DFCCE4DECCE4DECDE4DECCE3DECCE2DDCBE3DDCAE5DECC
+      D6CFB8C5C6B9A2A58781827FCFCCD4DAD3C6DDD2B4E2D0B3E2CFB7E0CDB2E1D5
+      B3797862E0DAE4EAE7E3E7E8DEE9EBD878866C6E7D7A777D7CDBC3B3E9CFB0E7
+      CEAAE6CEABE6D0B0E7CFAFE6D1AFE6D1AFE5CEB1E3CCACE0CDAEDECFB0E1CEB0
+      DCCCAEDBCBAEDDCAAADAC9A9CABE925B643441422D3A3D263D3F2E3D44325559
+      4A5B65575B695D6471696F7A6C7E877A79897A889992B3BAB1F6F3EBFFFFFFF6
+      F8E892937ED0BBB1DDC2A4F1D2B4F9DABAF1D5B1FAD9A8CAB17884838FF3F5F9
+      EAEBE4FCF9EFC4C5A4D1B895F6D1A3EDCF9BF1D198F2D097F2D297F1D398EFD1
+      96EECF97EED195F2D098ECD198F0D198F3D199F0D195F1CF96F2D096F0CD95F1
+      CF99F1CE9BECD19BF8DBA6D6BD89606352818B8BBFCCD3FAFFFFE2D3B6E8CC9F
+      F0D19FEDD29DF1D0A4EDD0A2F8DCACAB996FAAAEBEF3F3F6F7F7EEFAF7E4E1D0
+      A6F6E1B6BAB187656F5F6A868EC1CFCED6CEB4ECD7B9F0DBBAEBD7C1E8DBC0E7
+      DCC1ECDCC2EFDCC3EDDFC4E8DFC4EBE1C6E8E0C7EAE0C8EADDC9FBEFDBCCC3A9
+      6A71647D8889E2E6E9F1F3EDA3B097213026C5C4C8979177B8B3B6F6E7D7FDEF
+      CB6E75626D7368434335524A3D5B6465D9DFE6F1F0ECF0F3E3F3DDB4A28B5A8A
+      7651575551EAEBF3E9EEEDFFFDF4949C755A5945C6AE91F6D1A0F6CE99F1D296
+      F3D199F3D197F2D198F1D19AEBC797D4C4ACE9E4D59E9769EBCE9CF6CF96F2CE
+      98F1D095F7D29BF2CF97EECF96F8D398C1A8772A342A617C8EF3FDFFE9D4B4F6
+      CF9AF8D19AEACD98292405B5A280FFE7B8F2D198F1CE97F2D298F6D19BF6D19B
+      F2D297F6D199F7D19AF3D198F6D096FADA9FD4B17F61553746402E2D2A19171B
+      111515120600000300001C0F06130A000A00000B0404110F090C13061E21172A
+      2C2231312133321F1B1E0D3C3E2F393E281216110D0D0C1B1D1716160611170A
+      1B210E020B00121B0C3F3C283C4529444A31515240504F3952533D4B4E3A474A
+      353E3F2A0000C6D1EBC8D1EBC8D1EBC9D3ECCAD3ECCBD5EDCBD4EDCBD4EDCAD4
+      EDC9D3EDC9D3EDCAD4EDCAD3EECAD3EECBD5EECAD3EECAD4EECAD4EECAD3EECB
+      D4EEC9D2ECC9D2ECC9D2EDC8D1ECC8D2ECC6D1EBC8D1EBC8D1ECC6D1EBC5D0EB
+      C5D1EBC4D0EAC3CFE9C2CEE8C2CDE8C2CDE7C0CDE6C1CDE6C2CDE6C2CEE6C1CD
+      E6C1CDE6C2CEE6C4CFE8C4CFE8C5D0E8C5CFE8C5D1E8C4D1E9C6D1EAC9D1EBC8
+      D2EAC9D3EBC9D2EBC6D1EBC5D0EBC6D1EBCBD4EBCBD6ECCDD6ECCDD6ECCED7ED
+      CFD9EED0D9EECFD9EECFD9EFD0DAEFD0D9EFCFD8EFD1DAEFD0D9EFD0D9EFCED7
+      EECDD7EECDD6EECCD6EECCD5EECBD4EDC9D3ECC6D1ECC6D1ECC5D1EBC6D1ECC4
+      D0EBC5D0ECC3CFEBC1CEEBC0CCEBC0CCEBC0CCEBBFCCEBBECBEBBDC9EBBBC8EA
+      B9C7E9B9C6E9B8C5E9B6C4E9B6C4E9B8C5E9B7C5EAB4C3E9B5C1E8B5C2E8B4C1
+      E8B3C1E8B1C0E7B1C0E8B3C1E8B2C1E8B2C0E9B3C1E9B3C1E8B1C0E8B1C0E7B3
+      C1E8B4C2E9B4C2E9B5C3EAB5C3EBB3C1EBB0BFE8A8BBE7A5B9E7A2B6E492AADD
+      8099D9748FD96580D86582DA6683DB647FDA627ADD6582E06D8BE06A87DE6987
+      DC6F8DDC6B88DA6F8DDD7496E27597E47898E47996E67792E77B95E88198EA86
+      9CEB829CE77B97E17492DD547DCE254AA4172D7D122664122862324B898598BD
+      C4CBD2DEDDD0E6E1CEE7E3CEE5E3CFE5E2CEE5E2CDE6E2CDE6E3CCE6E3CCE7E3
+      CDE6E2CDE7E2CEE6E2CDE5E1CCE5E1CCE5E1CCE7E3CEE6E3CDE6E2CEE6E2CEE5
+      E1CDE7E2CEE7E3CEE6E3CDE7E3CEE7E3CEE6E3CEE6E4CEE6E3CDE6E2CFE7E4D0
+      E7E4CFE6E4CDE7E4CFE9E4D2E8E5D2E7E4D2E7E4D2EAE5D3EAE5D3E9E5D4E8E5
+      D3E9E6D4E9E6D4E9E5D5EAE7D5EAE7D5EAE7D5E9E7D5E7E6D5E8E6D6E9E6D6E9
+      E7D6EAE7D5EAE7D6E9E7D6E9E7D7E9E7D6E9E7D5E9E6D4EAE6D5E9E6D4E9E6D4
+      E9E6D4E9E7D5E8E5D3E8E4D2E7E5D3E6E5D3E6E4D0E7E4D3E6E3D2E6E3D0E6E3
+      D0E7E4D2E5E3D0E5E4D0E6E4D2E6E4D0E6E4D0E5E3CFE6E4D0E5E3CFE7E4D2E7
+      E4D3E7E4D2E7E4D2E7E4D0E7E4D2E6E4D2E7E5D2E6E4D2E7E4D2E7E4D3E7E4D3
+      E8E4D3E6E4D2E6E5D2E8E6D3E7E4D0E7E4D2E7E4D4E8E4D3E7E4D2E7E4D2E7E4
+      D2E8E5D3E8E5D3E7E4D2E8E4D3E8E5D3E8E5D2E7E4D2E8E6D4E8E5D4E8E4D2E9
+      E4D3E7E4D4E6E4D3E6E4D3E6E4D0E7E4D0E6E4D0E7E4D0E8E4D3E8E4D3E6E4D0
+      E5E5CFE5E4D0E5E4D0E5E4CFE5E4D2E5E4D2E5E4D2E6E4D3E6E5D2E7E6D2E6E4
+      D3E5E4D2E5E4D4E5E4D3E5E4D4E6E4D4E6E4D4E5E4D4E5E5D2E6E5D4E6E4D4E6
+      E4D5E6E4D5E7E4D5E6E4D4E6E5D2E5E4D3E6E4D4E6E4D2E6E4D2E5E4D0E5E4D2
+      E6E4D3E6E4D2E6E4D3E5E3D4E7E4D4E6E4D3E6E4D2E7E4D3E6E4D5E5E4D5E7E5
+      D6E7E4D5E6E4D4E6E4D5E6E4D5E7E5D3E6E4D4E6E4D5E7E5D5E8E4D6E8E4D6E7
+      E6D3E6E5D3E7E4D5E7E4D4E6E4D3E6E4D4E6E5D3E6E4D3E6E4D4E6E4D4E6E4D4
+      E5E3D2E5E4D2E7E5D4E7E5D4E5E4D2E5E4D2E5E4D3E6E4D2E7E4D0E8E4D2E6E5
+      D2E5E5D2E5E4D2E6E4D3E6E4D3E5E3D0E6E4D3E7E5D4E6E4D3E5E4D2E5E3D0E8
+      E7D7EEEDDAC8BFA48A815EBEBB99ECEBDBE5E4D5E5E4D2E5E4D2E5E4D0E6E5D2
+      E7E4D2E7E4D3E6E4D3E6E6D2E8E6D2E8E5D4E9E5D5E7E4D4E6E5D3E7E5D4E7E5
+      D4E7E5D4E6E4D5E7E4D5E8E5D6E8E5D6E6E4D4E6E4D5E8E5D6E9E5D6E7E5D5E7
+      E5D4E7E5D2E8E5D4E7E5D5E6E4D3E6E4D2E6E4D3E7E5D4E6E5D4E8E5D4E9E5D4
+      E8E5D4E9E5D4E9E5D4E7E5D4E8E5D4E8E6D4E8E5D4E7E5D4E7E4D3E6E5D3E9E6
+      D4E9E5D3E8E4D4E9E5D5E9E4D3E9E5D3E8E5D3E7E4D0E5E4D0E6E4D2E7E4D2E7
+      E3D2E8E4D3E9E5D2E9E5D2E8E4D0E8E4D0E8E4D2E8E4D2E8E4D0E7E4D2E6E4D2
+      E6E4D0E6E4D2E7E4D0E6E3CFE7E4CFE6E2CDE5E2CDE6E2CEE6E2CEE7E2CFE6E3
+      CFE6E2D0E6E3D2E6E3CFE8E4CEE9E5D0E7E4D0E8E4D3E9E5D4E7E5D2E7E4D3E8
+      E4D3E7E4D0E8E4D0E8E4D0E8E4D2E7E4D0E7E4CFE7E2D0E6E2D2E5E2CEE5E3CC
+      E7E3CEE6E2CDE6E3CEE6E3CEE5E2CCE5E3CEE6E3CEE7E4CFE7E4D2E6E4D0E6E4
+      D2E6E4CFE6E4D0E6E4D3E5E2D0E8E4D3EAE6D4EAE6D4E9E5D3E7E4D2E6E3D2E6
+      E3D2E5E2D0E5E1CFE5E2CFE5E1CFE5E0CDE5DFCEE6E0CFE5E0CCE5E0CDE5E0CE
+      E5E1CEE5E1CEE5E1CFE5E0CEE5DFCEE5E0CEE5DFCEE5E1CFE5E1D0E5DFCEE5DF
+      CEE5DFCEDCD6C1C8C5B8A4A991D9D4CB807C7ADBD0C8DDCAABE1C6B0D9C9ABD9
+      C8A9E1CDAF787561D9D4E3EBE9E4E8E9DDE7EAD48090737D8383A0A5A3A8A89A
+      E8D3C0E6CFACE7CCA9EBCEAEEBCFAEE8D2ABE7D0ACE5CEB2E2CFAFE4CFAFE6D1
+      ABE6CFABE5CCB1DDCCACDDC9ACE1C7AFDAC9AFCEC09B6A6A405F5E495E5C475B
+      5C4F82807A979689AFAFA3B2B3A6C4C6BCD6D4CFE6E5DDF1EFE7FBF7F2FFFDF6
+      FFFFF6A6A6917C827651523E585645675C4C806E5ABDA38EEBD1BAD4BB9A7277
+      80F1F3FDEBECE3F6F7EBC8CDB1B7A589F0D1A3F1CD9CEFCFA2F0CF99F1D197F0
+      CE93F3D198F1D095F1D199F1D198F3D198F2D296EED097F1D197F1CF97EFD096
+      F0D098F0D19BEFD099F6D1A3D1B9896C7056778381C8D4DAFDFFFFEDEDEAE1CE
+      ABEBD4A8EED2ABEBD1A9EED1ABEDD1ABF7DBB2AFA077999CA8F6F7FCF1F5EEF8
+      F7E4E0D2B2ECD4B4E9D8B67C8366556D6FA3BACAD9D9D2ECDBC3EBDBBFEBDBBF
+      EBDAC2EADDC4EADEC4ECDBC4EFDCC2EBDCC3EBDBC4ECE0C8EBDFC8F0E3CFD7CF
+      B366715D768681CBD3D6FEFFFF677868C3CCB7243223E5E7F1FAF7E474776AFF
+      F3EBFAE9CA6060496D6C62373D2A3538345C6262D8E0E4F0F0EBECEEDDA59968
+      BAA076CCB38D555551E6E9F0F1F1ECF8F9ECE0D5B059572E47422BE0BEA3F9D4
+      9FF0CE99F1CF97F1D097F2D197F1CD95F6D39BE2BD93E6DDD2E4E0CDC2B48CF3
+      D4A3F1D197F6D199F3CD91F6D199F1D097FFDBA57B6C4C3C4C4C70888FDDE6DF
+      E0C7A2F2D198FFDCA8927944594F32FDDCB0F1CF97F1D199F6D097F6D298F6CF
+      98F3CF98F1CE96F1D096F8D49CFFDAA8FFE6B4FDDEAC8E78513D3A226C5E4E1D
+      180E13141412120F13181112180F10120D16180D151A0F11170C12120E11120F
+      151B112A2A222023131B231310150E1C241D1D24180805020F0F0D141B192529
+      192C341D414929454C35525A424446294D513554533A4D503E51523C55503C52
+      523F56533E393B249769CBD5ECCCD6EDCDD5EDCED7EDCED7EDCFD7EECFD8EECF
+      D7EECED8EFCED7EECDD7EECFD8EFD0D9EFCFD8F0CFD8F0CFD8EFCED7EFCFD7EF
+      CFD8EFCED7EFCFD8EFCED7EFCED7EECCD6EECCD5EDCCD5EDCCD5EDCBD5ECCAD4
+      ECCBD3ECCBD4ECCAD2EBC9D2EBC8D1EAC6D1EAC6D1E9C8D1E9C6D1E9C8D1E9C6
+      D1E8C6D1E9C9D2EACAD3EACAD3EACBD4EBCDD6EBCDD5EBCCD4EBCDD5EBCCD5EB
+      CED7ECD0D8EDCFD8EDCFD7EDCDD6ECCDD5ECCED6ECCFD8EDD2DBEFD3DBEFD2DB
+      EFD3DCEFD4DCF0D4DDF0D4DDF0D4DDF0D4DDF1D5DEF1D6DEF1D5DDF1D5DDF1D4
+      DDF1D4DBF0D1DBF0D2DAF0D2DBF0D1DAF0D1D9EFCFD9EFCDD7EFCCD6EECCD6EE
+      CBD5EDCAD4EDCAD4EDC9D3EDC8D3EDC6D1EDC5D1ECC4D1ECC3D0EDC4D0ECC3CF
+      ECC1CDECC1CEEBC0CDECBCCAEBBCC9EBBDC9EBBCC9EBBBC8EBB9C8EBB8C7EABA
+      C7EABAC7EBB9C6EBB8C6EAB7C5EAB6C5EAB7C4EBB8C5EBB8C6EAB9C6EAB9C6EA
+      B8C6EAB9C7EAB8C6EBB8C6EBB9C6EBB9C7EBB8C7EBB9C7ECB7C6EBB5C4EBB5C3
+      EAB2C2EAA5B9E493A9DD7E97D96C87D56C89D96E8BDA6581D9647FDD6A85DF6C
+      89E06D8ADF7390DE6E8BDB6F8DDC7391DE7898E47C9DE6799AE77897E86C8EE4
+      6B8DE7809AEC869DEC849BE97E96E16E8ED9416AC11D3D9B17338412286B1125
+      63394D858E9DBCC5CBD3DADAD2E3E0CFE5E2CEE6E2CEE5E1CCE6E1CDE6E2CCE6
+      E3CCE6E4CCE6E3CCE6E2CDE6E2CDE5E1CCE6E1CCE5E1CCE6E2CDE6E2CDE7E3CE
+      E6E2CDE6E3CDE6E3CDE7E4CEE7E3CEE7E3CEE7E3CEE6E3CEE6E3CEE5E2CEE7E2
+      CEE8E4CFE8E4CFE8E4CEE7E4D0E9E4D3E8E5D2E8E5D3E9E5D3EAE5D3EBE5D4EA
+      E6D4EAE7D5E9E6D4EAE6D5EAE7D5EAE7D6E9E7D4EBE7D5EAE7D6E9E6D5E9E7D6
+      EAE7D6EAE7D5E9E6D5E9E6D5EAE7D7EAE7D7EAE7D5EAE6D5EAE6D5EAE6D5E9E6
+      D4E9E6D4E8E6D4E8E5D4E9E5D4E8E5D4E7E5D4E6E4D2E6E4D0E7E4D3E6E3D0E6
+      E3D0E7E4D2E6E4D2E5E3D0E6E4D2E6E4D2E6E4D0E6E4D0E6E4D0E6E4D0E6E4D0
+      E6E4D0E7E4D2E7E4D2E6E4D0E7E4D2E7E4D2E7E4D2E7E4D2E7E4D2E8E4D2E7E4
+      D2E7E4D2E8E5D3E7E4D2E6E4D0E7E4D2E6E4D0E7E4D2E7E4D3E6E4D0E7E4D2E7
+      E4D2E7E4D2E8E5D3E7E4D2E8E4D2E8E4D2E8E5D2E8E5D2E8E5D3EAE6D6E8E5D3
+      E8E4D0E7E4D0E7E4D2E7E3D2E8E4D3E8E4D0E7E4CEE6E3CDE8E4D0E8E4D3E6E3
+      D2E7E4D0E6E4D0E5E4CEE5E4CDE6E4D0E6E4D3E6E4D2E6E4D0E7E5D0E6E4D2E5
+      E4D0E5E4CFE6E5D2E6E5D4E5E4D3E6E4D3E7E4D4E6E4D4E6E5D4E6E4D4E6E3D5
+      E5E3D4E6E4D4E5E4D3E5E4D3E5E4D3E6E4D4E6E4D3E6E4D4E5E4D4E5E4D4E5E4
+      D2E5E4D2E5E4D2E6E3D3E6E4D5E6E4D4E6E4D3E6E4D3E6E4D3E7E4D5E6E3D4E5
+      E4D5E5E4D5E7E4D5E7E5D5E6E4D4E5E4D2E6E4D3E6E4D4E6E4D4E7E4D5E7E4D4
+      E6E4D4E7E5D4E6E4D4E6E4D5E7E4D5E5E3D3E6E4D2E6E4D3E6E4D3E6E4D4E5E4
+      D2E5E4D2E6E4D4E5E4D2E5E4D2E5E4D2E5E4D2E5E4D2E5E4D3E6E4D2E8E4D0E7
+      E4CFE5E4CFE5E5CFE5E4D3E6E4D3E5E3D0E5E4D2E5E4D2E5E4D2E5E4D2E5E4D2
+      E5E4D2E5E3CFE5E4D0F1EEDCF2EDD8EEEAD5E5E2CFE6E2D3E7E4D2E5E3D0E5E4
+      CFE7E4CEE7E4CEE7E4D0E6E4D3E7E6D2E8E5D2E9E4D3E8E4D3E6E4D3E6E5D3E7
+      E5D4E6E4D3E7E4D4E8E5D4E7E5D4E6E5D4E6E4D3E7E4D4E7E5D4E6E4D4E7E5D4
+      E7E5D4E7E5D4E6E4D3E6E4D3E7E5D5E7E4D3E8E4D2E6E4D3E7E5D4E7E5D4E8E5
+      D4E9E5D4E7E5D4E9E4D4E8E5D4E6E5D4E5E4D2E5E4D3E5E3D3E5E3D3E5E3D3E5
+      E4D2E8E4D3E7E4D3E8E4D3E9E5D3E8E4CFE9E5D5EAE6D5E9E5D4E8E5D4E8E5D4
+      E8E5D4E8E4D4E9E4D4E9E5D4E9E5D2E9E5D2E9E5D2E8E4D4E8E4D4E7E4D3E8E4
+      D4E8E5D4E7E4D3E7E4D3E8E4D2E8E4D0E8E4D0E7E4D0E7E4CFE7E4D2E6E4D2E7
+      E4D3E7E4D3E8E4D3E8E4D3E8E4D2E8E4D0E8E4D0E7E4CFE7E4CEE7E4D0E7E4D2
+      E7E4CFE5E3CEE5E3CFE6E3CFE5E3CDE6E3CFE5E2D0E5E3D0E6E3D2E6E2D0E6E3
+      CEE6E4CDE8E4CFE7E3CEE6E2CDE6E3CEE5E1CEE6E2D0E6E3D0E6E3D0E6E2CFE6
+      E2D0E6E2CFE5E2CDE6E3CDE6E3CFE5E2CFE6E3D0E5E2CFE6E3D0E5E3D0E5E2D0
+      E5E1D0E5E1CFE6E2CFE6E1D0E5E1CFE5E3D0E5E3CFE5E2CCE5E0CCE5E0CEE5E0
+      CFE5E0CEE5E0CEE5E0CDE4DFCCE4DECCE5DFCDE4DECCE4DECCE4DFCDE4DFCDE5
+      DFCDE5DFCDE4DFCCE0DAC5C2C1B5C9CAB6B9BBA3494C4CDED4CDDBC6A8DBC6AC
+      DAC5AADAC5ABD9C7AA7E755ED2CBD8EDEDEBE7EADEE9ECD7919B756F7C749CAA
+      B1949E92D5C5B1E5CEB1E8CEABE7CCAAE9D1AAE7D1ABE8CEA9E8D1ACE9D0AEE7
+      D1AEE5D1AAE6D0AFE6D0B1E0CBAEDDCAABE0CAACDCC8B3E0CDB0A69A718D865F
+      817C5B757357787F65929383989A8BA7ADABD0D3D3E4E4E0E5E4D8EBE7DBE5E3
+      D4B8BCB1676A5B393F31817F7697927F94937E817D616A6854575043544B3F5B
+      5B4E767A8CEFF3FDEBEDE1F9F7E9CED4B9999383ECCFAAECD0A0EFD09AF0D09C
+      F1D19DF0CF97F1D197F3D39AEED196F1D099F1CF9BEECF9BECD19BEFCF95F1CE
+      99F2CF9FF1D09BEBCF97EBCB97F6D5A48F8562767A75909D9CF1F7FDFEFCF89A
+      A69DE1CDB1EBD1AAEBD2AFECD1ACEDD1B1ECD1ACF6D7AFB8A87D949AA3F2F3FA
+      F7F5ECFCF7E8E2D7BAEAD6BCF1E0BCADA983566969526D86B1BEC4EEE0CEE7DD
+      C4ECDDC3EADABFEFDDC4E7DEC2ECDEC2EBD8BCEBD7B6EBDABDE9DEC3EAE1CAEE
+      DFC9707862808985D4DADAFFFFFFEDEBD7585D4CD3D9CA293228D1D3E6FFFCF6
+      AFAA88A29C95FEF3DC5653344547371E2519232A29596462D5DCE0F0F0EFF3F7
+      E7747149BDAA8EE6CAA455524BD8E4E8EEEEEAF1F4EBEEDDBEEBCB9687733E59
+      5535E4C2AAFAD6ACF1CF95F2D199F3D098F1D098F1D198F6D299E1C091CFC0AB
+      E5E4D9B29F71F6D6A2F1CE98F2D098F1CF95F7D398FEE0A9454733475B659EB0
+      B9D6C4A8EFCF97FFD9A7A88B5831250BDDC79AF3CD96F6CF95FAD8A0FEDEA9FF
+      E1AEFADBAAEECDA4D2B38EBC9C75A5886972644B423C2F4B4E3E3F402A191B0F
+      0A0C050D0F090C0E060C0E080B0D0B0C0E0D0D0E0A0E0F0B0C0F0D10120D1113
+      0D0E130D11170F1C2117242818161B1211170F272D243C3A2832331E2E331F21
+      2A1E494C394D4F37524D363B3C2743413247473050513951523D51503856523A
+      58533F5250394B4D38373A240000D0D9EED1DAEFD1DAEED2DBEFD2DBEFD3DCF0
+      D3DBF0D4DCF0D4DCF0D3DCF0D4DCF1D3DCF1D4DCF1D4DCF1D4DCF1D4DBF1D3DB
+      F1D2DBF1D2DAF0D2DBF0D2DBF0D3DCF0D2DBF0D0D9EFD0D9EED1DAEFD0D9EECF
+      D8EECFD8EDCFD7EDCED7ECCED6ECCDD6EBCDD6EBCDD5EBCDD5EBCDD5EBCDD5EB
+      CDD5EBCDD5EBCED6EBCDD6EBCFD7EBCFD9ECD0D9ECD2DAEDD1DAEDD2DAEDD2DA
+      EDD2DBEED2DBEED3DCEFD3DCEFD5DEF0D3DBEED3DBEED4DCEFD5DEEFD7DFF0D8
+      DFF1D8DFF1D9E0F1D8DFF1D8E0F1D8E0F1D8DFF1D8E0F1DAE1F2DAE1F2D8E0F2
+      D9E0F2D9E0F2D7DEF1D7DEF1D5DEF1D5DEF1D5DEF1D5DEF1D4DDF1D4DCF1D3DD
+      F1D2DBF0D1DAF0D0DBF0D0D9F0D0D8F0CFD8F0CCD6EFCBD5EECBD4EECBD4EECA
+      D3EEC9D3EEC6D2EEC6D1EEC6D1EEC4D1EEC3CFEDC3CFECC0CEECC0CEECC0CCEC
+      C0CDECC0CCECBFCCECBFCBECBFCBECBCCBECBCCBECBDCAEBBDCAEBBECBEBBECC
+      EBBECAECBECBECBECCECBECBECBECBECBECCECBDCBECBDCBECBDCCEDBECCECBF
+      CCECBFCCEDBDCAECB9C7EBB4C3EBA6BAE692A9DD889EDA7E99DB7793DA708DDA
+      6F8BDE6F8BDF6D8BE16E8BE16A88DA6987DB708FDE7692E07692E17293E27492
+      E26B8DE36687E37B93E88499EB879CEA819AE67693DF6389D63C66C12142A21C
+      388B152D761225653649848798BABCC5D2CFD3D2DADBCFE3DFCDE5E0CDE5E1CC
+      E6E3CDE6E3CCE5E3CBE5E2CBE6E3CCE6E3CCE5E2CCE6E2CDE6E2CDE7E2CEE6E2
+      CDE7E3CEE7E3CEE7E4CDE7E4CDE7E4CDE7E3CEE7E3CEE7E3CEE6E4CDE6E4CDE7
+      E4CFE8E4D0E9E4D0E9E4D0E8E5D0E7E4D0E8E5D2E7E5D2E9E6D2E9E6D3EAE5D4
+      EAE6D4E9E5D3EAE6D4EAE6D5EAE5D5EAE7D4EAE7D6E9E6D6EAE6D6EAE6D5EAE6
+      D5EAE5D4EAE6D5EAE6D5E9E6D5E9E6D5E9E6D6E9E6D6E9E6D5EAE6D5E9E5D5E9
+      E6D4E9E6D4E8E6D4E8E4D4E7E4D4E7E4D4E8E4D4E6E4D3E5E4D0E5E3D0E6E3D2
+      E6E3D2E6E3D0E5E3D0E5E3D0E5E3D0E6E4D2E5E3D0E5E4CEE5E4CEE6E4CFE6E4
+      D0E6E4D0E5E3CFE6E4D0E6E4D0E6E4D0E6E4D0E6E4D0E7E4D2E7E4D2E7E4D2E7
+      E4D0E7E4D2E6E4D0E7E4D2E7E4D2E6E4D0E6E4D0E7E4D4E7E4D4E6E4D0E5E3CF
+      E6E4D0E7E4D2E7E4D2E7E4D2E6E4D0E8E4D2E8E4D2E7E4D0E7E4D0E7E5D0E7E4
+      D2E7E4D2E7E4D0E6E4CFE7E4D0E7E3CFE6E3CEE7E4CFE6E3CFE6E3CEE7E4D0E7
+      E4D2E6E3D2E6E3D0E7E3CEE7E3CEE7E4D0E7E3D0E6E3CDE6E3CCE7E3CEE7E4D0
+      E7E4CFE5E3CFE5E3CFE6E4D0E6E4D3E5E3D2E7E4D2E7E4D3E5E4D3E5E4D3E5E3
+      D4E5E4D2E5E4D2E6E4D4E5E4D2E5E3D2E6E4D4E5E4D3E5E3D2E7E3D5E7E4D3E6
+      E4D0E5E4D2E5E4D3E5E3D0E5E3D3E5E2D3E5E3D3E5E4D2E5E4D0E6E4D3E5E4D4
+      E5E3D3E6E3D3E6E4D2E5E5D2E7E4D4E5E4D2E5E4D2E6E4D3E5E4D2E5E4D2E7E5
+      D4E6E5D2E5E4D0E5E4D3E6E4D4E6E4D4E5E3D4E5E3D2E5E4D2E5E4D2E5E4D0E5
+      E4D0E5E4D2E5E3D2E7E4D3E5E3D0E5E3D0E5E4D2E5E4D2E6E4D0E6E4CEE5E4D2
+      E5E4D3E4E4CEE5E4CEE6E4CFE7E4D3E7E4D2E5E3D0E5E4D2E5E4D2E5E4D2E7E4
+      D2E7E4D2E6E4D2E6E4CFE9E4CFE5E4CFE8E7D5E8E4D4E7E3CEE7E3D0E7E4D2E6
+      E3D0E7E3CEE6E3CEE5E4CFE7E4D2E7E4D2E6E4D0E7E4CFE8E4D0E8E4D3E7E4D3
+      E6E4D3E5E4D3E6E4D2E9E4D3E9E4D3E7E4D3E5E4D3E6E4D3E7E5D4E6E5D4E6E4
+      D3E6E4D3E6E4D3E6E4D3E7E5D5E6E4D4E7E5D3E9E6D4E9E5D4E6E4D3E7E5D4E7
+      E5D4E8E5D4EAE5D4E9E5D4E7E4D3E5E4D3E6E4D3E5E4D2E5E3D2E6E3D2E7E4D3
+      E6E4D3E5E3D3E8E4D4E8E4D4E8E4D3E8E4D3E8E4D0E8E4D3E8E4D3E8E4D3E8E4
+      D3E8E4D3E8E4D2E9E5D2E8E4D0E7E4D3E7E4D0E7E4CFE7E4CFE7E4D2E7E4D3E7
+      E4D2E6E3CFE6E3CDE7E4CFE6E4D0E7E4D0E7E4CEE6E3CEE6E3CEE6E3CEE7E4D0
+      E7E4D2E7E4D2E7E4D0E7E4CFE7E4D0E7E4D0E6E4CFE5E3CDE7E4CEE7E3CEE6E2
+      CFE5E1CFE5E2CCE5E1CDE5E1CDE5E1CDE6E2CDE5E1CDE5E0CEE5E0CFE6E1CFE5
+      E1CCE5E0CCE6E0CEE6E1CEE5E0CEE5E1CEE5E0CEE6E0CFE5E0CFE5E0CFE5E1CE
+      E5E2CCE5E0CEE5E0CEE5E1CCE6E3CDE6E1CFE6E1CFE5E2CFE5E2CFE5E2CFE6E2
+      D2E6E1CFE5E1CDE5E1CEE5E0CEE5E0CFE5E0CFE5E0CEE5E0CEE5E0CCE5DFCCE5
+      E0CDE5E0CDE5DFCDE5E0CEE5DFCDE4DECCE3DFCDE4DFCDE3DECCE5DFCDE5DFCD
+      E5DECCE4DECCE5DFCDE5DFCDE2DCC8C1C0B3E4E2D56A6E50544F5BD9CFCBD3C3
+      A0D7C2A7D3C1A8D3C3A8D3C4A379715ECFCAD9EBEBEBE8E8DFE6EADDB5BA8E73
+      7D6876858DD8E1E6B3AF99DEC8AAE0CCABE5CDAFE5CEACEFCFA6ECCEA6EAD0A9
+      E6D0AFE8D1B1E5D0AEE5CFB0E7CEB1E5CCAFE3D0B2DCC9AFDCCAAEDECCAFDAC6
+      A9D9C7AED7C5AAD6C6A7D4CAA9CDC4A677746AC1C6D8F8FCFCFFFFFFCACAB5DA
+      CDAFA6A57DA4ABA66D705A32372AA6A6A4ADAB8F7270545050364C49365F5C52
+      6F6D646B695F5E6A7CF6F2FDEDEEE4F6F4E4D8DDBE6F7068D9C5B8EDCFAAECCF
+      9DF1D09DEFCF9AF2D19BF1D299F2D199F2CF9BF1D199F0D199EDD09DF0CF9DF2
+      D09AF1D199F0CE9AF1D199F1CF9CFBD9A9BFAB7D727A6A8E9C9DE2E6ECF8F8F4
+      5663526C7986E3CEB7ECD2A8EDD2A7EDD0ACEFD1AEECD2B0F2D7B1B7A67E8A90
+      98F3F7F8F6F7F1FAF7EAE3DAC0ECDEC4EBDAC2CDC7A4607463576F78A0B2BFEA
+      E0D0E9DEC9E9DDC5ECDFC2EEDCC4EBDBC2EBDCC2EBDCC2ECDDC3EEDCC5EEDFC8
+      FBECD9B6AD95747D6E9AA6A6F9FDFFF2EEE9EBE4C55F5F49A8AEA431362CA6AB
+      C3F6EDEAE7DCC1494930F1E7D9545334393A29171E18171E1E57636AD3DCE1F1
+      F3EBF0F1E3CCBC91B29C6CC4AD80565449DCE1E7EBEEEBF6F5EBEADDB9F3D3A0
+      FFE1A96B5E30444332CDB79AF3D1A4F0D197F6CE97ECCF96F3D19AF6CD99EFD1
+      96E8C593D8CCB8DBD2C1C4AB84F3D1A3EFD097F3CE97F9DFA7D3B4773A3C302E
+      3A3A464B45F1D2A6F1CC96F9D7A73A2B0E666145FFE8C1FFE7B7FFEEC0F1D4A9
+      D0AE8C8871574A3E2E39211D190F0A1104000803000B0A030000005F62501219
+      090C12080B0D060B0F0A0C0E080C0D090A0F040E0F08080C080B0D0A080C0408
+      0E011116051D2116242C1834391D3F422A383A253435233635254C503940472F
+      2F301F242B1B444B2F5651364C4A343332192F3216484E32525536645F416D6A
+      476E6C4B504B38464935484B373E3B250000D5DEF0D6DEF0D7DEF0D7DEF1D7DF
+      F1D7DEF1D7DFF1D8DFF1D8DFF1D9DFF1D9E0F2D9E0F2D9E0F2D9E0F2D9E0F2D9
+      E0F2D7DEF2D6DEF1D7DEF1D7DEF1D7DEF1D6DEF1D5DDF0D6DEF1D5DDF0D4DCF0
+      D5DDF0D5DDF0D4DDEFD2DBEED2DBEED2DAEDD2DAEDD2DBEDD2DBEDD2DBEDD2DB
+      EDD1DAECD2DAECD1DAECD3DBEDD4DCEED4DCEED4DCEED5DDEFD6DEF0D7DEF0D7
+      DEF0D7DFF0D8DEF0D8DFF0D8DFF0D9E1F1D9E1F1D8DFF1D8DFF1D8DEF1D8DFF0
+      DAE2F1DBE3F2DCE4F2DBE4F2DBE4F2DCE4F3DDE4F3DCE4F3DCE4F3DDE4F3DEE4
+      F4DCE4F3DBE3F3DBE3F3DBE3F3DAE2F2DAE1F2DAE1F2DAE2F3DAE2F2DAE1F2D9
+      E1F2D9E0F2D7DFF1D6DEF1D6DEF1D5DDF1D4DDF1D2DBF1D2DBF1D3DBF1D1DAF1
+      CFD8F0CED7F0CFD7F0CDD6F0CDD7F0CCD5F0C9D3EFCAD5F0C9D3EFC6D2EEC6D2
+      EEC8D1EEC6D1EEC9D2EFC6D1EFC5D1EFC4D0EEC3D0EEC1CFEEC2CFEDC2CEEDC1
+      CFEDC0CFEDC1CEEDC2CEECC3D0ECC2D0EEC2CFEDC3CFEDC2D0EEC1CFEEC3CFED
+      C2D0EEC3D0EEC4D1EFC4D1EEC3D1EEC1CEEEC0CEEEBECDEEB4C4E9A2B7E28EA6
+      DC819BDA7C97DB7B95DC7893DF7490E06D89DE6280DB5F7EDA6786DA6988DB6F
+      8FDD7391E06E8BE0738BDF7B8FE37991E6879CEA89A1E9799AE37092DB698DD7
+      476FC52549A61E3B911B3783173176243A7A6479AAA0B0C9BAC5CFCACECEDADA
+      CDE3E0CDE6E1CEE7E2CDE7E2CBE7E4CCE6E4CDE6E3CCE5E3CBE6E2CDE6E2CEE7
+      E3CCE6E3CCE6E2CDE7E3CEE7E4CEE6E3CDE7E3CDE7E3CEE7E3CEE7E3CEE7E4CE
+      E7E4CEE7E4CEE7E4CFE8E4CFE8E4CEE8E4CFE8E4CFE8E4D0E8E5D0E9E5D0E9E6
+      D2EAE5D3E9E5D2E8E5D2EAE6D3EAE6D4E9E6D4EAE7D4EAE7D5EAE6D6EAE6D6EA
+      E6D5EBE7D6EAE5D5E9E5D4EAE6D5EAE6D5E9E6D5EAE6D5EAE6D5EAE6D4EAE5D4
+      EAE6D3E9E6D4E8E6D4E9E6D3E8E6D3E7E4D0E7E4D2E6E3D2E6E3D0E6E4D0E6E4
+      CFE6E4CFE6E4CFE6E4D0E6E3CFE5E3CFE5E4CFE6E4CFE5E3CEE6E4CEE6E4CEE5
+      E4CDE5E3CFE5E3CFE5E3CFE6E4D0E6E4D0E5E4CFE5E3CFE5E3CFE5E3CFE6E4CF
+      E7E4D2E7E4D3E6E4D0E6E4CFE6E4D0E6E4D2E6E4D2E6E4D2E6E4D2E6E4D2E5E3
+      CFE6E4CFE5E3CFE5E4CFE7E4CEE8E4D0E9E4D3E7E4D2E7E4CFE6E3CFE6E3CEE5
+      E3CEE5E2CEE7E4CFE7E4CFE6E4CFE6E4CFE7E4CFE5E3CDE5E2CEE5E2CDE6E3CD
+      E6E2CFE6E3D3E6E3D0E5E2CDE5E2CCE6E3CDE5E2CDE5E1CDE5E2CDE5E2CDE5E1
+      CEE5E2CEE6E2D0E6E2D0E6E2D0E5E2CFE5E1CEE5E3CFE5E3D0E5E2D0E6E3D2E5
+      E2D2E5E3D2E5E3D0E5E4CFE4E3CFE5E3D0E6E3D0E6E3D3E5E2D0E5E2D2E5E3D2
+      E5E3CFE5E3CFE5E3D2E5E3D2E5E3D2E5E2D2E4E1D0E5E3D0E5E2D0E4E2D0E5E3
+      D3E5E4D0E4E3D0E5E2D3E5E4D0E5E4CFE5E4D2E5E3D2E5E3D0E5E3D0E5E4D2E5
+      E3D0E5E4D3E5E4D3E5E3D2E5E2D2E5E4D3E6E4D3E5E3D2E5E3D2E7E3D3E6E3D0
+      E5E2CFE6E4CFE6E4D0E6E3D2E7E3D2E7E4D2E7E4D2E7E4D2E5E3D0E6E3D0E7E3
+      D0E5E3CFE5E3CEE5E4D0E6E4CEE7E3CEE6E3D0E7E3D0E7E3D0E5E3D0E5E3D0E7
+      E4D3E8E4D3E7E3D0E6E3D0E5E3D0E6E2CFE6E3CEE5E2CFE6E2CFE6E4CDE5E3CE
+      E6E3D0E6E3D0E6E2CEE5E2CFE5E4D0E7E4D0E6E3CFE7E4CFE8E4D0E7E4D2E8E4
+      D3E7E4D3E6E4D3E7E4D3E8E4D3E9E5D4E9E5D4E8E4D3E7E4D3E8E5D4E8E4D3E8
+      E4D3E7E4D2E7E4D3E7E4D3E7E4D3E8E5D5E8E4D4E7E4D2E8E4D2E8E5D4E7E4D3
+      E8E5D4E8E5D4E8E4D3E8E4D3E8E4D3E7E4D4E7E4D4E8E4D3E7E4D3E6E4D2E7E4
+      D3E7E4D4E5E4D3E6E2D3E8E4D3E8E4D2E8E4D2E8E4D2E8E4D2E5E4D2E7E4D2E8
+      E3D2E7E4D0E7E4D0E6E3CFE6E4CEE6E3CDE6E3CFE6E2CFE7E2CFE7E3D0E6E3CF
+      E6E3CEE6E3CEE6E2CEE6E1CEE6E1CDE6E2CFE6E2CFE6E2CDE5E2CCE5E1CDE6E3
+      CDE6E3CEE5E2CFE6E3D2E6E3CEE6E2CCE7E3CDE6E3CCE5E2CBE5E0CDE5E1CEE6
+      E2CCE6E0CCE6E0CCE5E0CBE5E0CBE5E0CDE5E0CDE6E0CBE5E0CCE5DFCBE5DFCB
+      E5DFCBE4DFC9E4DECAE4DECCE5DFCEE5DFCDE5DFCEE5DFCCE5DFCDE5DFCDE5DE
+      CDE5E0CDE5E0CCE5DFCEE6DFCEE7E1CEE5E0CEE6E0CEE6E0CFE5E2CFE5E1CFE5
+      E1CFE5E0CEE6E0CEE5E1CEE5E0CEE5DFCEE5E0CFE6E0CFE6DFCDE5DECCE5DECD
+      E5DFCDE5DECBE4DECBE4DECCE4DECCE5DECDE4DECCE3DECCE3DECAE5DEC9E5E0
+      CBE5DFCBE5DECCE5DECCE4DECCE3DECCE2DCC9C0BCAFE9E5D45F6044555466D8
+      D0CFCDBB98D4C1A6D2C4A5D4C3A9D7C8A67B7156C6C0CDF1F0EDE9E7DEE9EADC
+      D2D2A679835967797AC1CCE1D5DACFD0C3A8E6CCA9E7CDA9E5CCA9EBCDA4EAD0
+      A3EBCEA7E8CFB1E8CEB0E8D3B2E8CFB4E4CFAFE4D0AEE0CBAFE1C8AFDAC9AFDC
+      C7ACE0C9B0DAC7ACD9C6AADBC9B0DBC5AFC4B995525D4EA8B8CAC4D2DDC1D8DE
+      D9D6C0DDCFACCDC096A09D9A808272262B27C5C3CFECDDCAECDCBCF2E1BDD5C3
+      9884784C5A5635534D36676D7FEEF1FCEBECE4EFF3EBD7E3C6606E5FB8AC9DEF
+      D3ABEDCDA4F1CFA3EFD09AF1D199F0CF99F2D1A2EDD099F1D09CEDD09DEBCF9F
+      F1D1A0ECCE9AF0D1A3F1D19FF1D1A3F6D5A8D9BC907073557C8F8FCFD7E0FFFF
+      FFAFB692192F1852606CEAD5C8EBCEA5ECD1ABEDD1AAECCEABEDD1B1F1D6B9BE
+      AE88828693F9F7FAF7F1F1FAF7EDE5DCC7EBDECCECE0CDE4D6BA707D653F565D
+      99B4CADBD7CAEBDDCBE9DEC6ECDECAE9E0C8E9E1C9EADEC9EDDEC9F1E0CAEFE0
+      CEFCEFDDB0AB906A7162979C99F0F5F8F3F0E9E5E2CEF1E4CA726D4548523130
+      3925434D53E5DDE0F7E7CDB6A87E6C6B4C51513830321E171D14313A37556162
+      D3D7DFF9F5F1F6F1EAEFDBB5F7D8A0C5AB734F4D42D7DCE3ECEDECF2F5E9EBDD
+      BDEECF93F1D29AEDCD92695C2A3C3A1CDBB7A0FED6ABEECD95F1D197F2D096F1
+      D098F6D29BF3D298E9C591D6CBBDE2DCCFC2AE7EF7D5A4F0D197F9D6A26F623D
+      2F382C2C2D24DEC6B1FEDDB1E7C99C8A7152191B0F7B6E6C5F52453D36291F1D
+      13110F0B0C0B0614150D14161611171612180E15160E16160F131A1461655D30
+      352112170A10100C10100D0D100B0C0F080F1506111A0B1A22122D3324333A28
+      3D4531484C36505139545342504D3A3F3F25454A2E464A2D3F3C293B3A294A4E
+      3B4949393535242F34224D4E30544F364B493145422D413F29434A314B50345A
+      5B3E4F4D39464A35474C364A4C364647383D3E2A0000DAE1F1DAE1F1DAE1F1DA
+      E2F1DAE2F2DAE2F2DAE1F2DAE2F2DBE3F2DBE3F3DCE4F3DCE3F3DCE4F4DCE4F3
+      DCE4F4DBE3F3DAE2F3DAE1F2DAE1F2DAE1F2DAE2F1DAE1F1DAE1F1DAE1F1DAE1
+      F1DAE0F1D9E0F1DAE1F1D9E0F1D8E0F0D7DEF0D6DDEFD6DEEFD6DEEFD8DFEFD7
+      DEEFD7DFEFD8DEF0D9DFF0D8DFF0D6DEEFD8DFF0D7DFEFD9DFF0D9E0F1DAE1F1
+      DAE2F1DCE4F2DCE4F2DCE4F2DDE4F1DEE4F2DDE4F2DDE4F2DCE4F2DBE2F2DCE3
+      F2DBE2F1DEE4F2E0E6F3E1E7F4E1E7F4E1E7F4E1E6F4E1E6F4E1E6F4E0E6F4E2
+      E7F5E2E7F5E1E7F5E1E7F5E1E6F5E0E6F4DEE5F4E0E5F4E0E5F4DDE5F4DDE4F4
+      DEE5F4DDE4F4DCE4F3DBE3F3DBE3F3DAE1F2DAE1F2DAE1F2D8DFF2D8DFF2D8DF
+      F2D5DEF2D4DEF1D5DDF1D3DBF1D1DAF1D0DAF1D2DBF1D2DAF1CFD9F1CDD8F0CD
+      D8F1CDD6F0CDD6F1CDD6F1CCD6F0CCD5F0CBD5F0CBD5F0CAD3EFC8D3EFC6D1EE
+      C6D1EEC6D1EEC5D1EEC6D2EEC6D1EEC6D1EEC6D2EFC5D2EFC6D1EFC6D2EFC6D2
+      EFC8D2EFC8D3F0C8D3F0C8D3EFC8D3EFCBD5F0CAD5F0CAD5F1CBD6F0CBD5F1C6
+      D3EFB9C9EBACBFE6A2B9E297ADDF8DA3DD859DE18098E2738FE06A86DF5E7DDA
+      597AD76B87DA7792DF6A87DD6180DA6C86DC7990E28597E8879DE97D9CE47697
+      E07896DE6D8FD95078CA3257B12041991F3B8C1E367F1D357C324C8F6A82B39D
+      AFCABCC5CFD1D4CEE1DECEE8E0CEE8E1CBE7E3CCE7E3CCE6E2CBE5E2CBE6E2CC
+      E6E2CCE5E2CAE6E3CBE6E3CCE6E2CDE5E1CCE5E1CCE6E2CDE6E2CDE6E2CDE6E2
+      CDE6E2CEE7E2CEE6E3CDE7E4CEE7E4CDE7E4CEE7E4CEE7E5CEE8E4D2E9E5D0E8
+      E5D0E8E4D0E8E5D0E8E5D2E9E5D2EAE6D2EAE6D3EAE6D3E9E5D4E9E5D4E9E5D3
+      EAE6D5EAE6D5E9E6D4E9E5D4E9E5D4EAE6D6EBE7D5EAE6D4EAE7D5E9E6D4E9E6
+      D4E9E5D4E9E6D3E8E6D3E8E5D2E8E4D3E7E5D3E7E5D0E5E3CFE5E2D0E6E4D0E6
+      E4D0E6E3CEE5E3CEE5E3CEE6E3CFE5E3CFE5E2CDE5E4CDE5E3CDE5E2CEE6E3CE
+      E6E4CEE5E4CEE5E3CFE6E3CFE6E3CFE5E3CFE6E3CFE5E3CFE5E3CFE5E3CFE5E3
+      CFE5E2CEE5E3CFE5E3D0E5E3CDE5E2CEE5E3CFE5E3CEE4E2CDE5E3CEE5E2CEE5
+      E3CEE5E3CFE5E3CFE5E3CFE5E2CEE5E2CEE6E2CEE6E1CFE5E1CFE5E2CEE5E2CE
+      E5E2CEE5E2CDE5E1CDE5E2CEE5E2CFE5E3CFE5E2CEE4E1CDE5E2CEE5E2CFE5E1
+      CDE5E1CDE5E2CFE5E2D0E5E2CEE5E2CEE5E2CEE5E2CFE5E1CCE4E1CCE5E2D0E6
+      E2D0E5E2CFE5E2CFE6E3D0E5E2D0E5E2D0E5E2D0E5E1D0E4E1D2E5E2D3E6E3D2
+      E6E2D2E5E1D2E5E1D2E5E1D2E5E1D2E5E2D4E5E2D4E6E2D4E6E2D3E5E1D2E5E1
+      D2E4E3D0E4E2D0E5E3D2E5E3D3E4E3D2E5E3D3E5E2D3E5E2D2E5E2D0E5E2D2E5
+      E1D2E5E1D2E5E3CFE5E2CFE5E2D3E5E3D3E5E2D2E5E2D2E5E2D0E5E2D2E5E2D2
+      E5E3D2E4E1CFE5E2D2E5E2D3E5E2D2E5E2D2E5E3D3E5E3D2E5E3D0E5E3D0E7E2
+      D3E6E3D0E5E1CFE6E2D0E5E2CFE5E2CFE6E3D0E6E3D0E5E2CFE6E3D0E5E2CEE5
+      E1CFE5E1CFE5E1CDE5E2CEE5E1CFE5E2CEE5E2CDE5E2CEE5E1CEE6E3D0E6E2CF
+      E5E1CEE6E2CFE5E2CFE5E2CFE5E2CFE5E2CFE5E2CFE5E1CFE5E1D0E5E2CFE5E2
+      CCE4E0CBE5E2CEE5E2CFE5E2CFE5E2CFE6E3D0E6E3CEE5E2CCE5E2CDE6E3D0E6
+      E3D0E6E3D0E7E4D2E7E4D2E7E4D2E7E4D2E7E4D2E8E4D3E7E4D2E7E3D0E8E4D3
+      E8E4D2E8E4D0E7E4CEE8E4D0E8E4D3E8E4D3E9E5D3E8E4D2E8E4D3E8E4D3E7E4
+      D2E8E4D3E8E4D2E8E4D2E7E4D2E7E3D3E8E4D3E8E3D3E7E3D3E8E4D2E8E4D2E7
+      E4D2E5E3D3E6E3D4E6E3D3E6E2D2E7E4D2E7E4D0E6E3CEE7E4D0E6E3D0E5E4D0
+      E6E4D0E7E2CFE6E2CFE6E3CFE5E2CFE6E3CEE5E2CDE5E1CDE5E2CFE6E2CFE5E1
+      CFE6E1CEE6E1CDE5E0CCE6E1CEE6E1CFE5DFCEE5E0CEE5E0CEE5E0CCE5E0CAE5
+      DFCEE5E1CCE5E1CCE5DFCDE5E0CEE5DFCCE5DFCCE5E0CCE5DFCBE5E0CBE5DFCB
+      E4DFCBE4DFCAE5DFCAE6E0CAE6E0CAE5DFC9E5DFCCE5DECDE5E0CBE5E0CBE5DF
+      C9E5DFC9E5DEC9E5DFCAE5DFCAE4DEC9E4DECCE4DECCE4DECCE5E0CAE5DFCDE5
+      DFCDE5DFCCE5DECDE5DECDE5DFCAE5DFCAE6DFCBE5DECDE4DECCE4DECCE3DFCC
+      E5DECCE5DECDE4DECCE4DFCDE4DECCE4DECDE4DECDE4DECDE5DECCE5DECAE5DE
+      CBE5DECCE5DDCAE5DECBE5DECCE3DECBE3DDCAE3DECCE4DECBE4DECBE3DEC9E5
+      DEC9E5DECAE5DECAE4DDCBE5DDCAE5DDCBE4DCCCE2DBC9B8B2A3BABBA94D533E
+      484459D5CDCBD4C0A0D6C1ABD6C5A9DDCAAEE0D0B2867E5BB4B0B8F7F3F4E9E9
+      DFE9E9DBE8E2C1B2AE8B626F6093A3B8DBE4F5DCDBCAE8CEA9E6CDA7E9CEA8EB
+      CFABEBCFA9EAD0AAE9D1AEE6D1B4E8D1B5E6D1B0E6D1AFE6CFB0E1CCB1E0C9AF
+      DDCBB0DBC8AED9C6ACDEC6ACDBC7AEDBC9ACD8C1A6BEB49646524196A2BCCDD8
+      DBEAEEF3E2DCC5D7C5A9D1C69C53534350554C2D322CB8B9C9E5DECDDBC8AAE7
+      CEACF1DAB3FFE8BDFFE7BAD1C190585C62E8EDFAEBEDE6EFF1E7ECEDDA8E9E96
+      A0A290E8CCAEF0D4A5ECCFA3EFCF9FEECF9AF0D09AEACE99F0D09FEDD09DECD0
+      A0EED1A3EBD0A3ECD0A5EBCEA5EBCDA0EBCE9FE5C99C867D5A818671ACB6BCF2
+      F7FBFAF9F8A7B3952C3724363F3ED3C1B9F1D6BEEAD1B1E8D1B3EBD3B0ECD4B4
+      FAE2C1B3A081808090F2F7FAF7F3F1FEFAF1E0E0C6EDDFD0EADCCDF0E7CB737A
+      58465A5D819BB2DEE2DAE4DFCAEADDCCECDECCE9DFC9EBE0CBEBDECAEDE1CBEC
+      E3C8EDE4CED7CCB5666C5B7B8778D4DBDFFFFFFFE5E0D0EEE3D0F3E9D06B6945
+      534E382E3424474950E8D9DDE9D7BFFFF2CA6E6541374030292D1E32372E4144
+      4E4F5B63D1D9E2ECF0F3EFF3E4CCB98FFCDDB7EED29D464A41CED7DDECEEEAFA
+      F2F1EBDBBCEDD09CEFCF96F6D29BF3D1997E6835504A32E2C4ACF7D1A9F0CF99
+      F1CE98F1CD95F1CD98F1CE97F2D199DABB8BDBD1C6C6C5AFB1A47EFCDCACCCAC
+      7F3C3A29202D2B3538327D6D68544835352A1E181A131618120B0B0A0F0D0E0C
+      0F0E1118110F13161518141716160F1413111612131614111611161911737971
+      6B71600C0F001820141B2014313728454D34525C41636A536265496D6D4E6661
+      4560654F62614E645F455A5A475959425452363333183D3F2247432948462A41
+      3F214542284D4F3E484A3337371D4A472F5651395754364D4D3051563D3D462B
+      515A404B4E3C454B2F4B5132595D4B626E586C74686A6A589769DDE4F2DEE4F3
+      DDE4F3E0E5F3DDE4F3E0E5F4DDE4F3DEE4F3E0E5F4E1E6F4E0E5F4E0E6F4E1E6
+      F5E1E5F4E0E5F5E0E5F4DDE4F4E0E5F4DEE4F4DEE4F3DDE4F3DEE4F3DDE4F3DE
+      E4F3DEE4F3DCE4F2DCE4F2DCE3F2DBE2F1DBE3F1DBE2F1DAE1F1DAE2F1DBE2F1
+      DBE2F1DBE2F1DBE2F1DBE3F1DCE3F1DCE4F1DCE4F1DCE4F1DDE4F1DEE4F2DDE4
+      F2DEE5F2E0E6F3E2E7F4E2E7F4E2E7F4E1E7F4E1E7F3E2E7F4E3E8F4E2E7F4E1
+      E6F4E1E6F4E0E5F3E2E7F4E4E8F5E5E9F5E5E9F5E5EAF5E5E9F5E5E9F5E5EAF5
+      E5E9F5E4E9F5E5E9F5E5E9F5E5EAF5E5E9F5E4E9F5E5E9F5E4E9F5E4E9F5E4E8
+      F5E3E8F5E3E8F5E2E7F5E1E7F5E0E6F5DEE5F4DEE5F4DDE4F4DDE4F4DDE4F4DB
+      E4F4DBE3F3DAE2F3DAE1F3D9E0F3D9DFF3D7DEF3D6DEF2D5DEF2D6DEF2D4DDF1
+      D2DCF1D2DBF2D2DAF1D2DAF1D2DBF1D0D9F1CFD9F1CED9F1CED9F1CED8F1CDD7
+      F1CCD7F1CCD7F1CDD7F1CBD5F0CAD5EFCBD5F0CBD5F0CCD6F0CCD6F0CCD6F1CB
+      D6F0CBD6F0CBD6F0CDD8F1CCD7F0CDD8F1CED8F1CED8F1CFD9F1CFD9F1D0D9F1
+      D0DAF1D0DAF1CFDAF1CDD8F1CAD6EFC2D0ECB4C3E7A4B7E39BB1E396A9E38EA1
+      E4778FDF617FDB5777D65C78D66983DA6A86DD6180DA617FD9728DDF8199E885
+      9AE7829BE47B97E17696DD6E90D95C85D2426BC22E4DA91F3B921936861B367E
+      213B85425B9B7288B4A0AEC6C3C9CCD8D6CEE2DDCCE6E0CBE7E1CBE7E1CBE7E0
+      CBE7E1CBE7E2CAE6E0CBE5E1CCE5E3CBE5E2CBE5E1CCE5E1CCE6E1CCE6E1CCE6
+      E1CCE6E1CCE5E1CCE5E1CCE5E2CCE8E4CDE7E3CDE7E3CEE7E3CDE7E4CFE9E4D0
+      E9E4CFE9E5D0E8E4D0E8E4D0EAE4D2EAE5D2EAE4D2EBE4D2EAE4D2E9E4D3E9E5
+      D3EAE5D4E9E4D2E9E5D3EBE7D4E9E5D3E9E4D3E9E4D3EAE5D2E8E4D0E8E5D0E9
+      E5D2E8E4D2E7E4D2E8E3D0E7E3CFE5E3CEE5E2CFE5E3D0E5E2CDE5E2CEE5E2CE
+      E5E1CEE5E1CFE5E0CEE5E0CEE5E1CEE5E2CEE5E1CEE5E1CDE5E2CCE5E2CDE5E2
+      CBE5E2CBE5E3CDE5E2CDE5E3CDE5E3CDE5E2CDE5E2CEE5E2CEE5E1CDE5E1CDE5
+      E1CDE5E2CEE5E1CDE5E1CCE4E2CBE3E2CBE4E1CDE5E2CEE4E2CDE4E1CCE5E1CD
+      E5E2CEE5E1CEE5E2CDE5E2CFE5E1CEE3E1CDE4E1D0E5E2D0E4E1CDE5E2CDE5E1
+      CDE5E1CCE5E1CEE4E0CEE4E0CDE4E0CEE5E1CFE5E1CFE4E0CFE4E1CEE5E2CFE5
+      E3D0E5E1CFE5E1CFE5E2CEE5E2CDE5E1D0E5E1D0E6E3D0E6E3D0E6E2D0E5E2D0
+      E5E1D0E6E2D2E6E2D0E5E1D0E6E3D2E6E3D3E6E2D0E5E2D0E5E2D3E4E2D3E4E3
+      D3E5E3D2E5E2D3E5E1D3E4E3D3E5E3D3E5E3D4E5E3D7E5E3D6E4E3D7E5E3D6E5
+      E3D5E5E3D6E5E3D4E5E2D3E5E3D4E5E3D3E5E3D3E5E3D3E6E3D6E5E3D5E5E3D3
+      E5E2D2E5E2D2E5E3D2E5E2D3E5E2D3E5E2D2E5E3D3E5E3D3E5E1D2E5E2D3E5E2
+      D2E5E2D2E5E2D3E4E1D3E5E2D2E5E3D3E5E2D2E5E3D3E5E2D2E4E1D0E4E2D0E5
+      E1D0E5E1D0E5E2CFE5E2D0E6E2D2E5E0D0E5E0CFE5E2CFE5E2D0E5E1CFE5E1CE
+      E5E2CEE5E1CFE5E0CFE5E1CFE5E2CFE5E1CDE5E2D0E5E0CFE5E2CFE5E2CFE6E3
+      D0E5E2CFE5E1CEE5E1CEE5E2CEE5E2CFE5E2CFE5E1CFE5E0CEE5E0CEE5E2CEE5
+      E2CFE5E1CDE4E0CCE5E2CEE5E2CFE5E2CFE5E2CFE5E2CFE5E2CFE5E2CEE5E2CF
+      E5E2CFE5E2CEE5E2CFE5E2CFE6E2D0E7E3D0E5E2CFE5E2CFE7E4D2E7E4D2E6E3
+      D0E7E4D2E6E3D0E7E3D0E7E4D2E7E4D2E6E3D0E6E4D0E7E4D2E7E3D2E7E3D2E7
+      E4D2E6E3D0E7E4D2E6E3D0E6E3D0E7E4D2E7E3D3E7E3D3E6E3D0E6E3D0E6E3CF
+      E6E3D0E6E3D0E6E2D2E6E2D2E6E2D0E6E3CFE6E3D0E6E2D2E5E2CFE6E3D0E5E2
+      D0E6E2D0E6E3D0E5E1CFE5E1D0E5E2D0E5E1D0E5E2D0E5E2CFE5E1CFE5E2CFE5
+      E1CFE4E0CEE5E0CEE5E0CEE5DFCDE5DFCDE5DFCDE5E0CEE5E0CEE5E0CEE5E1CB
+      E5E0CBE5DECEE4DFCCE5E0CCE5DFCFE5DFCDE5DFCDE4DECDE5DFCEE5DFCEE5DF
+      CEE4DFCBE3DFC9E3DEC9E5DEC8E5DECAE5DECCE5DECBE5DECBE5DECBE5E0CAE6
+      E0CBE5DFCAE4DEC8E4DEC8E5DECAE5DFC9E4DEC9E5DECBE5DECBE5DECBE5DEC9
+      E5DECCE5DECDE5DECCE5DECCE5DECCE5DECBE5DECAE5DECAE4DECCE4DECCE4DE
+      CCE3DFCDE4DECCE3DECBE4DECDE4DECDE2DDCCE3DECDE3DECCE2DDCBE5DDCBE5
+      DDCBE5DDCBE5DDCBE5DDCAE4DDCBE5DECBE4DDCAE4DDCAE5DDCBE4DCCAE4DDCA
+      E4DDCAE4DDCAE4DCCAE5DECAE5DECAE3DBCAE4DBCBE4DBCBE3DAC8AAA6898A8D
+      725F64553D3E4CD5CCCFCFBA9AD3BDA6D8C6A9DEC9B2DDCDB08A8160A5A0AEFB
+      F7FAE7E9E0EAE8DCE5D5B6E4D8AB7D805E6F7E8CB5C5E1E4EBEBD7C8A4ECD1AE
+      E9D1ACE8D1AAEBD0A9EBD1B1E6D1B6E7D1B5E9CFB6E5D0B3E5CFB0E6D0B3E3CD
+      B1E1CCB2DBC7AED9CAB2D5C6ABD9CAB0D9C5AECFBEA6DDC6B09B9C7F6A786C88
+      9DABC9D6E7EEF1F1D0C5A8DAC8B2D1C59A5A5C393F4A392E3830A2A8BCEAE1D3
+      DAC8ABE1CDB4E1CEB2E4CEB0EBD4B0DBCCA6535955E6EAF4EEEEE6EDF1E3EBED
+      DA6F8389CED9DDD1C8AAE8CFABEBD1A8EFCFA6ECD29FEDD1A4F1D0A7EBD1A2ED
+      D0A7EFD0A4EECFA6EECFA9EACEA9E5CEA7E7CCABF6DAB59D9372727A71909A97
+      F1F7F9FFFFFBA5AB90ABB29C292A185C60615F5A5AE5D4CCEBD5BEEBD6BDEBD5
+      B7EED7BDE8D5AF7C795D7C818EF7F7FDF8F7F1FEF8F1E7E1CAE9DECCECE1CAF6
+      E9D7ACAC8B4A59485B7688D3E4EAE4DDD4ECE0CAEBE1CBEDE0CFEDE0CFEEE1CE
+      EEE2CEEFE4D3F0E4CE888D7A777F7AA4B2B0F8FCFCF1EDE4EAE4D4F0E5D4F9ED
+      D56A6B484F4E34312F2343424AE3D6D8F1DCC2E3D1AF616245444B372B311D1A
+      22180E13154F595FCED9E0EFF2EDF7F8E9ABA476C6B087F1D4AA474539CDD0DC
+      F0F1EDF3F7EDEBDDBDEFCC98F0CD97F0CE97F9D59BF1D39647421A45452FE1BC
+      A8F9CF9CF0CA90F2D09BFDD9A0FFDBA6FAD3A0F2D0A5C0AA8BE5E8E4C6C7B5AD
+      9E7458563F282F241E252518211A171E161B1D1C101A15121911151A15131914
+      131916151B16101911151E15111314101A17161B16171E161319161418151920
+      163E463E3E463A808D735963486E715870765D70735D7574605860414A4F405B
+      5E4B625B4560604865634C5C5F3E575A405B553A58543D3534197E714EAF9F6E
+      74654C8F7F609B8762564C3A5C55425E52404C4A2F625B43605B475C6245595E
+      453F472E4F53436066506571606F7A6C747E716B776B6E7E6E6A73630000E2E7
+      F4E3E7F4E3E7F4E2E7F4E2E7F5E3E7F5E3E7F5E3E7F5E3E8F5E5E8F5E5E8F5E5
+      E9F5E5E8F5E4E8F5E4E8F5E3E7F5E4E8F5E4E7F5E2E7F5E2E7F4E1E6F4E2E7F4
+      E1E6F4E2E7F4E1E7F4E1E6F3E1E6F3E0E6F3E1E6F3E0E5F2E0E4F2E0E5F2E2E6
+      F3E0E5F2E0E5F2E0E5F2E0E5F2E1E6F2E1E6F2E2E7F3E2E7F3E3E7F4E2E7F3E2
+      E7F4E4E8F4E3E7F4E4E8F5E5E9F5E5E9F5E5E9F5E4E9F5E5E9F5E5E9F5E6EBF5
+      E6EBF5E6EAF5E5E9F5E5E9F5E6EAF5E7EBF5E8ECF6E7ECF6E8EDF6E8EDF6E8ED
+      F6E8EDF8E8EDF8E8EDF8E8EDF8E8ECF6E8EDF8E8EDF8E7ECF6E8ECF8E7ECF8E7
+      ECF6E6EBF6E7ECF8E7EBF8E5EAF6E5EAF6E5E9F6E2E7F5E2E7F5E2E7F5E2E7F5
+      E2E7F5E2E7F5E1E6F5DEE5F5DDE4F5DCE4F5DCE4F4DCE4F5DBE3F4DAE2F5DAE1
+      F4D9E0F3D8DFF3D8DFF3D6DEF3D6DEF3D6DEF3D6DEF3D4DEF3D3DDF2D3DDF2D3
+      DBF1D2DBF1D1DBF1D2DBF1D2DCF2D1DAF1CED9F1CFD9F1CFD9F1D0DAF1D0D9F1
+      D0DAF1D1DAF1D1DBF1D2DCF2D1DCF1D0DBF1D2DCF1D2DCF1D2DCF2D3DDF2D4DD
+      F2D4DEF3D3DDF2D1DCF1D5DEF2D6DEF3D6DEF3D5DEF3D3DDF1CAD5EEBDCBEAAF
+      BFE4A2B4E29AADE38FA4E27893E16381DA607DD76280D86581D8597CD6567AD6
+      6B89DB829AE2879DE4849CE47B99E07392DB7390DA6C8DD85880D03E66BE2749
+      A3213D8F1E398818327F20367E405998758BB7A2B1C7C4CACED5D5CCE1DCCAE6
+      E0CBE7E1CCE5E2CBE5E2CAE5E0CBE6E1CBE6E1CAE6E1CBE8E1CCE8E1CCE7E1CB
+      E7E1CBE8E2CCE8E1CBE7E2CCE7E2CEE6E2CCE9E3CBE9E3CDE9E3CDE9E3CEE9E4
+      D0EAE4D0EAE4CFEAE4CFE8E4D0E9E4D0E9E4CFEAE4D0E9E5D2E9E4D0EBE4D0EA
+      E4D2E9E4D2EAE4D3EAE4D2EAE4D2EBE5D4EAE5D3E8E4D2E8E4D0E9E5D3E9E4D0
+      E9E3D2EAE4D0E9E4D0E7E3CFE5E2CFE5E3CEE7E2CEE6E1CEE6E1CEE6E0CDE5E1
+      CDE6E2CEE5E1CDE5E0CCE5E0CCE6E1CDE6E1CCE5E0CBE5E2CDE5E3CDE5E1CCE6
+      E1CCE6E0CBE5E1CCE5E1CDE5E1CDE5E1CCE5E1CCE4E1CCE5E2CDE5E1CDE3DFCB
+      E3DFCBE4E0CCE4E0CCE4E0CCE4E0CCE4E0CBE3E0CBE4E1CDE4E1CDE4E0CDE5E1
+      CEE5E0CEE5E2CDE5E1CEE5E1CFE5E1CEE5E0CFE5DFD0E4DFCFE4E1CFE4E0CDE5
+      E0CEE5E1CFE5E0CFE5E1CFE5E1CFE4E0CFE4E0CEE4E0CEE5E0CEE5E0CFE5E1CF
+      E5E1CFE5E1CFE5E2D0E5E3D0E5E1CCE5E1CDE5E1D0E5E2D0E5E2CFE6E3D0E5E2
+      D0E6E1D2E6E1D2E6E2D2E6E2D0E5E1CFE5E2D0E5E1D3E6E2D3E5E1D2E4E2D2E5
+      E2D3E4E2D3E4E1D3E4E2D3E5E2D4E5E2D3E5E2D3E5E2D5E5E3D5E5E3D5E4E3D4
+      E4E3D4E4E3D4E4E3D5E5E4D4E4E2D5E5E3D6E5E3D6E5E3D6E5E3D5E4E3D4E5E3
+      D5E6E3D4E5E3D3E5E2D3E5E3D4E6E3D5E5E3D3E4E1D0E5E2D2E5E2D2E4E1D2E5
+      E3D0E4E1CFE4E1D2E5E2D4E5E2D3E5E3D3E5E3D3E5E2D2E5E3D3E5E2D2E4E1D2
+      E5E2D0E6E2D2E6E2D2E5E1CFE5E1D0E6E1D2E5E2D0E5E1CFE5E0D0E5E1D2E6E1
+      D2E5E2CEE5E2CFE5E2CFE5E2D0E5E2CFE5E2CFE5E1CFE5E2D0E5E1D0E5E1D0E5
+      E2CFE5E2CFE5E1CFE5E1CEE5E2CFE5E2D0E5E2CFE5E2CEE5E1CEE5E1CFE5E1CF
+      E5E2CEE5E2CFE5E2CFE5E2CDE5E2CDE6E3CEE5E2CFE5E2D0E5E2CFE5E2CFE5E2
+      D0E5E2D0E5E2CFE6E3D0E6E3D0E6E2D0E7E3D0E7E3D2E6E3D0E7E4D2E7E4D3E6
+      E3D2E6E2D2E7E4D2E6E3D0E6E3D3E6E3D2E7E3D2E7E3D2E6E3D2E7E3D3E6E3D3
+      E6E3D3E6E3D3E6E3D2E6E3D2E6E3D2E6E3D0E6E3D0E6E3D2E6E3D2E7E4D0E5E2
+      D0E5E2D0E5E2D2E6E3D2E6E2D0E6E1D3E6E1D3E6E2D0E6E3D0E6E2D0E7E3D2E6
+      E2D2E5E0D0E5E1D0E5E2D2E6E2D2E6E2D3E6E2D2E5E1D0E6E1D2E5E1D0E6E1D2
+      E5E1D0E5E1D0E5E0CFE5E0CFE5E1CFE5E0CFE5E0CEE5DFCDE5E0CEE5E0CEE5E0
+      CDE5E1CEE5E1CFE5E0CFE5E0CEE5E0CDE5DFCDE5DFCDE5DFCDE5DFCDE5E0CEE5
+      E0CEE5E0CCE5DFCBE4DFCBE4DECBE5DFCCE5DECCE3DECBE5DECAE5DECBE5DECA
+      E5DEC9E5DECBE5DEC9E4DEC8E4DEC8E5DFCAE5DEC9E5DEC9E5DEC9E4DDCBE3DE
+      CBE5DEC9E5DECAE5DEC9E5DEC9E5DECBE5DECDE5DECDE4DECBE4DECCE4DECDE4
+      DECDE4DECDE4DECEE4DECDE4DECDE3DECCE3DECCE4DECCE4DECDE4DECDE2DECC
+      E4DECCE4DDCCE4DDCCE4DDCCE4DECDE3DDCCE4DDCBE5DECBE4DDCBE4DCCAE4DD
+      CAE5DECBE5DECBE4DDCAE5DECCE4DECAE4DEC9E4DDCBE4DDCBE3DDCBE1DBC9C9
+      C5AF8F937256574B3C3F4CD1C6CED3BDA4DAC7AADCC6ACDAC4A8DDCBB284795F
+      A2999FFAF4FAE9E7DEE7E9DCE1D9B7E7D7ABA7A47C66737797A4C0E1E8F5D7CD
+      ABE4D1B0E5CDAAE9D1B0E7CFB3EAD1B3E4CCB0E5D2B6E5D0B7E4CEB6E4D0B2E6
+      D1B4E1CBB3D8CDB2D9C8AEDCC9B2DAC7B0D7C5AFD8C5AACFBA9DE8D6B97E816B
+      6C7677DCDFEBF8FAFBDEDDCBD2C5A6DCCAAEC9BD9A8E937A5664453939308D96
+      AEE0DAE1D8CBB6E4CFB2E5CEB3E5CFB6DDCFB1DDCDA9555351E4E6EBEFEFEAEC
+      F0E3ECEFD7576C6CB3C8DAE6E7DCE3CFACEED0ACEBCDA0EED4A6EAD1ABE9CEA5
+      F1D0A8EBCEA4EFD2AAECD0ACE9D1ABE5CFA9E8D0AFE8D2B5DCCCA67277647D83
+      83CBCED7FFFFFFEBE8D08C896FC8CCB21A1B0A828B8E7D7F6A928A81EBD8C7E9
+      D6BAE8D4BCF0DBC18E8669B1B39B6A6D77F3F8FCF6F7EFFFFAEFE7E2CAE8DECA
+      EBDFCCEFE5CFE7DCBF545E4549646CBFD6E2DADCD8E8DECCEEE1CDEDE2CEEDE1
+      CDEBE1CFECE6CEFFF8E4A1A1896471688F9D9CFBFDFFF6F2E6E8E1CBF1E6D6F0
+      E4D3FDF0D86B6B3F4D4E362D3424362D3ADAD0CEEBD3B8403B1ED0CCAC726C50
+      2C3621151D1313131648515AD1D5DCF1F1F0F2F3EBEAD6AFE2C691B1A06C474A
+      3EC3C8CFECEDE8F0F2E9E6DABEEFCF9BECCD93F1CF9FEECD9BEDCE96E9C78C5E
+      4E1E36331BE8CAB8FFEDCDF6D5B5B69C7F7563475B4C3A47493E2D342B6F8B90
+      CDDADECACEBF38472A243125182021171E16151D16161B1613211B15201B1D26
+      241D26261E221C1C2318141F1615221A2D3F38566D5B909C8BA2AB9CB4BCB250
+      635341513E6F816FDCE4DBE6E7DCB0BBA5949D856D755D656A556C705B51533B
+      32331D474B3462664E67655069644A6365446A644969614E494F3833331D7576
+      5F91866C655B475A543E59543D54523A4B4A3232321E5757434F51414B524358
+      5B4F3F48355456445E5C4F6D7665747D6E747D6F6E7F6D747D6D707E6E657662
+      0000E6EAF5E6EBF5E5EAF5E6EBF5E6EAF5E5EAF5E6EBF6E7ECF6E7ECF6E7EBF6
+      E8ECF6E8ECF6E8ECF6E7EBF6E7ECF6E7EBF6E6EAF5E5EAF5E6EAF5E6EAF5E5EA
+      F5E6EBF5E5EAF5E5E9F5E5E9F5E5E9F5E5E9F5E5E9F4E5E9F4E5E8F4E5E8F4E4
+      E8F4E5E8F4E4E8F3E4E9F4E5E9F4E4E7F3E5E9F4E5E9F4E5EAF5E5EAF5E6EBF5
+      E6EBF5E7ECF5E7ECF5E7EBF5E7EBF5E6EBF5E7ECF6E7ECF5E6EBF5E8EDF6E9ED
+      F6EAEEF8EBEEF8E9EDF6E9EDF6E9EDF8EAEDF8EAEEF8EBEEF8EBEFF8EBEFF9EB
+      EFF9EBEFF9EBEEF9EBEEF9EBEFF9EAEEF9EBEFF9EAEEF9EAEFF9EBEFF9EBEEF9
+      EAEDF9E9EDF8E9EDF9EAEEF9EAEDF9E9EDF9E8EDF8E8EDF8E7ECF8E5EAF6E6EA
+      F6E6EBF6E5EAF6E5E9F6E4E8F6E3E7F6E3E7F5E2E7F5E1E7F5E0E6F5E1E7F5E0
+      E5F5DDE5F5DCE4F5DCE4F5DBE4F5DBE3F5DAE3F5DAE2F4D9E1F4D8E1F4D8E0F3
+      D7DFF3D6DEF2D5DEF2D5DEF2D5DEF2D3DEF2D4DEF2D3DEF2D3DEF2D2DCF2D3DD
+      F1D3DEF2D4DEF2D5DEF2D5DEF2D5DEF2D5DEF3D6DEF3D5DEF2D7DFF3D7DFF3D7
+      E0F3D9E1F4D9E1F4D9E1F4D9E1F4DAE2F4DAE2F4D9E2F5D9E2F4D8E1F3DAE3F3
+      D6DEF1CFD9EEC3D0EBB5C4E7A6BAE29CAFE28DA2DF7893DC6381D65C79D36081
+      D96182D85A7CD56481D87B93DD889EE38199E07993DE7995DF7892DA7490DA6C
+      8DD65A7ECC4065BC3054AB26479B203A89213C86243F893C55986A82B39AABC5
+      BAC1CBCED0CBDAD9CBE3DECBE4DFCAE6E0CAE6E0CAE7E0CBE8E1CCE7E1CCE7E1
+      CBE8E2CBE8E2CCE8E2CCE7E1CAE8E2CDE8E3CEE9E2CCE9E3CEE9E3CEE8E3CEE9
+      E4CFE9E3CFE9E4D0E9E4CFE9E3D0E9E4CFE7E4D0E9E4D0EAE4D2E8E4D0E9E4D0
+      EBE4D3EAE5D3EAE5D3EBE5D4EBE5D4EAE5D3EBE5D4E9E6D3E8E6D3E9E6D3E8E6
+      D3E9E5D2EAE4D3EBE4D3E8E3D0E8E3D0E6E4CFE5E4D0E8E3CFE6E0CFE7E1CFE6
+      E2CEE6E2CEE5E1CCE6E1CCE6E1CCE6E1CDE7E2CEE5E1CCE5E1CBE4E2CCE4E2CC
+      E4E1CBE6E1CCE6E1CCE6E1CDE5E1CDE5E2CEE5E1CDE5E1CDE5E2CDE5E2CCE5E1
+      CDE4E0CCE4E0CCE4E0CCE4E0CCE4E0CCE4E0CCE5E1CDE5E0CDE5E1CDE5E1CDE4
+      E0CCE5E1CDE5E1CDE5E2CEE5E1CDE5E0CFE5E0CEE5E1D0E5DFD0E5E0D0E4DFCF
+      E4E0CCE5E0CFE5E0D0E5E1CCE4E1CDE5E1CFE5E2D0E5E2D0E4E0CFE5E0D0E5E0
+      CFE5E1CFE5E1CFE5E0CFE5E1D2E5E2CFE5E1CDE5E1CFE5E2CFE5E2CEE5E2CFE6
+      E3D0E5E2CFE5E2CFE5E2D0E6E3CFE5E2CFE6E3CFE5E3CFE5E2D0E6E3D2E5E2D0
+      E5E1D2E5E1D2E5E2D3E5E1D2E5E1D2E5E1D2E5E2D3E4E1D3E5E2D4E4E1D2E5E2
+      D3E5E2D3E4E2D5E4E2D5E5E3D5E5E4D4E5E3D5E5E3D6E5E3D7E5E3D7E5E3D7E4
+      E4D4E4E4D4E5E3D4E5E3D5E5E2D5E5E2D5E5E2D3E5E2D2E5E3D3E5E2D2E5E2D2
+      E5E2D2E4E2D0E4E1CFE5E1D2E5E2D2E4E1D0E5E2D2E4E2D2E5E2D2E5E2D2E5E3
+      D3E6E2D2E6E2CFE6E3D0E7E2D2E6E2D2E6E1D2E5E1D0E5E2CFE5E2CFE5E1D0E5
+      E1D0E5E1CFE5E2CFE5E2CFE5E2CFE5E2CFE5E2CFE5E2CFE5E1D0E5E2CFE5E2CF
+      E6E2D2E6E3D0E5E1CEE5E1CFE5E2CFE5E1CFE5E0CFE5E2CFE5E1CDE5E2CEE5E2
+      CFE5E2CFE5E2CFE5E2CFE5E2CFE5E2CEE5E2CEE5E2CEE5E2CFE6E3D0E5E3CFE5
+      E2CEE6E3D0E6E3D0E6E3D0E7E4D2E6E3D0E6E3D0E6E3D0E6E3D0E5E3D0E6E4D0
+      E7E4D3E6E2D2E6E2D2E7E4D2E7E4D2E7E4D2E6E4D0E5E2CFE6E3D0E6E3D2E7E4
+      D3E8E4D3E6E3D0E6E3D2E7E3D4E7E3D3E6E3D2E6E3D0E6E3D0E6E3D0E6E3CFE7
+      E4D2E7E3D3E7E2D3E5E2D2E6E3D0E6E3D0E6E2D2E6E1D3E6E2D2E6E3D0E6E3CF
+      E6E1D2E5E1D0E5E1D0E5E2CFE5E1D0E5E1D2E6E2D2E5E2D0E5E1D0E6E2D2E5E1
+      CFE5E0CFE5E1CFE5E1CFE6E0CEE5E1CFE5E2CFE5E1CEE5E0CEE5E0CEE5E0CEE6
+      E1CFE5E0CEE5E0CFE5E1D0E5E1CEE6E0CEE6E0CFE5E0CEE5E0CEE5E0CEE5E0CE
+      E5DFCEE5DFCCE5E0CAE4DFC9E4DFCBE4DECEE5DFCEE4DECDE3DECBE5DFC9E5DF
+      CAE4DFC9E5DECAE5DECCE5DEC9E5DFCAE5DECAE5DFCBE5DEC9E5DFC9E5DEC8E4
+      DECAE4DECCE5DECAE5DEC9E5DEC8E5DECAE5DECBE5DECCE5DECBE5DECBE5DECC
+      E4DECCE4DECDE4DECDE4DECDE4DECDE4DECDE3DECCE3DECBE3DECBE3DECCE4DE
+      CDE3DECCE3DECBE3DECBE3DECCE3DECCE3DECCE3DECCE4DDCCE5DDCCE4DCCBE4
+      DDCBE5DECBE5DECBE4DDCAE4DDCAE5DECCE5DDCCE4DDCAE4DDCAE3DDCAE2DECB
+      DEDAC8A8A699CDC9BA3E4933373935433A3C8A766C998178CCB3A6E8D3C0EADA
+      C498886E8E8690FCFAFEEBE8E3ECEFE0E2D6BEE1D2B8CCC7A36F7C6A697A8EB7
+      C9DDE8EDDFD1C9ACE5D1B6E5D2B5E4D0B5E5D1B8E7D2BCE6D1B5E7D1B7E6D0B9
+      E9D4BAE5D0BAE4D0B5E1CCB5DDCAB1D9C9B0DCC9AFDBC8AECFBEA4E4CEB4BBB0
+      8F6B756CA7ADBFFAFAFEF8F7EBCEC7AADBC9B1D7C8ABCEBD96A2A395B4B99B31
+      37246C7488DAD4D0E1CEB5E3CEB4E0CFB1E4CFB8E0CEB4DACDAA585751E0E2EB
+      F0EEEBEAEDE4EBF3D75366638DA5BDEEF4F6E7D6B8E9CEB0EACEA9EBD2A9E7CF
+      A9EED1AEEFD1A9EBD1A9E9CFABE7CDABE9D1B2E7CEB2E4CCB0E5D2B58E866C7D
+      877FACB8BCF3F7FDF3F1E1E0D6AFA5987ED2D7C3171D056A7784D5D3B7484531
+      E3CFC5E7D2B9E5D3B8D6C3A88A8776C8C1A7606566F7FAFCF6F7EEFFFBF4EAE1
+      C8ECDFCDEAE0CCE9DFCCF2EDD37D83624D5E68A8BDD3D4DEE1ECE4D2EFE1D0EB
+      E0CBEDE6CEEDE3D4FCF1DFD2CBB5616D597B8789D8E0E8FCFEFDEAE3D3F1E6D6
+      EEE1D4F1E5D4FDEED97670474651343A3E2B342C34DDCDD5C3B38D60563EFAEC
+      D7645D3F374331171B12151917424E54D0D5DEEFF0EBF6F7ECE3D0ACF8D9AACC
+      B37A3C4535B7C6CAECEEEFEEF0EAECE0BDF0D093F8D39FFDDBA9FFE3B0FFDDB3
+      F9E2B9D4BE922B3015322B253C2724150C0B1512111E221D1C2322151D19131E
+      18ACC1DCCAE1E4D7E4E1CCCFB9425A3D15261F17211F131D1B15201E14252416
+      2624192C29182B213142354C625290A38EDDE4D9EDF4EAF1F8EBF2F4E6ECF4E7
+      CCD3CC647877CDD6D0F2F7E7EBEDE1E5E8E3D2DAD0D3D8D2ABB09770785D6B73
+      58646A4F3337225952406A6B516465505F6148585D405956425456404F4B3837
+      33243E3D2F50543A5F5E475F5F48636247636D544C4F37333521555747283525
+      374137535449424B3D556050555B426F7562768272747C6E7580726F7D6D6E7F
+      6C6470649769E8EDF6E8ECF6E9EDF6E9EDF8EAEEF8EAEDF8E9EDF8EAEEF8EAED
+      F8EAEDF8EAEDF8EBEEF8EAEDF8EAEDF8EAEDF8EAEDF8EAEDF8E9EDF6E9EDF6E9
+      EDF8EAEDF8E9EDF6E8EDF6E8ECF5E9ECF5E7ECF5E7ECF5E8ECF5E8ECF5E9EDF5
+      E9EDF5E7EBF5E8ECF5E9EDF5E8EDF5E8EDF5E7EBF5E8ECF5E9EDF5EAEDF6EAED
+      F6EAEDF6EBEEF8EAEEF8EBEEF8EBEFF8EBEFF8EBF0F8EBF0F8EBF0F8EBEFF8EB
+      EFF8EBEFF9ECF0F9EDF1F9ECF0F9EBEFF9EBEFF9ECF0F9EDF1FAEDF2FAEDF1FA
+      EEF2FAEDF1FAEDF1FAEDF1FAEDF1FAEDF1FAEDF1FAEDF1FAEDF1FAECF1FAEDF1
+      FAEDF2FAECF1FAECF0F9EDF1FAEDF1FAEBF0FAEBF0FAEBEFFAEAEEF9EBEEF9EA
+      EDF9E9EDF9E8EDF8E8EDF8E8ECF8E7ECF8E7EBF8E6ECF8E5EBF8E5EBF8E4E9F6
+      E2E7F6E3E7F6E2E7F6E0E6F5E1E6F5DEE6F5DEE5F5DEE5F5DDE5F5DBE4F5DBE4
+      F5DBE4F5DAE2F4D9E2F4D9E2F4D8E0F3D9E1F4D9E2F4D9E1F4D8E1F4D7E0F3D7
+      E0F3D8E0F3D8E0F3D9E2F3DAE2F4DAE2F4D9E1F4D9E2F3DAE2F3DAE2F4DAE3F4
+      DBE4F4DDE5F5E0E6F5E1E7F5E3E9F6E4E8F5E2E7F5E1E7F5E1E7F5E1E7F5E0E6
+      F4E0E6F5E0E6F4E0E5F4DEE5F3D7DFF1CED8EEC4D1EBB4C3E697ABDD7996D76C
+      89D76482D76987D76485D75375CF5774CF6C87D87C96DC859DE07C98DE7893DD
+      7895DC7791DC7491DA6688D2557DCA456DBF3359AE28499D223E90203A862743
+      893650915971A8879CBEB1BBCAC8CBCBDAD7CAE5DECBE7E2CCE8E2CCE8E2CCE7
+      E1CCE8E2CCE7E1CBE7E1CBE7E1CBE6E0C9E6E1CBE8E2CEE8E2CBE8E3CDE7E2CC
+      E6E1CCE9E3CDE9E4CFE9E4CFEAE4D0EAE4D0EBE4D0E9E6D3EBE5D3EBE6D4EBE5
+      D3EBE4D3E9E6D3EAE5D3EBE4D3EBE5D4EBE5D3EAE5D3EBE4D3E9E6D3E8E6D3E8
+      E5D2E9E4D2EAE4D0E7E4D2E8E4D3E8E4D2E9E3D2E6E4D0E5E4D0E8E1CFE7E1CF
+      E7E2CFE6E2CEE6E2CDE6E1CDE6E1CDE7E1CDE8E2CEE8E2CEE5E2CDE5E3CDE6E1
+      CDE6E1CDE5E3CDE6E1CCE6E0CCE6E1CDE5E0CDE5E1CDE4E0CDE4E0CCE4E1CDE4
+      E1CBE4E0CCE5E1CDE5E2CEE5E1CDE4E0CCE4E0CCE5E1CDE5E1CDE5E0CDE5E0CD
+      E5E1CDE5E1CDE5E1CDE5E1CDE5E0D0E5E1CEE5E1CDE5E0D0E5E1D2E4E0CCE5DF
+      CEE5DFCFE5E0CCE4E0CCE5E1CCE5E0CCE5DFCEE4DFCEE5E1D0E6E0CFE5E2CFE5
+      E2D0E5E2D0E5E1CFE5E2D0E5E2CFE5E2D0E5E1D2E5E0D0E5E2CFE5E2CFE5E1CE
+      E5E2CFE5E2CFE5E2CFE5E2CEE5E2D0E5E2CFE5E2CFE5E2CFE5E2D0E5E2D0E5E2
+      CFE5E1CEE5E1CFE5E2CFE5E2D0E5E2D0E5E1CFE5E0CFE5E1D2E5E2D2E5E2CFE4
+      E1CEE5E2CFE5E2D0E4E1D3E4E2D4E5E2D4E5E2D2E5E2D3E5E3D5E5E2D4E5E2D4
+      E5E2D4E3E4D4E4E4D4E5E3D4E5E3D6E5E3D6E5E3D6E5E3D4E5E3D3E5E3D3E5E3
+      D3E5E2D3E5E3D2E5E3D3E5E2D3E4E2D0E5E1D0E5E1D2E6E2D3E6E2D2E5E2D2E5
+      E2D2E6E3D0E6E3CFE4E1D0E5E1D0E5E2CFE5E2CFE5E2CFE5E1CFE5E2CEE5E2CE
+      E5E2CFE5E2CFE5E2CFE5E1CEE5E2CFE5E2CEE5E1CBE5E1CDE5E1CCE5E2CEE5E2
+      CFE5E2CEE5E2CDE5E3CFE5E2CEE5E1D0E5E2CFE5E2CFE4E1CCE5E2CFE6E2D2E6
+      E2D0E5E2CFE5E3CFE6E2D0E5E2CFE5E2D0E6E3D0E6E3D0E6E3D0E6E3D0E7E4D2
+      E6E3D2E5E2CFE7E4D2E7E4D2E6E3D0E6E3D0E6E3D0E6E3CFE7E4CFE7E4CFE5E2
+      CFE5E3D0E6E2D2E6E2D0E6E3D0E6E3CFE6E3CFE6E2D0E7E3D2E6E3D0E6E3D0E6
+      E3D0E6E3D0E7E3D0E5E2CFE5E2CFE5E2CFE6E3D2E6E3D0E5E2CDE6E3CEE6E3CF
+      E5E2CFE6E3D0E6E2D2E6E2D0E5E2CFE5E2CFE6E3D0E6E3D0E5E2CEE5E2CEE5E2
+      CFE5E1D0E5E2CFE5E2CEE5E1CEE5E2CFE5E1CFE5E0CFE5E1CFE5E1CEE5E1CEE5
+      E0CEE5E0CEE5E0CEE5E0CEE5E0CEE5DFCDE5E0CEE5E0CEE5E1CEE5DFCDE5DFCD
+      E5E0CEE5E1CFE5DFCDE6DFCEE6DFCEE5DFCDE5E1CEE5E1CEE5E0CEE5E0CEE5E0
+      CEE5DFCDE5DFCDE5DFCCE5E1CBE5E0CBE5DFCCE5DFCEE3DECCE5DECCE6DFCCE4
+      DFCAE4DFCAE4DFCAE5DFCDE7E0CEE7E1CBE5DFCAE6E1CBE5E1CBE5E0CAE5E0CC
+      E5DFCCE5DFC9E6DFC9E5DECAE5DEC9E5DEC9E5DECBE5DECAE5DFC9E4DECBE5DE
+      CCE5DECCE4DECCE4DECCE4DECCE4DECDE5DECDE4DECDE5DECCE5DECCE4DECBE5
+      DDCCE5DDCCE5DCCCE2DDCBE3DECBE3DECCE5DECDE6DECDE4DCCBE4DCCBE5DDCC
+      E5DDCCE5DECBE5DECBE5DECAE4DDCAE4DDCAE4DCCAE5DCCCE5DDCCE4DCCBE4DC
+      CCE4DCCCE3DBC799977D7D786E4C4F3C3C3C338E88874649324D4E38554E4364
+      5751907A6F8D7F6E897C90FFFAFFE9ECE2EBECDEDCD5BCDBCFB5E0D6B4777E5F
+      61737599ADC4E6EEF3D5D1B9E1CCB3E3CFB5E5D0B5E5D1B6E5D1B6E2D5BAE1D3
+      BAE6D2BCEAD4BDE5D2B6DED1B2DBCCAEDDC8AFDECAAFDBC8A9CCBBA0D9C4AED6
+      CAA2797C53828B97E4E8F9FAFDFAD4D1B3D6CCABD8C8ACD7C7AAC6BE968D8D83
+      C1CAB12C34239491A7FBF4F4D8CAB2DDCCB0E3D0B3DDCBB3DED0B5DDCEAE5853
+      49DBDCE4F0F0EBEBEDE0EFF3DE5A6D5A587480A4B6C6D9D1C4E5D1BCE7D1B2E6
+      D2B0E7D3B4E8CFB2E6D0AAECD2ACEACDA9E5D1AAE4D0B0E1CFB5E9D4B9A09B7D
+      757E6EA7AEB5F1F7FBFDFDF9DCD0BAE9DAB99D9778D6DCCA20280B5C6573F8EC
+      E0949062ACA099F0DECEEDDDC3A49E85D2CFC4C9BB9D585B61F8FAFCF9F7F1FE
+      FFF3E8E4CEE8DDC9EFDECDEBE0D0F0E6CCD2CCA25A695964869ACCDDE8E9E0D6
+      EDE2CEF0E3CFEFE4D2F1E5D3C8C2B05960567C8585D4DEE1FDFFFDEDEDE3EEE5
+      D3EEE4D2F1E4D0EDE2D2FDF3D9756F434B53382B2B22292631E6DDE2786F59E4
+      D6C9EFDDC16A66403D45351F27160E150E414B53CFD2DEEFF1EDF3F7EBDDD1A9
+      EFD09FF6D6A33C3E2AB1C1C7EBEEEAEFF3E9E9DFC3DBBC8BCCB287A5896C806B
+      576759483B3327252319171D1311140D171512171916181B1715161611181612
+      1E1C151F1D60759AB6BECD647C86FCFCFFD5DECC2D4226162B1F273B2C3D544E
+      4B605B5F706497A398CAD3C7FAFFF2FFFFFFFAFEF6E5EEE6E2E8E1E0E4E1DBE5
+      E0FAFAF1606A5D3C5050EAEDF2E5E7DFE1E5E2E3E5E1D0DBD8D4DBDAD2D7C2A1
+      A890767D5E595F433C3F2B4B4E3A61644F57624C575B42585B40525540515A42
+      4D513B43422F4D4A3F636B55707963767F66656F5A77817359514034351E5355
+      3F2825123F3F253C3E25454A38565D4C585C4C6D77697B87777C807766736C5B
+      695546513D444E379769EBEFF8EBEFF8EBEFF8ECF0F9ECF0F9ECF0F9ECF0F9ED
+      F0F9EDF0F9EEF2FAECF0F9EDF0F9ECF0F9ECF0F9EDF1F9EDF1F9ECF0F9EBEFF8
+      ECF0F9ECF0F9EBEFF8EBEFF8EBEFF8EBEFF8EBEFF8EBEEF8EBEEF6EBEFF8EBEE
+      F8EBEFF8EBEFF6EBEEF6EBEFF6EBEEF6EBEEF6EBEFF8EBEEF6EBEFF6EBEEF8EB
+      EFF8ECF0F8ECF0F8ECF0F9EDF1F9EDF1F9EDF2F9EDF1F9EFF2FAEEF2FAEFF3FA
+      EEF2FAEFF2FAEEF1FAEEF1F9EFF3FAEFF3FAEFF3FAEEF2FAEEF2FAF0F3FAF0F3
+      FAF0F3FAF1F3FAF0F3FAF1F3FAF0F3FAF0F3FAF0F3FAF0F3FAF0F3FAF0F3FAF1
+      F4FAEFF3FAEFF3FAF0F3FAEFF3FAEFF3FAEFF3FAEEF3FAEEF2FAEEF2FAEDF1FA
+      EDF1FAECF1FAEDF1FAEBF0FAEBEFFAEBEEF9EAEEF9E9EDF9E9EEF9E7EDF9E7EC
+      F9E7ECF8E5EAF8E5EAF8E5EAF8E4E9F6E3E8F6E3E8F6E2E7F6E1E7F5E1E7F5E1
+      E6F5E0E6F5DEE6F5DEE5F5DCE5F5DDE4F5DCE4F5DCE4F5DCE4F5DDE4F5DBE4F5
+      DCE4F4DBE4F4DAE3F4DAE3F4DBE4F5DCE4F5DBE4F4DBE4F5DCE4F4DDE5F5DDE5
+      F5E0E7F5E3E8F5E5EAF8E8EDF9EBF0FAECF1FAEDF2FAECF1FAECF1FAEBF0FAEB
+      F0FAEAEEF8E9EDF6E8ECF6E7ECF6E5EAF5E6EAF5E4E9F5DEE5F2DAE1F1CBD6EC
+      B6C6E6A7BAE19AB0DD8DA3DA819BD87290D65A79D3516FCD5979D06B88D57592
+      DA7B96DC7996DD7E99E07D98DC708ED86D8AD56586CF577FC94970C13E60B532
+      51A7284797203E8C213E8827428946619F8299BDB2BCCACBCFCCDBDBCCE5E0CC
+      E8E2CCE8E2CCE8E2CCE7E1CBE7E1CBE7E1CCE8E2CCE8E2CCE8E2CEE8E3CCE8E2
+      CDE8E4CEE9E4CFE9E3CFEBE5D2EBE6D2E9E5D0EAE6D2EBE6D2EBE7D4EBE7D4EC
+      E7D5EDE7D5EBE6D4EBE6D4EBE6D5EBE7D5EBE6D3EAE6D3EAE6D3EAE6D3EAE7D3
+      E9E7D3E9E7D2EBE6D3EAE6D2E8E4D3E8E4D3E9E4D2E9E4D2E8E4D2E7E4D2E8E4
+      D2E8E4D2E8E5D3E7E4D0E7E4CFE8E4D0E8E4D0E7E4CEE8E4CEE8E4D0E7E4CFE6
+      E4CFE7E4CFE8E4CFE7E4CFE7E4CEE7E3CEE6E2CDE4E1CCE4E0CBE5E0CCE5DFCB
+      E5DFCBE4E1CBE3E0CBE4E0CBE5E1CDE4E0CCE4E0CCE4E0CEE4E0CCE4E0CCE4DF
+      CCE5E0CDE5E1CDE5E1CDE5E1CDE5E1CDE5E0CDE5E0CDE5E1CCE5E1CEE4E0CFE4
+      E0CEE4DECEE4DECEE5E0CDE5E0CAE4E0CAE5DFCDE5E0CEE5DFCEE5DFCEE5DFCE
+      E5E0CFE5E1CFE5E1D0E5E1CFE5E2D0E5E2D0E5E1CFE5E1D0E5E1D2E5E2CFE5E2
+      CFE5E2CFE5E1CEE5E1CFE5E1CFE5E0CEE5E1CEE5E2CFE5E1CEE4E1CDE5E1CFE5
+      E1D2E5E1CFE5E1CFE5E2CFE5E1CFE5E1CFE5E1CEE5E1CFE5E0CFE5E0D0E5E1CF
+      E5E2CFE5E2CFE5E3CFE5E2CDE5E3CDE4E2CEE5E2CEE4E0CFE5E1D2E5E2D3E5E1
+      D0E5E1D0E5E2D0E4E2D0E4E3D2E5E1D3E5E2D4E5E2D3E6E3D4E6E3D3E5E3D2E5
+      E3D2E5E3D0E3E2D2E4E2D5E5E2D4E5E2D2E5E1CFE6E2D0E6E3D0E7E4D2E7E4D2
+      E6E3D0E6E3CFE7E3D0E5E2D0E5E1D0E5E1D0E5E2CFE5E2D0E5E2CFE5E2CFE5E2
+      CEE5E2CFE5E1CFE5E1CFE5E2CEE5E2CFE5E2CFE5E2CFE5E2CEE4E0CDE5E2CDE5
+      E2CCE5E1CFE5E0D0E5E2CDE5E2CFE6E2D2E6E2D0E5E2CFE6E3D0E6E3D0E6E3D0
+      E6E3D2E6E4D3E7E4D3E7E3D2E5E2D3E6E3D3E8E4D4E7E4D2E7E4D3E7E4D3E7E3
+      D3E7E3D3E7E4D3E8E4D3E8E4D3E8E4D2E7E4D2E8E4D3E7E4D2E8E4D0E8E4D0E8
+      E4D0E7E4D2E6E4D2E8E4D3E7E4D3E5E4D2E5E4D0E5E3CFE7E3D2E8E4D2E8E4D2
+      E7E4D2E7E4D2E7E4D2E6E3D0E7E3D0E7E3D0E6E3D0E7E3CFE6E2CDE5E2CDE5E2
+      CEE6E3D0E6E3D0E5E2CFE5E1CFE6E1CFE6E1CFE7E2CFE6E3CFE5E2D0E5E1CFE5
+      E1CDE5E1CEE5E1CFE5E1CFE5E0CEE5E0CEE5E1CEE5E1CEE5E0CEE5E0CEE5DFCD
+      E5E0CEE5DFCEE5E0CEE5E0CEE5E1CEE5E0CEE5DFCDE5DFCDE5DFCEE5DFCDE5DF
+      CDE5DFCDE5DFCDE4DFCCE5DFCCE6DFCEE5DFCDE5DFCDE5E1CEE5E1CEE5E0CEE4
+      DFCCE4DFCCE5DFCDE4DFCDE5DECCE5DECCE5E0CBE4E0CBE4DFCBE3DFCAE5DFCC
+      E5DFCDE4DECBE4DECBE4DECBE5DFCDE6E0CFE5E0CCE5DFCCE5DFCCE5E0CDE5E0
+      CCE5DFCCE5DFCBE5DFCAE5DFCBE4DECBE4DECAE4DEC9E5DECAE5DECAE5DEC9E3
+      DEC9E3DECBE4DFCCE4DECCE4DECDE3DECCE4DDCBE5DECCE5DECDE5DECDE5DECD
+      E5DECCE5DDCDE5DDCCE5DDCDE5DECCE4DECCE2DECCE4DECCE4DECCE4DDCBE5DD
+      CBE5DDCCE5DECDE4DDCBE3DECAE4DECBE4DECCE5DDCBE4DDCAE4DDCAE5DDCCE5
+      DDCCE5DDCCE5DCCDE1D9C79091767E7D6A51513F3E3E39736D6AA0987EA09584
+      7D7965737052696553554D427E7889FDF9FEEBE9E4EBECDCDBD4BEDCCEB6E7D8
+      BDA4A078616F5E8293A5D9E4F1E6E6DFDBCDB4E5D0BAE2D0BADED1B8E2D0B5E4
+      D1B6E5D1B9E5D1BAE8D6BCE5D3B7E1D1B9DCCAB3DBCCB5E1CBB4D2C1A6D9C3AB
+      D9C8AEB1AD8B73775FA7B1BDF3F8FEF9F7F1C5C1A0D4CAB1D7C9AFD9C8ABCBBE
+      9C86867CD3D7C430312480869BF8F3EFD5CBB0DDCBB5E1D1B1E0CCB5DBCDB7DC
+      D1AF565347D3D5DFF0F1EBEAEDE3EFF2DD5F74544F6C6E899FB4C4C7BAE9D1B6
+      E8D1B8E7D1B5E7D0B2E8D2B3E6CFACE9D0AFE5CEB1E6D1B3E5D2B2E7D2B6E5D6
+      B2787D6A7D867FDBE3EAFFFFFFEBE4D7DDCEB4E5D8B49C9877E3E4D719240959
+      5F69F1E9E3EADCB7766E60F1E6E2F3E1CA9A9A88EADED0CCBE9A5A5B56F7F5FC
+      FAF9F6FFFFF5ECE7D4E7D8CAEBE0CFEBE0CFEEE2CFF6EDC6707A63556D83B2CB
+      E0ECE5DFEFE3D3ECE3CEEEE2D0FFF7E66E705D5E6B6B96A2A9FFFFFFEDECE3EB
+      E2D0EEE5D5EFE4D6F0E4D5EFE4D3FFF0D88679494B492C3637292729286F7173
+      8F9285FFEBDAECDCBC75653631351B363B2614140D354040CBD2DAEDF1F1EFF4
+      ECE7DAB5FDE0B1F7D6B5363A2EA3B9BEE8EDEAFCF9F399A18603050014150C13
+      14131113120E1612111712131913141913141A15131817141A16101812161B18
+      121E1C1521241823231526231E2C2F202F293C4D4CCBD2D2BDCBB7BED1C1EDF0
+      EBE5E9DDF1F7EAEEF5EDF1F3F0EFF0ECEAEDEAE6EAE3E8EBEBE4E4E1D9DFD8DE
+      E5E0E3E9E4F1F8F066756237453FCCD6D6D8DAD8DBE1DBDEE4DAC6D3CED7DFDA
+      EBEDE3F6F7F1FCFBF27B806F3A422E46503E595D486060525F6554616B596B74
+      64777E6C7C83754D533E515B5179877A747F72757E71666D6079867C53544332
+      362759604A3C341647401A4144243F45335661544C53475B5E4F66644F706C50
+      696550827F6BCBBD99C1AA850000EFF2F9EEF2FAEEF2FAEFF3FAEEF2FAEFF3FA
+      EFF3FAEFF3FAF0F3FAF0F3FAF0F3FAEFF3FAEFF3FAF0F3FAEFF3FAEEF2FAEFF3
+      FAEFF3FAEFF3FAEFF2F9EEF2F9EFF3FAEFF3FAEFF3F9F0F3FAEEF2F9EFF3F9EF
+      F2F9EEF2F9EDF1F8EDF1F8EEF2F9EEF2F9EFF3F9EEF2F9EEF2F9EEF2F9EFF3F9
+      EEF2F9EEF2F9EFF3F9F0F3FAEFF3FAF0F3FAF0F3FAF1F4FAF1F4FAF1F4FAF1F4
+      FAF1F5FAF1F4FAF1F4FAF1F4FAF1F5FAF1F5FAF1F5FAF1F5FAF1F4FAF1F3FAF1
+      F4FAF2F5FBF2F6FBF2F6FBF1F5FAF2F6FBF2F5FBF2F5FBF2F6FBF2F6FBF2F5FB
+      F2F5FBF2F6FBF1F5FBF1F5FBF1F4FBF1F5FBF1F4FBF1F4FBF1F4FBF1F3FAF1F4
+      FAF1F3FAF0F3FAF0F3FAF0F3FAEFF3FAEEF2FAECF1FAEDF1FAEBF0FAECF0FAEB
+      EFFAEAEEF9E9EDF9E9EDF9E8EDF9E8EDF9E7ECF9E6EBF9E5EAF8E6EBF8E5EAF8
+      E5EAF6E5E9F6E3E8F5E2E7F5E2E7F5E1E7F5E2E7F5E1E7F5E0E7F5E0E7F5E0E7
+      F5DEE6F5E0E6F5E0E6F5E0E7F5DEE6F5E0E7F5DEE6F5DEE6F5DEE6F5E0E7F5E1
+      E7F5E2E7F5E5EAF8E8EDF9EDF2FAF1F6FBF6F7FCF7F8FDF7F9FDF7F8FDF7F8FD
+      F6F8FDF6F7FCF3F7FAF3F7FAF2F6FAF1F5FAEFF3FAEDF1F8EBEFF6E9EDF5E6EB
+      F5E5EAF5E2E7F3DAE2F1D1DBEDC8D4EAB8C7E399ADDA7795D46685CF5E7DCB5A
+      78CA627FCF6985D26B86D37792D97D99DC7B96DD7992DA748DD7728ED56E8DD4
+      6386CE5376C74468BC395DB12E50A62142951D398827448E4D6BA5859BBCB5BF
+      C8D1D2CDDEDBCDE6E1CDE8E2CCE8E2CDE9E4CEEAE4CEE9E3CDEAE4CEEAE4CEEA
+      E4CEEAE4CFEAE4D0EBE5D3EBE5D3EBE6D3EBE6D2EAE7D5EBE7D4EBE7D4EAE7D4
+      EAE7D4EBE7D5ECE7D5EBE6D4ECE6D4EBE7D6EBE7D5EBE7D3EBE7D5EBE8D6EBE7
+      D5EAE7D4EAE7D4EBE7D4EAE7D4E9E7D3E9E7D4EAE7D3EBE4D4EBE5D4EBE5D4E9
+      E5D3E7E6D2E7E6D2E7E5D0E8E6D2E7E5D0E7E5D0E8E6D2E7E5CFE7E5CFE7E6D0
+      E7E6D2E8E5D0E7E5D0E8E5D0E7E5CFE7E5CFE7E5D0E6E4CEE7E4CFE6E4CEE7E3
+      CFE6E3CFE6E3CEE5E3CDE5E2CCE5E3CCE5E1CDE5E1CEE6E3CFE5E2CEE5E3CDE5
+      E3CDE5E1CEE5E1CEE5E1CEE6E2CFE5E1CEE5E2CEE6E2CEE6E2CEE6E2CEE6E3CD
+      E5E3CDE5E1CEE5E1CDE5E0CCE5E1CCE5E0CCE5E0CCE5E0CCE5E1CDE5E1CDE5E1
+      CDE6E1CEE6E2CFE6E2CFE5E2CEE5E2CEE5E2CFE6E3D0E5E2D0E5E1CEE5E2CFE5
+      E2CFE5E2CEE5E2CEE5E1CEE5E1CEE5E2CFE5E1D0E5E2CFE5E2CFE5E2D2E6E3D2
+      E7E4D3E6E2D2E5E2D2E6E2D2E6E3D3E5E2D2E5E2D0E6E3CFE6E3D2E6E3D3E5E1
+      D2E6E2D3E7E3D4E7E4D5E6E3D3E6E3D2E7E4D2E7E4D2E6E2D0E7E2D3E6E2D3E6
+      E1D2E6E1D2E6E3D0E7E4D2E8E4D3E7E3D2E6E2D3E6E1D2E5E1D0E6E1D2E6E2CF
+      E6E3CFE6E3CFE5E2CEE5E2CEE5E1D2E5E0D0E6E1D0E6E2D2E5E2CFE5E2CFE6E3
+      D0E5E2CFE6E3D0E7E4D2E6E3D2E7E3D3E6E2D2E5E1D0E6E2D3E6E1D2E6E3D2E5
+      E3CFE5E2CFE7E3D3E6E3D2E5E2D0E5E3CDE7E3CEE5E2CDE5E2CDE5E2CFE5E2CD
+      E6E3CEE5E2CCE5E1CFE6E2D2E6E3CEE5E2CEE5E2CFE5E3CFE5E2CFE7E4D2E7E4
+      D2E7E4D2E7E4D2E6E4CFE7E4D0E7E3D2E5E3D3E7E4D5E9E4D4E7E3D2E8E3D4E8
+      E3D4E8E4D3E7E4D0E8E4D2E6E4D2E5E3D2E6E3D3E8E4D3E8E4D3E8E4D3E8E4D4
+      E7E4D4E7E4D3E6E4D3E8E5D4EAE5D4E7E4D4E5E4D4E6E5D3E5E4D4E7E4D4E8E4
+      D3E8E4D3E8E4D3E7E4D2E7E4D0E6E4D0E7E4D2E7E4D2E7E4D2E7E4CFE6E3CEE6
+      E3D2E6E3D0E7E4D2E6E3D0E5E2CFE6E3D0E7E3D2E7E2D0E6E2CFE6E3CFE5E2CF
+      E5E1D0E5E2CFE5E2CFE6E3CFE6E2CFE5E0CFE5E0CEE5E1CFE5E1CEE5E0CDE5E0
+      CEE5E0CEE5E0CEE5E1CEE5E1CEE5E1CEE5E1CEE5E1CEE5DFCDE5E0CEE5E0CEE5
+      DFCDE5E0CEE5E0CEE5DFCDE5E0CEE5E1CEE5E1CDE5DFCDE6E0CEE5DFCEE5DFCE
+      E5E0CFE5DFCDE5DFCDE5E0CEE5E0CDE5DECDE5DECEE4DFCCE4DFCAE4DFCAE5E0
+      CBE5E0CCE5DFCDE4DECCE4DECDE4DECEE5DFCDE5DFCEE3DECCE5DFCEE4DECEE5
+      DFCEE5DFCDE4DECBE5DECBE4DECCE3DECDE4DECDE4DECCE3DECAE4DECBE4DECB
+      E4DECBE4DECBE4DECCE5DFCDE5DFCEE4DECDE4DECDE5DECCE5DECCE5DECBE5DE
+      CCE5DECDE4DECDE5DECDE5DDCDE5DECDE5DECCE5DECCE3DECCE3DECBE3DECBE4
+      DECBE5DECBE4DECDE5DECDE5DECEE3DECDE3DECCE4DDCCE5DDCDE5DECBE5DECB
+      E5DDCCE5DDCCE5DDCBE5DECEE3DBCA918F7FC9C2BA57563733302A9A98956161
+      394446274844346660546B64565E5B4A605F6FFAF5FFEBEBE4EBEEE4D1CFB8E1
+      CCB9DCCCB5D9CFA8827F5E697478B2C6DEDCECF3D9D1BAE1CAB2DCCAB5D8CFB7
+      DDCFB2E3D1B7E0D4B9DCD1B6E2D1BDE6D3B9DCD0B2DACEB0D9CAAED3C5A9D9C6
+      AEDCCBB2D4C8A972755F797E76DDE0ECFFFFFFE1DEC6D4C6ABDACCAEDAC9AFDD
+      CBB3CCC2A072746BDEE4CD2F3917575C74F1EAF0DBCCB7DCCDB6DDCEB7E0D0B7
+      DBCEB6E2D2B35C5B49CECDD7F1F2F0EDEDE6ECF3DA7D8D663B52537C98B2C4CF
+      CCE4D2B9E4D2B6E6D3B7E5D2B5E8D2B3E7D1B5E6D0B2E4D0B7E5D0B6E6D2B9EB
+      D9C2A3A280737A73A1ABAFFDFEFFF3EFE7D8CFB5E3D1B8E6D8B6A39B74879078
+      222C14515664F1EEEBF6E5C88D8865D9CECAB6AB99BBBAACEFDAC7CDC3A55253
+      50F1F5FCFAFAF6FFFFF6ECE6D3EADFCCECE0CEEEE3CEEDE4D2FDF7E092957740
+      565B60748DC4C6CBF1EAE1EEE3CFFAECDABFB9A64D5D5176868DE5EBEFFAF5F1
+      EBE4D2EEE4D5F1E6D5F1E5D0EDE4D3F0E4D3FFF3E1867950494E3022291A1E22
+      23131816EDDDD4E6D3B4F1E5CF756C521E1E123E4539171E15323D3FC3CDDBEC
+      F0F0FCFCF5999E7E63644A474136394342A6B6C0E9EBE7F6F8EFA7AE8E0D160B
+      151E171A1B1A191B16151B14131B14171915141B111118161317171113120A14
+      0D08100E0C1A131F302449615598A895BFCAB9F8FCF3FFFFFFBAC3B6C5CEC6A2
+      B1A2E8EDE7F1F2EAAAB3A351645DDBE3E7EBEBEBE7EBE6EAEDEBE9E9E4D8DEDA
+      DEE2DCDADEDACFD2CDD1D8D2677666414E4BEBF3F1EDEDE8E9E8E1E3E9E3D8DE
+      DCEDEFEFF7FAFAE2E6EABFC4C95A62584F57445C685A7D8976636E6678867D7B
+      897C7B897C79877776887449533E5155527C877A7782727C8573636B5F7D8675
+      49523D3234265B5A4C3A36213E462443472A42432D595A3E887756BBA57CFFED
+      BAFFF7CEC0A380AA8B78BFA68F7C63489769F1F4FAF1F3FAF1F4FAF1F4FAF1F4
+      FAF1F4FAF1F4FAF1F4FAF1F4FAF0F4F9EFF2F8EDF0F6EBEEF4E9ECF2E9ECF2E9
+      ECF2E9ECF2E9ECF2E9ECF2E9ECF2E9ECF2E9ECF2E9ECF2E9ECF2E9ECF2E9ECF2
+      EAEDF2E9ECF2E9ECF2E9ECF2E9ECF2E9EBF2E9ECF2E9ECF2E9ECF2E9ECF2E9EC
+      F2E9ECF2E9EDF2EAEDF2EAEDF2E9EDF2EAEDF2EBEEF3ECEFF4EDF0F5EFF2F7F0
+      F4F9F1F5FAF3F6FBF2F6FBF3F6FBF3F6FBF3F6FBF3F6FBF3F6FBF3F7FBF3F7FB
+      F4F7FBF4F7FBF4F7FBF4F7FCF6F7FCF4F7FCF3F7FBF4F7FCF6F7FCF6F7FCF4F7
+      FCF3F7FCF4F7FCF6F7FCF6F7FCF4F7FCF3F6FBF4F7FCF2F6FBF3F6FCF2F6FBF1
+      F5FBF2F5FBF2F6FBF1F5FBF2F5FBF1F4FBF1F4FBF0F3FAF0F3FBEFF3FAEFF3FA
+      EEF2FAEEF2FAECF1FAECF0FAEBEFFAEBEFFAEAEEFAEAEEFAEAEEFAE8EDF9E7EC
+      F8E7EDF9E8EDF8E7ECF8E6EBF8E5EAF6E5EAF6E5E9F6E3E9F6E3E8F6E3E9F6E2
+      E8F5E3E8F6E3E9F6E3E8F6E4E9F6E4E9F6E4E9F6E4EAF6E3E9F6E4E9F6E4E9F6
+      E4E9F6E4EAF6E5EAF8E9EDF9EEF3FAF4F7FCFAFAFDFCFDFEFDFDFEFDFDFEFDFD
+      FEFDFDFEFDFDFEFDFDFEFBFCFDFCFCFDFBFBFDFAFAFCFAFAFCF8F8FBF6F7FAF3
+      F7FAF1F4F9EEF2F6EBEFF6E8ECF5E4E9F3E1E7F1DAE3EFCAD5EAB4C3E2A4B9DD
+      96ACD7849BD0738FCC6683CA5F7CC7607DCB6481D06D8AD57591D97693D97592
+      D87796DA7292D77391D56689D35A7EC94D74C23F68BC3156AE2748A0203E9328
+      4392506AA48C9EB9B8BFC7CFD1CCDCDBCCE5E0CDE9E3CDE8E4CEE9E3CEE9E4CF
+      EAE4CFEAE6CFEBE6CFEAE4CFEBE5D2EBE6D3EBE6D3EBE6D2EBE6D4EBE6D4EBE6
+      D3EAE5D3E9E6D3EAE7D5EBE7D5EBE6D5EBE6D4EBE7D4EAE7D4EBE6D5EBE6D4EB
+      E6D4EBE6D4EBE6D4EBE6D3EBE6D4EBE5D3EAE5D3EBE5D3E9E4D2E9E4D2EAE4D2
+      E8E4D2E6E6D0E6E4CFE6E4CFE6E4CFE5E3CEE5E2CEE6E3CEE7E4CEE6E3CFE7E3
+      D2E5E4CEE5E4CDE5E4CDE6E4CEE6E4CEE6E3CEE7E3CFE7E4CFE6E4CEE7E4CEE6
+      E4CFE6E3D2E6E4CEE6E4CEE6E4CEE6E4CEE7E4CFE7E3CFE7E3CFE8E4D2E8E5D0
+      E7E3CFE6E2CFE7E2CFE7E2CFE6E2CFE6E2CFE6E3CFE7E3CFE7E3CFE6E2CFE5E2
+      CEE6E2CFE5E1CDE6E2CCE5E2CDE5E3CDE5E2CDE6E2CDE5E1CDE6E2CEE6E3CFE5
+      E3CEE6E2CEE7E3CFE7E3CFE7E3CFE6E3CFE7E3CFE7E3CFE6E3CFE6E3CFE6E3CE
+      E7E3CFE7E3CFE6E2CEE5E1CDE5E3CEE6E3CDE7E4CFE6E3D2E6E4CFE6E4CEE6E4
+      D0E7E4CFE7E4CFE6E3D0E7E4D2E7E4D0E6E3D0E6E3D0E7E4D2E8E4D4E8E4D3E7
+      E4D2E8E4D4E7E4D4E7E4D3E7E4D2E7E4D2E7E3D3E8E4D4E8E4D4E7E3D4E8E4D4
+      E7E3D4E7E3D4E6E3D4E6E4D3E6E4D3E7E2D5E7E3D3E6E3CFE5E3D2E5E2D3E5E2
+      D2E6E2D0E6E2D2E6E2D2E6E2D2E5E2D0E5E2D0E5E2D0E6E3D2E5E2D2E5E1D0E5
+      E1D0E5E2D2E7E3D3E8E3D3E7E2D2E6E2D2E6E2D2E6E2D0E7E3D3E7E3D4E6E1D2
+      E5E2D0E5E3CFE5E2CFE7E2D3E7E3D2E6E3CFE6E3D0E5E3CFE5E3CFE5E2CFE5E2
+      D2E5E2CEE5E2CEE6E3CEE5E2CDE6E3CEE6E3D0E5E2CEE5E2CDE6E3D0E6E3D0E7
+      E4D2E7E4D2E6E3D2E6E3D0E6E2CEE6E3CFE6E3D2E7E3D3E8E3D3E5E3D2E5E3D0
+      E7E3D3E6E2D2E7E4D3E7E4D2E6E4D2E5E3D2E5E2D2E5E3D3E5E3D2E6E3D3E6E3
+      D3E5E2D2E5E2D2E5E3D2E6E3D2E9E3D3E6E4D3E6E4D4E7E4D4E5E4D3E5E3D2E6
+      E3D3E8E4D3E8E4D3E8E4D2E7E4D2E7E4D2E7E3D2E7E4D3E7E3D0E6E3CFE7E4D3
+      E7E3D2E7E4D2E7E4D0E6E3D0E6E2D2E6E2D2E8E3D3E7E4D2E6E3D0E6E3D0E6E2
+      D2E6E3CFE6E3CFE6E3D2E6E3D2E6E3D0E5E3CFE6E3D0E5E2CFE6E3D0E5E2CFE5
+      E1CEE5E0CFE5E0CEE5E0CFE6E2D0E5E2D0E5E1CEE5E2CFE5E2D0E5DFD2E5E0CF
+      E5E0CEE5DFCEE5E0CEE5E0CFE5E0CFE5E1CFE5E1CFE5E1CFE5E1D0E5E0D0E5E1
+      D0E5E1CEE5E1CEE5E1D2E5E0D0E6E1CEE6E0CFE5E1CEE5E2CFE5E0CDE5DFCEE5
+      E0CEE5DFCDE5DFCDE5DFCDE5DFCDE5DFCEE5DFCEE5DFCCE4DECDE4DFCDE5DFCD
+      E5DFCDE5E0CEE5DFCDE4DECDE3DECEE3DECCE4DFCDE4DECDE4DECDE4DECCE5DF
+      CDE4DECDE4DECDE5DFCDE4DECCE5DFCEE5DFCEE4DECDE4DECDE5DECCE6DECCE6
+      DECCE6DECDE5DECDE4DECDE5DECDE5DDCDE5DECDE4DECCE4DECCE5DDCDE4DECC
+      E4DECCE4DECBE5DECBE4DFCEE4DECDE5DECDE6DECEE5DECDE5DECCE5DECBE5DD
+      CCE5DDCCE5DDCCE5DDCCE6DECEE6DECEE5DDCAA09B86ADACA7545431302A23CE
+      C6CCDCD5AFDDD2B5B5A87F6B69495E5C3B51483D635F73F6F2FBEAEDE3EEECE2
+      D5D1B4D7C8B0DCCCB5E2D2B2A5A88167746A8DA3BCC4D8EBD9DACAD9C9ACD8CA
+      B1E0D0B3DDCDB5E0CCB4E2D1B6E3D1BEE0CFB6E3CFB4E0CEB2E0CEB2D7C8ACCE
+      C3A9E0CBAEE5D1B6BBB295696A648F989AF6F4FEFFFFFFCDC8ACD6C9AFD8CCB2
+      DEC8AFDECCB7C9C49D6B6F5EE6E9DA384221353A3E9691A2DED3C3DECDB2DECF
+      B5E1CBBDDBCCBDE6D9BA565340C6C6D6F6F4EFEEEEE4F1F3E296A2753B4C3C56
+      7088CFD9E4D5D3BAE6D3BCE5D4B8E4D3B8E6D1BCE8D2B7E4D1B6E8D1B6E5D0B5
+      E9D3BA9A957F737871A5ABB2EDEFF9F3F2E9DAD1B8E5D6BFE6D1BCEAD8BAA49B
+      77DDDFCD232C113C485BF7F0EFE0D0BED2CBA83C463273787CEBE0D4E5D6C1D2
+      CAA6524F4FEEEFF9FEFAFAFFFEF4ECE8DAE6DFCCEBE3D6EBE4D6ECE4D6FFF3E2
+      B0AA873F56434D5F61616573E0D7DEF2E7D5A3A285444C3C6E8190E2E8F4FFFE
+      FCE6E2D2EFE4D3EEE5D4EFE5D3F1E5D6EFE7D6F1E7DAFFFBE78D805A4043282C
+      2D1D121014B0A5B7FFF9EDD4C19F6D684E273028161B1C25353231423A263935
+      C0CCD9EFF0EFFFFFFB6C7550111E0F182523313D4192A5B6EAECECEBF1F0AFB1
+      A0070C03181E181B20191C211E1C221E1E2923202A21252F22333B303F4C3E62
+      706094A292B3BBACC9D4C3DAE4D9EAF0E7F3F5EFF1F4F0ECF1EBE7EBE3EBEFE6
+      E5E7E0ECF0E7E5E8DEFAFAF3BCC1A8252C1ECCD4D6E2E4E3DCDFE0E1E4E1DBE3
+      DADCDCD6D8DCD4DDE0D7EAEBE3FDFCF4818A743B4542EBF2F4DDE2DFD7DFDDD3
+      DCDBC8D2D2A3AFAB5C6C6A4D5D565C6D688E9A895E68566D79717C8781637369
+      7B867A798A767D877A79887674817553594450544E7C887D778174747D6F646B
+      60757A7150533843412B55543B59553D555030574D38877C69BE9F7CEAD5B2CA
+      AD8FD4B6919C8260625131635332897650BCA47C0000F1F5FAF1F5FAF2F6FBF2
+      F5FAF3F6FBF4F7FBF4F7FBF3F6FBF3F6FAF0F3F7E9EBEFE1E4E7D9DCE0D5D8DC
+      D4D6DBD3D5DBD3D5DAD3D6DAD3D5DAD4D6DAD4D6DAD4D6DBD3D5DAD4D6DAD4D7
+      DAD4D6DAD4D7DAD4D7DBD4D6DAD3D5DAD4D6DAD3D5DAD4D6DAD3D5DAD4D6DAD3
+      D5DAD4D6DAD4D6DAD4D6DBD4D7DBD4D7DBD4D7DBD6D7DBD4D7DBD6D9DCDDDEE2
+      E4E5E9EBECF1F2F3F8F3F6FAF6F7FCF4F7FBF4F7FBF6F7FCF6F7FCF6F7FCF7F8
+      FCF6F7FCF6F7FCF6F7FCF6F7FCF6F8FCF7F8FCF7F8FDF6F7FCF6F7FCF6F8FCF6
+      F7FCF6F7FCF6F7FCF6F7FCF6F7FCF6F7FCF6F7FCF6F7FCF6F7FCF4F7FCF6F7FC
+      F4F7FCF4F7FCF4F7FCF4F7FCF2F6FBF4F7FCF2F6FBF2F5FBF1F4FBF2F5FBF1F4
+      FBF1F4FBF1F4FBEFF3FAEFF3FAEEF2FAEDF2FAEDF1FAEDF1FAECF1FAEBF0FAEB
+      EFFAEBEFFAEAEFFAEAEEF9EBEFF9EAEEF9E9EDF9E8EDF9E7EDF9E7EDF8E6ECF8
+      E7EDF9E7EDF8E7EDF9E7EDF9E7EDF8E9EDF9E8EDF8E9EDF9E8EDF9E8EDF8E7ED
+      F8E8EDF8E7EDF8E8EDF9E8EDF9EBF0FAF1F5FBF9FAFDFDFDFEFEFFFFFEFFFFFE
+      FFFFFEFFFFFEFFFFFEFFFFFEFEFFFDFEFDFDFEFDFDFDFDFDFDFDFDFDFDFDFDFC
+      FDFCFCFBFBFCFAFAFCF9FAFBF6F7FAF3F6F9F0F3F6EAEEF4E6EAF2E1E6F1D9E1
+      EED0DAEBC9D4E8C1CEE4B2C1DD99AFD787A0D07B95C96E8AC66986C56385C965
+      88CD6589D0698BD36B8ED46E8FD67092D66F8FD36A8DCD658ACD567FCA4870C0
+      3A60B82D4FAA26479C2C4C95536EA592A2B9B9C0C7CECFCBDAD7CBE5DFCDE6E1
+      CDE7E1CEE8E2CEEAE3CFEAE4CFE9E4D0EAE4D0E9E4D0EAE4D2EBE4D2EAE4D0EA
+      E4D0EAE4D3EAE4D2E9E4D2E8E5D2EAE4D4EAE4D4EAE4D4EAE5D3E9E5D0EAE4D3
+      EAE4D3EAE4D3EAE4D2EBE4D2EBE5D2EAE4D0E9E4D0E8E4D0E8E4CFE9E3CFE7E3
+      D0E7E2CFE7E3CEE6E3CFE6E2CEE6E1CDE6E1CDE5E0CCE6E0CCE7E1CCE6E1CCE5
+      E0CDE4E0CEE5E3CCE5E1CCE4E1CCE4E1CCE5E1CCE6E0CDE5E0CCE5E1CCE5E3CD
+      E5E3CDE5E2CEE5E1CFE5E2CDE5E3CDE5E2CDE5E1CDE5E2CEE5E3CDE5E2CEE6E2
+      CEE6E3CEE5E1CEE5E1CFE5E2CEE5E2CEE5E2CFE5E1CDE5E0CDE5E0CFE5E1CFE5
+      E1CFE5E0CEE5E0D2E5E0D0E5E1CFE5E0CFE4DFCFE5DFCEE5E1CFE5E1CEE5E2CC
+      E5E1CCE5E2CDE6E2CEE6E2CEE6E2CEE5E1CDE6E3CEE6E2CDE6E1CEE6E3CFE5E1
+      CDE5E2CEE6E2CEE6E2CEE7E3CFE6E2CDE5E1CCE5E1CDE6E2D0E6E3CEE6E2CDE6
+      E2CDE6E2CEE6E3CFE6E3CFE6E3CFE6E3CFE5E2CEE6E3CFE6E3CFE5E2D0E5E2D2
+      E6E3D0E6E3D0E6E4D2E7E4D2E7E4D2E5E4D0E5E3D2E5E4D3E6E3D2E6E4D3E6E4
+      D4E6E4D4E6E4D4E6E3D4E5E3D4E5E3D3E5E2D2E5E1D3E5E2D3E6E3D0E5E2D4E5
+      E2D5E5E2D4E5E1D4E5E2D2E5E2D2E4E2D3E5E3D4E5E3D4E4E3D4E4E3D3E5E2D2
+      E5E2D2E5E2D3E5E3D4E6E3D4E6E3D3E6E3D2E5E2D3E5E2D4E6E3D4E6E3D3E6E3
+      D2E6E3D0E6E3D2E6E3D0E5E2D0E5E1D0E5E1CEE6E3CEE5E2D2E4E1D2E4E2D2E5
+      E3D4E6E4D7E5E4D5E5E2D3E7E2D0E5E2CDE5E1CFE6E3D2E6E3D0E6E3D0E7E4D2
+      E6E3D0E6E3D0E6E3D0E5E2CFE5E2CFE6E2D0E6E3D2E5E3D2E6E3D3E6E4D3E5E4
+      D5E5E4D5E5E5D6E5E4D5E5E4D7E5E4D7E5E3D6E5E4D5E5E4D5E6E4D5E6E4D6E5
+      E3D4E5E3D4E5E2D3E5E2D3E5E3D4E6E4D5E7E3D5E5E3D4E6E4D6E6E4D5E6E4D3
+      E6E3D3E6E3D4E6E3D5E5E3D2E6E3D0E6E4D2E7E4D3E6E3D3E5E3D2E6E3D0E6E4
+      CFE7E4D2E7E3D3E5E2CFE5E2D0E5E3D2E5E2D2E6E2D2E6E3D0E6E3D0E6E3D0E6
+      E3CFE6E2D2E6E2D2E6E3CFE6E2D0E6E2D2E5E1CFE5E1CFE5E2CFE6E3D0E6E0CE
+      E6E1CFE6E1CFE6E2D0E5E1CFE5E0CFE6E2D2E5E1D0E5E0CFE5E1CEE5E1CDE5E0
+      CFE5E0CFE5E0CEE5E0CCE5E0CEE5DFCEE5E0CEE5E0CEE5DFCEE6E1D0E5E0CEE5
+      E0CEE5E0D0E5E1D0E5E1CEE5E0D0E5E0D0E5E1CFE6E0CFE5E1CFE5E2D0E6E0CF
+      E5DFCEE5E0CEE5DFCEE5DFCDE5DFCEE4DFCDE5DFCEE5DFCEE5DFCCE4DECCE5DF
+      CDE5DFCDE5DFCDE5E0CFE5DECEE5DECEE5DFCEE5DFCCE5DECCE5DECCE5DECDE6
+      DFCDE5DFCEE5DFCEE4DECDE5DECCE5DECCE5DECEE4DFCEE5DFCEE5DECDE4DECB
+      E5DECDE5DFCDE5DECDE5DECDE4DECDE5DECDE5DECCE5DECCE5DECDE4DECCE5DE
+      CDE5DECDE4DECCE4DECCE5DFCDE4DFCEE4DECDE5DECDE5DDCCE5DDCDE6DECDE5
+      DECCE5DECDE5DECDE4DECCE5DECDE5DECFE6DECEE5DDCCACA8876F6E625F604B
+      2D2727C0B7C4CBBA9FD1BDA4DCC7AEE5CFB1E1CFB1ACA276575A5AEDEBF5EEEE
+      E3EEEEE4E5E2CBD1CAABDDC8B0D5C8ACD9CEA97E826863738B9BAED2E1E4E7D0
+      C6ABDACAB2DDCAB4DBCAAEE0CEB3DECCB3E0CDB5E1CEB8E4D0B9DDCFB3D7C5AE
+      D4C4AADCCBB2D9C9B7E4D2B38E8D75868A87CACBD9FEFFFEE5E4D0D3C9AFDCCD
+      B5DECBB5DACDB2DACBAED8C9A9606252E7ECDB3A4327555B5848474ACDC0BEE3
+      D2BCE0D1B8E1D1BEE1D4C1C4BA9A484C3EBCBACAF7F7F0ECEFE4F2F3E3B6B88C
+      444E3C415A6FB5CDDCD5D5C7E3D3B7E4D3BEE4D3B9E5D2B7E7D6B9E6D4B9E2D1
+      B6EAD7BCC6BBA3666F61788385D9DCE4FFFFFFE1DBC5E2D1B7E5D2BFE6D4BDEB
+      DCB99D976CEFF2E332351A3A4457FBF7F9D4D0B4F1DFC54F4F3D9C99A2F1E3D6
+      E3D6C4D6CDAB494E44EBEEF5FAFAF9FCFCF1EDE8DAE6E2CBEBE4D3EBE4D6EDE4
+      D5ECE5D6EBE4C647553E4B5A553F4D5AACADB7DED5C9424B393E5454A7B6CAFB
+      FEFEEAE4E4EAE2CFF0E4D5EBE5D4ECE8D7F0E7D6EEE5D5E2D8C0F3EDDA98896E
+      2B311A1C2018111518413E51AC9EA98F7F7C2D2C24161A140C13120F1716404B
+      4838433EB7C6CDEEEEF1FFFFF87987631B29161B292628393B99A8BAC5C8CD3C
+      4A45626D6E11150F151E16132215283B2B455644829284B0BBA3E5EAD8FDFFF6
+      FFFFFEFDFDF5EFF0E6F0F4EBC8CDBF9DAEB0E1E5ECE5ECE6E7EBE8EAEDE9EBED
+      E7E4E9E1E9EDE7ECEAE6DBE1DAD9DED49CA990363E31CFD5D3F0EEECE6EAE1E4
+      E9E4E8E8E3E8EBE4E9EBE4EAEBE4E5EBE4E5E8E0A7AD9D4B554BC9D3D3829995
+      ADC1C0CADCDAE4EFEDEDF2F1D9E2D59AA99B8E9C8C929F925F6E5D6577747E93
+      895F71647B8D81829180848F8877817C7381743F49362A34264C50445960535A
+      5F5967695ECBC3A96B62456B6345877559877E628A7D5958523851493444462F
+      44432B827756B7A673D6BA85FADBA9FFE8B3FFE8B4F6D5A80000F6F7FBF6F7FB
+      F6F7FBF6F7FBF6F7FCF6F7FBF6F7FCF5F6FBF0F1F6E5E6EAD4D5D9C4C5C8B8B9
+      BDB2B2B6B1B1B4AEB0B3B1B1B5B1B1B4AFB1B4B1B1B4AFB1B4B0B0B3B0B0B3AE
+      B0B2AEB0B3AEB0B3AEB0B3B0B0B3AEB0B3AEB0B3B0B0B3B0B0B3AEB0B3AEB0B3
+      B0B0B3B0B0B3B0B0B4B0B0B4B0B0B4B0B0B4B0B0B4B0B0B4B0B0B4B1B2B5B2B3
+      B7B9BABEC8C8CCD7D8DCE8E8ECF2F3F8F6F7FCF7F8FDF7F8FDF8F9FDF7F9FDF8
+      F9FDF9FAFDF8F9FDF8F9FDF7F8FDF8F9FDF9FAFDF9FAFDF8F9FDF8F9FDF8F9FD
+      F7F8FDF8F9FDF9FAFDF8F9FDF8F9FDF7F8FDF7F8FDF7F8FDF7F9FDF6F7FDF6F7
+      FCF6F7FCF6F7FDF6F7FDF6F7FCF6F7FCF4F7FCF4F7FCF4F7FCF3F7FCF3F7FCF3
+      F7FCF2F6FBF2F6FBF2F6FBF1F5FBF1F5FBF1F4FBF0F4FBF1F4FBF0F3FBEEF3FA
+      EEF2FAEFF3FAEDF2FAECF1FAEBF0FAECF1FAEBF0FAEBF0FAEBF1FAEBF0FAEBEF
+      F9EBF0FAEBEFFAEBF0FAECF1FAEDF2FAEEF2FAEEF3FAEEF3FAEFF3FAEFF3FAED
+      F2FAEDF2FAEDF2FAECF1FAECF1FAEDF2FAF0F3FAF6F7FCFAFAFDFDFDFEFEFFFF
+      FEFFFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFEFEFDFEFEFDFEFEFDFEFDFDFEFD
+      FDFEFDFDFEFDFDFDFDFDFDFDFDFDFDFDFCFCFBFCFCFBFAFAFAF7F7FAF2F5F6EE
+      F2F4EBEDF2E4E8F1DCE3EDD8DEEBD3DBE9CAD3E4BFCCE0B7C4DBABBBD899ADD0
+      7997C56180BC5B7CB95A79BD5F83C7668ECF6D91D0678DCD648ACC6A8DCE668B
+      CF6186CC5A81C84D79C3406BBC345DAE284EA02F4E97617CA99AA9C0BAC1CAC8
+      CACBD1CFC9D8D6CADEDACCE4DDCDE6E1CEE7E3D0E8E2CFE9E3CFE9E4D0E9E4D0
+      E9E4D2E8E3D2E9E4D2E8E3D0E9E4D2E9E3D2E8E3D0E7E4D2E7E3D0E7E2D2E7E3
+      CFE7E2CFE8E3D0E9E4D0E9E4D0E9E4CFE9E3CFE8E3CEE7E3CEE6E2CDE6E1CDE7
+      E2CEE7E2D0E6E1CFE5E1CEE6E1CFE6E2CEE5E0CDE5E0CCE6E1CDE5E0CDE6E1CC
+      E7E2CFE5E2CEE4E3CDE4E3CCE5E1CCE6E1CDE5E0CDE6E0CDE6E1CDE5E1CDE3E0
+      CCE4E0CDE4E0CCE4E0CCE4E0CBE4E0CCE5E1CEE5E1CEE5E0CEE5E1CEE5E1CCE5
+      E1CEE5E0CEE5DFCEE5E0CEE5E1CFE5E1CFE4E0CEE5E1CFE5E1CEE5E0CFE5E0D2
+      E4E0D0E4E0D0E5E1D2E5E1D2E5E1D0E5E2D0E6E1D0E6E0D0E5DFCFE5E0D0E5E0
+      CFE5E0CAE5DFCBE5E0CDE5E1CDE5E0CCE5E0CCE5E1CDE5E2CCE5E1CBE5E0CCE5
+      E1CDE5E1CDE4E0CCE5E0CCE5E0CCE5E1CDE5E0CCE5E0CAE6E0CEE6E1CFE6E2CD
+      E6E1CCE5E0CDE5E0CFE5E2CFE5E1CFE5E2D0E5E2CEE5E2CDE5E1CEE5E1D0E5E1
+      D3E5E1D2E5E1D2E5E2D2E5E2D0E6E3D2E6E3D2E5E2D4E5E2D3E5E3D4E5E3D3E5
+      E3D3E5E4D4E5E3D3E5E4D4E5E4D4E5E4D4E5E3D4E5E3D4E5E4D5E5E4D5E5E2D5
+      E5E3D6E5E3D7E5E2D6E5E3D6E5E3D4E4E4D3E5E4D3E5E2D2E5E3D4E4E3D6E4E2
+      D5E4E2D2E4E2D4E5E3D6E5E3D5E5E3D5E5E3D4E5E3D2E5E4D5E5E4D7E5E3D6E5
+      E3D4E6E2D0E7E3D2E6E2D2E7E2D2E6E1D2E4E1CFE5E2CEE6E3D0E5E1D0E5E2D2
+      E5E2D2E5E2D0E5E4D2E6E4D3E6E3D2E6E1D2E5E1D2E5E1D0E5E2CEE6E3D0E6E3
+      D0E5E2CFE5E2CFE5E2CFE5E2CFE6E3D0E6E3D0E7E4D2E7E4D2E7E4D0E5E3D5E7
+      E4D7E6E4D9E6E4D8E6E5D9E7E6D9E6E5DAE5E4D9E5E4D8E5E4D7E5E4D6E5E4D7
+      E7E5D8E8E4D8E7E4D8E7E4D7E7E4D7E7E4D7E6E4D6E6E4D7E6E4D7E6E4D7E6E4
+      D7E6E4D5E6E4D5E6E4D6E6E4D7E5E3D7E5E3D5E5E3D5E5E3D6E6E3D7E6E4D6E6
+      E4D4E7E3D2E7E3D3E6E2D2E7E2D2E7E4D4E5E3D3E5E3D4E6E4D3E6E2D2E6E2D2
+      E6E2D2E6E2D0E6E2D0E6E1D2E6E1D2E6E3D2E6E3D0E5E1CFE6E2D0E5E1CFE6E3
+      D0E6E2D0E6E1CFE6E1CFE5E2CFE5E2CFE5E0CEE5E2CEE5E1CEE5E2CEE5E1CEE5
+      E0CDE5E0CDE5E0CFE5E0CFE5E0CCE5E0CDE5E1CDE4DFCCE5E0CDE5E0CEE5E0CE
+      E6E1CDE6E1CDE5DFCFE5DFD0E5DFCFE5DFCCE5DFCEE5E0CFE5E0CFE5E0CFE5E0
+      CFE5DFCEE5DFCEE4DFCEE4DECEE5DFCDE6DFCDE4DECCE4DFCCE5DFCCE5DFCDE5
+      DFCDE6DECCE6DECCE5DECBE5DECDE5DECCE6DFCDE6DFCCE5DECCE5DECCE6DECC
+      E5DECCE6DECDE5DFCDE5DFCDE4DECCE4DECCE5DFCDE5DFCEE4DFCEE5DFCEE5DE
+      CDE4DECDE3DECDE4DECDE5DECCE4DECCE4DECCE5DECCE5DECCE5DECCE6DECDE5
+      DECEE4DFCDE4DFCEE5DFCEE4DFCEE4DFCEE5DFCEE5DFCEE5DECEE5DDCCE5DDCC
+      E5DECDE5DECCE6DECDE5DECEE4DECDE4DECDE3DECCE5DDCDE5DECCBCB8996468
+      50585E4A2D2627BDB3C8D1BE96D6C1A2D4BEA2D3C0A5D4C5A7C0B7955E5553ED
+      E7F5ECECE3EDEFE6E5E1C7D4C5A9DDC6B0D4C9AFE1D1B79B9D75616C6E788DA7
+      D4DEE7D4CEBDD1C8B2DECAB0DCC8AFDECDB1DECDB1DDC9B3DECDB4E3CCB6DDCB
+      B0CFC3A7DBCEB3DDCBB3E2CFB7CAC29D7B8072ACB2B9E5EAF2FAF9F0CFC8AFDB
+      CDB6DACAB4DCCBB1D7CDB2DDCFB5DCCEA95F5D4AE6E8DA3F4D32606A74938B84
+      9A9191EBD6C9DED1B9E0D4BAF1E6CAA1A08680806DACA9BCFAF8F3EFEEE4F1F2
+      E0ECE5C256633F3E505998B2CCC8D0CAE5D4B9E5D2BDE8D4BDE0D3BADED1B8E5
+      D4BAE7D5BCEDD8C17C8366737D74ACBCC1FDFEFFE9E6DFE0D4B9E5D7C2E4D4C0
+      E5D3C0EBDAC2A89C76EDEBE73F452F2F2F3BDBDBE2E8DAC8BEB7998D9681544F
+      4AEBD8D5E5DAC1D9D0B3474D43E9E7F4FEFCF9FDFAF3F0EDDCE9E1CFEAE2D5EB
+      E4D6ECE4D8EDE5D6FCF5E28789613B463E3A4B515C647D727976465A53425B5B
+      6C8199D8DEE0E7DDCEEFE4D2EAE3D3EFE7D8ECE5D7EBE6D8EEE5D4FAEED7827C
+      583C452E323E292B2F1D1E221B17231B121717171A191D26241B261E19251C16
+      201C1D2B2A374040B2BEC9F0F1F5FAFBF5868B741320152433302636363B4941
+      4551502F4037283B34384A3D99AA9CCDD3CBDEE4DCE6ECDFEFF2E9F1F2EBEFEF
+      E6E5E7E0E5E7E0E5E6E1E4E9E2F1F7EE9AA18B2F3834B3C1C9E7E9E6DEE3E1D7
+      DED9D7DEDAE0E2DFD6DFD7D6DCD4D6DCD3F0EFE4CBCDB42A3226E8EDF1F9F8F6
+      EFF0EBE5E9E4F1F3EFCBD4D5BBCAC9C2CECDCBD7D7CCD7D4ABB7B1485B51B7C1
+      BFE6EDEAFDFFFFFFFFFFFDFFFFFDFFFFFFFFFFEFF9EEB5C1B4909F89606D5B77
+      827A8A978E616E6A6E807C737C6E6970625969575C64564A4A3A595A3FBBAA85
+      96896562624350523E7366516A5E415B5742534C38635C455B5C3D6564486B68
+      4B4C4D30706648C9B184FFE4B6F6D6A7F1D7A5F3D6A0F7DAA4F0D1A39769F7F8
+      FCF7F8FCF8F8FCF8F9FCF7F8FCF7F8FCF6F7FBF2F3F7E5E6E9CECFD2B2B3B79D
+      9EA09191948C8D8F8B8B8E8B8B8D8B8B8D8B8B8D8B8B8D8B8B8D8B8B8D8B8B8D
+      8B8B8D8B8C8D8B8B8D8B8B8D8A8B8D8B8B8D8B8B8D8B8B8D8B8C8D8B8B8D8B8B
+      8D8B8B8D8B8B8D8B8B8D8B8C8D8B8C8D8B8C8E8B8C8E8B8C8E8C8C8E8C8C8E8C
+      8C8E8E8E90939396A2A2A5BBBBBED4D5D7E9EAEDF5F6F9F9F9FCF9FAFD2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F3292
+      18499B3A6FA67E618EA14E799E4D6FA35071A8587AB06483BB5E7EBC577DBD5B
+      85C36189C9638ACB648ACB5F86C85380C5507DC54270B63563A7274E9A3C5F99
+      7C9AA860A05E3793202C8F102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2C8F102F911439951D459A2956A23B70AE568FBC76B6CD9E
+      D4DABFE1DFCCE5E1D1E4E0CDE5E0CEE5E0D0E5E2D0E5E2CFE5E1CEE5E1D0E5E1
+      D0E5E0CFE4E0CFE4E0CEE5E1CEE6E0CEE5E0CEE5E0CFE5E0CFE5E0CFE5E0CFE6
+      E0CFE5DFCDE4E0CDE5E1CFE5DFCFE4DFCEE5DFCEE6DECCE5DFCDE5DECDE5DECC
+      E6DECCE6DFCCE7E0CEE7DFCDE6DECCE6DECDE5DECCE6DFCDE5DECDE5DECCE5DF
+      CCE6DFCDE6DFCCE6DECEE5DFCDE5DFCDE5E0CDE5DFCDE5E0CDE5E0CFE5DECEE5
+      DFCFE5DFCEE5DFCEE5DFCEE5DFCEE6DFCDE4DECCE4DECCE5DECCE5DECCE5DECC
+      E5DDCCE5DECDE5DFCDE5DFCEE5DECEE4DECCE4DECCE5DECDE5DFCDE4DECDE4DE
+      CDE3DECDE5DECCE6DECCE5DDCDE5DDCCE5DECEE5DECEE5DECCE5DECEE5DDCCC0
+      BC9D767C5E49513D2E2C29B3ABBDDCC8A9CDBD9DD4C1A7D9C2A4D5C5A9C5B992
+      59574EE5DDEAF0EEEBECEEE3E4E4CBD1C9AAD7C8B0D8C7AEE2CFAFB7B28E5F6B
+      5E637481AABDCFE6E9E4CDC8B0D9C7B4DECBB1DAC7B0DECCB2DECDB3DDCDB2E1
+      CFB4D9C6ABDDCCB1DDCEB1DECCB2DCCEB79E9974888F86CED1E0FDFCFDEBE8DA
+      D1C6ACDDCEB2D8CCB1DCCDB2DBCCB7D7CBB4DDD3B0615D43E1E4D3444E346268
+      7CF0EFE9767169F6E5DFDDD1BDDED7C2D4CBA9B2B39D7D7E63A2A3B0FDFBF8EE
+      EEE7F1F3E7F0E7C58788633348437CA1B9C4D4D3DACEB7E7D1BAE5D3B8E6D5B9
+      E2D9BEE5D3BAF3E1C9B3AF8F67776E8D989BE3ECF4FAF5F2DBD1BAE5D5C5E7D9
+      BFE7DAC1E4D3C0EDDEC2B4AD817779652B32242324279997A4FFF2E9939180F1
+      E6E3B7A583ABA39FEBDBCDDED2B54A4B37E6E5F1FCFCF6FFFEF5F1ECDAE9DECA
+      EDE3D4EBE4D5F1E6D7EBE1CBDBD1BEB2AD9539433B20353A263A403D52533F57
+      5447595A9C9DA9F3E7E1EBE3CDEDE1D2EDE3D3EDE5D4EBE5D5EFE7D7EFE7D8FC
+      EDDAA1936C494D37434434363A28252C23292B27282F2A252A271F29221E2B2A
+      1828211F2C271E2D2A1D3230A8B4C0FAFDFDA1AA923A412D1B21174B554A969C
+      9BE1E4DCD6DCC5CCD7C1FBFDEEFFFFFFEBF1EBE8EDF1E9E9E6E4E7E2E5E8E2E9
+      EBE7E8E8E7E7E9E4E6EBE2E7EAE7E7E7E3F2F3EC9CA68E3B443C9DACB1D2D6D0
+      E5E6E2EBF2E6EDF0E4ECEFE6EFEDE4E8EDE3EBEEE7F0F2F1E5E9E1566B5A879D
+      A397A9B3A8B9B7B2C4C294A5A9B3C0BAD4E3E0ECF7F4F1F4F1EFF3F2E6EBE34F
+      6360FFFFFFFFFFFFFEFFFFFFFDFFFFFEFCFFFFFEFDFFFDFEFFFFFDFEFED6E3E1
+      899B8961716B5A5E5B5755488D8D6FBDB391D8CBA0F6DEB7B29C715251386666
+      4A79765D6B644A88785B998F6BC8B48D907F59706547B0996FD9BD89E1CA9598
+      7E528D8261D7BA92E3D1A9CDAE83F9DCB5F1D3A9F6DAB1FCDEB7FDE1B9EDD0AF
+      9769F9F9FDF9F9FDF8F9FDF9FAFDF9FAFDF9FAFDF7F8FBECEDF0D5D5D7BDC0BD
+      C5C6C7BDC0BCB7BBB6B2B6B0B0B5ADB0B5AEB2B7B1AEB4ABAEB4ABAFB5AEAEB4
+      ACACB4AAADB3ABAAB1A4A4AE9DA5AE9EA9B1A5A7B0A4A6AFA2A5AFA2A5AFA1A4
+      AE9FA4AE9FA4AFA09DAA9598A68C9CA993A2AD9EA0AC9B9EAB989FAC9A9CAA94
+      98A78E96A1928489837A7A7B8484869A9B9CB9B9BCD9D9DBEEEFF1F8F8FB2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2D90113A9523569E52689D895F8F9F5680A24E73A15271A6526AA5
+      4F6BAC5070B65779BE6282C16487C36087C35F87C56188C95780C44C7CBD4472
+      B1335AA1365794718DA668A06D3692202C8F102B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F102E90123292163694
+      1B439A2858A33E7BB262A3C48CC7D5B0D9DCC3E1DECDE4DFD1E5E0D0E5E2CFE5
+      E2D0E5E1D0E5E1D0E4E1CFE4E0D0E6E1D0E5E1CEE5E0CEE5E0CFE5E0CFE5E0CF
+      E5E0CFE5E0CEE5DFCDE5E0CCE5E1CDE5DFCEE4DFCDE5DFCDE6DECCE6DFCCE5DF
+      CBE5DFCBE5DECCE5DECDE5DECCE5DFCDE5DFCDE5DFCDE5DECCE5DFCDE5DFCDE5
+      DFCEE5DFCFE5DFCDE5DFCEE6DFCEE5DFCDE5E0CEE5DFCFE5E0CEE5DFCDE5DFCD
+      E5DFCEE5E0CFE4DFCEE5E0CEE4DECDE4DECDE5DFCDE4DECCE4DECCE5DECCE5DE
+      CDE5DECDE5DFCCE5DECCE4DECCE5DECEE5DECDE5DECCE5DECDE5DECCE4DECCE4
+      DECBE4DECCE5DECEE5DECCE5DECCE4DECCE4DDCBE4DDCCE5DECEE5DECCE5DECD
+      E5DDCDC6C1AAC8C3B4363F1934322DAFA5B6DBCFB5D5BDA7D1C1A6D5C3A9D5C0
+      AAD2C6A05A574ED4D1DEEEECE9EDEDE4E7E6CECFC5A7D6C8B1DAC6ABD8C7B2D1
+      CCA9757C5A596A5E6E8FA8DEE7F6CFCEBED9C4B1D8C5B1DBC9B1D9C8AEDCCCB1
+      DECFB6D5C2AAD7C6AFD7CFB2D5CEB2E0D1B7B7B29177775AAAABAFF2F7FEFDFF
+      FDD8D0BADACEB6E0CEB0DECFB3E0CDB0DCD0B6DDCEB4DCD4B961624CD9DDD054
+      5C41545C75FFFDFF8D8369C4B4BEE7D8CBE2D7BF878071E3DCCA847E5E8C909F
+      FFFDFBEBEFE7EEEDE2E8E0C1CBC89F3F4E3565819BC0D5E4D6D4C3E5D4BAE5D3
+      BCE5D5BDE3D2B8E9D8BFBDB39B727566869698D5DFEBFAFAFDE5E1CDE0D2C1E8
+      D8C4E6D7C2E7D9C5E7D6C1E9DEC2C1BA8D4D573B2A341E1F221FA6A3B1F8E5DA
+      767C6EF1EBDEECDFC0807C72F0E1E0DDD4B44F4D43E3E2EDFDFAF9FCFDF5F1EE
+      DCEBE1CEEBE4D0EDE4D3F2E9DBF3EEDBD4CCB45A5E4E445450283D413B515135
+      4B45324A49394949A3A6B2E4DEE3E5D7D5EEE1DAF1E6DAF6ECDEF1E8D8F1E5D4
+      EADFD0F6EEDA96936E33332A2F2F24212824252B24202424202827242C261D2B
+      242330292A322722362629352E192A25A2ADBEFFFFFFAFB49D434A395155545B
+      5F5AD1CEDFFFFFFFF1F2EBEEF1EBF1F3EADBDEC9545F5492A1AAF2F7F8E4E9E1
+      EDEDE7ECEDE9EEF0E9EBEEE9E4E8E1DCE0D8D0D8D3E3E9DDA4AD91373C3BCAD3
+      D3F6F5EBEDF0E6F1F3EFF9FAF5FDFAF8EEF4EFE6EAEBDEE9E7B4C8CBDDE5EB9B
+      A89A799293B4C6C76B836C7C8F8BFFFFFFFFFFFFFFFFFFFEFEFFFDFFFFFDFEFE
+      EFF2EF49645FFFFFFFFFFFFFFFFFFEFBFFFFFBFFFFF8FFFEEDF8FAF0FAFAE7F3
+      F5CED2D06D715E9B9881E2D4B6F1E4C1F7E0C0EBD2B1BA9E7E8974586763415F
+      5A3F616447B6A381E2CB99F1DAB4D1B789FFE2B59C885E706447CCB187FADAA9
+      F8DDA8B49861968262D3BB8CD0B893CDB38FFFF2D8FFF3D9FAE1CCCBB79D816D
+      5A453A299769FAFAFDFAFAFDFAFAFDF9FAFDFAFAFDFAFAFDF5F5F8E2E3E55B99
+      4FBFD9B3FFFFFFF0F6EEEDF4E8E9F1E1E7F0DFE9F2E4EAF3E7E7F1E3E5EFDFE4
+      EFDEE2EDDCE2EDDDDEEBD8D6E5C9D0E1C0D0E1C0D5E5CBD8E8D1D5E6CCD2E4C9
+      D1E3C8CFE2C6D0E2C7CCE0C1C0D8ADBAD3A2BAD3A3C1D8B0C7DDBCC6DCBBC3DA
+      B7C0D9B3C0D8B4C4DBBAB8D1A98C9A80747475838384A1A1A3C7C8C8E6E6E8F7
+      F8F92B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2F911540982D61A3607BA7997099AB5C83
+      B14D76A74667AD4460AE4965B34C69B75370BB597CBB6583BC6687BC5A80BA54
+      7EBE567EBB4B75AE355E9B325090728AAB6BA0743B94272D90112B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2C8F103292163E9722509F356CAB528FBB76AFC897C6D2AF
+      D9DCC3E3DFCDE4E0CEE5E1D0E5E1CFE5E1D2E5E0D4E5E0CFE5E1D0E6E1D0E6E1
+      D0E5E1D0E5E1CFE4DFCEE5DFCEE5E0CCE5E1CDE5DFCDE5DFCDE5DFCDE5DFCDE5
+      DFCCE6E0CCE5E0CBE5DFCDE5DFCEE4DECCE4DECCE4DFCDE5DFCDE5DFCDE5E0CC
+      E5E0CBE5DFCEE5DFCFE5DFCEE5DFCEE5DFCEE5DFCDE4DECDE5DED0E5DFCEE5DF
+      CDE5DFCDE4E0CEE5E0CFE4E0CEE5DFCEE4DECDE4DECDE5DFCEE4DECDE4DECDE5
+      DFCEE5DFCEE3DECCE4DFCCE5DFCFE4DECDE5DECDE5DECDE4DECDE4DFCEE5DFCE
+      E3DECEE5DECCE5DECBE6DECEE5DECEE3DECCE4DECCE3DECCE3DECCE4DECDE4DE
+      CCE5DDCCE5DECDCDC7B0CECABC50562D3D3D31A199ABD8CEB4D2BAA2D2BCA3D7
+      C0A5D1C0A9D5CB9F5E524BD1CCDAEFEEE9EBEDE2EEE9D2CEC7A7D6C8AED8C4AF
+      D9C1A9D9CAB09AA0785F66575E7381B4C9E9E0E5E8CFC2A9D9CBB3DCC7B7DCCA
+      B3DECBB2D2C4AFD1C6B3E0D1BADECFB7E0CEBDE3D6BF7C7962787A74C6CAD4FE
+      FFFFFDFCF4D4C8ACD7C9B6DDCEB8DCCBB5DBCFB5DDD0B6DAD1B9E2D7BE6D6B4B
+      AAA8A2555E4A40465BCCC8DEC4BEA45E5657E6D8D4B7B1919A9C98E8DECB8E88
+      6480868CFFFEFBEDEFEBF1EDE3E1D7C0EBE2BD6E7754566A77A4C1DCDBDAD4DB
+      D1BAE3D5BDE2D6BFE5D5B8DBCEB14A5640697877CCD2DAFFFFFFF0F0E7DCD1BF
+      E5DAC6E6D6C6E5D9C3E7D9C5E5D6C2ECDEC9C2BA9652594031341A2521179183
+      98545A52CEC5C1E7DBC9EBDAC2827E5AB2ABA8EBDDC8514D3EDBDFE7FDFDFCFC
+      FDF5EFF0DDEAE3D6F0E7DCEFE7D7F2EBD8BABAA6CFCAB8171B0D1C2C2C253837
+      253C3D293A362139331B31342130383C474E46535B565969696C758D8D90D5CE
+      CFFAEEEEFFF8EEECE5CC6E6C54181E151B1E1F1C1F1F161F1E17231F17231F17
+      2622192B1F202F291E2D2A29352F3039313C433E343D3C464F53949C8D49533A
+      4D57494A524A454F59667687F1F2F4EAEBE0EFEFEAEAEDDA4C513D8C989BE7EA
+      EBD8DBD6DCDED6DEE1D8E1E0DAE4E4DCEBE9E1ECEDE4EBEBE6F2F4EBB4BCA92E
+      3E33C4CED3EBEDEEEAEFEECDD4D494A4A694ADB1BFD5DBE0EDF1E5F1F5E7F3F1
+      F7FDFD9DADA9E2EEF1FDFFFFF6F9F2D4E0DDFCFEFFFFFEFFFFFEFFFFFFFFFEFE
+      FEFDFEFEEFF3F1586D6EFDFFFFF6FAFDE9F3F4E7F2F6E6EFF2E2ECEED9E0DDC5
+      C9C1C0CCC6EFE4D2908A6EABA089BDA684A595768A7755746842927F58B3A27C
+      CEB990887858827968FEE6BFEFD2A3F1D5A7CEB687F9DBAEA38F626D684BCBB6
+      93EDD4ACFFE3B8C2AA768E7C5DD5C0A7C0B799B8A489B29F8C6E614E3A361D45
+      4027706F49C4BA910000FAFBFDFBFBFDFBFBFDFBFBFDFBFBFDFBFCFDF3F3F567
+      A24C04730081B466FFFFFFEEF5E8EBF2E4ECF3E7E9F1E2E5EFDCE6F0DFE8F1E5
+      E7F1E2E4EEDEE3EEDDDFEBD7D5E5C8D4E4C5D8E6CED1E2C3CBDEB9D1E2C5D5E5
+      CDD3E4CAD1E3C8D1E3C9CBDFBEBDD5A7BDD5A7C7DCB9C0D7AEB4CF9ABAD4A5C4
+      DBB8C4DAB8C4DBBAC5DCBAB8D3A4ADCB91B2CF9B95A29079797A919292BBBBBB
+      E1E1E1F8F8F82B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F3292194C9C3C71
+      A97284A9A96A93B55681AF486FAA4062AC4260B54564B94666B74865B14C67A3
+      5976A45C7FB24B74B2476FAD4871A03D64A23C5DA77591B479A68742972D2F90
+      132B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F1030911439951D4399
+      2752A03768A94E88B76EACC894CAD4B3D9DBC0E3DECDE4E0D2E5E0CFE5E0CFE6
+      E2D0E5E1D2E5E0D2E5E1D3E5E0D2E5E0CFE5E0CFE5E0D0E5E0D0E5DFCFE5E1CF
+      E5E0CDE5E0D0E6E1D4E5E0D0E5DFCEE5DFCEE5DFCEE5DFCEE5E0CEE5E0CDE5E0
+      CFE5DFCFE5DFCEE5E0CFE5E0CEE5E0CFE5DFCEE5DFCDE5DFCEE4DECDE5DFCEE5
+      DFCEE5DFCEE5DECFE4DED0E5E0D2E4DFD0E5DECFE5DECFE5DFD0E5E0CEE5E0CE
+      E4DFCEE5DFCEE5DFCEE3DECCE4DECBE4DECDE4DECDE5DECDE5DECDE4DECDE4DE
+      CDE5DFCEE4DECFE5DECCE5DECCE5DDCBE4DDCEE4DECDE4DECDE4DECEE4DECDE4
+      DECDE4DECCE5DDCBE5DECDD6CFBCCEC8BF6E794E3A3D2A9C98A9E5D8C0CEBC9D
+      D2BCA7D4BCABD6C2A8D9CCA5645D4EC4C0CDEFEDE8ECEDE4EDE9D6CFC6A3D9C7
+      ABD3C5ABD5C5B1D7C9ABC9C29B737E5A51666C86A3C5D5E0EBD1CBB2D9C9ACDB
+      CBB4D8C9B2D9CAB4D7C6ABDCC9AFE0CCB3DDD1B6E2D0BAD0C7A6676E5D818B8E
+      E3E7F1FFFFFEE0DCC7D8CBAFE4D1BCE1CEB7E2D0B5DED1BCE2D0BADDCBB4E8DB
+      BD74754F65694B3A432E1E222C5F5C6CDED4C048482ED1C7C080786BD1C8CAE5
+      D7BE9695727E8088FDFDFEEFEDEAEEF0E1E3DCC2E4DEB9929C7349646486A5C1
+      D2D4DEE5DAC3E3D2B9DED7BCFAE6CEACA183586B5D6F8284F1F7FEFDFDFAD9D3
+      C0E6D9BFE4D5C6E5D9C5E6D9C5EAD9C3E6DAC6EAE0C4C3BE9558563C35382523
+      25223232333C3A3EEFE2D8E3D4BEE5DAC2C0B28D545041F7EDDF4D4D3AD6D8E6
+      FFF9FDFCF9F5F0EDDFEBE5D6EBE5D5EDE6D9F7F3DC999C73464B3E3D3E2B242F
+      2215211E15211E15282C162A2E0D22251223261B3536263C3E33494832474431
+      3F412F3844424A586A696E4A4D4431331D171B1519201A181F1D14221E152622
+      1825241824241C28241C29251E2C2920322B2A3431323D3B3A47404F5D629AA2
+      983F4F315B6455505950454C42313B40EBEEF2D7D8D8D5DDD3D3DCC549543D8A
+      939BEDF1F1E9ECE1EDEFE7EDEEE3EDEFE8ECEFEBEBEEE7F0F1EBF9FBF6F8FBFA
+      E6E9E3616A5F8D9AA9A0AFB09CB4AECBD9D6EDF7F1FBFFFCFFFFFFFEFFFFFFFF
+      FEFEFFFFFFFFFFA4B2B2EBFAFFFEFFFDFFFFFFCEE0E2F0FAFAFDFFFFFCFFFEF8
+      FEFEF2FAFDEDF5F6DEE9EA48595FCEDFE7D7E1E0E9EAE4E2DED0D6D4C5D8D5C4
+      E9E5D3F6EEE4EBEEE3FBF7EB96987AADA891D4C6A2E8CCA8EBD1A4ECD1A5EED5
+      AAEFD6A9F6D5AC908360BFBCA9E4D0AAECD1A4EDD6A8DCC196FADFB1A792696B
+      6349D9C8B4CFB7A08A77686A5B41403D246959406A654F8C836DB5B18ED0C8A7
+      F2E6C5FFF1D2FFF4D2FBE8CC9769FBFCFDFBFCFDFBFCFDFBFCFDFBFCFDFBFCFD
+      EAEDF656983E027400429117F5F6F4FAFCF6EEF5EAEFF6EEEDF4E9E6EFDEE2EC
+      D7E2EDDAE5F0E1E4EFE0E2EDDCD8E6CAD6E5C7DCEAD4DFECDBDAE9D4CFE1C2C8
+      DCB5CEE0C1D4E5CCD3E4CACDE0C0BFD6A8BFD6ABC8DDBBCEE2C6CCE0C4C0D8B0
+      B2CE97BED7ADC7DDBDC2DAB7B7D2A3ADCA90AECB92BAD4A9C3DBB9878C858C8C
+      8CB3B3B3DCDCDCF5F5F52B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8E0F2B8E0F2B8E0F2B8E0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2C8F1036941D539F4471A77B769FA8648EB55179B1486DB54566B64665B74666
+      BE3C57B03D559C4B679D5473A94B6DA9486CA8527AB24371B43D66B27391B784
+      AB8E4D9B393091142B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2C8F102E901231921535931A409825509F3567A94C86B66CA3C48CBECFA6
+      D3D8BCDFDDC8E3E0CEE4E0D2E4E0D2E5E0D0E6E1CFE5E0CFE5DFD0E5DFD3E5E0
+      D4E6E2D4E5E1D0E5E0D4E5E0D5E5DFD4E5E0D0E5E0CFE5E0CFE5DFCFE5E0CFE4
+      E0CFE5E0D0E5E0D2E5DFD2E4DFD2E4DFD0E5E0CEE5DFCFE4DECEE4DECDE4DECD
+      E4DECDE4DECDE4DECEE5DECFE5DFD0E5DFD0E4DED0E5DECFE4DECFE5DECFE5DE
+      D0E5DED0E5DECDE4DECDE5DFCEE4DECDE4DECCE4DECCE4DECDE5DECDE5DECDE4
+      DECDE3DECCE4DECDE3DECDE4DECCE5DECCE4DECCE4DECDE4DECCE5DECEE4DECE
+      E4DECEE4DECEE5DFCDE6DECDE5DDCCDBD3C3CCC7BD8895693B391F968BA0E7DE
+      CCCFB799CFBAA4D0B79FD4C0A9DACDAB676650BBB3C2F0F1E4EFEEE7EAE8D8CC
+      C4A3D7C3A8D9C6ABD5C2A9D3C3A9E0D1AAABAA77516351566B85B4C7DED2D4C1
+      D1C5ACD7CAAED7CCADCDC1A5D7C9B1D9CDAFDACEB2DAC9B1E6D6B99D9D767E87
+      81B0B9C2F6FAF9EBEEDCD1CDB3E0CFB5DDCCB5DDCFB6DACDB6E0CFB6DDD0B6DA
+      D1B7E6DABD716E4BB9B9AD6A7151303230635B68E0D3C6B5B17D5F6355A0A5A8
+      E1DCCEE4DBBFA0A176727676FAFDF9EAECE4EAEDDFE0DCBFE8DEC3BAB78A435B
+      4B405A5855696BBDB6B7E2D5C5ECDEC6B1AC8F606F64768A90C8DAE2F8F7F1D9
+      D8C3E3D8C5E2D7C2E3D9BEE2D8C2E3D6C3E6D9C4E6D9C6E8DEC5C8C195535535
+      292B191C1E1942444BC1B6BAE5D8C6E2D5C4E2D6C2EDE5C6716F4BCBC5BB5758
+      47C3C8D6FDFDFAFDFBF7EFEFE1EAE6D2EBE4D2E9E4D7F8F1D8B3B6864851353A
+      4130313D2C2C332D2731281E2D2C223130141F1D142326182B302D414636514E
+      2D483D2D473D2F40443144442E403F30443E7A887E444E3E253A2919221B151E
+      19131F181A25211929251B2D27182C26152A231B312C2A4139293F352C3E3734
+      464EEDF3EF969D7B7D8A69424B3C4C504C404745D4D9DCE4E5DEEDEFE5F1F6E2
+      575D408E9BA2F5F6F4E9ECE0EBEEE4EDF1E8EDEFEBDBE1E0EAF0EFD0D8DA9DB3
+      B3869DA29AA5A4596054B7C6CBF1F6F4FAFDFBFEFFFEFDFEFDFEFFFDFCFEFEFE
+      FFFDFDFDFDFEFFFDFDFEFDA1AEADF1FDFEFBFEFDFCFFFDC7D4DDEBF9FBEDFAFA
+      E1EAF2D0E3E6DBE8F0D3DEE1CFDBD8465147E3E0DBE7E4D4E3DFCCEAEDDEF6F2
+      E9F6F4EAF1EDE2EEE7E0E8DBCCE6D8BB8D7E64C4B29BF7D8ABEAD4A5EFCEA6ED
+      CBA6EBD1A5EBD2A6EED1A38E7C64DBE0D9E7D2AFE9D2A3EAD3ABE7D1ABF7DEB8
+      B19C74504831645D4949413256543D65634ED1CBB5D8D4BBC9BEA6D4C6B4F2EA
+      D5F0E2C9EEE4C9ECDFC5ECE1C9EADEC89769FCFCFDFCFCFDFCFDFEFCFDFEFDFD
+      FEFDFDFEF1F5FB94BA9D1178000F7700B1CDA2FFFFFFEFF6ECEEF5EBEAF2E2EB
+      F4E4ECF5E6E6F2DAEAF6E1EFF9EBECF8E6E7F4DCE9F6E2E8F6E2E0F0D5DEEED4
+      E0EFD9D2E5C4CDE1BED5E6CCD3E4CBCADEBDC2D8AECDE1C4C6DCB8BFD6AAC8DE
+      BDCBE0C3C0D8B0C1D9B2C7DDBEBBD5A9ABCA8EBAD4A7BAD3A6ADCA90B7D2A3A4
+      B19E8A8A8AB0B0B0DBDBDBF5F5F5FFFFFFFEFEFEFEFEFEFCFCFCFBFBFBF9F9F9
+      F7F7F8F7F7F8F7F7F8F7F7F8F7F7F8F7F7F8F8F8F9FAFAFBFBFBFCFCFCFDFDFD
+      FEFCFCFDFBFBFCFAFAFBF8F9FAF7F8F9F7F8F9F7F8F9F7F8F9F7F7F9F7F7F9F8
+      F9FAF8F8FAFAFAFCFBFBFDFBFBFDFCFCFEFBFCFDFBFCFDFBFBFDFBFCFDFBFCFD
+      FAFBFCFAFBFCFAFAFBFAFBFBFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFBFB
+      FBFCFCFCFDFDFDFEFEFEFEFFFFFEFEFEFCFDFDFBFCFCFAFBFBF9FAFAF9FAFAF9
+      FAFAFAFAFAFAFAFAFAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFEFEFEFDFDFDFBFBFBF7F7F7F6F6F6F3F3F4F3F3F4F3F3F4F5F5F6F8F8F8FA
+      FAF9FBFBFAFCFCFBFDFDFCFEFDFDFEFDFDFDFCFCFCFBFBFAFAFAF9F9F8F9F9F8
+      F9F9F8F9F8F7F9F8F6F9F7F6F9F8F6F9F8F6FAF9F5F9F8F4F8F6F2F5F4F0EFEF
+      EDE9EAE8E3E4E5DEE0E3D6DADDCDD3DBBEC9D7ADBAD394A8D17594CB6281C54A
+      6BB74664B34C6CBF4664BE4059AC485FA0526CA65878B85A7DBE547CC04877C0
+      3E66B4728AB9B6BDC9CBCDCED9D6D0E6E2D2EBE5D3ECE6D3ECE6D4ECE5D3EBE4
+      D2EBE4D2EBE4D0EBE4CFEBE4CEE9E2CDE9E2CDE9E2CDE8E0CCE6DECBE4DDCAE4
+      DDCAE2DCCAE1DBC8DFDAC7E0DBC7E0DCC8E0DBC8E1DCC9E3DEC9E4DFCAE4E0CB
+      E5E0CCE6E1CCE7E2CDE5E1CDE6E2CDE5E0CCE5E0CCE6E1CDE6E1CBE5E0CBE5E0
+      CCE5E0CCE5DFCBE4E0CAE4E0CCE4DFCBE3DFCBE0DDCAE1DDCBE2DDCDE2DDCCE2
+      DECCE2DDCCE2DEC9E3DFCAE4E0CBE4DECDE5DECFE5E0CFE5E0CFE5E0D0E5E0D0
+      E5E0D0E5E1D2E5E2D2E5E1D2E5E1D0E5E2D0E5E2D2E5E2D2E5E1D2E5E0D0E5E0
+      CEE5E0CEE5E0CFE4DFCFE4DFCFE3DECDE3DFCDE2DECDE1DCCEE0DCCAE0DDC8E0
+      DDC8E3DCC8E4DFCAE4DFCBE2DFCCE4E1CDE5E2CBE7E3CDE6E3CDE6E3CDE7E4CE
+      E7E4CFE7E3CFE7E3CFE7E3CEE7E4CFE7E3CFE7E3CFE6E3CEE6E1CFE6E2D0E6E2
+      CDE5E2CDE6E2CDE6E2CEE7E2CEE6E2CEE6E1CFE6E3D0E6E2CFE5E2CCE7E4CFE6
+      E3D0E4E1D0E5E2D3E5E3D3E5E3D4E7E4D7E7E4D8E6E4D8E6E4D7E6E4D6E5E3D5
+      E6E4D6E5E4D7E5E4D7E6E3D6E7E5D8E6E4D7E6E4D7E5E4D5E5E3D6E5E3D6E5E3
+      D6E5E3D6E5E3D6E5E3D6E5E3D6E5E3D6E5E3D6E6E4D6E5E3D5E5E2D4E5E3D5E5
+      E3D5E6E4D6E5E3D5E5E3D5E6E4D6E6E4D6E6E4D5E6E3D7E5E2D6E5E3D5E5E3D5
+      E5E3D5E5E3D5E6E4D6E5E3D5E5E3D5E5E3D5E6E4D6E5E3D5E5E3D4E6E4D3E7E3
+      D3E5E3D5E6E4D7E5E3D6E5E4D6E5E4D6E7E3D7E8E4D6E7E4D4E6E2D5E6E4D6E7
+      E4D7E7E4D7E5E4D7E5E5D6E7E4D8E8E5D8E6E4D5E5E4D6E5E5D7E6E5D9E7E4DA
+      E7E4DAE7E5DAE7E5DAE7E6DAE6E5DAE7E6DAE7E6DAE7E6DAE7E6DAE7E6DAE7E7
+      DAE7E6DAE7E6DBE8E6DBE8E7DAE7E6DAE7E6DAE6E6DAE7E7DBE9E7DDE8E7DDE7
+      E8DCE7E7DBE7E7DCE6E7DBE6E5D9E7E4D9E7E4D9E6E4D8E7E5D7E7E5D7E6E4D7
+      E6E4D6E6E4D5E6E4D8E6E3D9E7E4D8E6E4D8E6E3D7E8E2D6E6E3D5E5E3D3E4E1
+      D2E5E2D2E5E1D0E5E1D0E5E0CFE5E0CFE5E0D3E5E2D4E4E3D5E6E1D4E5E0D4E5
+      E0D4E6E1D2E5E0D0E5E0D0E6E1D2E5E1D2E6E1D2E6E1D4E5E0D2E6E1D0E5E1CF
+      E5E0CFE5E1CFE5E0CFE5E0CFE5E0CFE5DFD2E5DFD0E5E0CEE5E0CEE5DFCEE5E0
+      CEE5DFCEE4DFCEE5E0CEE4DFCEE4DFCEE4DFCEE4DFCEE5E0CFE4E0CFE4DFCEE4
+      DFCFE5E1D0E5E1D2E5E0D3E5E0D2E5DFD2E5DFD3E5DFCFE4DFCEE4DFCEE5E0CF
+      E5E0D0E5DED3E5DED0E5E0CFE5DFD2E4DED2E4DED0E5E0CEE4DFCFE3DECFE5DF
+      CEE5DFCEE5DFCDE4DECDE4DECDE4DECCE4DECDE4DECCE4DECDE5DFCDE3DECCE3
+      DECCE5DECEE5DECEE5DECDE4DECDE4DECDE4DECDE4DECCE4DECCE5DFCEE4DECD
+      E3DECDE5DFCEE4DECCE3DECCE3DECBE3DECCE4DECDE4DECDE5DECCE5DDCAE5DD
+      CCE5DECCE4DECFE4DECFE5DECDE6DECEE5DECDDED7C8D0CBC1939A733E3F239B
+      8FA5E6E1D6C4B99BCDBAA2CCB99BD3BDA4D9CAA86E6655B5B1C1ECEDE3EBEEE3
+      F2F0E1CBC1A5D6C5ABD7C4A9D9C5A9D6C4ABD8C7ABD2C9A654624B3E52609BB6
+      D3D1D8D6CFC7A8E0CDB4D3C2AAD6C6ABDCCCB4D9CFB2D9CAB5DDCCB4DBD3B17E
+      856C919399E0E4F1FDFDF8D9D2BCDECFBCE2D1B8E0D1B5E1D1B8E0D1BADAD1B9
+      E5D4BCE0D1B4EADEC1767A57B2AFA7747A56302A2A57505ED9D0C5F2E8BF6A6A
+      54E8DFE9E2D4C5E7DDC7ACA98664696CFFFEFFF2F0EBEFEEE7E1DEC8E9DEC0CF
+      C39655664B4B5B555361656A6873EBDBD6B3B19345504356696FC0CEE1F9FEFF
+      E8E4D9E2D4BEE8DACAE6D9C7E6DAC6E5D9C3E6D8C4E5D8C3E5D8C4F8EDDADBD2
+      B343452B1F25161F1E1D65567AEEDCECF6E5DFEFE4D8ECDACAEBDAC2F3E4B978
+      7563605C64BBBDCDFDFFFEFDFDFAF1F3E3E5DAC9EADECDEBE0CFFCEDDDC8BD9A
+      3C3E312A302A232922252C22222D272632302C36322B322E2635312936352634
+      336E7C859AA59D11231F202B312C3935303F3626312E7986813E412E313E301F
+      2F24202C2924312B222F2A16251B1C30224762588DA299CBD1C4DBE2D5D3DAC3
+      ADBAA3C1CCC2EAEEEEFFFDF9FFFFF66B70584B5154384049F7FAFCECEDEBEDF0
+      EAFDFBEF7380638C969BE2E4EAB7C3C0A5B1B198A9A98CA2A4ABBAB9C9D1D0D4
+      DCDAECF3F2FDFFFDFFFFFF849089D7E2E6FEFFFFFDFDFFFDFFFEFDFFFFFDFFFF
+      FEFFFEFDFEFFFDFFFFFDFFFFFDFEFEADB9B7DDE7F1E4F1F5E1ECF1C4CED2DBE0
+      E4DDE0DAE0E2DDE5E3DDDDE0D8CED3CBE5E4D752564EF6F3F1EEEBE2EBE9DCE8
+      E4DAE7E2D8E6DBCBE6D9C1E8D6BDEAD1B5F3DDB799825FC5B399F6D7A9EED1A7
+      F0D2A9EDD1A9EBD09FEED5A9FCE1B986765BA5A9A8D9C6B5E8CEA9E5D1B0EBD6
+      BDD6C6A9AFA17DA49A6FA2956FA8A0779E936B8A8561968A6C9182768C887DB8
+      AEA4F9E9D7EDE3CFEEE3CFEEE0CFECE2CFEEE4CD0000FDFDFEFDFDFEFDFDFEFD
+      FDFEFDFDFEFDFDFEE7F1FCCFDFF43A8B10007300569A2FFFFDFFFEFFFBF7FFF0
+      F6FCEEF7F9F5F6F4F8ECE9EBE5E0E3E2DDE4DAD7DBD8D6D9D7D6DAD2D2CFCCCF
+      C3D4D6CDE2E4E1E4E9E1E2ECDBE2F0DBDEF0D6D9ECCED6E9CBD4E8CEC4DAB3B6
+      D09DBCD4A6C8DEBDCBE0C3C6DCBAC5DCBABCD4A9B7D2A2C4DBBAC2DAB8B1CE99
+      ABC98EA1B3928A8A8AB0B0B0DBDBDBF4F4F4FFFFFFFDFDFDF8F8F8F0F0F0E9E9
+      E9E5E5E5E3E3E4E2E2E3E2E2E3E2E3E3E2E3E3E3E4E4E7E8E8EDEDEEF5F5F6FA
+      FAFBFCFCFDFAFAFBF4F4F5EDEDEEE7E7E8E4E4E5E4E4E5E4E4E5E4E4E5E4E4E5
+      E3E4E5E5E6E7E9E9EBF0F0F2F6F6F8FAFAFCFCFDFEFCFCFEFCFCFEFBFCFDFBFC
+      FDFAFAFCF5F6F8F0F0F1E9EAEBE6E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E7
+      E7E7EAEAEAF0F0F0F7F7F7FCFCFCFDFDFDFAFAFAF3F3F3ECECECE8E8E8E6E6E6
+      E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7EAEAEAF0F0F0F7F7F7FCFCFCFEFEFEFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+      FEFEFBFBFBF6F6F6EFEFEFE9E9E9E1E1E1DDDDDDDBDBDBDBDBDBDCDCDCDFDFDF
+      E3E3E3E8E8E7EEEEEDF4F4F3F8F8F7FBFBFAFBFAFAF7F6F6F1F0F0ECEBEBE8E8
+      E8E7E7E6E7E7E6E7E7E5E7E6E5E8E7E5ECEAE9F0EFEDF6F4F2F9F8F4F7F6F2F2
+      F0ECEBE9E5E5E4DFE2DFDBDCDBD8D7D8D6D1D3D2CACECFC3C7CDB8BFCAA7B4CA
+      91A7CC7794C7526EB44562B44D6FBF4966BD465EAF4A61A6556FAC5877B8597D
+      C26388C74F79BE375EB18298C1C0C6CECECFCFDAD9D0E8E2D3EBE4D2EBE4D2EB
+      E4D0EBE4D0EBE4D0EAE3CFEBE4CDEBE4CEEAE3CEEBE3CFEAE2CCE6E0CBE3DCC8
+      DDD8C5D6D3C1D2CFBDD0CCBACEC9B7CCC7B6CDC7B6CCC7B6CCC7B5CEC9B7CFCB
+      B8D2CEBBD6D1BED8D4C0DCD8C4E0DBC7E1DCC9E3DECAE5E0CCE4DFCAE5E0CBE5
+      E0CBE5E0CCE5DFCBE5DECAE3DDC8E0DBC7DBD5C2D7D1BED4CFBDD3CEBED4CFC1
+      D5CFBFD5CFBED6D1BDD7D2BFD9D5C3DDD7C7E1DCCCE5E0CEE4E0CFE5E0CFE5E0
+      CFE5E1D0E5DFCFE5E0CFE5E1D0E5E0CFE5E0CFE5E0D2E5E0CFE5E0CCE5E0CDE5
+      E0CCE3DECAE5DFCAE2DDCADEDAC8DBD8C8D7D4C5D4D0C3D0CFC5CFCDC2CECABC
+      CFCBB8CFCCB7D2CCBAD3CEBBD4CFBBD5D0BED7D4C1D9D7C4DDDAC6E0DEC8E3E1
+      CCE5E3CCE5E1CCE7E3CFE7E3CFE7E2CEE7E3CFE6E2CEE5E1CEE5E2CDE5E2CFE5
+      E2D2E6E3D0E6E3D2E7E4D2E6E3CEE7E4CFE6E3CFE7E3D0E7E4D2E5E3D0E6E3D0
+      E6E4D3E6E3D3E5E3D4E6E4D5E6E4D6E7E4D9E7E4D9E7E4D8E7E4D8E7E4D8E6E4
+      D8E6E4D8E6E5D9E5E4D8E5E4D7E5E4D7E5E4D8E6E3D7E7E4D9E7E5D8E6E4D7E6
+      E4D6E6E4D7E6E4D7E6E4D6E6E4D6E6E4D7E6E4D7E6E4D7E6E4D6E5E3D5E5E3D5
+      E6E4D6E6E4D6E6E4D6E6E4D6E6E4D6E7E4D6E6E4D8E5E4D8E5E4D6E5E4D6E6E4
+      D6E6E4D6E6E4D6E6E4D6E6E4D6E5E3D5E5E3D6E6E4D6E6E4D6E5E3D6E5E4D5E7
+      E4D4E7E3D4E5E3D5E6E4D6E5E3D5E6E4D6E6E4D6E7E2D3E7E3D2E7E4D3E7E4D7
+      E8E6D9E7E6D8E8E6D7E6E4D8E5E4DAE6E4DAE8E6DAE7E6D9E8E5DAE7E6DAE8E7
+      D9E7E6DAE8E7DBE8E8DBE7E8DBE7E7DCE8E8DEE9E8DEE8E8DDEAE9DEEAE9E0E9
+      E8DFE8E8DDE8E8DCE8E7DDE8E7DDE8E7DDE8E7DDE9E8DDE9E8DEE9E9E0EAEAE2
+      EBE9E2EBE8E0E8E9E0E9E9E2E9E9E1E8E8DDE8E7DCE9E7DDE9E7DEEAE7DFEAE7
+      DFE8E7DBE7E7DAE8E6DBE8E7DCE8E7DDE7E6DBE7E6DBE7E6DBE8E7DCE7E5DAE6
+      E4D8E6E4D8E6E4D8E5E3D6E5E3D6E5E2D5E6E1D5E5E2D4E5E2D4E6E2D4E6E1D4
+      E7E2D4E6E1D4E6E2D5E5E2D4E5E2D4E6E3D6E6E2D5E6E3D5E6E2D6E5E2D5E5E2
+      D3E6E2D3E6E2D3E5E1D2E5E0D2E5E0D0E5E0D2E5E1D0E5E1CFE5E1D3E5E1D2E5
+      E1D0E5E1D0E5E0D2E5E0D2E5E0D2E5E0CFE5E0CFE5E0CFE5E1CFE5E0CFE5E1CF
+      E5E0CEE5E0CDE4DFCEE4DFCDE5E0CEE5E0CEE4E0CEE4E0CDE4DFCEE4DFCFE4DF
+      CEE4DFCEE5E0D0E5DFD3E4DECFE4DFCFE5DFD2E5DFD2E4DED2E5DFD0E5E0CFE4
+      DFCDE5DFCFE5DECFE5DFCFE5DFCEE5DFCEE5DFCDE3DECCE3DECCE5DFCEE4DECD
+      E3DECCE3DECCE4DFCAE3DECBE4DFCEE4DECDE4DECDE5DFCEE5DFCDE5DFCEE5DF
+      CFE4DECEE4DECCE5DFCEE5DFCFE5DFCEE4DECCE3DECCE4DECCE4DECDE5DECCE5
+      DECCE5DCCCE5DECBE4DECEE4DECEE4DECDE5DECFE5DECFE1DBCBCFCBC1A3AB85
+      4246286A5F6EE5D4D5C6B499D1BA9DCEBA9DD1BBA3DCCEAF757055A7A5B4EDED
+      E6ECEDE7F2F2E1D0CBA6D7C4A9D8C4AFD9C5ABD9C6A9D7C5ABD8D1AF7C836441
+      53527288A5D6E0EDCDC9B3D2C9ACD8C7AADDCBB4DDCAB3D8CDB2D9C9B5E3D5B8
+      A1A17A6B756CC2C8D5F9FAFFF2F3E9D2CCAEDCD0BEDBD2B9DCD1B9E1D1B9E0CF
+      BCE1D1BEE2D1B9E2D1B8ECDEC4827F5DA5A59B7C7D602721234C4551E0D0CCEA
+      E1BF63644BC4BCC3EBDCDAE8DCC4BAB3895E6062FFFEFFF1F2EBF0EFE8E2DBC5
+      E4D7C0F1E5C5616C453E524C3E4E58546073CFC8C7545B45344942657A8FF1FA
+      FDF3FAFADBD3C1E4D7C0E4D5C4E4D7C3E5D6C5E5DAC4E9DBC5E9DDC6DCD5BC90
+      8B6E9891752E362219220F121715191A29342F4161616EB0A5B2DDCED2FFEFE7
+      FFF8E47070553D3F45B2B4C9FFFDFDF6F7EFEFEEDCF8EADAFFF2E4FFFAF1FEEF
+      E48A7A6A2B2A23242627202624222A1C1D291F1D2928202A2721342C292C2D2D
+      37302E3733444C4F9EAFA008120915232B1B302E26332D202D2876817F3E4B33
+      2937272C3A32394B3B4D5D4B8E9B87CED6C8F9FAEEFFFFFDFFFFFAFEFDFAFAFA
+      F5F6F5ECF7F4EBF3F3E6EDECE3E8EAE4FFFFF16A71564D54503E4B4BF2F2F5EA
+      EDEBD5E2E4CAD2CFA6B6A6576D6898ABACBCC9C2E4E9E4E8EEEBD3E2E1FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF899591D2E1E4FFFFFFFFFFFFFDFEFFFEFD
+      FDFDFFFFFBFFFFF6FDFFEBF3F5D7E7EBE5F3F5939D9AB6C3CDDBDEE1E0D6D0DD
+      D9CADCD5CAF1EAE2F2F3E4F1F3E9F2F2E6F1EEE3E4DEC952523FE7DFCFE6DFC9
+      E9DDC6EEDDC5EADCC4ECDEC3EDDDC4EED9C0EBD9C0F2E0C09C8A6ACBB495F1DA
+      AEEED4ACEDD7B3E7D4B6E3DABDC6C1AFA2A1908A8A74A09F8479735575624B67
+      5D486E6451B7A993DBC6B3EDD9C8D8C7AFEEDDC6EDDFCDECDFC5DCD1B6B0AA8C
+      4D5032B4B197FAEDDAF0E4CEEFE6D4F1E2D3F0E3D2F1E4D20000FDFDFEFDFDFE
+      FDFDFEFDFDFEFDFDFEFDFDFED9E9F5EFF6FF7FB17F0A7600127900B3CDA5FFFB
+      FFD5CED5B6B9B39CAA95879F7D789769688F555C8A4555883C53873953863851
+      853454873A5E8B456D93597F9D7295A98BA7B4A1BAC1B6C9CDC7D3D8D2D4DECA
+      CEE1B9C7E0B2B8D2A0BBD5A3D0E6C2D4E8CBCDE4C1C3DCB7C3DBB9C3DBB9BAD4
+      A9AECC94AFCD969DB08C8A8A8BAFAFB0DADADBF4F4F5FEFEFFF9F9FAEEEEEEDB
+      DBDBCACACAC0C0C1BEBEBFBEBEBEBEBEBEBEBEBEBEBEBEBEBFBFC6C7C7D5D5D6
+      E7E7E8F5F5F6FAFAFBF5F6F6E7E7E8D4D4D5C7C7C8C1C1C2C0C0C1C1C1C2C1C1
+      C2C0C0C1C1C1C2C4C4C5CDCDCEDBDBDCECECEDF6F7F8FBFCFDFCFCFEFCFCFEFB
+      FCFEFBFCFEF7F8FAEBECEEDBDCDDCCCCCDC4C4C5C2C3C3C2C3C3C2C3C3C2C3C3
+      C1C2C2C4C4C4CACBCBD8D8D8E9E9E9F6F6F6F9F9F9F1F1F1E0E0E0D0D0D0C6C6
+      C6C3C3C3C3C3C3C3C3C3C3C3C3C2C2C2C4C4C4CACACAD7D7D7E7E7E7F5F5F5FD
+      FDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+      FCFCFCF7F7F7ECECECE0E0E0D2D2D2C6C6C6BCBCBCB6B6B6B3B3B3B2B2B2B4B4
+      B4B8B8B8BEBEBEC7C7C7D2D2D2DDDDDDE9E9E8F2F2F2F3F3F2EAEAE9DBDADACE
+      CDCDC8C7C7C6C5C5C5C5C5C5C5C5C5C5C4C7C7C6CECECCDCDBDAEBEAE8F4F2F0
+      F1F0ECE5E4E0D5D4D0C9C7C4C3C2BEC2C0BCC0BFBBBEBDB8BAB9B6B6B5B5B6B6
+      B6B5B9BCB4BBC6A7B4CE8FA6CC6D86BF516CB54F6CBD4F6CBE4D68B54960A354
+      6EA76180BD6180C45880C33F6DBC4469B49EAFC7C8CBCED1D1CFDDDAD0E7E2D0
+      EAE4D0EBE4CFEAE4CFEAE3CEE9E2CEEAE4CEEAE3CDE9E1CDE7DFCBE2DBC6D9D4
+      BFD0CCB8C6C3B2BCBAA9B3B0A1B0AB9DABA698A7A595A7A495A7A495A8A595AA
+      A797AEAA9AB2AF9FB7B4A4BEBAA9C5C1AFCDC8B6D4D0BDDAD5C1E0DBC6E2DDCA
+      E4DFCAE5E0CAE6E1CCE5E0CCE4DFCBE1DCC7D7D2BFC9C4B2BDB9A7B8B4A3B6B2
+      A2B8B4A4B9B4A4B9B4A4BAB7A6BCB8A7C2BDAECDC7B7D8D3C1E1DBC9E3DDCDE5
+      DFCFE5DFCFE5DFCDE5DFCDE5DFCDE5DFCEE4DECEE4DECEE5DFCEE5DFCDE5E0CB
+      E4DFCBE5DFCAE3DDC8DED7C3D6CFBCCDC8B6C5C1B0BCBAABB6B4A8B2AFA7AEAC
+      A1ACA99AACAA9AAEAA9BAFAB9BB1AC9DB3AF9EB8B3A2BCB7A7C1BDACC7C3B3D0
+      CDBAD9D7C1E0DEC6E3DFCAE5E0CEE6E2CFE6E2CEE6E2CDE6E2CEE5E2CFE5E2D0
+      E5E2D0E6E2D2E5E2D0E6E3D0E6E3D2E5E2D4E6E3D4E5E3D4E6E3D5E7E4D6E6E4
+      D6E6E4D7E6E4D7E5E3D6E6E4D7E6E4D7E6E4D7E7E4D8E7E4D8E6E4D7E5E4D8E5
+      E4D8E5E4D8E7E4D8E6E4D9E5E4D7E5E4D7E5E4D7E5E4D8E6E4D7E7E4D9E6E4D6
+      E6E4D7E6E4D7E6E4D7E6E5D8E6E4D8E6E4D8E7E4D8E7E4D8E6E4D7E5E3D6E6E4
+      D7E6E4D7E7E4D7E6E4D7E7E4D7E6E4D7E6E4D6E6E4D5E7E4D8E6E4D9E5E4D7E5
+      E4D6E6E4D6E6E4D6E6E4D6E6E4D6E6E4D5E7E4D5E6E4D5E5E4D5E6E4D5E7E4D6
+      E6E4D4E7E4D4E8E4D4E6E3D5E6E3D4E6E4D5E5E3D5E5E3D5E5E4D3E5E4D5E6E4
+      D6E7E4D9E7E5DAE6E5D9E9E5D8E7E4D8E5E3D8E7E5DAE7E6DAE7E7DAE8E6DBE7
+      E5DAE7E6D9E6E7DAE6E7DBE9E8DDE9E8DFE9E8DFEAE8DFE9E8E0EAE9E1EBE9E2
+      EAE9E1EBE9E1EBE9E1EAE8E1EAE9E0E9E8DFE9E8E0EAE8E2EBEAE3EBEAE3EBEA
+      E4EBEAE4EAE9E3EAE8E2E9E9E3E9EBE2EBEAE3E9E8E2E8E7DFE9E9DFEAE8E2E9
+      E8E2E9E7E3E9E8DFE7E8DEE6E7E0E9E7DFE9E7DFE9E7E0E9E8E1E9E7DFE8E7DC
+      E9E6DBE9E6DAE8E6DAE9E6DAE8E4D9E6E4D6E5E3D5E5E2D5E5E2D4E5E3D5E7E2
+      D5E6E2D5E5E2D5E6E3D6E5E3D6E5E3D6E6E4D6E5E4D6E5E4D6E5E4D6E6E4D7E6
+      E3D6E5E2D4E6E2D5E5E3D5E5E2D4E5E1D5E5E1D4E5E0D3E5E2D2E5E2D0E5E1D3
+      E5E1D3E6E2D2E5E1D0E5E0D0E5E0D3E5E0D4E5E0D0E5E1CFE5E0CEE5E0CEE5E1
+      CEE4E0CDE5DFCFE5DFD3E5DED0E4DECFE4DFCDE5DFCEE4DFCDE4DECDE4DECFE5
+      DFCFE5DFCEE4DFCEE4DFCFE5E0D2E4DFCFE4DFCEE5DFD2E5DFD2E5E0D0E4DFD0
+      E5E0CFE5E0D0E5DFD3E5DED2E5DED2E5DFD0E5DFCFE5DFCFE4DECDE4DECDE5DF
+      CEE4DECDE4DECDE4DECDE4DECDE4DECDE4DECDE5DFCEE5DFCEE4DECDE5DFCEE5
+      E0CEE5DECFE4DECEE5DFCEE5DFCEE5DECFE5DFD0E4DECEE4DECEE4DECFE4DECD
+      E5DECCE5DECDE5DECDE5DFCDE5DFCEE4DECEE4DECDE5DED0E5DECFE2DCCBD1CB
+      BFA5AF8E414C2837322EA48DA0CFB8A9CCB898D0BAA3D0B8A5DECBAB655944A5
+      A0ACEBEEE7E9EAE2F6F3E3D2C9A5D8C5A7DBC6AADCC4ACDAC5ABD3C6AFD2C4AE
+      ABAE895764544A616CB2C7E2D6DEDCC1B79DDBC9B8D7C8B5DAC6ACDCCFB1E1D1
+      B8C8BD9666664E899092F3F7FFFFFFFFE0DCC6DACCB2DDCFB8DECEB4DBD0BADB
+      CFB8DDCFB4E5D2BDE1D0B9DAD1BAEDE1C796936654614C3B422C454038363641
+      DCD0CE8C896DB3B3A3504742E5D4D9EBDAC3C4BE955B5E5BFDFBFEF0F3EAF1F0
+      E7E2DAC3E5DAC9EEE4CEB3AE7F3746353B49554354634D5B614954503C4D4945
+      5A68A5B6CAD2CFCFE2D4C0E5D8C4E5D8C6E8D9C7E5DAC6E5D8C6E5D6C4E5D5C0
+      F9E9CEA7A26F3C41243C402A31392424291F21221F2027211D2523161E22151D
+      242B343953535D575C58303B409CA5BEFFFFFFF6F7EEE0E1D087857465606248
+      4643292B2A20231A161F1D191F1D1B23231E211D19261F1C282417291F172A1F
+      1D2B28202C2E2B35333F4E53BCC7B714231614252610211D25363033473E8696
+      873E4B3C909D96C5CFC3EAEEE1FCFDF4FFFFFEFFFFF9FAFAF4F1F3EBEEEFE8EE
+      EFEAF1F0E9F6F3F1FAFAF5F2F3F0E5E4E2C9CDCACDD1CD6A6F5F515A4E495554
+      B0C2CCABB8B7A1B4B1B2BEBEC9D4C892A8A6FFFFFFFFFFFFFDFFFFFAFBFAE9F1
+      ECFFFFFFFEFEFEFFFFFEFDFFFFFFFEFFFFFFFF849796CFDEE2FBFDFDF7FCFCF9
+      FDFEF1FBFDE5F0F3D1DFE0CCD9DAE1E9EBCDD4D2FBFAFCA0A49AC2C4C4F0EFE4
+      EFEEE4EFF0E4ECEAE3EDEAE1E5E0DAE3DFD3E5E0D3EADECBE5D8BF5A5A49E9E1
+      CFF0E4C9ECE1C9EDDECAECDBC7E6DCC4EBDDC1F1D9C1EFDAC0FBE9CBAA9B7FD1
+      C0B0EEDECAD1C3ACACAA939DA497B1B9ABCACEBCE8E5D4FFF7E3FAECCBFFE7BF
+      F7DDAEE8D1A3C6B183817351695B425E533955503E5B57437773608E9275BEC2
+      A9D4CEB1ADAA84F9EDD4F1E4D3F1E3D3F2E4D0F6E6D5EFE5D8F0E7D69769FDFD
+      FEFDFDFEFDFDFEFDFDFEFDFDFEFDFDFED8E7F2DDEEFDCBDFF333880C0979004A
+      91258D9C854A80302F7C0C247C001E7E001C80001B82001B83001C84001C8400
+      1C84001C85001C84001C83001C80001E7E00247C002C7C063B7F194C84315C8A
+      446C91568EA47DC7CCBED8E8CCB7CF9E95A48496A88DBDC7B7D6E4D0CDE6C2B7
+      D2A1AAC88CB4D09DC0D9B4A6B59B8A8A8BAFAFB0DADADBF4F4F5FEFEFFF6F6F7
+      E2E2E3C3C4C4A7A8A8989999959696959596959596959596959696959596A0A0
+      A1B7B7B7D3D4D4ECEDEDF7F8F8F0F1F1D8D8D9BABABAA4A4A499999998989898
+      98989898989898989898989B9B9BA8A8A8BFBFC0DBDBDCF0F0F1FBFBFCFDFDFE
+      FCFCFEFCFDFEFCFCFEF4F5F6E3E3E4C5C5C6ABABAB9C9C9C9898989898999898
+      999898999899999A9A9BA2A3A3B7B7B8D2D2D3EBEBECF3F3F4E6E6E7C9C9CAAE
+      AEAF9E9E9F9898999898999898999898999898999A9A9BA0A0A1B5B5B6D1D1D2
+      EAEAEBF8F8F9FDFDFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE
+      FEFBFBFBF3F3F3E4E4E4D0D0D0BCBCBCAAAAAA9D9D9D8E8E8E89898988888889
+      89898C8C8C9191919696969F9F9FABABABBABABACCCCCCDCDCDCE1E1E1D5D5D4
+      BCBCBCA8A8A89E9E9E9C9C9C9C9C9C9C9C9B9C9C9B9F9F9EA9A8A7BFBFBDDAD9
+      D8ECEBE9EAE8E6D5D4D2B8B7B4A4A3A09B9A979A989599989498979497969397
+      97929A9A96A7A8A3B7B8B7C2C5CBBCC5D4ABB9D38C9FC7607CBA4B6BB8506ABD
+      4C63AF4255965970AB607FC2587EC5527CC13B64B5607FBCB8BFCCCBCDCED5D3
+      CEE1DDCEE9E3CFEAE3CFEAE3CFEAE3CEEAE3CEEAE2CEE8E1CCE3DBC7D9D2BFCC
+      C7B4BEB8A7AEAA9BA19E909793888F8B8089857A868277817F74807E73817F74
+      8380758482768885798C8A7D9290839A9789A29F91ADAA9AB9B6A3C4BFAECFCB
+      B9D8D4C1DFDAC5E3DEC9E5E0CAE4DFCBE5E0CCDCD7C3CBC7B4B2AE9E9C998B92
+      8F82918E81939082949083969185959285979486A19D8EB3AF9EC9C4B2D9D5C2
+      E3DCC9E5DECBE5DFCDE5DFCBE6E1CDE7E2CEE7E2CDE6E1CDE7E2CDE7E2CDE7E2
+      CEE6E1CDE4DECDDED8C5D4CFBCC6C2B0B9B5A4ADA899A29D8E989487918E828C
+      897E89867B8786798886798885798985798B877A8D8A7D928F819793859E9A8B
+      A7A293B6B1A2C7C3B1D7D3C1E1DDCBE4DECEE6E1D0E7E2D2E7E2D0E6E3D2E5E2
+      D2E5E2D0E5E1D0E6E3D2E6E3D2E6E3D2E5E3D0E5E2D4E6E4D5E6E4D6E5E3D5E6
+      E4D7E7E4D7E7E4D6E7E4D6E6E4D5E7E4D6E6E4D6E6E4D6E5E3D5E6E4D7E6E4D7
+      E6E4D7E6E4D7E7E4D8E6E4D7E6E4D7E7E4D8E7E4D7E6E4D7E6E4D7E7E4D8E7E5
+      D8E5E3D5E6E4D6E6E4D7E7E5D7E5E4D9E5E4D9E5E4D9E7E5D8E7E4D7E5E3D6E6
+      E4D7E6E4D7E6E4D7E7E4D7E6E4D7E8E5D8E6E5D8E5E4D6E6E4D6E7E4D7E7E4D7
+      E7E4D6E5E4D6E5E4D6E5E3D5E5E3D6E5E4D5E6E3D2E8E3D3E5E3D3E5E3D2E6E2
+      D2E8E3D3E7E3D3E7E3D2E6E2D2E7E2D2E6E3D2E5E3D2E7E4D4E6E4D4E5E4D3E7
+      E4D8E6E4D9E7E5DAE7E5DAE6E4D9E6E4DAE7E5DAE6E5D8E9E6DAE9E7DBE7E7DB
+      E7E8DCE7E5DAE7E6D9E7E7DAE7E7DCE9E7DDEAE7E0EBE9E2EBE8E1EAE9E0EBEA
+      E2EAE8E3E8E8DFEAEAE1EBEAE3EAEAE3EAEAE1EAEAE0EAEAE1EAE9E2EAE9E3EA
+      E9E4EBE9E4EAE9E3EAE9E2EAEAE2E9E9E1EAE9E2E9E7E1E7E7DCE7E7DBE8E7DC
+      E8E6DDE8E6DEE8E7DEE9E7DFE9E8E0E9E9E0EBE9E1EAE8E1EAE9E3EAE9E3E8E7
+      E0E9E7DBE9E7DCE8E7DCE8E7DBE7E5D9E7E5D7E7E4D7E5E3D5E5E3D5E6E4D6E6
+      E4D6E6E4D6E6E4D6E6E4D6E7E4D8E8E4DAE6E3D7E6E4D6E6E4D6E6E4D6E6E3D7
+      E7E2D5E8E2D5E7E2D5E7E2D5E5E3D5E5E3D5E5E3D5E5E3D5E6E2D3E6E3D5E5E3
+      D4E6E2D0E6E1D3E5E1D3E5E1CFE5E1CFE5E1D2E5DFD3E5DFCFE5E0CFE5DFCFE4
+      DECEE4DFCDE4DFCEE4DECFE4DED0E5DFCEE5DFCEE5DFCEE5E0CEE5DECEE5DED2
+      E5DECFE5DFCEE5DFCEE5DFCEE5DFCEE4DECDE5DFCDE5DFCEE4DECFE5E0CFE5E1
+      CFE5E0CEE5E0D0E5DFD2E5DFD2E5DFD2E5DFD0E5DFD0E5DED0E5DED0E5DFCEE5
+      DFCEE4DECDE5DFCEE5E0CFE5DFCEE4DECDE5DFCEE5DFCEE5DFCEE5DFCEE5DFCE
+      E5DFCEE5DFCEE5DFCEE5DFCEE5DFCEE5DFCEE5DECFE5DED0E5DED0E5DED2E5DE
+      D2E4DECFE5DFCEE5DFCEE4DECDE5E0CFE5E0CFE4DECDE4DECEE5DED0E5DECEE3
+      DCCCCEC9BEBABE9F424A2632312555444BCEB4B5CAB79BCFBAA4D2C1A6A39F73
+      65624FAAA2B3EAEBE9ECEDE6F1F0E1D1CDABD3C3A8D8C5ACD6C5AED6C6ACD9C5
+      ABD8C7AECEC09C7278555162648DA6C5BCD0D4D3CFBED4C9B4DBC7B2DDCBB2D9
+      C4AFE9D3BC848764626A58ABB0B5FFFFFFFBFCF6D5CDB3E0D1BEDCD0B9DED1B9
+      DBCFB9E1D1BDE2D0BDE1D0B4E2D1BEE2D3C0EADCC3A6A26F535732373C241A19
+      142E2736D3C8C03C3A27D5CBBE6E6445998A8BECDFD2D1C7A0535754FAFAFDF1
+      F1ECF1F2E9E3DAC8E0D9C1DCD1BDD5C9A8394632213E37233E3E3A4B4F434E4F
+      41514B4C5558D7D1D0E5D3C3E4D3C1E3D1BFE5D8C1E4D7C3E8D9C3E5D9C3E7DA
+      C5DED1B9EEE1C2ADA9744847273739242D3626292D23252724232727292C2829
+      2F2A252F29242D291F291F1A292A2737428A96ACFFFFFF737F6349533E202A18
+      20291920291E1A28271D29271E27241829191A28232029241F26211D29251D2D
+      281B2926202B2826362928332C303E3FAAC1B2556C4FABC1A8F3F5E6FFFFFFFF
+      FFFEEBEED84B554FF6F3FBECEFE9ECEEE8EDEDE4EBEDE3EBECE3EFEDEAEDECE7
+      F1F1EFF6F7F6D6DBE1ABB9B55E6F6D4F5E5A61736D799086A1ADA7788575535D
+      524C525AF0F5F5F7F8F6FFFFFFFFFFFFFFFFFEA0B1B2FDFFFFFFFEFEFFFFFEF9
+      FAFADBE8E6FCFEFDFDFEFDFEFFFFFDFFFFFCFFFFF2F7F6869287CCD1DBFCFDFF
+      DEEBE9D4D3D3CECFC8D6D5C9E5E4D8E6E5D8E9E9DAEBEBE3EFF1E7A5AC98CED0
+      CEEEE9E3E4D7C9E5D7C6E4D6C0E5D6BFE8DAC6ECDECAEADBC6EBDDCAE9DDC259
+      5741EAE3D8EBE2CAE8DFC9ECE0CCEDDFCEE6DDCAE2D7C6D5D3C1CFCBBEBAB8A7
+      908F76B5B7A9CDCDBCDBD9CAE9E2CDE9E0C8E9D9BEEDD9B8E8D6B8EBD0AEECD0
+      ABF0D4A7F1D3AAF1D7AEF3DCB6F1DAB7EFDBB8E9D4AFE2D0AFE2D1AFE3D5B9E5
+      D8B9E8E1C8F1E9D0F7EDD7F1E6D0EDE3CEF1E4CFF1E5D5F1E4D2F0E5D3EEE4D3
+      9769FDFDFEFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFD6E6F3C9E0F3EEF7FF8FBB97
+      0F77002483001E7E001D87002388002587002083001B7F00177C00167C00137A
+      00157C00197E00187D00177D00157B00127A00127B00137D00117E00107F0012
+      8000137E00177C002078003E7F28B0C7A7ADB8A62C6D092278024282267F9E6F
+      B7C4A6BFD6A5B5D29CB9D3A6C1D9B6AAB8A48A8B8BAFB0B0DADADBF4F5F5FEFF
+      FFC9CACA8C8D8D7171715B5C5C4F50504C4C4C4C4C4C4C4C4C4A4A4A4C4C4C67
+      67678282829D9D9DBFBFC0E1E2E2EEEFEFB7B7B88C8D8D767676616162575757
+      555656555556555656535353595959727273888888A5A5A5C8C9CAE7E8E8F8F8
+      F9FDFDFEFDFDFEFCFDFEFCFDFED6D6D79E9E9F7E7E7E67676759595955555655
+      5556555556545454545454696A6A7F7F7F9B9B9BBCBCBCDEDEDFD7D7D8A4A4A5
+      8282826868685B5B5B5555565555565555565454545353536767687F7F7F9999
+      99BABABADCDCDDF2F2F3FDFDFEFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFD
+      FDFEFCFCFCF2F2F2DFDFDFC5C5C59A9A9A6B6B6B4C4C4C3B3B3B333333333332
+      3435343C3C3D47474758585869696A777777858585959595A7A7A7BBBBBBB2B2
+      B29191917A7A7A6A6A6A6060606060606060605E5E5E6060607373738A8A89A7
+      A6A5CBCBC9E4E2E1C8C7C69B9A997C7C7A6969665F5F5D5E5D5C5E5D5C5E5D5B
+      5C5B5968676479797692908CADACA8C8C7C4D5D6D7CAD1DABAC5D997A9CB617A
+      B94A64B84D69BC425CAA485DA35976B65579C25178C14773BD3A63B4879BC2C6
+      CACDD2D1CEDBD9CEE6E0CFE9E4D0EBE4D0EBE4D0EAE3CDE8E0CDE0D9C5D2CCB9
+      C1BBA9AAA696989486777469605E554C4A44413F3A3A383437353036342F3836
+      313D3B3642413B4D4B4458564E6260586D6A61767369807E728A877A959284A3
+      9F8FB2AE9DC2BEACCFCBB8D9D5C2E0DBC7E3DEC9E4DFCACDC9B7A19D8E7F7D71
+      69675D605D54625F56636157646159635F5865635A706E63807D72999587B8B4
+      A4D2CEBCE1DDC7E5E0CBE6E1CCE7E2CDE8E3CFE8E3CFE9E4CEE8E4CEEAE4CFE9
+      E3CEE7E1CDE4DFCBD8D5C1C8C5B3B4B2A1A4A0918E8A7E747167615F5653514A
+      4A484146443E46443E46443D45443E4A4841504E4758554D605D5569665C726F
+      657A766A827F73989486B2AD9ECCC7B7DCD7C6E4DFCFE5DFCFE6E0D3E5E0D3E5
+      E2D2E5E2CFE5E1CEE5E1CFE6E2CFE5E2CFE6E3D0E6E3D0E6E2D0E7E2D0E7E3D2
+      E5E3D3E6E3D2E7E3D2E7E3D3E7E3D3E7E2D2E7E3D3E7E2D2E6E3D3E5E2D3E5E3
+      D4E6E4D6E5E3D6E5E3D7E6E4D7E5E3D6E6E4D7E7E4D8E6E4D8E6E4D7E6E4D7E5
+      E4D7E5E5D8E5E5D8E5E4D6E6E4D7E7E5D8E7E4D9E5E4D9E5E4D9E6E4D9E5E4D8
+      E5E4D8E5E4D8E5E4D6E5E4D6E5E3D5E5E3D5E8E5D8E6E5D8E5E4D6E7E4D6E7E4
+      D7E6E4D6E7E4D6E6E4D7E5E4D6E5E3D5E6E4D6E5E3D5E5E2D2E7E3D3E7E2D2E6
+      E2D2E6E1D0E5E3CFE6E3D0E6E3D0E5E2CFE5E3D0E6E3D2E6E2D2E8E4D3E6E2D2
+      E5E2D2E7E4D7E7E4DAE7E6DAE8E6DAE7E5DAE7E5D9E8E6DAE9E6DAE7E7DBEAE7
+      DCE8E5DAE7E7DBE7E7DBE7E6D9E8E5D9E7E4D9E6E6DAE9E8DDEAE9DFE8E8DEE9
+      E8DDEAE7DDE9E7DCE7E6DDE7E7DDE8E9DDE8E7DCE8E6DCE7E7DAE6E5D9E6E4D9
+      E7E4DAE8E5DBE8E6DBE7E4DAE6E4DAE7E6DBE8E6DBE7E6DBE5E4D9E3E2D6E5E3
+      D6E5E4D5E5E3D6E5E2D6E5E3D6E5E4D8E7E3D8E7E3D7E7E6DAE9E8DDE9E7DDE7
+      E6DBE7E6DBEAE9E0E9E8DFE7E7DDE6E7DBE5E5D9E5E4D7E8E5D8E7E4D7E7E4D7
+      E7E4D7E6E4D6E6E4D6E6E4D6E7E4D7E9E6D9E9E5D8E6E3D5E6E2D5E8E3D6E8E3
+      D6E8E3D7E7E1D5E7E2D5E7E2D5E6E1D4E7E1D5E6E3D5E5E3D5E5E3D6E8E3D5E7
+      E4D7E6E3D7E7E3D4E6E1D3E6E1D4E6E1D2E5E1D0E6E1D2E6E0D4E5DFD2E5DFD2
+      E5DFD3E5DED0E5E0D0E5E0D2E4DFD2E4DED0E5DFCEE5DECEE5DFD0E5E0D0E5DE
+      CFE5DECEE5DFCEE5DFCEE5DFCEE5DECDE5DECDE3DDCBE3DECBE5DFCDE4DECCE4
+      DFCDE5DFCEE5DFCEE5DFCDE4DFCDE5DFCEE5DECEE4DECDE5DFCEE5DFCEE5DFCE
+      E5DFCEE5DFCEE5DFCEE5E0CFE5E0CFE5E0CFE5DFCDE5E0CEE5DFCEE5DFCEE5DF
+      CEE5DFCEE5DFCEE5DFCEE5DFCEE4DECDE4DECDE4DECDE5DECFE5DED0E5DED2E5
+      DFCFE5DFCEE5DFD2E5DFD0E4DFCDE4DECDE5DFCEE4DFCDE4DECDE5DECEE5DECF
+      E5DECEE5DECDCDC9BDBFC3AB41482653555B6D6B617E6F6CD9C4B3CCBA9FC6B0
+      95A7A38DADA9988F8991EAECEAEEEAE4F1EFE3D8D0B6D2C3A8D9C4A9D6C6A8D7
+      C7A9DBC7A9D8C7ABD8CEAFADAB8151624B6E829FAFC3DAD6D7D9D4C6B2D6C8B0
+      DAC7ACD8CDB1C8C1A0667164778185D8DFEBFFFFFFE0DCCADAD0B6DDCBB8E3CF
+      BDDDCFB5DDD1B8E4D1BADDCEB8E3D2BDE1D2B7E5D4BFE8DDC5ABAB7A4A533038
+      3A262E2C2E282331776C6D948B88E9D7C5D8CF9F46452AEBDAD5DAD0A9575650
+      F8F5FCF1F1EAF1F1EBE2DDC6F6E7D3D0C6AA696C5A394842283A3937444C3C4B
+      4A314540283C3C424A5489818EA09598C4B8B2E3D5CDF0E1D9F1E2D4EADCC9E6
+      D6C6E5D7C5E1D1BCD4C3AA968D6A26311B1B241F1F241E1D26211A24231C2422
+      1F28261F2A242130292A312931382F2B3A362A373A65708BF6F9FC829069474F
+      394250412D3A2E252C261D281F172826202A291B3029202F2A17262415211C23
+      322736473D51625D788D81A0AEA0AFB4A33E484AF9F8FDFFFFFDFDFDF6F8F8F4
+      EFF0EAEBF2EAE4E6CD404B49F0F5FCE5E8E0EAEAE3EFEFE9F6F8F2FCFAF5CAD2
+      CCD3DCE1B3BAB7546A65516965768D86ABBCAEBFD1C9D7E3D7FAFDF6FFFFFFC0
+      C4B449554C3F4F62FEFFFFFFFFFFFFFEFEFCFEFDFDFDFA9CB3B6FDFFFFFFFFFF
+      FDFEFEEFF7F6D8E4E4F7FFFFF1FDFDEDF7FAE0E7EBCEDADFF6FCFA909A88A0AB
+      A9CFC8BECECCBCE1E1D4EFEDE3EFEFE4F6F7EDF0F1E8EAE7DAE0D9CAE3DBCA9A
+      9780BDB6B0E8D9CCE7D1B7E9D6BCE4D5BAE9D3BDE9D7BDEBDAC2EDDCC0ECDAC2
+      EBDDC75F5C48F2E6DCF9EEDAEDE9DBBEBAAF888B7A8C9383AFB7B0BDC7BCD8DC
+      D0F8F4E3FCF7E8F2E7D2E8DBBDE9D7C1E7D6BCECD6ABEFD7B2EFD6B6ECD6AFEB
+      D6B1EED3B1ECD7B1ECD4B1EDD5B4EBD5AEECD8B4EBD5B7E9D4B8EBD7BEECD8C1
+      E7D9BFEDDDC4EDDEC3EDDFC4EFDDC4EEDFC6EEE0CAEEE2CDEFE2CDF0E4D0F1E4
+      D2EEE4D30000FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFD8E8F4CDE3F3D4E8
+      F9EBF1FF5098320E78002E8B002F8A001D81001C7F00348C0B47972759A24165
+      A75570AD6370AD6A71AC737BB17E7BB17E82B87D7BB5716DAB625FA450539E3A
+      469522368D0F2E890023840018810000720027820085AC8A127C001281001984
+      00197B003A7C1CA4B991D6E5CEAFCE95B1CE99A7B69E8A8B8BB0B0B0DBDBDBF4
+      F5F5FFFFFF4756421D610A215B111F590F1E580E1E570D1E570D1E570D1C570C
+      1459044C66447A797A8C8C8CAEAFAFD6D7D7C0C1C127461E2465122351171F4D
+      111E4C101D4B0F1D4B0F1D4B0F1A4A0D164C0D636E607A7A7B939393B9B9B9DE
+      DFDFF4F4F5FCFCFDFDFDFEFDFDFEF9F9FA565F54215711235115204E121E4C10
+      1D4B0F1D4B0F1D4B0F1C4B0E144B08435C3B787779898989ABABABD1D1D26368
+      62205212235416204E121E4C101D4B0F1D4B0F1D4B0F1C4B0E154A073A583278
+      7879868787A9A9A9D0D0D1ECEDEEFAFAFBFDFDFEFDFDFEFDFDFEFDFDFEFDFDFE
+      FDFDFEFCFCFDF4F4F5E1E1E2AEAEAF565656232820173A0D1B5909216E0B247A
+      0D257B0D257C0D23740C22670F2452172C42264040405E5E5F72727388888886
+      86862F3C2B224B162043161E40141D3F131C3F131C3F131B3E10183F10515F4C
+      7E7E7E999998C1C1C0A5A4A32C452427501B2245181F41151D3F131C3F121C3E
+      121B3E11193E0F28441F6F6F6B7F7E7B9D9D97C4C2BCDDDCD7E2E3E0D6DADFBD
+      C6D998A9CB5371B74765B64D6BBA415BAA4964A75070B94670BF4C77C13D6ABA
+      4F70B4B5BDC8D2D1CED9D6CFE2DECFE8E2D0EAE4D0EBE5D0E8E1CCDFD9C3CEC8
+      B6B8B3A28B877A54534A2F2E291E291718390D194B0B1C5D0A1F660B216E0B21
+      6E0B216D0B20660C1F5E0D20511020411527391F31332B44423C56544D68655C
+      757267817F73908D7EA19E8FB4B0A0C6C1B1D4CFBCDED9C4CAC6B449543D2949
+      1D27411C213C17203A162135182032191F32181E30161E3517525549706D6488
+      8578A9A697CBC7B6E0DBC6E6E1CCE7E2CDE8E3CEE8E2CDE7E2CDE8E3CEE8E3CE
+      E9E4CFE7E2CDE2DDC8D6D0BFC0BDABA8A69773716647453F2A29251C2A161938
+      0F18430C1B520B1E580C1D570D1D570C1D580C1E550F1F4B111F4113233B1929
+      332232332B49484169655D817F73A09D8EC2BEAAD8D4C1E3DFCCE5E1CEE5E0CF
+      E5E1CEE5E3CDE6E2CDE6E0CEE6E0CEE7E1CFE7E2CFE7E2CFE7E2CFE6E3CFE6E3
+      CFE5E3CFE5E3D0E6E3D0E6E3D0E7E2D2E6E2D2E6E2D2E6E2D2E7E2D2E7E3D2E5
+      E3D2E5E3D2E5E2D3E5E3D5E5E2D5E5E3D5E6E4D7E6E4D7E6E4D7E5E3D5E6E4D6
+      E6E4D8E4E4D7E5E5D8E5E5D6E5E4D7E5E4D7E6E5D8E5E4D8E5E4DAE5E4D9E5E4
+      D9E5E4D9E6E4DAE6E4D8E6E5D9E5E4D6E5E3D5E5E3D5E8E5D6E7E5D8E7E5D8E7
+      E4D7E7E4D7E6E4D7E6E4D7E6E4D7E7E4D7E7E4D7E6E4D6E5E4D5E7E4D4E8E4D4
+      E7E3D3E7E3D3E6E2D2E6E3D2E6E3D0E6E3D0E6E3CFE6E4D0E7E4D2E6E2D2E7E3
+      D3E7E3D3E7E4D4E7E4D7E7E4D9E7E5DAE8E5DAE7E5D9E6E6D9E7E7DAE8E6DBE6
+      E7DAE6E5DAE7E4D9E7E7DAE9E7DBE8E7DAE8E4D9E8E5DAE8E8DDEAEAE0EBE9E1
+      E8E7DCE7E5D9E7E5D8E6E4D7E7E4DAE8E5D9E7E4D7E6E4D8E5E4D7E4E3D5E5E3
+      D5E5E4D5E6E3D5E7E4D8E8E4D9E7E3D7E5E2D6E5E3D7E7E4D9E7E4D9E8E4D9E9
+      E5D9E8E5D7E6E4D6E5E4D7E6E4D7E7E2D5E6E2D4E5E2D3E4E1D2E5E2D4E7E4D6
+      E7E3D4E5E1D0E5E2D3E9E6DBEBE7DDE8E5DAE7E4D9E6E3D6E6E4D6E6E4D6E5E3
+      D5E5E3D4E5E2D4E6E3D6E7E4D7E8E5D6E7E4D6E7E4D6E8E3D4E7E1D3E7E1D4E7
+      E2D4E7E2D4E7E2D4E6E1D4E7E2D5E5E0D4E5E1D2E5E0D2E7E0D5E6E2D5E6E3D4
+      E7E3D3E7E4D6E6E2D6E7E2D5E6E2D5E6E1D4E6E1D4E5E2D2E5E1D2E6E1D3E5E0
+      D3E5E0D4E6E0D4E5E0D3E6E0D3E5E0D2E5DFD2E5E0D0E5E0CEE5DFCFE5E0D2E5
+      DFD3E5DFCFE5E0CEE5DFCEE5DFCDE6DECEE5DECDE5DECDE4DECCE4DECCE5DECC
+      E4DECBE4DECCE4DECCE4DECDE4DECCE5DECCE5DECCE5DECCE5DECDE5DFCDE4DE
+      CDE4DECDE5E0CFE5DFCEE5DFCEE5E0CFE5E0CFE5E0CFE5DFCFE5E0D0E5DFCEE5
+      E0CEE5E0D0E5DFCFE5DFCEE5DFCEE5DFCEE4DECDE4DECDE4DECDE5DECFE5DED2
+      E6E0D3E5DFCFE5DFCDE5DFD0E5DED0E4DFCDE4DECDE5DECEE5DECEE4DECEE5DE
+      CFE5DED2E5DECEE5DECCCDC9BACFD0B8434A2A5C5C66BDBAA74F4231D7C2BCD1
+      B79DBAAC90D0CEBC9C977E948B96EBE9EAEAF0E4EEEDE1DAD4B3D3C1A6D1C7A9
+      D8C4AAD8C4ABD8C4ABD8C6AED6C9AFDCD0AB5E694A5C71819AB2D0B6C9D7D3C6
+      B9D5C8B3D8C8B0DDD2B0AAA47F6D7C779AA6B8ECF3FCF6F7E6CCC6AADBD0B7E0
+      CFB4E1D0B8E2D0B7E2D1B5E0D1BADCD1BCDED1BEE0D0B7E5D1B6E8D9BFB8B38B
+      47512F32381F1B1D1A20252443434CE5D4D0E0D0B7EBE0B990865EB6A6A3E0D3
+      B3585C51F1F3F6EBEEEEF2F4E8E6E2C6C0B99BA3A187363D2917292B20323220
+      3439293E3C2436361C312B1E2D2A23322F2E38383B404452505A7B777EC9BCC0
+      F7E7E4FFEDE2F8E7DCFFF5E0CCC2A86E6E532A2F1C141E1C15211D15201F1320
+      1E12211C16221F17201D18291F2026272B2C3130372E353E3521302D98AFB394
+      9D87484E314352432A372A1D26211A2B25172C252C3A3238513F697C6BAFC0AB
+      E5E8D6FFFFFDFFFFFEFDFFF2FDFAF6EEF2E9E5E7D33D4844ECF0F9EEF0EEECEF
+      E7EBECE7EBEDE9F1EFECE5E8D33F4740B0B7C3EEF1F5EBF3F4CBD9DF92A2A794
+      A9AA9CAEA6C6D1C9D5E0DAEEF3F0F7F7F5F9FBF9FEFEFDFFFFFFFFFFFFFFFFFF
+      FFFFFFBEC7B83F51483C4F5FFEFFFFFFFFFEFCFEFEFEFFFFF7FBFA99A6AAF6F9
+      FDE3EFEEF7FFFFF9FDFFE2E7EAD0D2D0CBC9CAD2D1CCE4DBD4E5DFD7D9DDCD82
+      8F78C5C6C7F7F4EEEAEAE3E5E1D5DED7C9DDD3C1D8CBB6DACAB6DBC9B3E2CEB2
+      EBDABDAD9E7EBBB4A6E8D8C4E4D0BAE2D1B7E4D1B8E3D2BDE8D7C2E7D8C6E1D5
+      C8DED4C2BCB7A7616558B7B6B0C2BEB6C1C7BADAD9C9E6E4D5EAE5D0EAE0CDEA
+      DECAE8DEC9E5DBC4E6DEC4E8DCC8E9DFC5EADCC5EBDFC3EBDBBCEDDABFECD9BE
+      EED9B9EBD6B6EAD6BAEBD9BAEBD8B7EED9B8EAD6B6EAD6B9EDD7BCECD9BAECDB
+      C0EBDBBFEDD9C1EBDAC1EEDCC3EBDFC6EBDEC3EDDFC5EDDFC7EDDFCAEDE1CCEB
+      E4CBEBE2CAF0E1CB0000FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFD8E7F3CC
+      E2F2CCE2F1E7F5FFC2DCDC2381001A7F0028840078AC75AED0C5BCD8DECDE3F7
+      DBECFFE0EBFFE4EDFFDFEAFFDAE4FFD8E2FFD3E2FFD7E4FFE0E8FFE0ECFFD1E3
+      FFCFE1FFC5DAF0BFD6E0B8D2CFABCCBC9BC4A887B8867CB478BBD5D97BB27033
+      8C16208100167F0016810030810EB3C8A7C3D9AFAAC98D9CAF8B8A8B8BB0B0B0
+      DBDBDBF5F5F5FFFFFF47524432A51234AC1231A41131A41131A41131A41131A4
+      1131A41122A0004EAE33A09FA0828282A3A3A3CBCBCBC4C4C4244B1937B81332
+      A61131A51131A51131A51131A51131A51132A5111B9E007CBA6A8D888E89898A
+      ADADAED4D5D5F0F1F1FBFCFCFDFEFEFDFDFEFAFAFB48514531A31134AE1231A5
+      1131A51131A51131A51131A51131A51126A20343A925A4A5A47E7E7E9F9F9FC6
+      C6C7575A572C931036B41331A51131A51131A51131A51131A51131A51129A306
+      3AA71BA7ACA77C7D7D9B9B9CC3C3C4E4E5E6F7F7F9FCFCFEFCFCFEFCFDFEFCFD
+      FEFDFDFEFDFDFEF8F8F9E8E8E98E8E8F2224211A56092B8F0F32A61232A51131
+      A211309E112F9D112F9D1030A01131A31132A71131A21129840F2D5622464A46
+      7575765D5D5F16440839BD1432A71132A61132A61132A61132A61132A611179B
+      0086CF739A959B949493BEBEBD9898971D600A39BF1432A51132A61132A61132
+      A61132A61132A6112FA60E25A003A5B69F7A777793928EB9B8B2DBDAD2ECECE5
+      EAEAE6DADEE0C3CCDA92A6CB4F6CB24561B34663B5435FAC4A69B34A6FBD4D76
+      C14875BF3B65B392A4C2D0D0CED7D5CFDDDAD0E5DFCFE9E2CFE7E1CDE2DAC7D0
+      CAB7A6A192504E461B2316164A08247A0D2C940F31A31132A61131A31131A211
+      31A21131A21131A21131A31131A31132A51132A6112F9C1029890E246B10264C
+      1A333A2C4C4B44625F57706D63817E72949183A9A596BEBAA9D0CCB8BEBAA920
+      441436B21331A21130A01130A0112F9B102E98102E99102E98101A95006CA85A
+      817C7A7D7B6E9D998CC2BEADDAD6C2E5E0CBE7E2CDE7E2CEE7E1CDE8E2CEE8E2
+      CEE8E2CEE6E0CDE1DFC9D6D3BFC0BDAC7B776D32312C172E0E1A5809267F0D2D
+      950F31A21132A71231A41131A31131A41131A41131A41131A41132A51132A611
+      30A0112C941027850D17590A707A677C7870989688BDBBA8D8D5C0E4E0CAE6E3
+      CCE6E3CDE7E2CDE6E1CDE6E2CDE7E2CEE6E2D0E7E3D0E7E3CFE7E2CFE7E3CFE6
+      E3CFE7E3D0E7E3D0E6E2D0E6E2D0E7E3D2E6E2D2E5E2D2E6E2D2E6E2D2E7E3D3
+      E7E3D3E6E4D4E5E3D3E5E3D4E5E3D3E5E3D4E5E3D6E5E3D6E6E4D7E7E4D8E5E3
+      D5E6E4D6E6E3D8E5E4D7E5E4D7E5E4D7E6E4D6E7E4D8E5E4D6E5E3D5E5E3D6E5
+      E4D7E5E4D7E5E3D6E5E3D6E6E3D6E5E3D6E6E1D5E6E2D6E5E3D6E7E4D7E7E4D8
+      E7E4D8E7E5D8E6E4D7E6E4D7E6E4D7E7E4D7E8E4D7E7E4D7E6E4D6E5E4D4E6E3
+      D3E8E3D3E8E4D4E7E3D3E6E2D3E7E3D4E7E3D2E6E3D0E6E3D0E6E3D0E7E4D2E7
+      E3D3E7E2D5E8E4D3E8E3D3E5E3D5E5E4D7E7E4D7E7E4D7E8E5D7E7E5DAE7E5DA
+      E7E5DAE7E5DAE8E6DAE8E6DAE8E6DAE9E7DBE8E6DBE8E5DBE9E7DEEBEAE0EBEB
+      E4EBE9E2E8E5DAE7E4D7E7E4D6E9E5D8E9E5DAE8E4D9E8E4D7E6E5D7E5E5D7E6
+      E5D7E6E4D9E6E4D9E5E4D7E6E5D9E6E4DAE6E4DAE7E6DAE8E7DBE8E7DDE9E7DE
+      EBE8DFEAE8DFE8E6DBE7E5DAE7E5DAE8E5DAE8E4DAE7E5D8E6E5D6E6E4D6E5E3
+      D5E7E3D7E8E3D7E5E3D5E7E4D6E7E4D8E8E4D9E7E4D7E7E4D6E5E3D5E5E3D5E6
+      E4D6E6E4D5E5E3D2E5E2D4E7E4D8E7E4D7E7E4D6E5E3D5E5E2D4E6E2D5E7E2D5
+      E7E2D2E6E2D2E6E2D2E6E2D2E5E0D3E6E1D4E5E0D4E5E1D3E5E1D3E6E1D3E7E2
+      D3E7E3D3E6E2D2E6E2D4E5E0D4E6E1D3E6E2D4E7E2D5E7E2D5E6E1D4E5E1D3E5
+      DFD2E5E0D2E5E1D2E5E0D0E5E1CFE5E0CFE5E0CEE5E0CFE5E0CFE5E0CFE5E0CF
+      E5E1CFE5E0CFE5E0CFE5E0CFE5E0CFE5E0CFE5DFCEE5E0CFE5E0CFE4DFCEE5DF
+      CEE5DECDE5DECEE5DECDE4DDCCE3DECCE5DECDE6DECDE6DECBE5DECBE5DECCE4
+      DECCE4DECDE5E0CFE5E0CFE5E0CFE5DFCEE5DFCEE5DFCEE5DFCEE4DECFE5DFD0
+      E5E0CEE5E0CEE5E0D2E5DED3E6DECFE7DECEE5DFCEE5DFCEE5DFCEE5E0CFE4DF
+      CFE5DED2E5DFD3E5DFCFE5E0CEE5DFD2E5DECFE5DFCDE4DECDE5DECEE6DED0E4
+      DECFE5DDD0E7DED2E6DECFE5DDCDC2BEABAAAD97474F2C53545DE1E2D45F5C35
+      B59B9ACFBEA9B0A18ECEC5B49E9A6D92878DECECEFEBECE4F0F2E2DCD4BAD1C0
+      A5D6C3ABD7C2AAD9C6AAD2C4A9D9C6ACD5C5A9D5C7A79A996D3B50494C62778D
+      9CB2C0B8B2DBC9B6D7C7B0E0D1AF747A5E788790CED9E7F8FBFED8D4BDD8CCB4
+      DBD0B6DECEB6DCCEB2DECFB9E0D0B9E4D1B6E2CCB4E4D0B7E3CFB7E1CFB6E4D2
+      B6C2B98C4C4C2B2F3621171B1817191C8C7D85EED8CADCC9B3E3D1B6E3D8AA7D
+      7164F1E2D057564FEEEAF2F6F2EEEFEFEAEBE8CB7D8656414936434A2B191F16
+      12231F142225152427152327111F1D1421241F2F322D3A3A2F3D393545433542
+      412B35353E41488D8088A399975F5A552C2B211D2318141E13101B16101A161A
+      211C1A2424191E241A27221725231E29241F25242428262B352B2F3934263633
+      A2B6C3A1AD854147224853442E4230324339727F6B9CAC9AD5DFD2F7F9EFFFFF
+      FAFFFFFAFBFDF2ECF0EAEDEDE4EDEBE3E8E9E2F0EEE4E8EAD8364541F1F3FFF6
+      F5F3E9EDEBEBE7E6D7DCD5DCE5E1EBF3E73D4A3B74878491A1A58EA5A5A3B6B2
+      B0BDBAD5E7E4FFFFFFFFFFFFFFFFFFFDFFFFFEFEFEFDFFFFFCFEFFFEFFFFFFFE
+      FEFFFFFEFFFFFFBFC4B84B544F515E68F7FCFFFDFDFDEFFCFDEEF7F9F6F7F17E
+      9092F2F7FBF1EEF2CDCACABABBB4C3C1B4DAD7C8EBE8DAF1EFE6F8F7F2F6F7F1
+      F8F3E9908B75ADA9A5D1CABCD1C4B4DDCAB4DDCAB0D7CBAFD9C9B1E1CDB2E3CE
+      B4E3CCB3E7D2BCAA9D7DB3AFA0E0D2BFDECDB5E2D6C1F6E7D2E3DFCAC0C1B5A0
+      A496A4ADA3B2B8ABD9DACAFFFBEBFAF3E4F0E6D3E5D7C4E8D6BDE3D5BCE5D5BD
+      E9D9BFEBDBC2EADAC4E9DCC5EBDBC5EADDC7ECE0C5EADFC8EBDBC5EEDCC6ECDD
+      C3EEDDC2EBDABEECDABDEDDBC0EBD8BEEAD9BDEBD9C1EBDAC2E8DABDEAD9BDED
+      DAC3EBD9C0EBDBC3E9DCC2E8DBC1ECDEC3EDDDC3EBDEC4EBDDC6EBE0C6ECE0C6
+      EADFC5EDE2C5EDE3C8EBDEC99769FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFF
+      D6E5F1C8DFF1C8E2F3CDE5F6F5FAFF9CC49E0D7700177D0072A36CEAE8FFE2EF
+      FFD4E8FCCBE1F6CDE1F4CDE1F2C9DFF1C9DEEFC4DAEABAD4E8BCD6E9C8DDEEC4
+      DDF0C1D9EEC3DAF2CAE0F9D8E5FFD6E1FFDFE7FFE2EBFFE2EAFFE0E7FFD9E4FF
+      E9EEFFCDDFEAAACCBF56A245228700107B0052972CC1D3ACB9D4A5A0B1918B8B
+      8BB0B0B0DBDBDBF5F5F5FFFFFF878787216D0C31A2112B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F268D09258F08A7B3A47C7B7C999999C1C1C1E0E1E150564E
+      2B8C0F2D97102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1B89004AA032A1A0
+      A1818182A2A2A3CACACBEAEAEBF9FAFAFDFEFEFDFDFEFDFEFE888889206B0B31
+      A3112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F298E0C1E8C01A4B79E7C7A7D
+      949495BABBBC8C8C8D1C5B0A32A6112B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F298E0C1B8B009FB7987C7B7D929293B8B9BADDDEDFF3F4F5FAFBFCFBFCFDFC
+      FCFEFCFCFEFCFCFEFBFCFDF2F3F495959512230E28870E34AB122E9A102B8F0F
+      2B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8E0F2B900F2F9D1033AB
+      122A8C10455B3F5D5D5E1D351830A1112C920F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F11830082BD719A959B929191BABABAC7C7C634492E2F9D112B910F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1588008CB580847F828B8A86AEADA8D4D2
+      CCECEAE2F5F2EAEFEEE8E4E4E2CED3DB9EAECD607AB84C68B54A64B74C68B74F
+      6EBA4F74C05278C03C69B7728DBDC9CBCBD5D3CDDAD7CDE1DDCFE5DFCEE4DDCB
+      D7D1BE908C802624211850082C910F33A81230A0112D95102B900F2B8E0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C920F2E991031
+      A41132A6112C920F286415323F2A524F4965625A7572688C897CA29F90BAB6A5
+      CCC8B5494D3F2A8D0F2E9A102C910F2C910F2C920F2C930F2C930F2C930F1D8D
+      004AA3319D9B98757369939083B8B4A4D5CFBEE3DCCAE6E1CDE5E1CEE5E1CDE7
+      E3CEE8E2CFE8E1CEE5DFCCDAD6C4BFBCAC514F4814290D22700C2F9E1133A912
+      2F9D102D94102B900F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2C910F2D95102B980D1C9B00BCE0B18A857E9A988ABFBBAAD9D6C3E4
+      E0CDE6E2CFE5E1CFE5E1CFE6E1CFE7E2D0E7E3D3E6E3D3E5E3D4E6E3D4E6E4D5
+      E6E3D4E7E4D4E7E4D5E7E4D5E6E3D4E7E3D4E8E4D6E7E4D6E5E3D5E5E3D5E6E4
+      D6E6E4D6E5E3D5E6E4D6E6E4D6E5E3D4E5E3D3E6E4D5E6E4D8E5E3D6E5E3D6E5
+      E3D6E6E4D8E6E4D7E5E3D5E6E4D5E6E4D7E6E3D8E5E3D6E6E4D6E5E2D5E5E3D3
+      E5E3D2E5E3D2E6E3D3E6E4D4E5E2D2E5E1D3E4E1D4E6E0D4E5E1D3E5E2D3E5E3
+      D4E6E3D4E6E3D4E8E4D6E7E4D6E6E4D7E7E4D8E7E4D7E6E4D7E6E4D7E6E4D5E8
+      E3D3E6E3D3E5E2D2E7E3D3E6E3D2E6E3D2E7E4D2E6E2D2E6E2D2E6E2D2E6E2D2
+      E7E3D2E7E3D3E7E2D5E7E3D2E6E2CFE7E2D2E7E4D4E7E4D4E7E4D6E8E5D8E8E4
+      D9E7E4D8E7E4D8E6E4D9E7E5DAE6E4D9E8E4D9E9E5D9E8E5D9E8E5DAE8E6DBE9
+      E7DDE9E7DCE8E6DAE6E4D9E7E4D9E7E4D9E8E5DAE7E5DAE6E4D9E8E5DAE7E5D9
+      E6E5D9E8E7DAE6E4DAE6E4DAE5E4D8E6E4D7E6E4D7E7E4D7E6E5DAE6E7DCE8E8
+      DFE8E7E0E9E8E0E9E9E2EAE8E0EAE7DDE9E6DDE9E7DDE9E7DCE8E7DBE9E7DBE9
+      E5DAE6E4D9E6E4D8E9E4D9E9E5DAE9E6DBE9E5DAE8E4D9E8E4D9E8E5D8E7E4D7
+      E7E4D7E7E4D7E8E4D8E8E5D8E7E4D7E8E4DAE9E6D9E6E3D8E6E3D7E5E4D6E5E3
+      D6E6E3D6E8E2D5E7E2D5E7E1D5E6E1D4E7E1D4E7E2D5E6E1D4E6E2D6E7E2D4E6
+      E2D0E7E2D4E6E1D5E6E1D5E5E0D4E5E0D3E7E2D4E8E3D5E9E4D8E8E3D6E6E1D4
+      E5E0D4E5E0D4E5DFD0E5E0CFE5E1CFE5E1CEE4DFCDE5DFCDE5DFCEE5E0CFE5DF
+      CEE5DFCEE5DFCEE5E0CFE5E0CFE5DFCEE5DFCEE5DFCEE5DFCEE5E0CFE6E0CFE5
+      DFCEE5E0CFE5E0CFE5E0CFE5DFCEE5DFCEE5E0CFE5DECDE5DDCCE6DECEE5DECD
+      E4DECDE5DFCDE5DFCEE5E0CFE5E0CFE5E0CFE5DFCEE5E0CEE5DFCEE5DFCEE5DE
+      CDE6DFCEE6DFCEE5DECDE6DFCEE5DECFE5DECEE5DFCEE5DECEE5DECDE5DFCEE5
+      E0CFE5DFD0E5DFD3E5DED2E5DECFE5E0CEE5E0D2E5DFD0E5DFCEE5E0CFE5DFCF
+      E5DED0E4DED0E5DECFE7DED0E7DED2E5DECFC8C3B0A6AE904C532E4B4B54DDD6
+      D8AA9F728A7775D9C1B4888371D0C1A7A7A17A8A8387EDEDF0EAEBE3EEEEE2DE
+      D8BDD1C2A6D6C3A9D7C4A8D6C2A9D8C7A9D4C5AECBBBA4CDBAA4CCC4963B4D36
+      3C5150415055626373CEC1BDE5D3B57C7D5D505752B8C0D2EEF7FFF6F2EBCFC3
+      A6DECDB6DCCBB8E4CFB7E0CEB4E0CEB7DDCFB7E2CEB3DECCB0DAC8AEDDCEB2DD
+      CAAFE5D2BFCDC5963D411C222A191D1B1B150D16C2ADC0EBDAD7E5CEBDDDC9AF
+      EBDAB8897C60C0B2B45F5B5FE6E7EFEEF3EAF2F3EBE5E4C9ACB07C3C49292836
+      282A34291F28241D2724202C28202523131E15161E1A1A2328203337172C2A28
+      403D30433E2F403E2A3B362F362F2A36364D5A574B5741454C40232A211B2317
+      18221A16211D15211B1324211623231926261B29291A29251B2B252931262134
+      271B2D298D9BABFFFFFD7C8B63898D85647766B6C8C3FDFEFDF6F7EDEDEFE6EB
+      EDE4EEEDE6ECEEE6EBEDE6EAECE4E4EAE3E7EDEBEAEDE9DEE5E2CDD9D6667E78
+      C3D4DFD0DDDEADBEBABECDCAC9DAD6FAFAFAFDFDF83C463EC9D1D7EBF2F1F8FC
+      FAFFFFFFEBEEEDF1F7F9FDFFFFFEFEFFFDFFFFFEFFFFFDFFFDFDFFFEFAFDFCF9
+      FCFDFBFDFDF6FAFAF8FCFDA8B1A54C5651647181E5FAFFEEF8FDCCD5D6DBDAD8
+      D6D6CA748078C8CBCECFC9C0EBE8DBFBF7EBFAF7F0F7F4EDEEECE3E8E0D9CDC7
+      C1C4C2B3CDC5AC918A6DACA991E6CFB6DCC5AEDECCAFDDCCAFE1CDB2DECDB2D9
+      C7ABDBCAACE6D3B8EBD4C1AA9E81ABA9A2EAE0DAE1E0D2CCC7C08D928599A290
+      CED1C7F6F3E8F0EDDDE5DECBE2D1BCDDD2B7DED1B5E5D3BCE9D7C0E7D3BFE4D5
+      BAE7D8C1E5D6C0E6D8C3E5DAC4EBDDC4E5DBC5E8DFC4E9DEC4EDDFC7EADDC5E6
+      DDC2EBDDC2EDDAC3EFDEC7EBDDC2EADBBCEBDAC0ECDBC3EADBC0EBD9C2EBDABF
+      ECDCC1EBDCC3EBDEC4E9DFC4EBDEC5EADFC6ECDEC4E9DDC1E6DCC7EDDEC9ECE1
+      C7EBDFC9EDE1C8EBE2C9EAE0C8EBE0C99769FEFEFFFEFEFFFEFEFFFEFEFFFFFF
+      FFFFFFFFDAE9F5D7EAF8D7E9F6D5E7F4D9ECFBF0F7FF72AB670976000B750071
+      A66FE8F2FFD8EBF9CAE1F1C9DDEDC8DDEDC3DAEDC1DAEEC2D9EBCFE4F2DDF2FF
+      D3EAFFC2DBF0C1D8EAC4DBEDCEE1F0CEDFEFC6D8ECCBDDEFC9DBEEC1D8EDBFD7
+      ECCEDEEED5E2F4E0ECFFF4FAFFCDCAFF468437198300238100A1C58CD1E3CAA7
+      B79F8B8B8BB0B0B0DBDBDBF5F5F5FFFFFFBCBCBC1E501032A6112B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F13870090B386827F838F8F8FB5B5B5DCDC
+      DC808080216D0C31A2112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F278E0923
+      8D05A4B0A17C7B7C979798BFC0C0E3E3E4F7F7F8FDFDFEFEFEFFFEFEFFC0C0C1
+      214D1532A6112B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F12860083B0
+      768682888B8C8CAFB0B1B4B4B529492131A3112B900F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F1186007AAD6C89858C8A8A8BADAEAFD5D5D7EFEFF1FAFAFC
+      FCFCFEFCFCFEFCFCFEFCFCFEFAFBFCC3C4C51D271C2C910F32A7122B8E0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2A8F0E2A8F0E2B8F0E2B
+      8F0F2B8E0F309E1133AA113C5B332930272C910F2D950F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F10830075B56299959A8C8C8DB2B2B3DBDBDB5C5E5B28840E2E9A
+      102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1688005CA34895919483827FA4
+      A39FCBC9C5E7E6DEF4F2E9F6F2EBF1EEE8E9E7E4D9DBDEB0BCD05B76B54964B1
+      4F6AB8536FBC4F70BD4D76BF446FBC6C8ABEC5C9CAD6D4CCD9D6CCDDDBCDE1DB
+      CCDAD5C4918E81151D10267D0D34AC122E9A102B8E0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F298E0D278D0B288E0C2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8E0F2D971032A8122F9F112A6117414239615D576D6B618683
+      779E9A8BB9B5A4706E63206B0B31A3112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F278E0A228C04A1AE9A726E678A877BAEA99ACEC8B7E0DAC6E5E0CDE5E1CE
+      E5E0CDE5E1CDE6E1CEE6E1CEE1DCC9C5C2B33F3E3916480731A11132A7122C92
+      0F2B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F268D0A1F8900BED1B598938AA8A695C6C1B2
+      DBD7C6E4E1CEE5E2CFE5E2D0E5E3D0E6E3D0E7E4D3E6E3D4E6E4D6E6E4D8E7E4
+      D9E6E4D7E6E4D7E7E4D8E6E4D7E6E4D7E7E4D8E6E4D7E7E4D8E6E4D8E6E4D7E6
+      E4D7E6E3D7E6E3D7E5E3D6E6E4D6E6E4D6E6E4D6E5E3D5E5E3D5E5E3D7E5E3D6
+      E5E3D6E5E3D6E6E3D8E6E4D7E6E4D5E5E3D6E6E4D7E6E4D7E5E4D6E6E4D6E7E4
+      D7E5E4D6E5E3D5E5E3D4E6E2D4E7E2D5E6E3D5E6E2D6E4E2D5E6E2D5E5E1D3E4
+      E2D0E6E4D3E7E4D4E7E3D4E7E3D2E6E3D3E5E3D4E7E4D5E7E4D6E6E4D6E5E3D6
+      E6E3D4E7E2D2E5E2D2E5E3D2E7E4D2E6E3D2E6E3D0E5E2CFE6E2D2E6E2D2E7E3
+      D2E6E1D0E6E1D0E6E2D0E7E3D3E7E3D2E6E3D2E8E4D5E9E4D6E7E5D7E8E4D9E8
+      E4DAE5E5DAE6E7DAE7E7DBE9E7DBE8E5DAE7E5DAE8E5D8E8E5D8E8E5D8E9E5D9
+      E7E5DAE7E4DAE8E4D8E8E6D9E7E6DAE7E6DAE7E6DAE7E5DAE7E4DAE7E4DAE7E5
+      DAE7E5DAE7E5DAE6E4DAE6E4D9E6E5D8E6E5D8E6E4D6E7E4D6E8E4D7E7E4D7E5
+      E4D8E5E4D8E6E4D8E6E4D8E8E5D9EAE7DBE8E5DAE7E4DAE8E5DAE8E5DAEAE6DD
+      EBE7DEE8E7DCE7E6DAE7E5D9E9E6DAE9E6DCE9E6DCEAE7DBE9E6DAE9E6DAE9E5
+      DAE9E4DAE9E5DAE9E6D9E9E6DAE9E5DAE8E4D9E8E4D9E7E4D7E8E4D8E7E4D8E7
+      E4D7E7E4D8E7E4D7E8E4D7E8E4D7E7E4D7E7E4D6E7E3D6E7E4D6E7E2D5E7E3D4
+      E7E2D4E7E1D5E7E2D6E7E2D5E8E3D6E7E3D5E6E2D5E6E3D5E9E4D6E9E3D7E7E2
+      D5E7E2D5E6E1D5E5E0D4E5E0D4E5E0D4E5DFD2E5DFD0E5E0D0E5DFCFE5DFCEE5
+      DFCEE5DFCDE5DFCDE5DFCEE5E0CEE5E0CEE5E0CEE5DFCDE5DFCDE5DFCEE5DFCE
+      E5DECEE5DECEE5DFCEE5E0CDE5DFCDE5DFCEE5DFCDE5E0CEE5DECEE6DECEE6DE
+      CEE5DFCEE5DFCEE5DFCDE5DFCEE5DFCEE5DFCDE5DFCDE5DECCE5E0CEE5E0CEE6
+      E1CFE7DFCDE6DECDE5DECDE5DECCE5DECDE5DDCCE5DECCE5DFCDE5DDCCE5DECD
+      E5DECDE5DECDE5DECEE5DED0E5DED0E5DECEE5DFCDE5DFD0E5DECFE4DFCDE5DF
+      CEE5DFCFE5DED2E5DFD2E5DECFE6DECFE7DFD3E7DFD3C8C4B5E0E1CC52562745
+      444BCDC6D3BBB096726558A39697A39690D6C4AAB0A87E8C7E88F0F1F0EBECE6
+      EFF1E4E0DBC0D2C1A6D6C3A5D9C2ACD7C3ABD0C4A9D4C6A9CABCA6D8C6ACCAC1
+      9B56643E455451435755434D58B3ACAFA7A08C3743354C5E65D1D9EDF9FEFFE5
+      E3D6DDC9A9E1CEB2E2CFB8DDCDB6DECEB7E0CEB3DECFB2DCCCB1DEC9B0DECBB1
+      DECAB2D2C3A6A79F8186826A293A211C2212110E0F1719121D18244B4956A497
+      A0E1CAC6F1DBD8BCAD964F5141615E64E1E1EBF2F0EFF1F2E8EAE7CBB6B6863D
+      4026252D1F202B1F1D252321282821312824332326342128312520211D22282A
+      91A1A24259472A3C32203432283733273834343D3B505B624D5641404B3A2930
+      261E28221D28271729271A30251D332515281F1120171E30234A5A4791A08FC1
+      C8B280937241523A677A87FFFFFF7D886CF7F7FCFFFFFFFAFBF1E8E8E6EBEBE3
+      E9E9E2EBEBE2E9E9E3E9E9E8F0F4F5E4EEEED9E7EBD9E5E4C8D4D375958CE3F3
+      F8FCFFFF93A4A9ECF7FAFFFFFFF6F7F5FAFEFEFEFFFFFDFFFD3C4B52DCEFF5FF
+      FEFEFEFDFEFFFFFFE9EEEEE2EBEFFAFDFFFAFDFDF8FCFCF7FAFDF2FAFAF6FBFB
+      F8FDFDF1F7F6E5F0F3E7F3F5FEFEFFC0C6B7434B37565A578D9FAE99A9AADCE4
+      DEF9F7EFF0F3E3919797FAF7FAE9E4DDD7D1C5D4C6B7D5C8B4C1B8A4C5BDA4D4
+      D1B7EBE9D4F1F0E4EDE4CC988D69ADA290E2CBB5DDC4ACDAC7A9D6BDA4D4C1A5
+      E5D8C1F1EAD0E2DAC6A0A28EA2A292A6AF9FD6D9CDD5D8CCC2C5B4CECDBDEDE4
+      D4EFE3CEE7D6C0D9C6AFD6C7AEDCCBB4E3D1B6E5D1B6E5D2B7E4D2B7E5D1BAE6
+      D5BEE5D6B9E3D5BEE5D5C0EAD8C1E9D8C2E6D8BFEBDDC3EBDDC4EADDC7EBDDC7
+      E9DFC8EADEC6EADDC7E9DCC3EBDBC4ECDBC5EBDBC1ECDDC2EBDCC3EBDBC2ECE0
+      C6EADFC6ECDFC3EDE1C7EAE1C6EAE1CAECE1CDECE2CBECE2C9EBE0C8ECDFCAED
+      E2CAEEE2CAF0E1CCEDE2CEEFE2CAEFE3CAEDE1CD0000FFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFDCEAF5D7E8F5DCECF6D9ECF8D3E7F4DDEEFFE9F1FF5CA047
+      006500278700D6E8F9DDEDFFD3E7F5CFE2F1C4DAECC4DCECCBDFF0C9E2F3CDE4
+      F9B0B9D69FADBDC9D9F6C8DFF1CDDFEFD0E0F0C8DBEDCCDDEECBDDEFCADBEFCA
+      DCEEC8DCEECBDDEFDCEEFBDFE8FFA8AAD26480743B8421278900177C008DBC71
+      D5E4CCAAB8A48B8B8BB0B0B0DBDBDBF5F5F5FFFFFFE8E8E8364B302F9C102C91
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F15880066A653938F94888888AA
+      AAAAD2D2D2AEAEAE1F501132A6112B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F1487008DB183817E828E8E8FB4B5B5DBDBDCF3F3F4FDFDFEFEFEFFFEFE
+      FFECECED3D4D382E9B102C930F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F17
+      880056A041979499848484A5A5A5CACACB4A51492B8F0F2D96102B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F1989004D9D359B999C848484A3A3A4CCCCCDEAEA
+      EBFAFAFBFDFDFEFCFDFEFDFDFEFCFDFEFAFAFB6161621F660B34AB122B8D0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C90102C900F1584000C7F000E8000
+      0C7E001A8C00329B112A8D0F2C940F309E102C6E192A83102C93102B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F1486005DA748A19EA2878889ABACADD4D5D68B8B8C1E
+      640A31A3112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F228C04329315A3A7A1
+      7B7A789A9895C1C0BBE2E0D9F2F0E8F6F3EBF4F2EAF1EFE8E9E7E2D5D8DA7D96
+      C1536FB14B66B14A65B45270BC4B73BF5079BD90A5C3CBCECBD9D6CDD9D6CDDC
+      D8CDDBD6C9AFAD9F1E231928870E33AA122B8F0F2B8E0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2C8F102D90101986000B7E001382001885001583001186002E9E0E2D93
+      102B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8D0F2D951033AA122A8B0E38452F60
+      5B566C69608582769F9B8D8B887C1D4C0F32A6112B8E0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F1487008CB080797470817E72A4A092C6C1B1DDD7C4E4E0
+      CBE5E1CDE5E0CDE5DFCEE5E0CDE4E0CDDCD8C5595751164A0834AD122E98102A
+      8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F102A8F0E1F8902118100
+      0A7D000A7E000A7D00097D00168400208903208A031D8800C6DBBCB1ACA0BDBA
+      A9D0CEBCDFDBC9E4DFCEE5E1D0E7E3D2E6E3D2E6E2D2E7E3D5E6E4D7E6E4D6E6
+      E4D8E5E4D9E5E4D7E5E4D8E8E4DAE8E5D7E7E4D7E7E4D8E8E4D9E6E4D8E5E4D7
+      E6E4D7E6E4D5E6E4D6E5E3D5E6E4D6E5E3D5E5E3D5E6E4D6E6E4D6E6E4D6E5E3
+      D5E6E4D7E6E4D7E6E4D7E6E4D7E6E4D7E6E4D7E6E4D7E6E4D7E7E4D8E6E4D7E7
+      E4D8E7E4D7E6E4D7E6E4D7E6E4D6E6E4D5E6E4D6E6E4D6E6E4D6E7E4D8E6E4D7
+      E5E3D7E5E3D5E6E4D3E5E4D6E6E3D5E6E2D0E7E2D2E7E2D2E6E2D0E6E2D2E7E3
+      D3E5E1D0E5E1D0E6E2D2E6E3D0E6E3D2E6E2D2E5E1D0E5E2CFE5E2CFE6E3D0E6
+      E3CFE5E3CFE6E3D0E7E2D2E7E3D0E7E3D2E8E4D4E6E5D8E7E6DAE8E6DAE9E7DB
+      E9E7DBE8E7DCE9E8DEEAEAE0E9E9DFEAE8DCE8E7DAE7E6DAE7E6DAE7E6DAE9E7
+      DBE9E7DBE8E7DAE8E6DAE7E6DAE8E7DCE8E7DCE8E7DCE9E8DCE9E8DDE8E7DDE7
+      E7DCE6E6DAE6E7DAE7E6DBE7E6DBE8E7DBE9E7DAE8E5DBE7E4D9E8E4D9E9E6DA
+      E8E5DAE7E4DAE6E4D8E6E4D6E6E3D5E6E3D5E5E4D6E5E4D6E6E3D5E5E2D4E5E3
+      D5E8E4D8E8E5D9E7E5D8E9E5D8E9E4D7E7E4D9E8E6DAE9E7DBE9E7DBE9E7DBE8
+      E6DAE7E5DAE8E5DAEAE6DAEAE7DAE8E5D8E7E4D7E7E4D8E6E4D6E5E3D5E6E4D4
+      E6E4D5E8E3D6E7E4D7E7E5D8E7E4D7E9E4D7E7E4D7E6E4D7E6E4D6E7E4D6E9E3
+      D6E8E2D5E8E3D6E7E2D5E7E2D6E8E3D6E8E3D6E8E4D7E7E3D6E7E3D6E7E2D6E8
+      E2D6E7E2D5E7E2D5E6E1D4E7E2D5E7E2D4E6E2D4E6E0D5E5E0D4E5E0D4E5E0D3
+      E6E1D2E6E1CEE5E0CEE5E0CFE5E0D0E5E0D0E5E0CFE5DFCFE5DFCDE5E0CEE5E0
+      CFE5E0CEE4DECDE4DECEE5DFCCE5E0CCE5DFCDE5DFCDE5DECDE4DFCDE5DECDE6
+      DECFE5DFCDE5DFCDE5DECCE5DFCDE5DFCDE5DFCDE6DFCFE6DFCEE5DECDE5DFCE
+      E5DFCEE5DFCEE5DECDE5DECDE5DECDE5DECDE5DECDE5DECCE6DFCDE6DFCCE5DE
+      CBE5DECDE5DECDE5DECDE5DECDE5DECDE5DECDE5DDCCE5DDCDE5DECDE5DECDE4
+      DDCCE5DFCCE5DECDE6DED0E5DED0E5DED0E5DED2E5DED0E5E0D3C8C4B4DADDC9
+      50572F3A35399D8FA6C1B6A05F5D38706569EBDCD8D2BAA0B7AB88847F7DF7F3
+      F5EBEDE4F0F2E2E1DFC7CEC0A5D4C0A7D3C3A8D4C0A9D3BDA9CDB89BD8C2A9D6
+      C2A9DCCAAAA09D6E394830283E3C454F56676A714F5B4C3747475C7186DBE4F4
+      EFF2F1D2CCB9DACBB6DDD0B7DBCBB3DDCDB5DED0B5E0CEB3E0CBB0DBCAB0DBCC
+      ABD8C9ABD8C8ACDECBB1B3AA7A494B2E3F453531382720251A1B241C171E1C15
+      1A1B1A202237373D504D5B7875743F413B4A4C56DCDEEDF3F4F0FFFFFFEFEBD4
+      7E805B242F1B2028231C28241723212026261D2A25222D1F23302429322B3036
+      30313932BABAC150624A1120141D25251B2626232F312E3232535D684D55413C
+      4B36222B2425332D2A3C353F4F45405A4753695692A28DD0DFCCF6F8ECFFFFFB
+      FCFAF1E6E9DEF8F9EBFEFDED7C867FFFFFFE78816CDADDE6F6F3F2EAECE3E7EA
+      E7E8EBE6E8EDE3EDEAE7E8EDE6CDD9D48FA29A89A0A0EAF8FAF2FAFCFCFFFFFB
+      FFFCFFFFFFFDFFFFB3BEBDFBFBFBFDFFFEFEFFFFF8FAFBF0F3F5EFFAF53B4855
+      D8E7EEFFFFFFFEFFFEFDFFFFD9E3E1C3D3DCF1FBFFFBFEFEEEF9FAEFF9F9F1FA
+      FDFAFFFFF7F9FAE1EAEABDCACBA3B4BAA6B8BA8A96814B5644515559FAF5FFFF
+      FFFFF6F2EBE8DEE0E3DED27B7766C3BBB2C4B8A5CFC7ACD5D1B8E1DBC8FAF8EE
+      FFFFF6FFFFFDFFFFFCFFFFFFEBE7D4969372A8A18FDDCDAFD4C0A9D6CCB7DDD7
+      C3E5DECAB6B3A88C8F849CA598E9E9DEF7F7EBEBEADACDCAB7D2C8B1D3C6B3D8
+      CDB3DECBB4E1CCB3DECEB7E4D0B3E5D0B5E1CFB4E1CFB6E5D2B6E4D1B7E0CFB7
+      E4D2B7E2D1B5E5D2B9E3D4BCE2D5BFE9D8BDE9D8BEE5DABFE5D8C3EADCC2E9DC
+      C5E8DDC8E9DEC8EADDC7EADEC9EADCC5EADBC6EBDBC5EBDAC6EBDAC7EBDDC8EB
+      DFCAEDE1CAECDECAEDDDCAECE2CBECE0CAEEE2CEEEE4CFECE2CCEFE3CFF0E2CF
+      ECE3CDEBE3CDECE2CEEDE3D2EFE2CCEBE1D0EDE2D0EDE3CF0000FFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFDEEBF5D7E7F5D9EAF7CFE5F5D3E7F6CFE6F5E0EE
+      FFD6E6FA6BAB6D86BC86DAEBFBD5E8F9CFE5F5CEE3F3C7DEF0C9DFEECFE3F0D5
+      EFFFB1BBE1447335166F0886B38DDFEBFFCADEEFC3D9EDC6DAEDCDDFF0CFE1F1
+      D0DFF0D0DEEFCFDFEFDDEFFDDCE0FF9398B13673271C84001E8600097300328C
+      07AECC95B9D1A0A5B59A8B8B8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFF61635F28
+      850E2F9B102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F208C0338951CA3A6A3
+      7F7F7F9F9F9FC8C8C8D3D3D3374B312F9E112C920F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F14870061A64E939094878888A9AAAAD1D1D2EEEEEFFCFCFDFE
+      FEFFFEFEFFFEFFFF68696926800E2F9B112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F248C052C900EA3AAA17C7C7D9B9B9BC2C2C374747522710C31A0112B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F258D06288F0BA4ADA27C7B7D9A9A9AC0
+      C0C1E4E4E5F7F7F8FCFCFDFDFDFEFDFDFEFDFDFED9D9DA2938252F9C102C940F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F102B8F0E1182004C9D3691B9
+      86AFC8A8BBD5B496C28A29881732A6122C910F2B900F2F9B102B900F2B8E0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F1D8A00429A2AA9AAA9848385A5A5A7CDCDCF
+      B5B5B7224B1632A7112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F298F0C1889
+      009BB1937C797B918F8DB7B5B1DAD9D4EFEDE8F5F3EBF6F3EAF3F0E8EFECE4E6
+      E5E0C1C9D47B93C05975B4536DB35E77BA6D8AC091A6C7BEC5CBD1D1CCD7D5CD
+      D8D6CCDAD5CBD6D3C74E4C471F670A34AD122A8D0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2C8F102B8F0E0D80003A962186B475B8C8AACCD4BBDCE2C9B7CBA14E
+      8B3B2A9A0E309E102A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2A8D0F30A011
+      269B05445C3965605E6E6B6287847A98968A2F40252F9B102C920F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F14870063A5508C87867A776E999489BDB9AAD7
+      D2C0E3DECAE5E0CDE4DFCDE5DFCEE5DFCEE3DECD9D998D142D0B32A7122D9610
+      2B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2E91111B87000B7E002E90
+      1364A84F8AB97993BE8295C08390BE7D6BAC54449B29198700007400CDE5C1D0
+      CBBFD4D0C2DCD8C9E2DECDE5E1D0E6E2D2E7E3D3E7E3D3E7E2D4E6E2D5E5E3D5
+      E6E4D6E6E4D6E5E4D7E5E4D8E5E4D8E7E4D7E7E4D7E6E3D8E7E4D8E8E4D8E7E4
+      D8E7E4D8E6E4D7E5E4D6E6E4D6E6E4D6E6E4D6E6E4D6E6E4D6E7E4D7E6E4D6E6
+      E4D6E6E4D7E6E4D7E6E4D7E6E4D7E7E4D8E7E4D8E6E4D7E6E4D7E6E4D7E6E4D7
+      E5E3D7E6E4D7E6E4D7E6E4D7E6E4D7E6E4D7E6E4D5E6E4D6E7E4D7E6E4D7E7E4
+      D7E7E4D7E5E4D7E6E4D7E6E4D5E6E2D2E7E2D2E6E4D4E6E4D4E8E4D4E7E3D3E7
+      E3D2E7E4D2E5E2CFE6E2D0E8E4D5E7E4D2E6E2D0E6E3D2E6E3D0E6E3D0E8E4D3
+      E7E4D2E6E3D0E7E3D0E6E4D3E6E4D3E6E4D4E6E4D5E8E7D9EAE7DCEAE7DDEAE9
+      DFEBE9DFEAEBE0EBEBE1EDEBE4ECEBE4EBE9E2E9E9DEE8E8DDE8E7DCE8E8DCE8
+      E8DCE9E9DDE9E8DEE8E8DDE9E8DDE9E8DEE9E9DEE9E8DEE9E8DFE9E8DEEAE9E0
+      EAEADFE9E9DEE9E8DEE9E8DEE9E9DEEAE9E1EBE9E2EAE8DFE9E7DDE8E6DCE8E7
+      DCE8E7DCE9E7DDE9E7DDE7E6DAE7E5DAE8E4DAE7E4D9E7E5DAE7E5DAE7E4D9E6
+      E3D6E6E4D4E6E4D5E7E4D6E9E3D6E8E4D6E7E3D6E6E4D8E8E7DBE8E7DBE9E5DA
+      EAE6DAE9E6DAE6E5DAE7E4D9E9E4D9E8E5D8E7E5D7E7E4D7E7E4D8E7E4D6E6E4
+      D6E6E4D7E6E4D6E8E3D6E7E4D6E7E4D7E7E4D6E8E3D6E8E3D6E6E4D6E7E3D6E8
+      E3D6E6E3D5E7E3D6E9E3D6E8E3D6E7E2D5E7E2D5E8E3D6E9E4D7E8E3D6E8E2D5
+      E7E2D5E7E2D5E7E2D3E6E2D3E6E1D4E6E1D5E6E2D3E6E2D0E6E1D4E6E1D4E6E1
+      D4E6E0D4E7E2D4E7E2D2E6E1D0E5E0D2E5E0D4E5E0D4E5E0D4E6E0D3E5E0CFE5
+      E0CFE5DFD0E5E0D0E5E0CFE5E0CFE5DFCEE5DFCEE5DFCEE5E0CFE6DFCFE5DFCE
+      E5DECDE5E0CEE5DFCDE5E0CEE5E0CEE5E1CFE5E0CEE5DFCEE5E0D0E5E0D0E5E0
+      D0E5E0CFE5DFCEE4DECCE5DECDE6DECDE5DECDE6DECEE6DECDE5DECBE5DECCE5
+      DECCE5DDCBE5DDCBE5DECDE5DECCE5DDCCE5DDCCE4DCCBE5DDCCE5DDCBE5DCCB
+      E5DDCBE5DECBE5DDCCE5DDCBE5DDCCE5DECDE5DECDE5DECDE5DED0E6DFD3CAC4
+      B3E3DBCF5153342923266F6277D1BCAE968A62545049DCC0C1D1BCA6BEB28587
+      7A76F6F2FAECEDE7EDF2E8E1E2C7D0C2A4D6C4ABD6BEA6D6C4A7CCB999D3C0A4
+      DBC6A9D8C4A6E5CCB2D1C8A03F4C2C253A343140473C46493A4E4E5E6C808098
+      A5ABB1BAC4C5BADAC6B4DBCBACD9CDB5DDCCB5DCCDB6DACFB6D9CBB1DECBB2DE
+      C9B1D8C9B2D9C8ACDAC8B0DAC7AAC1B28656513E4B4A3E313D332D322E222522
+      2E332A293630223427202F28242A272229242E302F3E414CDEE0EDF6F7E49EA6
+      897B8066101A02172219171D1916201C172023162123172422222A2320291D23
+      29292C362F293823A6B0B36B75551C281F1D2C261C2B291C292411221636473D
+      515C454C5952A5B0A9DADFD2DDE3D7E5E9DBF1F3E4F9F9EAF9FAEFEDF3EAEFEF
+      EAEBEBE6EBEBE3E7E6E1ECEBE7F6F3E7677765FAFBFA8A8972AFB7C4D8E4E8E3
+      E9E6D6E3E1F7FAF9E9EDEBCEDFDDF8FAFBFFFFFFFFFFFFFFFFFFFFFFFEFFFFFF
+      FDFFFDFAFCFDF7FBFAF0F7F5B1BEBEF7FAFBF7F9FBF3FAFAF2FAFAF6FAFBFDFD
+      FC3E4B47C9D8E4EEF7FAF0F7F6EDF5F5E3E7E8D2DFE1EBF3F6E4ECEBE1E5E3D6
+      D5D2D0CFCCC1C3BAE3E7E4DCDED5D0D7CCE6E7E1EFF1ECBBBBA7454936595D56
+      CECAC7DACDC1D2C3B1CEBAA8D5C0A2847F6DD2C5B8D7CEC2FBFAF4FFFFFCFFFF
+      FFFFFFFFFDFFFCFDFDFBFDFDFCFFFFFEEAEAD876755F878781C8C5B8D2D1C2D1
+      D5CBBABAAAA7AB9DCFD1C5F3F1E3F8F1E0D8CFB6CCBBA5CEC0A6DDCCAEDECDB4
+      DDCCB2E2CDB3E2CDB3E2CBB2E4CFB1DECBB3E0CDB3E2CEB4E3D1B6E2D0B3E5D1
+      B7E4D1B6E2CFB5E4D1B6E4D1B5E4D1B7E5D6BAE6D5BCE6D7BEE8D7BEEADAC4E9
+      DCC3E9DBC5EBDCC7EBDEC9EBDEC9EADDC9EBE0C7E9DEC3E9D9C1EBDEC5EBDDC7
+      EAE1CAEDDFCAECE0CAEBDFCBF1E4D2EDE1CDEEE4D0EDE2D2EBE5D4EBE3CFEFE3
+      D3EFE4D2F1E6D2F1E5D2F1E3D4F1E4D0F0E5D2EEE5D4F0E5D4F0E6D30000FFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1EDF5DBECF7D8EAF7D5E8F6CDE4F4D1
+      E5F5CCE2F3D0E6FEE1ECFFE5EEFFCAE1F2CAE0F1CFE2F2CDE2F3CBE0F0CADDED
+      D2EAF9D0D7FF6A876F178100077C00559D3FD9E6FFC7DDF2C5DAECBED6EAC3D9
+      ECD2E1F0D0DDEEC3D6EAD9ECFBDADBFF838C972A770C1C8900147D002A860065
+      A74FA5C990C3D8B0ADCB929BAE898B8B8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFF
+      9999991D600A32A4112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F298F0C1B8A
+      009FB3997D7C7E969696BDBDBDE1E1E15C5E5C28850E2E9A102B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F208C0236951AA3A6A27E7F7F9F9FA0C7C7C8E8E8E9
+      FAFAFBFEFFFFFEFFFFFEFFFFA2A2A21C5C0A32A6112B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2A8F0D14870099B6927E7C80919191B8B8B89E9F9F1D510E32
+      A7112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2A8F0E13870096B38E807D81
+      909090B6B6B6DBDBDCF3F3F4FCFCFDFDFDFEFDFDFEFDFDFEB4B4B41C471131A5
+      112A8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F0F11820068AB58C7
+      C7C7B8B8B8D7D7D7F1F1F1FBFBFBE0E1E059874F31A3112E98102A8E0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F238C042F9113AFB6AE7E7E7F9E9E
+      9FC6C6C7D8D8D83F4C3C2D98102D930F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C
+      8F0F11860078AD69898488888785ABAAA6D0CEC9E6E5DEEEEDE6EEEBE4ECEAE3
+      EAE8E0E6E5DDE0DED9CED1D4BCC2CDAFB8C7AAB6C4BCC3CBCCD0CFD2D3CFD6D5
+      CFD7D5CFD9D7CDDAD8CDAAA99E1B311330A2112C920F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2C8F0E10810062A951C1C2BAB4B1A7C6C2B3DCD6C6E3DDCC
+      E5E0CEE5E0CF89927B338D1831A3112A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2A8D0F2D980F259A045A6F506A656276746B8F8C83484841267F0E2F9B112B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F208C0237951C9FA098727068908B82
+      B3AEA2D0CCBBE0DCC8E4DFCCE4DECEE5DFCEE5DFCFE4DFCE52504B23740C32A6
+      122A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2E90101484002D8F1398
+      BC8CC7C9BED3D1C7DCD9CCE2DFD0E4E0D2E4E0CFE5E0D0E7E4D5E2E4D1BCD4AD
+      E7EADDE2DFD1E0DDD0E2E0D2E5E2D2E6E3D2E6E3D2E6E3D2E6E3D4E6E2D5E5E1
+      D3E5E2D4E6E4D6E6E4D6E5E4D5E5E4D8E7E4D9E7E4D7E7E4D7E6E3D8E7E4D8E8
+      E4D8E7E4D8E7E4D8E6E4D8E5E4D8E6E4D7E6E4D6E7E4D7E7E4D8E6E4D7E5E4D6
+      E6E4D7E6E4D7E6E4D7E5E4D7E6E4D8E6E4D7E6E4D8E7E4D8E7E4D7E7E4D8E6E4
+      D7E6E4D7E5E3D6E6E4D6E6E4D7E6E4D8E6E4D7E6E4D5E6E4D5E6E4D7E7E4D7E6
+      E4D7E6E4D6E6E4D7E5E4D7E5E4D6E6E4D6E6E3D3E7E4D2E6E4D6E7E4D5E8E4D4
+      E8E4D4E7E3D3E7E3D4E8E3D5E8E4D4E7E4D3E8E4D3E7E4D2E7E3D3E8E4D3E8E4
+      D3E8E4D3E8E4D3E8E4D3E9E4D5E7E4D5E6E5D7E8E5D8E7E6DAE8E6DBEAE7DCEA
+      E9DFEBEAE2EBEAE3EBECE4EDEDE6EDEDE6EDECE4ECEAE3EAE9E1EAE9E0EBE9E1
+      EAEADFEBEAE0EAE9E0E9E8DFEAE9DFEBEAE1EBEAE1EBEAE1EAE9E0EAE9E1E8E7
+      DFE8E7DFE9E8DFE9E9DFEAE9E2EAE9E1EBE9E1EBE9E3EBEAE4EBEAE4E9E9E0E9
+      E9DEE9E8DEE9E8DEE9E8DFE9E8DFE9E8DFE9E8DEEAE7DDE8E6DCE8E7DCE9E7DB
+      E9E6DBE9E5DAE8E5D9E8E4D9E8E4D9E9E5D9E6E5D9E6E4D8E8E4D9E8E6DAE8E5
+      DAE9E5D9EAE5DAE9E5DAE7E6DAE7E4D9E8E4D9E8E5D8E8E5D8E8E5D8E9E5DAE9
+      E5D9E8E5D8E8E5D9E8E4D8E7E3D6E9E3D6E9E3D6E8E2D5E8E2D5E7E2D5E8E3D6
+      E9E3D5E7E3D6E5E3D5E7E3D5E9E3D5E7E3D5E8E3D6E8E3D6E7E2D4E8E3D5E7E2
+      D4E7E1D4E6E1D4E6E1D4E6E2D2E6E1D2E6E0D3E5DFD2E5E0D2E5E1CFE5E1D0E5
+      E0D2E6E0D2E7E0D3E6E1D4E5DFD3E5DFD3E6E0D4E5E1D3E5E0D3E5DFD0E5E0D3
+      E5E0D0E5E1D2E5DFD2E5DFD2E5E0D2E5E0CFE5E0D0E6E0D2E6E0D0E5E0D0E7DF
+      D2E7E0D3E5E1CFE5E2CFE5E0D0E6E1D2E6E1D3E7E2D3E6E1D2E5E0D0E6E0D3E6
+      DFD3E5DFD3E6E0D0E5E0D0E5E0CEE7DFCFE6DECFE6DECFE7DFD0E5DECDE5DECC
+      E5DECEE5DECEE5DECEE5DECEE5DECEE5DDCDE5DDCCE5DCCCE4DCCBE5DCCBE5DB
+      CBE5DCCBE5DDCAE3DDCAE3DCCBE5DCCBE6DDCBE5DDCBE5DCCAE4DCCAE5DDCFE7
+      DFD2C4C0A986806F4048302B2725594A54CFBBB28A885F413E29A1898ED3BEA8
+      C9B8957E776EF8F8FBEAECE4EDEFE7E7E5CACEC1A3D6C2A5DCC2A9CDBAA0D0BA
+      A7D8BEAAD1BEA6D9C7ACB7A388C0B08B445130203A2716292F3C4B4B404F5864
+      7D9CA3B7D4C6C6CAD1C1ACDAC5AFDCCDB3D4C8B1DDCBB6E1CEB1DDCBB5D9CCAF
+      DCC9B3DACAB2D8C8B0DAC7ACDCC8B1EAD2BCD1C39B3C43293238292A30242128
+      241F2622222C211E2F222831282E3736313531293725262F253A3F43E2DAF1FF
+      FEF58D956336472E31442D2E3A2918211F151D1B16251D1B251A1A21211D2C25
+      243127212F2A1B2C29202B30A5AFB75F74541B2D1439493D4D61508E9B87CCD1
+      BEF7F8E86168549DA6AAFDFEFCE5E9DFEBE7E4E7E9DCEBEAE2EBE7E7E9EADDEB
+      E8E3E5E8E1E7ECE9EFEDE9EAECE6E9EAE9DADBDA93A495B3C4B9697464BECFDE
+      F0F8FBFAFDFDE0E9E3FFFFFFF1F5F6EAF4F5FFFFFFFFFDFEFFFEFFFCFFFFFBFD
+      FFF6F7F8F1F7F8F2F8FCF6F7F9FDFFFFBFCCCCFDFFFFF1F5F4EEF4F3F6F9FAEE
+      F7F6F6F8F43C4640BCCDDBF6FAFFEEF2F2E5E7E9DBD8D8C6C6C6EEEEEBCDCBBC
+      D7D4C3F2F2E4FEFDF1FFFFFBF2F1EBEFE7E3DCD5CFCEBDB1CBB7A5A19A78454A
+      39606058BDB6A7D4BEA5D0C2A9D2C0ABD2BEA9877F6BD3CAB8D2CEC5FFFFFFFD
+      FFFDFDFEFDFCFDFDFFFEFDFEFFFDFEFEFAFFFFFFDCE3D4BABDA9F2F5E6F0EDE0
+      DDD4C4CABBA9CDC4ACD6C9B1D9C8B2D6C4ABD5C2A8D9C5A9DBC7A9DDC8AEE0C9
+      B2E0CAAEE3C9B3E3C9B2E1CEB1E0CDB1E3CEB1E3D0B4E0CCB2E4D0B5E4CCB0E6
+      CFB4E4CDB6E0CAAFE1D1B7E4D2B8E2CEB3E5D1B6E4D5B9E5D2BAE5D6BEE8D6BD
+      E8D4BDE9D8C1E9DCC3E6DEC3E9DDC7E8DFC6EBDDC9EDDDCAE8D8C6EADBC7E8DE
+      C6E8E1C6EBE0CBEBE1CCEBE1CBF0E2CEEDE1CEF0E4CFEEE4D4EFE6D4F0E4D3EF
+      E4D3EFE4D4EFE4D3ECE4CEEFE7D0EEE4D3F0E7D6F0E5D5EFE5D3F1E6D5F1E6D6
+      0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3EEF5D6E8F6D4E7F5D1E7F6
+      D0E5F4D8E9F5D5E7F6C3DCF0C5DCEFD1E3F3CBE1F2CBE0F1CFE2F2D3E6F4CFE4
+      F3DAF0FDD8E2FF8994A2267C01258A002283003A8D15C1D7EBD6E6FDCADEEEB8
+      D4E9BAD6EACFE0EFCADBEDD7E9FAD2D3FF788789237A001B88001279004B992C
+      B7D4AAE1EBD7C5D9B1B3CF9DBED7AFA0B2928B8B8BB0B0B0DBDBDBF5F5F5FFFF
+      FFFFFFFFCACACA264B1B31A5112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F12870082AF758783888D8D8DB2B2B2D9D9D98F8F8F1E650A31A4112B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F288E0B1B8A00A0B39B7D7B7E959596BCBC
+      BDE0E0E1F6F6F7FDFDFEFEFFFFFEFFFFD1D2D2284A1E31A4112B900F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2C8F1012870075AC668C888D89898AADADADBBBBBC
+      30482A309E112C920F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F101487006EA9
+      5E8E8A90878787A9A9A9CFD0D0ECEDEDFAFAFBFDFDFEFDFDFEFDFDFEA9A9A91E
+      530F31A3112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2089032C8F14
+      C5C8C4989898B5B5B5DBDBDBF3F3F3FCFCFCFDFDFDF7F7F75E7A5631A2112D97
+      102B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F278D0A218C02A9B9A47D
+      7B7E969697BDBDBEE0E0E169696A267D0D2F9D112B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F1B8A004C9D349B999A82817F9E9C99BDBCB8D1CFCAD7D6D0D7D5
+      CED5D5CED5D5CDD5D2CAD2D0CBCFCFCACACCC8C8C9C9C8C9C8CCCCCAD2D1CCD3
+      D2CCD3D2CDD6D5CCD9D5CEDAD7CE7E7D751A570932A8112A8E0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F1786023B9625CCCAC8939086B0AB9ECFCABAE1DB
+      CCE5E0D2E5E0D2E5DFD0E5E0D09494852C831231A4112A8D0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8E102694082593077A7F746B6762807D7463615A1C5E0A
+      32A5122B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F288E0B1D8A009DAF94716D
+      68848178A7A396C8C4B5DDD7C7E3DDCDE5E0CFE5DFCEE5E0D0CCC7BA2C39252E
+      98102D94102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F1019860331921A
+      C3CDBCABA8A2BAB6ACD5D2C3E3DFD1E4E0D2E5E1D3E6E2D3E6E2D2E6E2D2E7E3
+      D4E6E3D5E6E3D5E5E3D4E6E3D4E6E3D4E6E2D3E7E2D4E6E2D4E6E2D3E6E3D2E6
+      E2D5E7E1D5E6E1D4E5E3D5E5E4D6E6E3D5E7E4D6E7E4D7E6E3D8E6E4D6E6E4D7
+      E6E4D7E6E4D7E5E4D6E5E4D7E5E4D7E5E4D7E5E4D7E6E4D6E8E4D7E6E4D7E5E4
+      D7E5E4D6E5E4D7E6E4D7E5E4D7E5E4D6E6E4D7E6E4D9E4E4D7E5E4D7E8E3D7E7
+      E4D7E7E4D8E6E4D7E6E4D6E6E4D7E6E4D7E6E4D8E5E4D7E5E3D2E6E4D4E6E4D6
+      E5E3D5E5E3D4E5E3D5E5E3D4E6E2D5E7E2D5E6E4D2E6E4D2E6E4D3E8E2D4E8E2
+      D4E7E3D3E7E3D3E7E3D3E8E4D4E8E5D4E8E4D3E7E4D2E7E4D2E7E4D3E7E3D3E8
+      E4D5E9E4D5E8E4D4E8E4D4E8E4D5E8E4D4E8E5D7EAE6DBE9E6DAE9E6DBE9E7DB
+      E9E7DBEBE9DFEBEAE3ECECE4ECECE4EDEDE7ECECE4EBEAE3ECEBE3EBEAE2EAE9
+      E2EBEAE2EBEAE0EAE9E1EAE7E2EAE9DFEBEAE2EBEAE3EBEAE3EBEAE3EAE9E2EA
+      E9E0EAE9DEE9E8DDE9E8DFE9E7E1EAE9E2EBEAE3EBEAE3EBEAE3EBEBE4ECECE4
+      EBEAE3EBEAE3EBE9E1EBE9E1EBEAE2EBE9E3EBE9E2EBE9E1EAE9DFE9E9DEE9E8
+      DDEAE7DCEAE7DCE9E7DCE9E7DBE8E7DBE9E6DBE9E7DBE8E6DAE8E6DAEAE5DAE9
+      E5DAE9E5DAEAE7DAEBE6DBEAE5DBE8E6DAE8E6DAE7E6DAEAE6DAEAE5DAEAE6DA
+      EBE7DBEAE6DAE9E5D9E8E5D8E7E4D7E7E4D7E9E4D7E9E4D7E8E3D6E8E3D6E8E2
+      D5E8E3D6E8E3D5E7E3D5E8E2D6E8E3D6E8E3D6E8E3D6E8E3D7E8E3D7E8E3D5E7
+      E3D3E7E2D3E7E2D5E6E1D4E6E1D4E5E0D4E6E0D2E6E1D0E6E1D0E6E0D2E5DFD2
+      E5E0CDE5DFCFE5DFD2E5E0CEE5E0D0E5DFD0E5DED0E5E0D2E6E1CFE5E0CEE5DF
+      CEE5E0CFE5DFD0E5DFD3E5E0CFE5E0CFE6E1D0E5E0CEE5E1CFE6E0D0E7DED2E5
+      DFD2E5DFD2E5E0D2E6E1D2E5E0CFE5DFD2E6E0D3E7E1D5E6E0D5E6DFD3E6E0D4
+      E6E1D2E6E1D2E6E0D4E6E0D4E6E0D3E6E1D0E6E0D2E5DFD3E5E0D3E6E0D3E5DF
+      D3E5DFD2E5DFD3E5DFD2E5DFD2E5DFD2E5DED0E5DFD2E5DFD2E5DECFE5DECCE5
+      DDCBE5DDCCE5DDCBE5DDCBE4DDCBE5DECBE5DDCCE5DCCBE5DDCAE5DDCBE6DCCC
+      E6DDCCE7DECDCAC3A97C7A6046492F201B16413145C6B9B2726853B4A585594D
+      42CBB8AACBBB9379736CFDF7FFEDEEE4ECEFE4EBE9D4D1C4A6D8C2A9D2BEA6CC
+      B89BD4C0A8D5C4A7DDC6AEC2B095B4A5856F6F443241302636323A49443A4642
+      2F42422F41483A4655DCC9CEEDD7CADCC9B6DAC5AFDCCAB5DDCDB7DCCAB5DECB
+      BADBC9B1D9C8B5D8C9B2D6C6ABE3CEB4DECEB3B7A98D74735623271B19221C1A
+      211E1A231F20241E19241F1C231D252923222C2727302D2E3A2E313B33313B37
+      58627EE5E6EAA3AB81424E394C5548303D2D1823231926211524211E2A241B2A
+      2A15212110201723342847594C4A564A8D98A0C2CDC4B3C1AAE0E4D6F2F8EAFF
+      FFF6FBF9F0FAFBEE61694F8E919DF1EEF1E8EBE3EDEDE3EEEEE4F7F5EFF2F3E9
+      E2E3DAD0D6D0DDE0DEDAE2DED3DCD8D3DADAC1CECABBC7C4DCE4DA9EA8966370
+      6CF6FBFFFAFFFDFFFFFFE8ECECFAFDFEECF2F1E0E9EFFAFDFEF7FDFDF8FDFCF3
+      F7F6F3FBFBFAFEFDFAFFFDFBFFFEFBFEFED9E4E397AAA9F1FAFCF9FDFDF1FAFA
+      DCE4EBCFDAE1F6F7F4454C3A99A1B3C2BCBABDAFA5C4B7A0CAB8A5BFB4A5F6F3
+      F3F9F7F2FBFAF2F0EDE3E0D7CBCCC3BDC5BBAAC9BAA5CBBDA7D4BAA5D5BEA8B0
+      A17A3F423266615ABBB3A7DAC2AAD0BEA9D1BBA9D0BEA586806DD0C6BCD9CECB
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF7FAE8ECEBE7E0D4E9DFCDCAB9
+      A6C5B49CCBBA9FD9C5A9D8C2A9D8C4ABD6C1A7D6C4A9DBC2ABDCC5A7D8C6AADB
+      C8ACD9C6ABDCC7AFDCC9AEDEC9ACE0CAB0DCC9AFE0CBAFDCCAAEDDCCB0DECDB1
+      DCCCACE0CBAFD9CFB4E0CAB8E1D1B2E1D1B7E7D0B3E4D1BAE4D1B9E6D5B7E5D3
+      BCE3D4BDE4D6BDE5D7C2E8D8C6EADBC8E8DCC7E8DAC4EBDDCAE9DDC6E9DDC7E8
+      DFC9E8DFC6E9DFC9EBE0CDEBE1CCF1E3CFEAE1CBEBE2CDEFE4D2EDE4D3EFE4D3
+      F2E4D5EFE1D0EFE6D5EFE4D4EDE3D3EFE3D3F0E3D2F0E3D4ECE4D4F0E5D4F1E6
+      D5EDE7D50000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDCEAF5D7E9F6D0E6
+      F5CEE4F3D3E7F5CCE3F4CAE0F3CBE1F3CBE3F3C9E2F2CBE2F3C9DFF1D6E7F4D7
+      E9F7DAF2FFE0ECFF969CB52B780C2089002686002A8800187C0097BFA1E6EEFF
+      C6DBEDC4DAEDC4DBEDC0D8EBD8EDFCD7D8FF748486217B001A8700137A0066A8
+      49DAE8D1DAE6D2B3CF9AACCA90BAD4A9C3DBB9A8B7A08B8B8BB0B0B0DBDBDBF5
+      F5F5FFFFFFFFFFFFF4F4F44550422D96102C940F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F18890054A03F989699858585A6A6A6CFCFCFBEBEBE244C1931A5
+      112B900F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F11860083B0778682888C
+      8C8CB0B0B0D7D7D7F2F2F2FDFDFDFEFEFFFEFEFFF8F8F94B53492C910F2D9510
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1D8A00469B2D9D9C9D818182A1A1
+      A2C9CACA54565429880F2E99102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1F
+      8B013F9924A0A1A17D7D7D9B9B9BC0C0C1E2E2E3F5F5F6FCFCFDFDFDFEFDFDFE
+      ADADAE1E520F31A2112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1183
+      0063AB4EB4AFB58A8A8AAFAFAFD5D5D6F0F0F1FBFBFCFDFDFDFDFDFDDDDDDD3B
+      623032A7122B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2A8F0E148600
+      94B78B827F838F8F90B4B4B5DAD9DB9E9E9E1C590A32A7112B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F258D07278E09A4ADA17B79788F8E8CA4A3A0B0AEAAB2
+      B2AEB2B0ABB2AFAAB1B0A9B2B1ABB3B2ACB3B2ADB2B1ADB3B3B0B5B4B2BABAB6
+      BFBFBAC8C5C2CCC9C4D1CEC6D7D4CADAD7CB63625C216D0B31A3112B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2A8F0E0D81008FBE809B93958A867CAEAA9ECE
+      C8B9DFD9C9E5DFCEE5DFCEE5DFCEE5DECEE5DFCE6B6D5F2B900F2F9C102B8E0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8E10198F00549A3F7E797975726A7977
+      6E20441432A6112B900F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F11860081
+      AD747B75757B786F9B978ABDB9A9D6CFBEE0DBCAE4DDCDE4DECDE5DFCEB7B3A5
+      23411730A1112C900F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F298E0D1182
+      00A2BE979C9A939A978DBEBAACD8D3C2E3DECDE5E0CFE5E0CFE5E1D0E5E0CFE5
+      E1D0E5E1D0E5E1CFE5E1CFE6E1CFE7E2D0E7E2D0E6E1D0E5E0D2E6E1D3E6E1D2
+      E6E2D0E7E2D3E6E2D5E5E1D3E5E1D3E6E2D4E7E2D5E7E1D4E6E2D4E5E3D4E6E3
+      D6E6E3D6E5E2D5E6E3D5E6E3D6E6E3D5E6E3D5E6E3D5E7E3D6E6E3D6E5E4D6E5
+      E3D6E6E4D6E7E4D7E5E4D6E6E4D6E6E4D6E6E4D6E7E4D8E7E3D7E5E4D6E5E4D7
+      E7E4D7E7E4D7E6E4D7E6E4D7E6E3D8E6E4D6E5E3D4E5E3D5E5E2D6E5E1D4E5E2
+      D2E7E3D3E6E2D3E6E2D0E7E3D2E6E2D0E5E1D0E5E1D0E6E2D2E7E3D2E8E3D3E7
+      E4D2E7E4D2E6E2D0E6E3D2E7E3D3E7E3D3E8E4D3E7E4D2E7E4D2E7E4D2E7E4D3
+      E8E4D4E8E4D4E7E3D3E7E3D3E8E4D4E8E4D3E8E4D4E9E6DAEAE7DAE9E5D8E9E5
+      D9E9E6DAE8E8DCEBEAE2EDEDE7EDEDE6ECECE4ECECE4EBEBE4ECECE4EBEBE3EB
+      EADFEBE9DFEBEAE0EBE9E0E9E7DCEAE8DEEBEAE1ECEBE4EBEBE4EBEBE4ECEBE4
+      EBEAE4EBEAE1EBEADFEAE9DEEBE9E0EBE9E3EBEBE4ECECE4EDEDE6EDEDE7EEED
+      E7EDEDE6EDEDE6EEEDE6EDECE6EBEAE4EBEAE3EBE9E3EBE9E2EBEAE2EBEBE1EB
+      EAE1EAE9E0EAE9DFEAE9DFE9E8DEE9E8DDEAE9DEE9E9DFE9E8DEE9E7DDE9E6DB
+      EBE7DBEAE6DAEAE5DAEBE7DBEBE7DAE9E5DAE8E6DAE9E7DBEAE7DCEBE7DBEBE6
+      DAEAE6DAEAE5DAE9E5DAE9E5DAE8E4D9E8E4D9E8E5D9E8E5D8E8E5D7E7E4D7E8
+      E4D7E8E4D6E8E4D6E8E3D6E7E2D5E8E3D6E8E4D6E7E3D6E7E3D6E8E3D7E8E3D6
+      E9E4D7E9E4D8E8E3D7E8E3D6E8E3D6E8E3D6E6E1D4E6E1D4E7E2D5E5E0D3E6E1
+      D3E6E0D3E5DFD2E5DFD3E6E0D3E5E0CEE5DFCEE5E0CFE5DFCEE5DFCDE5E0CFE5
+      E0CFE5E0CFE5E0CFE5DFCFE5DED0E5E0CEE5E0D0E6E1D0E5DFCEE5DFCFE5DECE
+      E5DFCEE5DECEE5DECEE5DFCEE6E1CFE6E1CFE5E0CFE5E0CFE8E4D5E6E0D2E5DF
+      D2E5DFD0E5E0CEE5E0CFE5E0D0E5DFD2E5E0CFE6E1D0E5E0D3E6E0D3E6E0D3E5
+      E0D2E5E0D2E5DFD2E5DFD2E5DFD2E6E0D3E5E0D3E5DFD2E5E0D3E5E0D2E5E0CE
+      E5DFCFE5DFD0E6DFD0E5DECFE5DECEE6DECEE5DECEE5DECDE5DECBE4DDCBE5DD
+      CCE7DECDE6DDCCE6DECDCDC5AC7E7D624A4F3E1E171638232EA38F8F927D7FDB
+      C9AA6E613ECAB2AED2BE98736F64FFFDFFEBEEE4EEF0E4EEEDD5D3C5A8D0BDA6
+      B7A68BD6C2A7DEC6AFE0C7B3C6B398AC9B7FE0CEB5788357172416202D2C2334
+      30293D39213130162B2D222F34584B5F9A8896DACACAEFD7CAE4CFB9D8C6AFD9
+      C7B0DDC8B0DAC7AAE5D1BAF7E2D0FDE6D7E6D0C4B0AB9C67665831352A151D16
+      151B1A121E1A201F1C1E201B18231D1B24221C24231B25221D2B242031302737
+      3239413520272FBDC3CAADB8964B54394F5B4435473316241F203025374A3D46
+      5942738272C1CBBAEBEFDFFFFFFBFFFFFDF3F7DE7D8189F1F3F8E8E8E1EBE9E3
+      E8E9E0ECE8E4E5E8DFF8F7E769755B74838DF3F4F6E7EDE4E5E5DDCAD2D2A5B2
+      B997A3A4B1C4C9F1F7F8F9FAFAF7F9F9F6FBFAFDFDFDFFFFFFFFFFFFFFFFFAA8
+      B49872786FE0EAF9F7FBFFF2F7F6B7C5C8F3F8FAF6F7F8F1F7F6F9FDFEF3F9F9
+      F3FBF9F7FAFAFBFFFDF8FEFDEFF3F5EEF4F4F0F7F8FDFEFFB5BABCE6EAEAC3C7
+      C9CCC8C5D1C6B9CEBDB3D0C4B6585C4586807DD5C3AFD9C1ABD3BDA5D0BBA6BE
+      AFA5D8D6D6C4BBAAC9B69DC5B49BD0BAA0D3BCA4D3BDA7D2BEA6D0BAA0D3BCA4
+      D3BEA8B0A27E40422A828276B8AC9CD0C2AAD2C3ACD1C5B0C3BCA8676E68BFBE
+      B7A2A4A0FCFBFCFBF9F9F2F0EFE1DEDADDD7CFD3CABFD5C2B2CFBEB0CFBDA9D3
+      BDA5D5C1A5D7C2A7D6C1A7D7C2A7D9C4A9DAC4A9D8C4A7D9C3A9DBC3AAD7C4A7
+      DAC5AEDDC5AEDAC5ABDAC7ABD9C9ABD9C6ABDCC8AFDDCAB0E0CBAEDECBB0DBCB
+      B2E0CAB2E0CCB2D9CAAFE0CCB3E0CFB2E0CCAFE5CCB4E5D1B4E3D1B5E5D0B9E5
+      D1B9E5D1B7E5D7BDE6D4BCE6D3BAE6D4C0E5D4BEE9D9C3EADFC5EADBCBECDFC9
+      E9DCC5EBDBC8EADDCAEDE0CAE9E0C9EBE2CDECDFCEEDE1CCEFE0CBECE1CDEEE2
+      CCEFE3D0EEE1CFF2E7D7EDE1CEF0E2D0EFE3CDECDFCDEEE2CEEFE1CFEDE4D0EE
+      E4D4ECE4D0F1E4D20000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDCEBF5D2
+      E7F5CCE3F3CFE5F4D1E7F7CDE4F5CDE4F4CCE6F5C7E2F3CCE4F3CAE1F2CDE2F1
+      D5E7F5E2F7FFE3ECFF939AB42D7710208A001E8100318708358B0C117A006BA9
+      60DDE9FFCADFF1C7DDEFBDD6E9C7E2F4CFD9FF79888F227B001B87001379006C
+      A948DEE8D3CFE1C6AECC94ACCA8FB9D3A8BED8B1BED7B1A9B8A38B8B8BB0B0B0
+      DBDBDBF5F5F5FFFFFFFFFFFFFFFFFF747474257A0D309E112B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F248D052B8F0DA3AAA17D7C7D9C9C9CC4C4C4DBDBDB42
+      4E3F2D96102C94102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F19890055A040
+      989599838384A2A2A2C9C9C9E8E8E8F9F9F9FDFDFEFEFEFFFEFEFF7F7F802272
+      0C31A2112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F288E0A218C04A4B1A07D
+      7B7D979798BFBFC08383831E650B31A4112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F298F0C1F8C029BAB977977798D8D8EAFAFB0D3D3D4EDEDEEFAFAFBFDFD
+      FEFEFEFFC3C3C4244C1931A4112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F1586005DA849A29FA4848484A3A3A3C9C9CAE8E8E9F7F7F8FCFCFDFDFDFE
+      FDFDFE99999922700C31A4112B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F12860073AC628D888F878788AAAAABD1D1D2C6C6C72A482131A2112B900F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F13860098B88F7D7A7D7E7D7C898886
+      8C8A888B8A878988858A89848D8B868C8C868F8E87908E888F8E8992908C9694
+      909B9B96A3A39DACA9A3B7B5ACC1BFB5CBC8BCD2CEC25C5A5423770D309F112B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2A8F0E1585009FC194817B78858176
+      A9A496C9C3B4DED7C7E4DDCCE5DECDE5DECEE5DECDE5DECDC9C3B4304C2432A5
+      112B900F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F288E0B1D8D0091A1896F
+      6C648682782F38282D95102C95102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      1A8A00509D398E8A89726F658D8A7DAFAB9ACCC7B5DCD5C4E3DDCBE5DECDE5E0
+      CDB5B1A22346182F9F112C910F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F20
+      8A02339316BBBFB77A786F959285BAB5A6D4CEBDE2DCCAE4DECCE5DFCDE6E1CF
+      E5E0CEE5DFCDE5DECCE5DFCCE6E0CDE5E0CDE5E0CDE5E0CDE5DFCCE5E0CCE5E1
+      CCE6E1CEE5E1D0E5E1CFE5E1CEE5E1CFE6E1D0E7E1D0E6E2D0E6E2D0E6E2D0E5
+      E1D0E6E1D4E6E1D4E6E1D2E7E2D4E7E2D4E6E1D4E6E1D4E6E1D4E7E1D3E6E3D4
+      E6E4D5E5E3D4E5E3D4E5E3D4E5E2D3E5E3D3E7E4D5E6E3D5E6E4D6E6E3D7E6E3
+      D5E6E4D6E5E4D7E5E4D7E6E4D7E5E3D6E6E3D8E5E3D6E5E3D3E6E3D3E6E1D3E7
+      E1D5E7E3D4E7E3D3E6E2D2E5E3D0E7E4D2E6E3D0E5E1CEE5E1CFE7E3D2E8E2D3
+      E8E3D2E7E4D0E8E4D0E8E2D2E7E2CFE8E3D0E8E3D3E8E3D2E8E3D2E8E4D3E8E4
+      D3E9E5D4E9E4D5EAE5D6EAE5D6E9E4D5E9E4D5E9E4D4EAE6D6EBE7DAE9E6D8EA
+      E4D6EAE7D9EBE8DCE9E8DFEBEAE3EBEBE4ECECE4EBEBE4EBEBE4EBEAE3EBEBE3
+      EAE9DFEAE7DDEBE7DDEBE7DEEBE7E0EAE7DDEBE7DCEAE9DEEBE9E2EAE9E1EBE9
+      E1EBEAE3EBEAE2EAEAE1EAE9DFEAEADFEBEAE0EBEAE2EAE9E2EBEAE4EDECE8EF
+      EEEAEEEDE8ECECE4EDEDE6EBECE4EBEBE4EBEBE4EBEBE4ECEBE3EBEAE3EBE9E3
+      EBE9E3EBEAE3EBEBE3EBEBE2EBEBE0EAEADFEAE9DFEAE9DFE9E9DFE8E8DFEAE7
+      DDEBE6DCEBE7DBEBE7DBEBE7DBEAE6DCEAE6DAE8E6D9E8E6DAE9E7DBE9E7DBEA
+      E6DBEAE6DAEAE6DAE9E5D9E9E5DAE9E5DAEAE6DAE9E5DAE9E4DAE8E5D8E8E6D8
+      E9E6D8E9E6D9E7E5D8E7E4D7E8E4D8E9E3D7E8E3D4E8E4D5E7E4D6E7E4D7E8E4
+      D7E8E3D6E9E3D8EAE4DAE9E4D8E8E3D6E8E3D6E8E3D6E8E3D6E7E2D5E7E2D5E6
+      E1D4E6E2D3E6E1D4E6E1D5E6E1D5E7E1D3E6E1D0E5E0CFE6E1D0E6E1CFE5E0CF
+      E6E1D0E6E1D0E6E1D0E7E0D0E6DED0E5DED0E5DFCEE5E0CFE5E0CFE5E0CEE6E0
+      D0E5E0D2E5E0CFE7DFCFE7DECEE5DFCEE5E0CEE5E0CEE5E0CFE5E0CFE8E4D5E7
+      E1D0E5DFCEE5DECDE6DFCDE6DECEE6DECEE6DECEE6DECEE5DECDE6DECFE7DFD2
+      E6DED0E6DECEE6DECEE6DECEE5DECFE5DED0E6DFD2E7E0D2E6DFD2E5DFD0E5DF
+      CEE6DECDE6DED0E6DFD2E5DFD2E5DFD2E6DFCFE7DECEE6DECEE6DECEE6DFCDE5
+      DDCDE5DDCCE5DECDE5DECDE6DECFD2CBB3818164404833211E1B2A2526413836
+      BBA5A2D3BDA594875BAF9C99DDCBAB706C5DFFFDFFEEEFEBEDF0E3EEECD6D2C7
+      A9B2AA8BCDBCA9D2C3A5A09A6F8C7C64AC9A95E4D0C4E6D1BEBBB385353B1D24
+      3021152318101D1A172524162221151D22171A2817191F3B3B477C7C85B7A9AE
+      DBC8C2D7C5B7DCC8B4DCC5B6C0AAA2695E5E3C362D212117191D19141816171E
+      1A131B17151E18141B17171717161F162024232227251D252519251F1D292420
+      2C3025302F303D392E383DB6BACFCCD4B53E4A27535D41394C3D6F8783BBC3B9
+      E8EBDAFAFCECFFFFF5FDFDF5F1F3EAEBEDE7EBEEE7E2E6CB7D8188F6F4F9EAE9
+      E3F1F0E7F1F4ECFAF3F2F6F5EEF6F4EB6D7E655B6E6DC9D1D593A6A39DADAC60
+      7C7A6180884A5F6ACBD6E3FDFFFFFFFFFFFFFEFEFFFEFEFDFFFEFCFFFEFDFDFD
+      F1FAF5ABBCA5767E71B7C7E3EEF7FDFAFDFDC9D6DEEBF3F9F8FBFBF6F9F9F1F8
+      F5FBFEFDF9FDFDF2FAFAF0F7FAF1F7F9F8FBFAFCF9FDE2DFDFC8C3BD9D9C96CB
+      C2B2CAB9A4CEB9A3D0B8A2D0BBA0D4C4AF5F634C817D77D2C2AFC4B39DC3AF99
+      C6B8A0CAC4AFCCC8BEC9BCA3D2BBA0D2BDA3D4BBA0D0BA9FD2BAA4D0BAA0D0BA
+      A2D0BBA2CFBAA2B0A07C3E402A808886B0A4A5B4AFA0A4AA9DA7ABA5BFC4B1F0
+      EDDFEFEFDFEAE2D3C1B6A8B8AA9AC1AF98CDB9A2D2C0A4D8C0A4D5C0A6D1C2A3
+      D3BDA4D0BDA3D6C0A5D2BBA0D2C0A3D3C0A7D0C0A9D4BEA2D6C2A5D7C2A8D8C1
+      A6D7C1A9D7C4A8D9C4A9D9C6A8D9C6AAD7C2A9D6C5AADCC7AAD9C3A8E1C7ACDD
+      C8ABDCC8ABD9C5ABDBC8AFE0CCB2DDCBAEE0CBAFE3CCB2E0CFB5E1CFB3E2D1B6
+      E5CFB5E9D4BCE7D2B8E8D1BAE7D2B9E3D1B7E4D3B8E6D3BAE6D6BCE5D9C2E6DA
+      C4E5DCC3EBDEC5EBDDC7ECDFC9EADFC8EBDFCCEBDFCAEBE1CBEDDECDE9DCCDEB
+      DDCBEDDECAEEE1CDEDE1CEECDECDEEE0CDEDDFCAEBE0CAEBDDC7EADDCAEADFCA
+      EBDFCAECE0CFEDE3D0F1E6D79769FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      DEEBF5CEE4F3CEE6F4D0E7F6D4E9F7D3E9F7CCE5F5C6E2F3C9E2F2CCE3F2C9E1
+      F2C6E0F1D6F0FEDEE7FF8F97AD2C770F1E89001079004C9C32A9C2CA3B891913
+      7D0049962DCCDFFDCDE2FAC0D7EBC5E0F3D9E4FF8893A42478001B8700137900
+      7BB460DCE7CEC2D8AFB0CD97B0CD95BCD6ABC6DCBEB9D3A7AFCC95A5B59B8B8B
+      8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFFFFFFFFAEAEAE1C550C32A7112B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2A8F0E14870099B5917F7D80929292B9B9B9
+      DEDEDE6E6E6E257A0D2F9F112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F258D
+      062B900FA1A79F7A797A939393B7B7B7D9D9DAF1F1F2FCFCFCFEFEFEFEFEFFB4
+      B4B41C520F32A6112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F0F148700
+      8EB283837F848E8F8FB5B5B6ACACAD224B1732A5112B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2C8F10178B00699D5B847F857F7F809B9B9CBDBDBEDCDCDDEF
+      EFF0F8F8F9FCFCFDEAEAEB3B4D352F9C112C920F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F218C0336951AA0A3A079797A949494B8B8B8D9D9DAEFEFF0F9F9
+      FAFCFCFDFDFDFEEFEFF03F4D3A309E102C930F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F1E8B00429A299E9D9E8080819E9E9FC7C7C8E1E1E24B524A2B8F0F
+      2D96102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F101F93035B934B635C634241
+      403B3B3A3B3A393A3A383E3E3C42424048474551504D585854605F5B6867636F
+      6E697574717B7A7683827D8C8A8396958DA3A197B1AEA2BFBCB06A6961206C0B
+      31A3112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F13860087B378817A
+      777E7B6F9E9A8BC2BAABD9D2C1E2DCCBE4DECCE5DFCDE5DFCDE5DECCE5DFCE6B
+      6961257A0D309E112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F10108700
+      72AB61817B78807C72504D4623770D309F102B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F288F0A218D04909B896C68627E7B6F9B978ABAB4A6D2CDB9E0D9C6E2
+      DECAE6E1CAC3BDAC28461D2F9F112C900F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F208A0239961EB3B6AD716F658C897DAEAA9CCBC6B6DDD7C6E3DECCE4DF
+      CDE5DFCEE5E0CEE5E0CEE5DFCDE6E0CCE5E1CDE5E0CEE6E0CFE5DFCEE5DFCDE5
+      E0CEE5E1CCE6E1CDE5DFCEE5E0CDE5E0CBE5E0CDE6E1CFE5E1CFE5E2CFE6E3D0
+      E5E2CFE5E1D0E6E2D2E6E2D2E6E2D0E6E2D2E6E2D0E6E2D2E6E2D2E6E2D2E5E1
+      CFE7E3D2E6E2D0E6E2D0E6E2D2E5E3D2E6E2D0E7E2D2E7E4D3E7E2D4E5E3D5E6
+      E4D6E7E2D6E7E4D6E5E3D5E5E4D6E6E3D5E6E4D7E5E4D7E5E3D6E7E2D6E7E3D5
+      E7E3D4E6E3D2E7E2D4E7E3D4E6E2D2E5E2D2E5E2D2E5E2CFE5E2CFE5E2CFE6E3
+      D0E7E4D0E7E3D2E7E3D0E7E3D3E8E3D3E8E3CFE9E4D2E9E4D5E9E4D4E9E4D3E9
+      E4D4E9E4D5E9E5D5E8E5D3E9E4D5EAE5D6EAE5D6EAE5D6EAE5D6EBE6D7EAE5D6
+      EAE4D4EAE4D5E9E6DAE9E8DEEBE8E0EAEBE2EBEBE2EBEAE1EAE8E0EAE8E0EAE8
+      E0E8E7DDE8E8DBEAE6DDE9E6DCE9E7DDE9E8DFE9E8DEEAE8DEE9E8E0EBE9E1EA
+      E8E0E9E8DEEBEAE0EAE9DFE8E8DEE8E8DEEAE8DEEAE9DEE8E8DDE8E7DFE9E7E1
+      EBE9E2EBECE2EBEBE3EBEBE4EAE9E1EAE8DFEAE9E0EBE9E4EAEAE1EBEBE1ECEB
+      E4ECEAE4EBEBE3EBEAE3EBEAE3E9E7E0EAE9DEEAE9DEE9E9DFEAE9DFE9E9DFE9
+      E8DEEBE6DDEBE5DCEAE5DAEAE6DAEAE6DBE8E6DCE8E5DCE8E5DBE8E6DAE9E7DB
+      E8E6DBEAE5DBEAE6DAE9E6D9E9E6DAE9E5DAE9E4DAEAE6DAE9E5DAE9E5DAE9E5
+      DAE8E5D8E7E5D7E8E4D9E8E4D9E7E4D8E9E4D7E9E4D7E8E3D6E8E4D5E8E3D6E8
+      E3D7E8E3D6E7E2D5E8E3D5E8E3D5E8E3D6E7E2D6E7E2D5E8E3D6E8E3D8E8E3D7
+      E7E2D5E6E1D5E8E3D6E7E2D6E7E3D4E7E2D3E7E2D6E7E2D5E7E2D3E7E1D3E7E2
+      D4E7E1D4E5E0D3E6E1CFE7E1D3E9E0D3E6E0D3E5E0D2E5E0CFE6E1D0E6E1D0E5
+      E0CFE6E1D0E6E1D0E6E1D0E6E1D0E6E1D0E6E1D0E6E1D0E5E0CFE6E1D0E5E0CF
+      E6E2D2E7DFCFE8E0D0E7DFD2E7DFCFE7DFCFE6DECEE6DECEE6DECEE6DECEE7DE
+      CEE7DECEE5DFCEE6DFCFE6DECDE5DECDE6DECEE6DECEE6DECEE7DFCFE6DECEE6
+      DECDE6DECDE5DECDE6DECEE5DECCE5DECCE6DECEE7DECEE8DECDE7DECDE6DECC
+      E8DECDE7DECCE6DDCBE6DDCCE6DDCCE7DECED7D0B986826545463013150E2621
+      21605154D5BBB0D0BCA2BEB38951483CE0CBC26E6A5AFBF4FFEFEEE9EBEFE3F2
+      F3DEC0B69AD7C3ACD7C1AAD7C8A69091593D45244F47415B5052998A8EEBD6C8
+      8A8569394533242B1C151F1A11181A0A120F0E15131521261C282E2A3E3E1929
+      2E2431353E42434A5350474943252F1B131B15111A14171E191E27241C26221A
+      22221823221A211F1921211D23221A252320201E1B2423182824172822152123
+      11221E2739302F3A342734332226348998B0FFFFFFE5EBD4B5BD9D9CA98DB1BC
+      B4F3F2F1ECEEE4EBEDE4EEEDE4EDEDE9ECEDE7EFEFE9F6F7F1E4E7D06B767AEF
+      F4F9D8DED9CBD2CAB8BDB5B3BAB9A2ACABD8DEDD8995786E7A84F8F8F981917E
+      758D7F3F534E99A8AB9AA29BCBD1CAFDFCFAFCFCFDFAFCFCF9FCFAFAFDFCF9FB
+      FBF8FDFDF1F7F1C4CDB8546354D2DAE6FCFEFBFAFDFAABB9B5DEE6EBF6FCFDFD
+      FEFFF8FFFFEEF2F6DAE5E7DBE2DFE7E2E0E8E4E4CAC8B8B3A899BEAEA2CABBA6
+      B0AD9BD2C8B2CEB79DCAB89DCDB8A2CBB99FCEC5B260664C78746FCDBEABD1C0
+      ACD6C9B5D3BEA8C9B79FCCC1A9CDBC9CD0BCA2D2BAA0D3BBA3D0BBA2CEBAA3CB
+      B899CCBAA0CAB89FD1B99DB5A6843C432D727977B3B4AEDEE0D6F1EEE2E1D8CC
+      D0C6B7C8B6A4C5B7A0C4B7A2CEBAA5D1BCA4D5BEA3D2BEA5D0BDA0D4BDA4D5BD
+      A2D7C1A5D3BDA5D8BDA9D4BEA4D2C3A5D3BA9DD4C0A4D0C0A9D0BCA5D2C4A7D3
+      C0A6D9C1A7D8BCA2D7C4A6D9C3A9DAC4A9D8C3A7D9C6A7DDC5A7D9C7A9D8C7AA
+      D8C8A9D9C7AAD9C7A9DCC9AEDBC7ACDEC7AFE0CCB3DECCB0DDCAAFE1CFB3DCCE
+      B5E3CFB6E3D0B5E5D1B7E1D0B3E5D3B8E2D1B6E5D2B9E5D1B8E5D3B7E5D3BEE8
+      D5BEE7D6C1E7D9C0E9DCC5E6DBC4E6DBC8EBDFCAECDEC9E8DDC9EDE0CDEBE0C9
+      EBDFCBEBDFCAE9DEC7EADEC9EBDDCBEADDCBEBDDC8EDDFC9EADEC4EDDFC7EBDC
+      C9E8DCC4E9DEC4ECE1C6EFE2CDF1E7D49769FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFDCEAF5D4E8F5D4E8F6D2E6F6CDE5F5C7E0F4C5E0F3C1E0F2C6E1F2CD
+      E5F4C8E1F3D1EDFFD0DCFF818F9C2978071B87000D7700499834CDE3F6D6DDFF
+      458D28127D00358B0BBDD5E2D3E2FFC9E0F1D5E4FF9BA0BD30790E1B88000F77
+      0073AE52E8EFE4D1E3CAB9D4A5B2CE97BFD8B1C5DCBEC2D9B6B7D1A2ACCA909B
+      AF8A8B8B8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFFFFFFFFDDDDDD2F4A2730A011
+      2C910F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F1013860074AB648D898E8A8A
+      8AAEAEAED6D6D69E9E9E1B590A32A6112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F168A0081A2787D797F858585A2A2A2C5C5C6E2E2E3F4F4F4FCFCFC
+      FDFDFEE1E1E2344C2E309E112B900F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F14870063A551949095888989AAAAABC7C7C83C4B382D98102C930F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F258F08258F09868C84757375888889A3A3A4
+      C1C1C2DADADBE9E9EAF1F1F2F5F5F66C6C6C267F0D2F9D112B8E0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2A8F0D1A8C00869E7F79757A858585A1A1A1C2C2C3DF
+      DFE0F0F0F1F8F8F9FBFBFCFCFCFD878787216F0B31A2112B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F278E09208C03A1AF9E7B797B959596BCBCBDDEDEDE7979
+      7922710C30A1112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2E9610277F0E1F
+      56121D610A206B0B21700C21700C206B0B20630C1F5F0E1F521020481424401B
+      28342331352E403F3D4F4E4B5E5D586B696476746E828078908E84A19E937573
+      6A1B580932A6112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1689005E
+      A34B8D86867572668F8C7EB1AD9DCEC9B6DDD8C4E3DEC9E4DECAE5DECBE5DEC9
+      E5DECCA7A3961E4D1032A7112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F1B8900449C2C9D9C967E7A6E7571661C540B32A7112B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2C8F10198C005D954B797272706C62878377A29E8FBEB9A7
+      CFCDB8D9D6C1DFD9C5D8D4BF3C46312D97102C940F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F288E0B218D049BA9946E69637F7C719C988DBAB5A6D1CDBBDD
+      D8C7E2DDCBE4DECBE4DFCCE6E1CFE6E1CEE5E0CEE4E1CEE5E0CEE7E1CFE6E1CF
+      E5E0CEE6E1CFE7E3CFE7E3CDE6E1CDE6E1CFE5E0CFE5E0CEE5E0CEE5E0CDE5E0
+      CFE5E2D0E5E2D0E6E2D2E6E2D2E6E2D2E6E2D2E6E2D2E6E2D0E7E3D2E7E3D2E6
+      E2D2E5E1D2E6E2D3E6E2D3E6E2D3E7E3D4E5E4D4E7E2D5E6E2D5E5E3D4E7E3D5
+      E7E4D7E6E4D6E5E3D7E6E4D6E7E4D6E7E4D6E6E4D6E6E4D6E6E3D6E5E3D6E6E4
+      D7E8E4D8E8E3D7E7E2D5E7E2D6E7E3D4E6E2D2E6E2D2E6E2D2E5E2D0E5E3D2E6
+      E2D0E6E2D2E7E3D2E7E2D0E8E2D2E7E3D2E6E3D2E8E4D3E8E4D4E8E4D4E8E4D4
+      E9E4D4E8E4D4E9E4D4E9E4D4E8E4D3E8E4D3E8E4D3E8E4D4E9E4D5E9E4D6EAE5
+      D6E8E4D4E9E4D5EBE5D6E9E5D7E9E6D9EBE7DDEAE9DEEBE9DEEBE8DEEAE7DCEA
+      E7DCEAE7DCE9E6DBEAE7DDEBE7DEE9E8DEE9E9DFEAE9DEEAE9DFEBEAE3EBEAE3
+      EBEAE4EBE9E3EBEAE0EBEAE0E9E8DEE9E9DEE9E7DDE9E6DCEAE7DCE9E6DCE9E6
+      DCE8E6DBE7E7DBE8E9DDEBEAE2EBEAE3EAE8DEE9E6DBEAE7DDEBE9E1EBE8E0EB
+      E9DFEBEAE0EBEAE0EBE9DFEBE9DFEAE8DEEAE7DDEAE7DDEBE7DEEAE9DFEAE8DF
+      E9E7DDE9E6DCE9E6DCE9E5DCEBE6DBEAE6DAEAE6DAE9E6DCE9E6DCE9E6DCEAE6
+      DCEAE6DAE9E6DAE9E5DAE9E5DAE9E4DAEAE6DAE9E5DAE8E5D8E8E5D8E8E6D8E8
+      E6D8E8E4D9E8E5D8E7E4D7E9E4D8EAE4D9E9E4D8E9E3D7E8E3D6E8E3D6E9E3D7
+      E8E3D5E7E3D3E8E3D5E7E2D5E7E3D2E6E2D3E7E2D5E7E2D5E5E0D3E7E1D5E8E3
+      D5E7E2D4E6E1D4E7E2D4E8E3D5E7E1D4E7E2D5E7E2D5E7E2D6E8E3D6E7E3D5E7
+      E2D6E7E1D5E7E2D5E6E1D4E5E1CFE5DFCFE8DFD0E6E1D0E6E2D0E7E2D2E6E1D2
+      E6E1D0E6E1D0E6E1D0E6E1D0E7E2D2E5E0CFE5E0CFE7E2D2E7E2D2E6E1D0E6E1
+      D0E6E1D0E6E1D0E7DFCFE8E0D0E9E1D4E8E0D2E8E0D0E7DFCFE5DFCDE5DFCDE5
+      DFCEE7DFCFE6E0CFE5E1CFE7DFCFE6DECEE6DECEE7DFCFE6DECEE5DECDE6DECD
+      E6DECDE5DECDE6DECEE5DECCE5DECCE6DFCCE5DFCCE5DECDE6DECCE8DECBE6DE
+      CBE6DECAE6DECBE7DECCE6DECBE6DECBE7DECDE8DFD0DED6C2858565353B291D
+      1B16251817A37D8DEDCEC1E8CCB6E5D2B04B4924A4998C787168FDF8FFEDF0EB
+      F1F1E8E9EBD3AFAA8CDAC7B4D4BDA4DBCAABA29F6C4349293539242C33242829
+      24312F30373833343A2F202B2117211B08140F0B161413201B151E2517202417
+      26291F2D2921312E25372A28382C636A655159472A392614231D1C28271C2621
+      1D24221F27251D2624232A291B29251D2B281425241827251727221122193040
+      32647F7197AC9FB0BB9C5864475C6B5B556357C3CCD0F9F9FAF6F7EDF0EDE4FF
+      FFFAF8F7EBF0EEE6F1F1EBF6F3EFF8F7EEF6F3EFE6EFEBD1D8D9A2B0AE93AA9F
+      91A5A7E1EBEEE7F0EEF2FDFFEAF0E493A28CA3B3BCFFFFFF9DA69170798BFFFF
+      FF7B8F7A758376606C64FFFFFFFFFFF1FFFFEBFDFBECFDFCFAFCFDFDF7FBFAF6
+      FBFBF3F7F5E8EFEEECF3F2F0F4E77E876BA7B2C8F9F7FCDAE7E8F3F7F5FBFCFD
+      DDE6EAE9ECE4BAB2A4CCBEACC0B6A8D1C2B2C5B9A5D4CCC7D3CEBAD0BBA0D4BE
+      AAC6B69FA19A8CC4BDA9CEC2ACD6C9B6D1BCAACAB8A4CCC2A9696D507E6F69D4
+      C2ABC3B396CBB198C5B093C6B395C9B396CDB79BCDB79DCFB89AC9B399CDB79A
+      CFB79DCDB99DC3B498BDAC91B8AE95BCB291383B25B8B2A9DDCDBCC8B29ABAAA
+      8EC4B295CBB89CD0BD9ACFB89DCDBA9DCDB8A0CFB99FD1BAA0D0BA9FD0BBA2D1
+      BC9FD2BAA0D3BBA2D2BCA3D1BDA0D0BAA2CFB9A2D3BDA3D2BBA3D1BBA3D3BEA3
+      D0BDA0D6BBA3D3C0A5D5BEA9D4BEA9D9C1A6D5C1A4D7C2A9D5C2AAD8C4ABDBC5
+      A8D9C5ABD8C5AFD8C4ABDBC7AADBC8A9DCC9ABDDCBAFDBC9AFDEC8B1E1CBACE0
+      CFB4E0CEB4E2CEB5E1CFB3E3D2B6E0D1B6E2CEB3E3D0B8E2D2B5E2D2B7E5D3B9
+      E5D2B6E6D5B8E7D4BCEBD6C0E7D7BDE8D9C2E6DAC5EADCC8EADDC9ECE0CBE9DD
+      CCE9DBC8EBDAC7E6DCC6E9DBC7EADCC9EBDBC7EADDC8EBDEC7E9DEC4E6DDC3E9
+      DCC3E9DEC2E8D9C4E5DABFE9DDC5EBDFCAEEE2D50000FFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFDCEAF5D0E5F4D2E7F5CFE5F5CBE3F4CFE5F6C8E3F4C7E2F3
+      CEE5F5D3E9F7DDF5FFCFD6FF748989247B001382000F780069AA5CD4E3FDD5E5
+      FFCBDAFE5C9851137D002A8600ADCBC7D6E6FFD2E5FFA6A9D039791E1A87000F
+      790064A53FD3E0BFC7DBB7C5DCBBC4DBB8C1D9B4C5DDBCC1D9B5B1CD98B2CF9A
+      BCD7AEA0B1928B8B8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFFFFFFFFFCFCFC5257
+      502B8D0E2E97102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1D8A00469C2E9E
+      9D9E828282A2A2A2CBCBCBC5C5C52B4A2231A2112B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F10208E033991208A888A7676768E8E8EADADADCBCBCBE2E2
+      E2F0F0F0F6F6F6F7F7F85C5F5C27830E2E9A102B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F208B0335941AA5A7A4818182A3A3A4CCCCCD646565257D0D2F9D10
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F101D9100478A357570767473
+      748A8A8BA1A1A2B8B8B9CACACBD7D7D8DEDEDFACACAD1C4F0F33AB122B8E0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F101F8E023D9026807D827574768C8C8C
+      A8A8A8C4C4C5DBDBDCEAEAEBF3F3F4F7F7F8C1C1C2214B1533A7112B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F1013870087B17C837F848C8C8DB1B0B1D6
+      D6D6AAAAAA1E520E32A7112B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8D10
+      2A910D2FA20F31A31130A11130A01130A01130A11131A21131A31132A71132A7
+      1130A0112D961028860E236B0E244F162A3A233B3B3753524C62615B71706782
+      80767E7C7221411531A3112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      258E062B900E91958A6C6860807C709C9989BBB6A4D1CBB9DCD6C2E1DBC7E3DC
+      C7E3DCC8E3DDC8C3BEAC2D41232F9D112C920F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F218B02319316B1B5AB807A70958F8328411D30A0112B900F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F298F0B2090016E7B656964617371668A87
+      79A19D8FB4B0A2C3BFAFCAC6B4CFCCB9626156257A0D30A0112B8E0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F188C00689758777070716F6588857AA29D91
+      BCB8A7CFC9B6D9D4BFDED9C5E0DDC8E3DFCBE4DFCBE6E1CAE5E0CAE2DECBE4DF
+      CDE4DFCDE3DECDE4DECDE5E0CDE6E2CCE5E2CCE7E2D0E6E1D0E6E1D0E6E1CFE5
+      E1CEE5E0D0E5E1D0E5E1D0E6E2D0E6E2D2E6E2D2E7E2D2E7E3D3E7E2D3E7E2D5
+      E7E2D5E6E2D5E6E4D6E5E4D6E5E3D5E8E3D6E6E3D6E5E3D5E6E2D5E5E3D5E5E4
+      D5E8E3D5E7E4D6E5E3D7E5E3D6E6E4D5E8E3D6E6E4D6E6E4D6E6E4D6E8E3D6E7
+      E3D7E5E4D7E7E3D6E8E3D7E7E3D6E7E2D5E7E3D4E7E3D3E6E2D3E6E2D3E5E2D0
+      E5E2D2E5E2D3E7E3D4E7E3D3E7E2D3E8E4D4E8E4D3E7E3D2E7E2D5E7E4D5E8E4
+      D3E9E4D4E8E4D4E8E4D4E9E4D4E9E4D4E8E4D5E8E4D3E8E4D4E9E4D5EAE5D6E9
+      E4D5E9E4D5EAE5D6EAE5D7EAE5D7EAE5D6EBE6D7EBE6DAEAE7DBEAE7DAEBE7DA
+      EBE7DAEBE7DBEAE7DBEAE7DBEAE7DEE9E8DDEBEAE0EBEAE1EAEADFE9E9DFEBE9
+      E3ECECE4EDEDE6EBEBE4EBEBE2EBEAE1EBEAE0EAE9DFEBE7DDEAE7DCE9E6DCE9
+      E6DBEAE7DBEAE7DBE9E7DCEBE9E1EBE9E3EAE9E0EBE8DFEAE7DCEBE7DDEBEADF
+      EBE9E0EBE8DFEBE8DEEBE7DDEBE7DEEBE7DEEBE7DDEBE9DDEAE7DCEAE7DDEAE7
+      DDEAE6DDE9E6DCE9E6DCE8E6DBE9E6DBEBE7DCEBE7DAEAE6DAE9E5DBE9E6DCEA
+      E6DCEBE6DDE9E5DAEAE7D9E9E6DAE9E5DAE9E4DAE9E5DAE9E6D9E9E6D8E9E5D8
+      E8E5D8E7E4D7E7E4D8E7E5D7E8E5D8E9E4D8E9E4D8E9E4D8E8E3D6E8E3D6E8E3
+      D6E9E3D7E7E2D5E7E4D2E8E3D4E6E2D3E6E2D0E7E2D4E7E2D5E5E0D2E6E0D3E7
+      E1D3E6E1D0E6E2D0E6E1D0E7E2D0E7E2D2E7E1D3E8E1D6E8E2D6E7E2D5E7E2D5
+      E7E2D4E7E2D5E6E1D4E7E1D5E6E1D4E5E1D0E6E0CFE8E0D0E7E1D0E6E1D0E6E1
+      D0E6E1D0E6E1D0E5E1D0E7E2D2E7E1D2E6E1D0E5E1D0E6E1D0E6E0D0E7E1D2E6
+      E1D0E5E1D0E5E0CFE6E0CFE7E0CFE8E0D0E8E0D3E7DFD0E7E0CFE7DFCFE5E0CE
+      E5E0CEE5E0CEE6DFCFE5E0CFE5E0CFE6DECEE7DECEE7DFCFE7DFCFE7DFCEE6DE
+      CDE5DECDE5DECDE5DECDE5DECCE5DFCCE6DFCDE6DECCE6DECDE5DECDE6DECCE7
+      DECBE6DECBE6DECBE6DECCE6DECBE6DECBE7DECCE7DECCE8DECEDAD1C0777862
+      2F382B11130D1514141E171F3D2D36706061C8ACAECEBDA8383724534E4FE5DA
+      F5F3F3F3EAE9DDD1D5C4CEC0A9D5BCA5CEBDA0DECBB0BDB2862C2F1522272224
+      271D24291C1A21162024211F241D24282124282320281E20202CA6A5AF071502
+      151E16171F1D1B25221724211F322C1F2D2C5E6561545D442F3A291F2924202D
+      22222F291A2A241629242233263E523F53655778867C9EB1A4B4C0B2DAE1D5F6
+      F8EBFFFFFAFEFCF6F9F8F4D5D9BC525E409697A0B0B3ABF1EEF1F6F5F3F2F3EC
+      E6E7E1F1F2ECEBEEEAEBEAE9DBDDDAC2CDC8B4C3C6E0E3E3DBE5E3ECF2F1CAD7
+      CEEBF2F1C6D3D7F3FAFBEFF5F1F7FAF8FFFFFFE8EADD9DABA9E7EEF5A2AF9655
+      606EF3F7FA889574738678505A52FCF7F6FDF9EBEFEBDDE0DDD7FDFDFEFAFDFD
+      E9EFEFEBF3F1F3FAFAFDFFFFF8FDFFF2F7F2A2A5899C9FB2EBE9E8E1D7CEC1B6
+      ABBEB3A6B2B4B8F7F7EBCEBDA6D1C5A9AFA58FB8AB99CEBAA8D1C6BFC6C0AEC0
+      B8A3B8AB9ACDC6B0A09D91D7CEBCCABAA3C6B39AC9B299C8B399CBBBA4767350
+      766A57CFBCA5C8B396C8B397C9B296CAB395CAB399C5B297CCB298CAB396CCB7
+      9DC6B397BCAA91B5AE8BBDB499CEC4ACCDC0AFE3DCC9A1A285B6A989CCB49ACE
+      B79ACDB69ACDB49ACEB698CCB69BCDB498CBB699D0B79BCBB696CBB499CCB99A
+      CFB699D0B69ACFB79CCEB69ACCB99FCBBA9DCEBA9BCEB99DCEBBA0CBBAA0D0B9
+      A2D2B9A4D1BAA0D1BDA3D0BCA2D0BBA6CEBDA5D0BDA7D1C0A6D4BEA6DAC1A6D5
+      C0A2D6C4A7D7C1A6D9C1ABD7C5A9DBC2A9DBC6ABDCC7ABD9C4A9DCC8ACE2CCAE
+      DECDB0D9CEB1DECAB1DECCB4DBCDB1E0CCB3DDCEB3E2D1B7E5CBB0E1D0B8E0CF
+      BAE2CFB7E5D1B5E0CFB4E6D6B9E4D1B8E7D4BEE8D6BFE6D5BDEBD8C3EBDBC6EA
+      DCC7EBDEC7ECDCC9E8DAC4EBDDC5E8DAC0E7DBC2EDDCC5EBDBC1E9D9C0E5DCC1
+      E5DBC3E7D8C3EADBC1E8D8BEE6D9C1EBDDC1EADEC5EFE4CF0000FFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFD3E6F3C9E0F1C9E2F2CAE3F4C9E1F3D4E7F6D1E6
+      F5C9E2F3C6E0F2D5EEFFCBD0FD74897B227D000A7C001F80008DBE91EAF1FFD6
+      E4FFC2DBECD3DFFF71A171157C002181009EC4B1E0F0FFB0B4E34879361A8500
+      0D78005EA33DE1EBD9C7DBB6B0CD95B9D3A5C4DBB9C6DDBEC1D9B3B2CE98ABC9
+      8DBAD5AAC3DBBAA8B7A18B8B8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFFFFFFFFFF
+      FFFF878787216D0C31A3112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F278E09
+      228C05A4B0A07C7B7D989898C0C0C0E0E0E04C534A2B8F0F2E96102B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F0F1B9000618955767278797979929292AD
+      ADADC5C5C5D6D6D6E0E0E0E3E3E37676761F680B30A1112B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F288E0B1D8A00A3B69E8080829D9E9EC7C7C89595951C5A
+      0A31A5112B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C900F22970145
+      7139666367737273838384959596A4A4A5B0B0B1B8B8B9BEBEBF5256522B900F
+      309E112B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F0F1C9200538047706C
+      737474758D8D8DA5A5A5BCBCBCCECECFDCDCDDE5E5E6DFDFE03D4A392D97102D
+      930F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1789005AA247959196858485
+      A5A5A5CDCDCDD2D2D2354A2E309F112B910F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2C910F2C940F2E9A1031A31132A6112F9D10267910274C1B393B34
+      56544E69675F79776C393B322A8A0F2F9B102B8E0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2C8F10178C00659256746D6C716E63888578A29D8FBAB4A3CBC5B4D4
+      CDBBD8D1BED8D2C2D7D1BEBDB8A6303D272C93102C95102B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F238C06278D0AAEB8A7827E75A5A0934344392A8B0F2E98
+      102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F102493052E8E135C5E5664
+      5F5A6F6C63848177928F84A19D91ABA89BB2AFA1908E811E4A1033AB122B8E0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F27900A2590076B746467645E7270
+      6788857B9D9A8DB1AE9DC0BCAACAC6B5CFCCB9D3CFBCD7D3BFD7D4BDD7D2BED4
+      D1BDD4D0BCD4CFBED9D2C3DFD9C9E3DECCE4E0CDE5E2CFE5E2D0E5E1CFE5E1D0
+      E6E2D2E6E3D2E6E3D0E6E2D2E6E2D2E7E2D2E6E3D3E5E4D4E6E3D5E7E3D6E7E3
+      D5E8E2D5E5E3D6E6E3D6E6E4D6E6E4D6E6E4D6E6E4D4E5E3D5E5E2D6E5E3D5E6
+      E4D6E6E4D6E7E4D4E8E3D6E7E2D6E5E2D5E5E3D4E5E3D5E4E3D5E5E3D5E8E2D5
+      E8E2D6E7E2D6E7E2D5E7E3D4E7E3D4E5E3D2E6E2D4E8E2D6E6E1D4E7E1D6E7E2
+      D5E6E2D2E6E2D0E6E2D2E7E3D2E8E3D4E8E3D7E8E3D6E9E4D7E8E3D6E8E3D7E8
+      E4D6E9E4D5E8E4D4E8E3D5E8E3D6E8E3D6E8E3D5E9E4D4E9E4D5E9E4D6E9E4D6
+      E9E5D4E9E5D3E9E5D6EAE4D8EBE5D8EBE6D7EBE5D8EBE6DAEAE7DAEBE7DAEBE7
+      DAEAE7DBEBE7DCEBE7DCEAE7DCEAE7DCEAE7DCEAE8DCEBE8DEEBE7DEE9E8DEEA
+      E9E1EBEAE4ECECE4ECEBE4EBE9E3EAE8E1EAE8E1EAE8E1EAE9E0EAE8DDEAE7DB
+      E8E6DBE9E6DBEBE8DEEBE8DFEBE8DEEBE8E0EBE9DFE9E9DEEAE9DFE9E9DEEAEA
+      DEEAE9DEE9EADDEAE9DEECE8E0ECE7E0EBE7DEEBE7DEEBE7DEEBE8DDEBE7DCEA
+      E7DCEAE7DDEAE7DCEAE7DDEAE7DDE9E7DBEAE7DBEBE7DBEAE6DBEAE6DCEBE7DB
+      EAE6DAEAE6DAEBE7DBEAE6DAE9E5DAE9E5DAE9E5DAE9E6DAE8E5DAE9E6D9E8E6
+      D8EBE4D9E8E4D8E6E4D8E8E4D9E8E5D8E7E4D8E9E4D8E8E4D7E9E4D7E7E4D4E8
+      E3D5E8E3D6E8E3D6E8E3D6E7E3D4E8E4D2E8E3D2E6E0D3E7E1D4E8E2D4E7E1D3
+      E7E2D3E6E2D0E5E1D0E7E2D2E7E2D2E6E1D0E6E1D0E7E2D0E7E1D3E7E2D4E7E2
+      D2E7E1D5E7E1D4E7E2D2E7E3D2E7E1D3E7E1D3E5E1D0E6E0D0E8DFD0E9E0D0E8
+      E0D2E7E2D2E6E1CFE5E0CFE5E1CFE8E0D2E8E0D3E7E1D2E7E1D0E7E1D2E7DFD4
+      E8E0D2E8E1CFE5E1CFE6E0CFE8E0D0E8E1CFE8E0D0E7DFCFE6E0CFE5E0CFE5E1
+      CFE6E2D2E6E1D0E5E1D0E5E0CEE5E0CEE5DFCEE5DECDE7DECDE6E0CFE6E0CFE6
+      DECDE5DECCE6DECDE6DECEE5DECDE5DECDE6DFCDE6DECDE6DECEE6DECEE5DECD
+      E5DECCE6DECCE6DECDE6DECDE6DFCDE5DDCCE5DECEE6DECEE7DECCE6DFCDC8C4
+      B17C8068363E2B141A120C160B13130D18141214101317141B4F47452C311D35
+      3030B6ABD0F9F9FAC0BEABEBE8DADBCFB6E3CAB3E5CBB6BCAC9A3B44261E2117
+      181E191A211619221A1B231C1D1F222021211F201A20271E232F241F212BBEC0
+      C11527021720191C211F141B1819221E182523202A2E56625F545A4B49564F2C
+      3D2816251626373255685398AB9DC9D4C3EDF3E3FDFFF6FFFFFBFDFDF5FCFBF5
+      F6F7ECF1F3EEF1F0EBF2F1EBF0F0ECD2D7BE5A5C45828D9BB0B7AEEDEFF0FEFC
+      FED2D9DAC8CECFBBC4C796A9A9BFD0D3F1F9F8F6F7F6F3FBFCFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFD2DAD8EFF7FCFDFFFFF9FBFBF3F9F8D9E4E1D1D8D2E0E7E3
+      B7C0B04B5A6CF6FAFC8DA08182987CB2BAA7B6B2A7A89E87BAB998E1DDCAEEEC
+      EBD3DFDEF7F8FBF8F4F5E3E2DDCFCAC2C8BEB3CDC9B09C9E7C7B716CD4C5BCD1
+      BAA3D3C2A5D5C7ACA6A2A0CECCCDB6AD98C4B9A7C6C3ACD1CCBDCEC5B2C5BEAA
+      CDBBA6CEBAA0CEBBA2CBBA9CA79989CABAA8C8B19CC8B29BCBB497C9B796CDBA
+      9C7E7C5B6B5F51D0BAA6C5B195CBB296C4AF93B7A589B7A88DBFB298CABCA4C8
+      BAA8BEB69AC1B69FC4BA9FCABBA6CAB79FC0AF93C3AD93BDA68FC6AF96C8B398
+      C5B195C5B196C5B396CAB497C8B197CDB398CAB49ACBB097CAB499CDB39CCEB4
+      97C9B39AC6B29ACDB69ACEB897CFB697CCB69FCCB79FCDB79AD0BA9DCEB79DD0
+      BAA0CDB99FCFBA9DD0BA9DD5BAA0D0BA9CCEBAA4D2BEA3D3BDA4D2BDA4D4BEA4
+      D5C0A6D3C1A7D7C2A9D8C3A6D7C3A9D9C1ACD7C4A9DBC7A9D9C6AAE0C7AEDCCA
+      AEDAC9AEE1CAAEDDCAAEE0CCB5DCCAB2DECDB3E1CDB2E2CCB3E1CCB4E3CFB8E0
+      CDB3E2D0B9E2D1B8E4CFB6E5D2B8E1CFB8E5D2BCE3D0BDE5D1BDEAD3C0EAD6C2
+      E9D7C3EADCC8EBDBC9ECDCC8EBDAC7E7D9C4E7DAC6E8DCC2E5DAC1EBDBC1EBDB
+      C6E8DCC4EADCC1E9DDC2EBD7BFE8D9C1EADABEE7D5BFEBDAC2E7DBC40000FFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8E9F4CDE3F4CBE2F2CDE3F4D0E6F6CB
+      E4F5CDE4F4C9E1F3D6F0FFCCD0FB67816D187A00047900398F23B2D3C8F0F3FF
+      D5E3F8C7DCECCAE0F0D9E6FF7FA88A187C001B7E00A3CDB0DAD5FF567C561B83
+      000D7A004C9929DFEAD8DBE8D6C6DDBCBED7ACB0CD94BBD5A7C1D9B3B0CD95AE
+      CB91BCD5ACBED7B0BED7AFA9B8A48B8B8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFF
+      FFFFFFFFFFFFBDBDBD1F4F1332A6112B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2C8F101387008EB383827F838F8F8FB5B5B5DCDCDC79797922720C30A0112B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F1028910B2393045D6D586D6B6E
+      7878788E8E8EA0A0A0B0B0B0BBBBBBBEBEBE6E6E6E1B590931A3112B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2A8F0E13850098BE8D8985899B9B9CC5C5C6BC
+      BCBC294A1F32A4112B900F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F10
+      2B920F279E062F60225050506464647272728080818C8C8D9191929595968787
+      8827451E33AB122C93102B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F102A910E24
+      9804496740676368737274868686999999AAAAAAB9B9B9C4C4C5CCCCCD5D5D5E
+      257A0D2F9E112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F238D052E9211A3A9
+      A17C7C7C9B9A9AC2C2C2E3E3E35C5E5C28860E2E99102B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0E2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8E0F2C920F30A01133AA
+      122B8A0F2C4B214B494467655C59574F1C490D35AD132B8E0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F27900A2491056B736368625D7370658883789C978A
+      ADA89BB9B3A5BEB9AAC0B9ACB9B5A69794891F2F172E99102C93102B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F238B05268D0AB4BDAE8D8A80AEAB9C6C6B5F21
+      6C0B30A1112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8E11299B09
+      277E0E42473B59565265645E73716B807D7587857D8C8A80908E8446473F2989
+      0E30A0112A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2D8F112495052E881554
+      544D615E596E6C63807E748F8C819D9A8DA9A599B2AF9EB7B4A3BBB7A7BBB8A6
+      BBB7A7BAB6A6B7B3A5B7B4A5C0BCADCFC9BADCD8C7E3DFCEE5E0D1E7E2D3E5E1
+      D0E5E1D0E6E2D2E6E3D2E6E3D0E6E2D2E6E2D3E7E2D5E7E3D5E5E4D6E5E4D6E5
+      E4D7E6E4D7E9E3D7E7E4D7E6E3D7E6E4D6E7E4D7E8E4D8E6E4D7E7E4D7E7E4D7
+      E7E4D7E7E4D7E6E4D5E6E3D6E7E4D6E6E4D6E6E4D5E6E4D6E6E4D6E6E3D6E7E3
+      D5E7E2D5E7E2D3E7E3D4E7E1D5E6E2D4E6E2D3E6E3D2E7E2D5E7E2D5E6E1D4E7
+      E1D4E7E3D3E5E1D2E5E1D2E5E1D2E7E3D3E8E3D4E8E4D4E9E4D5E9E4D7E8E3D6
+      E9E4D7E9E4D8E9E4D8E8E2D7E9E3D7EAE4D8EAE4D8EAE4D7E9E4D5E9E4D5E9E4
+      D5E9E5D6E9E5D6E9E5D7E9E5D8EAE6DAEAE7DAE9E6D9EBE7DAEBE7DBEAE7DBEA
+      E7DCEAE7DCE9E7DCEAE7DCEAE7DCEAE7DCEAE7DCEAE7DCEAE7DEEAE7DDE9E6DA
+      E8E7DBEBEAE0EBE9E1E9E7DFEAE8E1EBEAE2E9E8DFE8E7DDE7E7DDE9E8DFE9E7
+      DCEAE7DBE8E7DCE9E9DFEBE9E2EBE9E3EBEAE2EBEAE0EBEAE0EAE9E0EAE9DFEB
+      EAE0EBEAE0EAE9DFEBE9E0EBEAE1EBE9DFEAE8DEEAE9DFEAE9DFEAE8DFEBE7DE
+      EAE7DDEAE7DDEBE7DEEAE7DCEAE7DCEAE7DDEAE7DDEBE8DDE9E7DCE8E6DBE9E7
+      DBEBE7DBEAE6DAEAE6DAEAE6DAEAE6DAE9E5DAEAE7DAEAE7DAE8E5D8E9E6D9E9
+      E6D9EAE4D9E8E4D8E8E4D7E8E4D7E9E4D8E9E4D7E8E3D7E9E4D7E8E3D6E8E3D6
+      E8E4D4E8E3D5E8E2D5E8E2D5E8E2D6E7E2D2E6E1D2E7E2D2E7E2D2E7E2D3E7E2
+      D2E7E2D2E8E2D0E7E2D0E7E1CFE7E1CFE8E2D0E7E1CFE7E1D0E6E1D0E5E1CFE7
+      E1D2E7E0D0E7E0D0E8E1D2E8E1D2E7E0CFE6DFCFE7E0CFE7E0CFE7E1CFE8E0CF
+      E8E0CFE7DFCEE7E0CFE7E0CEE7DFCEE8E0CFE7E0CFE7DFCEE7DFCEE8E0CFE8E0
+      CFE7DFCFE8E0CFE8E0CEE7DECEE6DFCFE8E0D0E8E1CFE7DFCFE7DFCFE7E1D0E7
+      E0D0E7E1CFE7E0D0E7E0D0E6E0D0E6E0D0E7E1D2E7E0D0E7DFD0E7DECFE6DFD0
+      E6DFCFE7DFCEE6DECFE6DECEE6DECEE6DECEE7DFD0E5DECEE6DECDE6DFCEE6DE
+      CEE6DECEE5DECDE5DECCE5DECDE5DECDE5DECCE6DECDE6DECEE6DECDE8DECFE5
+      DDCDBAB79F7878603F432D1C2116171E16181D181A1D17171B161518160F1616
+      1C2517302D26646A7FD3D8D9DDDDC9EFEDE491907754544E443D3D1D19161317
+      11181B19111915121B180E1A17171D1A1B1E1A181E1919221C1E241F1B261E18
+      1E28BBBCC520320B192B21162521131E18151B191D27221F332D515F57515644
+      5F6F6F93A591CDDAC6FDFDEFFFFFFBFDFAF1F1F3EAEEF0E6F0F0E8EBF0E6F0F2
+      EAEFF0EEEFF0E7F2F3E9F1F1EBEDF2E9F1F3EBCDD4BC57614A79928C98A29FCA
+      D5D393A5A4C4CBD3E9F2F4D3DDDDF1FAFBFEFFFFFDFEFFFDFDFEFFFFFFFEFEFE
+      FEFFFFFFFFFEFFFFFFFEFFFFC0CAC7E1EFEEEFF7FAF8F9F8F8F9F6FCFFFFFFFF
+      FFFFFFFFBBC2AE3E4A55E6EDF3FFFFFAC5CCB34F5E41D0D0BEFFFFF3FFFFF5FC
+      FAEBE9E2D7DED9CCC4BCB1BEB0A4CEBAA7D2C3AAD6C3ACDCCCB3A59D7F706962
+      D3C1B5CBBAA4C3B99FC5BAA29E9F90C8C8C6D3C8B6D6CAB7B5AF99C8BBAAC8B2
+      9CC4B497CCB39CCDB49CC9B799CAB899A19786CBBAA7CAB097C6B498C6AE92CA
+      B393C9B99A878263625E4ECFBBA9BDAA8DACA283B5A991CEBDAED7C8B7CABEA8
+      BFB399C1B097B8AB8DC1AE92C5AF91C6AC90C4AD91C8B196C6AF92C6AF92C1AC
+      8FC6B195C3AD90C4B191C5B193C9B193C6B095CCB499C6B092CBB296C5B091CD
+      B398CCB298CAB096CDB699CAB297C4B196CCB699CBB897CDBA98C9B69AC9B69B
+      C8B799CCB998CBB79BCDB99DC9B79BD2BA9FD3BCA0D0BA9FD2BA9DD3BB9FD5BA
+      A6CFBDA3CDBBA0D1BDA6D3BEA4D5C3A7D4BEA3D5C2ACD0BDA8D7C4ACD8C3AAD9
+      C4A9D9C7AAD7C7B0D7C7AADDC8AEE2C7AEDCCBAFDCCAB2E0CBB2DECBB0DECFB3
+      DCCEB4E0D0B1E2CDB2DECDB5E4D1B6E4D1B4E2D2B5E1CFB2E8D2B9E5D1B7E7D5
+      BDE3D5BCE8D9C1E5DABFE8DEC4E8DBC5E5DBC0EADCC7E9DBC6EBDEC9E9DDC5E9
+      DECBECDECAEEDFCAE9DCC8EBDFC7EADBC3E7D4BEE6D4BCE9D7BFE9D6BEEADCC6
+      9769FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0EDF5D3E7F6D2E6F5CFE4F4
+      D0E6F6CEE7F7CCE4F5D7F2FFCED7FF6F877612780006790063A654D7E8F5E1EC
+      FFC8DCEEC9DCECC9DCEDD3E1F1DEE9FF84AC9B1C7C001D84009ABCB28E9AB31F
+      7D000C7C003C9019D5E5CCD8E5CCC2D9B3CBE0C2C9DEBFBFD7AFB7D1A0B1CD96
+      B1CD97BFD7AFC6DDBFB7D2A4AFCC94A5B59A8B8B8BB0B0B0DBDBDBF5F5F5FFFF
+      FFFFFFFFFFFFFFFFFFFFECECEC3B4C352F9C112C920F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F15880063A750949095888888AAAAAAD2D2D2ADADAD1F5110
+      32A7112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8E102A970B2591
+      0743563E6261637070707F7F7F8D8D8D9393939494943B3B3C1E620A31A2112B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F0D83008EBF80928D949D9D9E
+      C7C7C8DBDBDC424F3F2D94102D95102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8E0F2B910F31A6102981112F4D26383E374343434E4E4E51515153
+      5353707070656566255D1536B0132B900F2B8E0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8E102C950E259905315A2553525468686A7777778888889393939C9C9CA4A4
+      A47777771D570C32A6112B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2A8F0E16
+      880097B3907E7B7E919190B7B6B6DCDBDB8D8D8E1E650A31A4112B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2F91121D8900098000077D00097D00087C
+      00077C001584001C8700298E0D2C90102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8E0F2B8E0F2F9D1033AA12256B104D4C466562593F3D37257F0C32A5122A8D0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2D8F11249405308A1656564E625D576D6A
+      617F7B708B877C948F859A94899A968997928748474216430932A5112B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1A870039961FC6C4C09B978BBDBAAA
+      9490851B500C32A5112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8D0F2E9F0E2A950B2B531E373C3244434050504B5756525B5A5565655E69
+      676122362033A8122E97102B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8E10
+      2A9C0A227F07384630514F496160586F6F657D7B7185837A8D8A7F9290839592
+      87969488969389939086908E84929083A19F91B8B5A6D0CDBEDEDAC9E4E0CFE6
+      E2D2E7E3D3E7E3D2E6E2D2E6E2D2E6E3D0E6E2D2E6E2D3E7E1D5E5E2D4E5E3D5
+      E6E2D4E8E3D6E9E4D7E8E4D7E8E4D9E8E4D9E7E4D9E7E4D8E8E4D9E8E4DAE7E4
+      D8E7E4D7E7E4D7E7E4D7E6E4D7E7E4D8E7E4D7E6E4D5E7E4D6E6E4D7E6E4D6E8
+      E3D6E8E3D6E6E2D5E7E4D3E7E3D3E6E1D4E6E2D3E6E2D3E7E3D2E7E2D4E6E1D4
+      E7E1D5E7E2D4E6E2D2E5E0D2E6E0D5E6E1D5E8E3D7E8E4D5E9E4D4E9E4D4E9E4
+      D5E8E2D6E8E3D6E7E4D5E8E4D4E9E4D5E8E4D5E9E4D6EAE4D8EAE4D7E9E4D5E9
+      E4D5E9E5D6E8E5D6E9E5D9E9E6DAE8E6D9E9E7DAEAE6DAEAE7DAEBE7DAEBE7DD
+      EAE7DCE8E6DAE9E7DBEAE7DDEBE7DEEAE7DDEBE8DDEBE8DDEBE8DDEAE7DFEAE7
+      DDE9E7DAE9E7DAE9E6DCEAE6DDE9E7DDEAE8DEEBEAE0EBEAE0E8E7DCE8E7DCE8
+      E7DDE7E5DBEBE7DCEBEAE0EBEBE4EBEAE4EBE8E3EBEAE4EBEBE0EBEAE1EBE9E3
+      EBEAE3EBEAE1EBEBE0EBEAE0EBE9E2EBE9E3E9E9E0E9E9DEEAE9DFE9E8DEEAE8
+      DEEBE7DEEBE7DEEAE7DDEAE7DDEBE8DDEBE8DDEAE7DCEAE7DDEBE7DEEAE6DDE9
+      E7DBEAE7DBEBE7DBEAE6DAEAE6DAE9E5DAE9E5DAE9E5DAE9E6D9EAE7DAE8E5D8
+      E9E6D9EAE5D9E9E4D8E8E5D8E9E4D8EBE4D8E9E4D8E9E4D7E9E4D8E9E3D7E8E2
+      D5E8E2D6E8E3D4E8E2D4E8E2D5E7E1D5E7E1D4E7E2D0E7E1D3E7E1D3E7E2D0E8
+      E3D2E7E2D2E6E1D0E7E0CFE8E1CEE8E1CFE7E0CEE8E1CFE8E1CFE8E1CFE6DFCF
+      E7E1CEE8E1D2E8DFD2E7E0CEE8E0CEE8E1CFE7E0CEE7DFCEE7DFCEE7E0CEE7E0
+      CEE8E1CFE7E0CEE6DFCDE8DFCDE8E0CDE8DFCFE9DECFE8E0CDE7E1CDE7E0CEE7
+      E0CEE6DFCDE8DFCBE8E0CDE9E0CEE8DFCEE6DFCDE6E0CEE5DFCDE6DECFE7DFCF
+      E8DFCFE7DECFE8E0CFE8E0D0E8DFCFE6DECEE7DED0E8DFD3E8DFD3E8E0D3E7DF
+      D2E6DED2E6DFD0E7DFCFE7DFCFE6DECEE6DECEE7DFCEE6DED0E6DED0E7DFCEE6
+      DFCEE7DECFE5DECEE6DECDE7DECCE7DECDE6DECDE5DECBE5DDCCE5DECEE7DFD0
+      E9DED3E2D8C59492775C5C4C353627192114151B15151717181B1621261D1E28
+      191B2116171E161B1F239895B2FAF8F68D966553543F343F2A1F2D1F1A241F18
+      1E18151B190E1A14151E16141B15141B1B151A1518201F161E1B19201E1A241E
+      20272A161E25B2B9BF143005122A1644533E86987FB2BDA9D8E0D0E2E2D3D5DA
+      BA484C43EBE6F1FFFCF6F2F3EAEEEDE6EBEBE4E9EAE3EDEDE4F0F0E8EFEDE4EE
+      EEE8EEEDE8EBEAE4E4E6E4E3E7E4E6EAE7E8EDE6DEEAE496AAA5BCCCCBE5E8E9
+      D6DDD8DAE2E9FAFEFDFAFEFEFFFFFFEBEFECF6FCFFFDFFFFFDFEFDFAFDFCFAFC
+      FCFAFAFDF8FAFAF1F9FAF8FAFAF9FBFBC5CFCAEAEEF3FBFDFEF6FAFCF0F7F6EB
+      F3F2E9F1F1F0F5F6CBCFB83B4343DBE0EBE2E7E1E6E7DBE7E8DAF6F1E4E0D4C2
+      DBCDB3D9C8AFD3C6AFD5C2AAD5C3ABD6C6AED3C2A9D1BDA7CBBBA3D0C3ACA5A0
+      7F6A665ED4C6C3CBBCA9C9BAA6CCBEA7CFC4AED8CAB2C6B298C6B39ABFAC99CB
+      BAA6CCB79CCCB69AC9B496C9AF97C6AF97C3AF929D9085CABBA4C6B393C4AC90
+      C0A58FBDAC91C8B39C90916D504F42C2B9A8BDB49DCEC5AECBC1A9BBAD93B7A4
+      88BDA68DC0AD8FC2AC95C4AD93C2AE8EC1B195BEAD92C1AD90C2AD92C2AC8FC5
+      AD91C5AD90C9AF93BFAD91C2AC93C0AD91C4B093C1B290C6AD95CAAD96C4B195
+      C4AB91C9AD92CAAF96CBB499C8B195CCB197CCB097CCB79BCDB398C9B197C8B4
+      99C6B49ACBB69ACAB49AC9B79FCEB697C6B79CCDBA9DD3BA9BD1B9A2D2BDA2D6
+      BBA3D4BDA4D0BAA3D5BDA4D5BDA3D6BEA5D3BEA5D8C2A7D6C2A9D6C2ABD4C3A9
+      DAC3A9D9C6A9D9C7ACD9C5ABDEC8ACDCC8AEDCC8AEDCC7B0DECEB1DCCBB0DECE
+      B5DECBB0E1D0B5E0CDB2E2D1B5E5D3B9E1CFB2E4CDB6E1CEB5E6D2B9E4D0B9E1
+      CFB7E0D5BAE7DAC0E7D8BEEADBC4EADDC4EBDAC5E9DDC7E6D9C4E9DEC7EDDCC8
+      E8DCC5EADCC8E6DBC6ECDDC8EEDFC9E6DBC5E6D8C1E5D5BEE8D5BEE7D7BEE6D4
+      BEE9D7BD9769FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2EEF6CFE5F5D2E7
+      F6D2E6F5CEE4F4CCE3F4D3EDFBD6E5FF7D91911072000A7C007FB57FE5F0FFDC
+      E8FFC5DBECC8DCEDC3DAEDC7DBEDD4E1F0E0EBFF93B3AB1F7D00288B006E8F79
+      438428077C002E880AC9DEBBDDE8D1B6D09CB9D3A1C3D9B4C8DEBECADFC2B9D3
+      A5B1CE96C1D9B3C5DCBDC0D8B3BAD4A9AECC949AAE888B8B8BB0B0B0DBDBDBF5
+      F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64666427820E2E9B102B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F208B0337951BA4A6A37F7F7F9F9F9FC7C7C7D2D2
+      D2364B30309E112C920F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8D0F2D990E2B9D0C2F6022424A404E4E4E525252525252343434162E0F2C930F
+      2D95102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F0F820075B164A3A0
+      A5A6A6A7CFCFD0EDEDEE60616027820E2F9A102B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2A8F0E298F0D2B8F0F2B8D0F2F9E1031A4112A8C0F246D0F215911
+      1C4D0F154E063D5E347372736868692A661C34AD122C940F2B8E0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8D0F2C931032A7102A781434482E46464759595966666670
+      70707D7D7D6464641A2B16309F102C920F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F13870070A8608C888D888887ACABABD2D2D2BAB9B9224C1632A6112B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0E218A09529D3D81AB749BC38E9B
+      BD8FA2C495A1C7947BB5685AA843138202259A05319E112B8E0F2B8E0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8E0F2B8F0F31A70F28820E5A5C52635F5831342C2D9B
+      0F30A0112A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8E102A9C0A247E0938
+      442F4D4B465C595266645C6F6C63716E6664635B3B3A3513270C2C92102E9810
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2D9110057C006FB05CBBB8B2B0AC
+      9ECDC9B9B8B3A628461D31A2112B900F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2A8F0E2B8F0F2A8D0F2D971032A6122A8D0F2466111F47141F3E141C3414
+      183712555B4F635F5E254A1A34AD112D96102A8D0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2A8D0F309F112F9E10295F17313E29403F3B4E4C4859585362615A66
+      645D68655E67655E5E5C564F4D485C5A5372706787857CA19F93C1BEB0D7D3C3
+      E3DFD0E5E1D0E7E3D2E7E4D2E5E1D2E5E1D3E6E2D2E6E2D2E6E2D3E6E1D4E6E2
+      D2E6E2D2E6E2D2E8E2D5E8E3D7E6E4D5E6E4D6E7E4D8E7E3D8E7E4D7E7E4D7E8
+      E5D9E7E4D7E7E4D7E7E4D7E7E4D8E7E4D8E7E4D8E7E4D8E7E4D7E7E4D8E6E4D7
+      E6E4D7E6E3D5E7E3D6E8E2D6E6E2D5E7E2D5E7E3D4E7E3D2E6E2D3E7E3D3E6E3
+      D3E6E2D4E8E2D6E8E2D6E6E1D4E6E2D4E6E1D4E5E1D4E8E4D5E8E4D5E9E4D4E9
+      E4D4E8E3D3E7E3D3E8E4D4E8E4D3E7E3D3E8E4D4E8E4D4E8E4D4E9E4D5E9E4D5
+      E9E4D5E9E4D7E9E4D7E9E4D5E9E4D8EAE4D8E9E5D8EBE6DAEAE5D9E9E6D7E9E7
+      DAEAE6DBE8E5DBEAE6DAECE7DBEAE7DDEAE7DCE9E7DCEBE7DEEBE7DEEAE7DEEB
+      E7DEEAE7DDE8E5DBE9E7DBE9E6DBEBE8E0EBEBE1EAE9DFEAE9DFEBE8DFEBE7DE
+      EBE7DEEBE7DDEBE7DEEAE9E1EBE9E4EBE9E4EBEBE2EBEAE1EBE9E2EBE9E2EBE9
+      E2EBE9E3EBEAE4EBEAE2EBEAE1EAE9E2EAE9E1EBEAE0EAE9DFE9E9DFE9E9DEEA
+      E7DEEBE7DEEBE7DEEBE7DEEAE7DDEAE7DDEAE7DDEBE7DDEBE7DBEBE7DBEBE7DB
+      EBE7DCEAE6DAEAE6DAEBE7DBEAE6DAE9E5DAE9E6D9E9E6D9E9E6D9E8E4D9E9E5
+      DAE9E5DAEBE5DAEAE4D8E9E4D7EAE4D8E9E4D7E9E4D7E8E3D6E9E4D7E9E4D7E8
+      E3D6E7E2D5E7E2D5E8E2D5E9E4D5E8E3D3E8E2D4E7E1D3E7E2D2E7E2D3E6E1D2
+      E5E1CFE8E1D0E9E1D0E7DFCFE8DFD0E7E0CFE7E0CEE8E0CFE8E0D0E8E2CFE8E1
+      CEE7DFCEE8E1CFE8E1CFE8E1D0E7E0CEE7E0CEE8E1CFE7E0CEE6E0CEE6E0CFE6
+      DFCDE7E0CEE7E0CEE7E0CEE7E0CEE7E0CCE7E1CDE8E2CEE9E0CEE9E0CEE8DFCD
+      E9E0CEE9E0CEE8DFCDE8E0CEE7DFCCE7DFCBE9E0CEE9E0CEE7DFCDE7DFCDE8E0
+      CEE8E0CEE6DFCDE6DECEE7DFCFE7DFD0E7DFCFE6E0CDE6DFCEE6DECFE7DFD0E7
+      DFD0E7DFCFE7E0CFE7DFCFE7DECFE7DFCFE7DFCFE6DECEE6DECEE8DFCFE7DECE
+      E5DFCFE6E0CFE6DFCEE6DECDE8DECDE8DFCDE8DFCDE4DBC7DAD1BFD5CDB9D0C8
+      B6D2CAB7CEC2B3BBB397595B3F393E3020251B171E1312160D0F0D0D151A1311
+      1B19131E171A231A2025221D1F26D7C7F1FFFFFFA1A56C4551273741283B4B36
+      1F2C1D151B19191B16182219121F19151D1B191E1B1C221C0E1E18141E1B2027
+      1E21271F2D3C2617241E9BA4BABCC8A8E6ECDAFFFFF5FDFBEEF0F2E7E5E5DBE4
+      E6DDE8EAD24C5042D9D7E8F1F2EBEBECE3E8E9E3ECEDE4EBEEE6EDEDE4E7E7E2
+      E9EBE2E2E7E3DBE1DED2DDDCDCE6E4E8F1F0F7FBFAFCFDFCF7FBF6A4B4B1EAF7
+      F9FFFFFFF3F7F3C1CDD7FAFDFBEBF3F8FFFFFFECF1F1DEE7E7F1F8F6F6FAFBFA
+      FDFCFAFBFCFAFFFEFDFFFFFAFAFCEEF3F4F2F7F5BCC4C3D9E3EBEFF5FAD7E3E3
+      D5E4E6E8F1F3E5EBEAE5E7E3C8CDB13A3B2FCDC7C6DACBBADBCDB9E9DED4E7E7
+      DEDDCFBEE0CDB1DDCBB4D6C3A9CCBDA9C6B8A3C9BBA3C6BEA6CDC3B2D8CBB5DC
+      CCB9ADA683656054CBBAB1D0B49DCEB69DCCB699CFB69ACAB497C6B098CAB39C
+      C0AA99C3B69DCAB297C5B293C1AE91C3AC95C4A997CEB79CA19186C1B39FB2A1
+      86C6BA9FD8CCB4CFC8ABCABAA5EEE5D29A9672CAB89DC1AC90C1AD8FB8A887C1
+      AA8FBFAD8FC3AD8DC8AF8FC0AB8FC4AD90C3AD8FBAAA8BCAAD90BFAA8DC5AB91
+      C0AC8FBFAD89C2AD8FC0AC8DC5AD91C6AE91C3AE92C0AB90C4AD93C3AF91C1AD
+      8FC5AD92C8B093C2B192C3B195C3AF92C4AD96C6B297C5B295C8B196C4B196C9
+      B497CAB296CAB498CAB699CCB498CBB89BC9B699CEB79BCAB69ACCB79DD0BA9C
+      CFB99CD0BAA2CCB8A3D0BB9FCFBBA6D1BDA5D2BEA4D5C1A5D5C0A6D6C2A7D5C3
+      A7D8C3A9DAC5ABDAC5AADBC7ACDAC6ABDCC8AEDAC9B0D9C9B0DECCB0E0CBB3DC
+      CDB6DDCDB2DDCDB2E0CDB3DECEB3E3CFB4DDCBB1E2D2B7E2D0B4E0D3B8E2D0B6
+      E4D3B6E5D4B7E2D4B9E5D6BDEADBC4E8DCC7E8DEC7E4D8C6EADBC5E8D9C5E9DA
+      C7E6DBC6E5D9C4EBDDC9E8DDC7EBE0CAEBDCC9E8DCC5EADCC2E7D7BFE8D6BDE9
+      D4BCEBD5BCE7D7BE0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDCE9F5CD
+      E4F4D3E6F5D5E8F6D1E5F5CFE5F6DCF1FFA6AFCB1C7003097D0095C39AE7F2FF
+      CBE0F9C5DCECC0D8EBBFD8EBC3DBEDC2DBEDBFD9ECD8E6FF9BB6B0227E002D89
+      003A85160F7900268506BDD7ABDFE8D3B9D2A0C3DAB4BDD5A8B4CF9ABFD7ACC8
+      DEBFC1D9B4C0D8B2C6DDBDBFD8B1AECB92B7D2A4BFD8B29FB1908B8B8BB0B0B0
+      DBDBDBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B9B9B1D610A31A5112B8E
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F298E0C1B8A009DB2987C7B7D959595BC
+      BCBCE1E1E15C5E5C28850E2E99102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F268E092A8D0E2D931032A7122C920F2669132054111B500B1D600A2D96
+      102E9A102A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F10097E0083
+      BB73B0ABB2B7B7B8DBDBDCF3F3F47E7E7F216E0B30A1112B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2D8D12248D062A920D2B8E102B8E0F2B8F0F2E981030A1
+      1131A41132A51129A30639A719A5A9A47F7F7F84848544743733A9122F9C112A
+      8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8E0F2B8F0F31A11130A111277A11265418
+      253C1F293625283026212E1D1934112B8D0E2D95102B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F1E8B013F98259E9E9F7F7F7EA0A09FC8C8C8D9D9D83D4C392E
+      98102C930F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0E0E830088B07C9C919B
+      868583A7A6A2CCCAC6E4E2DCEBE9E2ECEAE1E4E6DA8DA48234872032A6112D94
+      102A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8D0F269C053E95256C686567
+      635C3A46332E9C1031A3112A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2A8D0F
+      2F9F102F9C0F276315283D1E2B3224292A2421261D172A0F184F082D95102F9D
+      102A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2D90111B8702178400C7D2C1B5
+      B0A6C6C1B4D9D6C5D1CDBF3A47312D95102D94102B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2E9011248C07228D042E90112B8E0F2B8E0F2E981031A21132A61131A3
+      112F9C1018980078B9657571716E6D67385B2C33A8112F9D102A8D0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8D0F2C930F32A7122E9A1025730F225413223D18
+      22331B212F1B202F1B1E2E17182F101245032F56216E6B667270698E8B81B1AE
+      A1CFCBBDE0DDCDE5E1D1E5E2D0E5E2D0E6E2D0E6E2D2E5E1D0E6E2D0E6E1D3E5
+      E0D3E5E1D0E6E2D0E6E2D2E6E2D2E6E2D4E6E3D3E6E2D4E7E3D6E6E2D5E8E3D6
+      E8E3D6E8E4D8E7E4D7E7E4D7E7E4D8E7E4D9E6E3D7E7E4D7E7E4D7E7E4D7E7E4
+      D6E6E4D5E5E3D5E8E4D4E8E4D5E7E2D5E5E1D4E6E2D3E7E2D3E7E3D3E5E2D3E5
+      E1D0E6E2D2E6E2D2E6E2D2E6E2D2E6E1D3E6E2D2E5E1CFE5E1D0E8E3D2E7E3D3
+      E7E3D4E8E3D3E8E3D2E8E3D2E8E3D2E8E3D2E8E3D3E8E3D3E8E3D3E9E4D3E9E4
+      D3E8E4D3E8E4D3E9E4D4E8E4D4E8E4D4E8E4D3E8E4D4EAE4D6EAE4D6E9E4D5E9
+      E5D6E9E5D7EAE5D9EAE5DAE9E6D9EAE7DAEAE7DAEAE7DAEAE7DBEAE7DCEAE7DC
+      EAE7DCE9E7DDE9E6DDEAE6DDEAE6DDEBE7DEEBE8DFEAE8DEE9E8DEEAE9DFEBE9
+      E0EBE8DFEBE7DEEBE7DEEBE8DFEBE9E2EAE8E1EAE8DFEAE8DFEAE9DFEAE9DFEA
+      E8DFEBE8E1EBE9E2EAE8E0EAE8E1EAE7E3EAE7E0EAE8DFEAE9DFEAE8DFE9E8DE
+      E9E7DEEAE6DDEBE7DDEBE7DEE9E7DCE9E6DBEAE6DCEAE7DBEBE7DBEBE7DBEAE6
+      DAEAE6DAEAE7DAEAE6DAEAE6DAEAE6DAE9E5D9E9E5D8EAE4D8EAE4D8EAE4D8EA
+      E4D8E9E4D8E9E4D8E9E4D7E9E3D7E9E4D6E8E4D5E8E4D4E8E4D5E9E4D4E8E3D4
+      E8E3D3E8E3D4E8E3D3E8E3D3E8E2D3E7E2D3E7E2D0E7E2CEE7E1CFE7E0D2E7E0
+      D2E7E0D0E7E0D0E7DFD0E7DFCFE8E2CDE8E1CFE7E0CFE7E0CEE7E1CEE7E0CDE7
+      E1CFE8E2CFE8E1CFE6DFCEE7E0CEE7E0CDE7E0CDE8E1CFE8E1CFE7E0CEE8E1CE
+      E7E1CEE7DFCDE7DFCCE7E0CCE7E1CCE8E1CCE9E0CCE9E0CCE9E1CDE9E0CCE9E0
+      CCE9E0CCE8DFCCE9E0CCE8DFCCE9E0CDE8DFCBE8DFCAE8DFCCE9E0CDE8DFCCE8
+      DFCCE8E0CCE8DFCCE7DFCBE8E0CCE8DFCDE6DECDE7DFCEE8E0CFE8DFCCE8DFCD
+      E8DECEE8DFCDE7E0CDE7DFCDE7DFCDE8DFCEE7DFCDE7E0CEE7DFCEE6DFCDE6E0
+      CEE6DFCDE7E0CEE6DFCDE6DECCE8DFCDE7DECCE8DFCCE8DFCEDAD2BDC0BAA4B3
+      AB95A49F8999987A908B72807C63706E524F553A343D22191F0F444E4B707968
+      0F1A11111A16141917181E1C171F1F202728393750B2B1C2B0BA834F53273D45
+      2C3747301A241617201E1B232118231F111E18141B1619281F3445394F645079
+      8B76ACB19FBFC5B0DDE1C951543EA3A2B4F9F8F2F0F1E7EBEAE0E6E7DEE6E8DC
+      E5E6DCE8E7DCE7E7CE4F5345D3D1E4EFEFEDE2E4DEE5E7DFE5E7E3E2E5E3DDE3
+      E2EAF1F0E9F0F1EFF3F1F9FAF9FCFFFEFFFFFFFFFFFFFDFFFFFEFEFFFEFEF9A6
+      B3ACE2EAF5F7FAFAF6F7F5BCC6D0F1FAF8C6DAE6EBF4F9D7DEDAEDF7F3FAFEFE
+      FCFEFFFBFEFDF9FBFCEEF3F4EEF2F2F3FAF9FAFDFDEFF8FAB3BAB6D7DBE3EAF1
+      F9F1F0EBE6E5E2DDD6CFE0D3C8E2D7C7D1CBAE403C2FD0C3BFE5D6BFE4D5C1BF
+      B8A051594AC8C0C0D5BCA8C3B9A3C3BAA8D5CEBAD8CDB6D7C8B1CEC4A8CEBDA2
+      CEBA9DD5C1A5B1A27F60594FCDBBB3D1B79CC6B199CCB499CAB195C4B296C5B1
+      92CDAE93C2AD98C3B39CCAAD96C5AD90BBA98DBEA58DBFAC96A29674746E62CD
+      C7B8D4C4ACCAB7A2B59F8CBDA38BBAA68CB59D88C5AD89BEAC92C3AA95C4AD8F
+      C4AD8BC3AA8EC2AC8EC4B092BEAB8FC2AA91C0AA8EBEAC8EC4AC90C4A98CC1AC
+      8FC2AF8CC6AA8CC4AC91BEAB8DBEAB91C3AD8BC1AB8DC4AC8FC2AE8FC2AD90BF
+      AD8EC6AE91C5AE8FC5AE91C3AF91C4AD90C3B291C2AE90C8B093C1AF95C3B196
+      C9AF92C9B197C8B398CBB397CCB397CCB797CCB299CCB39BCCB699CDB29ACDB7
+      9BCAB89DCDBA9DCFBA9DD0BBA2D0BAA2CEBDA3CEBBA2D3BDA4D2BDA3D5C3A7D6
+      C0A7D6C2A8D7C4A9D5C6ACD8C7AED9C7AFD8C6ACD9CCB0DCCBB1DACBAFDECCB2
+      DACBB0DBCEB1DDCFB5DBD0B4DACEB3E2CFB3E0CFB5E1CEB4E3D1B5E4D0BAE0D1
+      BCE2D1B9E3D2BCE7D4BAE3D1B7E8D6BEE4D4BFEAD7C4E9DBCAE9DDC7E2D8C1EC
+      DBC7E6DAC0E5D7C3ECDDC8E5DBC1EDE0C8EBDFC9EBDDC8EEE3CBE7DDC6E6DCBE
+      E5D3B8E5D1B9E7D1B9E7D3BA0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      DFECF6D5E9F7D6EAF7D9EAF7D3E7F6DCF3FFCAD3FD4A7E3902770094C399F2F8
+      FFCFE5F8C7DFEFC8DDEEC1D9EBC0DAECCCE2F1C5DDEEBED6EBDAE6FF99B2AB22
+      7D002B89000A79002A880BBCD7A8E1E9D3BBD3A3C4DAB5CCE0C3CADFC0BCD4A8
+      B3CE97BAD4A5C4DBBAC7DEBFBED7AFB0CC94ACCA8FBCD6ADC4DBBBA8B6A08B8B
+      8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCECECE264C1C32
+      A5112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1186007EAF70888489
+      8D8D8DB1B1B1D8D8D88888881F660B31A4112B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0E3091122D8A132394042F95102A8D0F2D961031A31132A51131A41131
+      A4112D95102A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2A8F0C
+      087D00ABCCA3BBBABDCECECFE9E9EAF8F8F9A1A1A21A580932A7112B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F258E09419728628D56208F012F9A0F2A8D0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2A8E0E1689009EBA96807E81929293AEAEAF778C72
+      34961933AA122D96102B8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8E0F2B910F309F
+      1132A5112F9E112C940F2A8B0E2C910F2D96102B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F278E091F8C02A4B3A08281829E9E9DC3C3C3E5E5E4
+      686968267E0D2F9E112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1A8A0052A0
+      3C908D8F807F7C9D9D99C3C2BEDEDCD7EAE9E1EBEAE1E9E7DEE8E5DAD8D5CA5C
+      804C30A0112D97102B8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F168F00
+      709F606D686577746A585E4B308D1533AA122C930F2A8E0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2A8D0F2C940F31A3112F9E112A8D0F26800D28850E2E981032A5112D
+      97102A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2E90111F89030078009EC791
+      C9C7BEC6C2B4D8D3C3E0DCCDE3DED14F504829870E2E99102B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F228D064D90394792322499052B8E0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B900F2C920F1F8E01409C269D9E9975736D8D8B845D705230971332A812
+      2C920F2B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8E0F2C930F30A01132A5
+      1130A0112E99102D94102D94102D96102F9D102CA30C2AA20B8D98856F6B6782
+      8077A29F94C4C0B3DBD7C8E5E1D1E7E2D4E5E0D2E5E1CFE6E2D0E6E1D0E5E0CF
+      E5E0D0E6E0D2E5E0CFE5E1CFE5E2CFE5E1D0E6E2D0E6E2D0E5E1D0E5E0D3E6E2
+      D2E7E2D4E6E1D4E7E2D3E7E3D4E7E3D5E7E2D5E7E2D4E6E2D2E6E1D3E7E2D4E7
+      E2D4E7E2D2E6E2D2E6E2D0E6E2D2E6E2D2E5E2D3E5E2D3E7E3D2E5E2D0E5E3D0
+      E5E3D0E5E3D0E6E1D0E5E1D0E6E1CEE5E1CFE6E0CFE5E1CDE5E1CEE5E2D0E6E2
+      CFE7E2CEE7E4CFE9E4CFE9E3CFE7E2D0E7E3D2E9E3D2E9E2D0EAE3D2E9E3D0E9
+      E4CFEBE4D0EAE4D0E9E4D2E8E3D2E8E3D2E9E4D4E9E4D2EAE5D3E9E4D5EAE4D5
+      E9E4D5EAE4D5EAE4D5EBE5D6EBE5D6EAE5D8E9E6DAE9E6D8EBE7DAEBE6DBEAE7
+      DAEBE7DBEBE7DBEAE6DDEAE7DDEAE7DDE9E6DDEAE7DDEAE7DDEAE7DDEAE7DDEB
+      E7DEEBE7DEEAE7DDEBE7DEEBE7DEEBE7DEEBE7E0EBE8DDEAE7DCEAE7DDEAE7DC
+      EAE7DCEAE7DCEAE7DCEBE7DEEBE7DDEAE6DEEAE7DEEAE7DBE9E7DBEAE7DCE9E7
+      DCE9E7DBE9E7DBEAE7DBEAE7DCE9E7DCE9E7DBE9E6DBEAE6DAEBE7DAEAE7DAE9
+      E5DAE9E5DAEAE7DAEAE7DAE8E6D9E9E5D9EAE4D8E9E4D7E9E4D7EAE4D8E9E4D7
+      E9E4D7E9E4D7E9E4D7E9E3D6E8E3D6E8E4D5E8E4D4E8E4D4E7E3D3E7E3D3E8E3
+      D3E7E2D2E7E2D0E7E2D2E6E1D0E6E1D0E6E2D0E7E2D0E6E1CFE7E0CDE8E0CEE8
+      E2CDE8E1CEE8E0CEE7E0CEE7E1CCE7E1CDE7E0CEE7E0CEE6DFCEE7DFCDE7E1CC
+      E7E1CBE6DFCCE7DFCEE8E1CFE5DFCDE7DFCDE9E0CBE8DFCBE9E0CDE9E0CEE9E0
+      CEE8E0CDE7E0CBE9E0CDE8DFCBE8DFCAE9E0CCE9E0CCE9E1CCE9E0CCE9E0CCE8
+      DFCBE9E0CCE9E0CCE8DFCBE8DFCBE8DFCBEAE0CCE9E0CBE9E0CAE9E0CAE9E0CB
+      E8DFC9E8DFCAEBE2CCEBE2CCEAE2CBE9E1CBEAE1CBEAE2CBEAE2CCEAE1CEEAE1
+      CDE9E0CCE7DECBE8DECBEADFCBEADECAE8DFCBE8DFCBE7DECAE7DECBE7DECBE7
+      DECAE6DFCBE7E0CCE8DECAE7DECBE7DECDE8DECDE8DECBE7DECAE6DECACEC8B0
+      9E9C8385816F7876606D6E556A684B626242655E46695A466D5F475954446966
+      71E8ECD90D1D080B19160F1B15131A14161F1D1E25222528289E9CB5B3C39645
+      4E24404B323C4D38192C1D313A38404E3B6B7C6AADBBACE7E6D9FFFFF1FFFFF3
+      FBFAEDEEEFE0E3E4D9E5E5DBE6EDD45E68489797A8EEF3EFEBEDDFEBECE3E9ED
+      E2EBECE3E8E9E2E1E8DFDDE4CC595E50727D91D4D8DCEBF2F1EEFAF6FBFCFAFA
+      FBFBFCFDFCFEFFFEFDFFFEFEFFFFFDFEFEFDFFFCFFFFFFFDFFFFFEFFFFFAFAFC
+      EBEFED96ABA0CAD5D9F0F7FAFFFFFFB2C0CDF3F7F5A8C0C6F1F3F5F6FAFDFFFF
+      FFF6FDFDE3EAEDCEDCDFDDE9EBF8FBFDEEF3F1E7EDF1E1E5E4E0E0D2C0C0AFD5
+      D1D4EDE3D8DAD2BDE3D5BFE5D6BEE9D4C0E8D6C5DBD2B3403D2EC1B3B3D5CAB8
+      D7CAB7CEC9AEBBBA9DD2CEBFD9CBB5D7C8B3D1C0A9CFBAA0D0BB9FD3BBA3CDBA
+      9FD2B99FCDB79CD6BEA5B8A9855B5143CCB9ACCAB297CBB199C9B196C9B696C6
+      B293C4AD92C4AA8DB4A88DB7AE99C2B499CABAA0C6B79BC8B89BC9B69BBAA98D
+      A4957CC0AF97BEA88CC0AA8BC2AC8EC3AB8DC6AC8FC3AA8DC4B091C2AB8EC0AB
+      8EC2AB8FBFAA8CBFAB8FC0A98BC2AA8FC2A992BEAB8BC2AC8FC3AC8DC0AA8DC0
+      AB8EC1AA8CC4AC8FC1AA8DC1AA8EC5A98FC4AB8EC3AB90C2A98CBCAB8DBDA98F
+      BFAC8EC3AE8DBFAB8DC1AD8FC0AE8EC0AC8EC8B093BFAC8FC6B293C8B192C8B0
+      97C5B29AC9B295CEB29BC9B193CBB697CAB396CCB696CBB799CDB799CAB698CB
+      B497CBB99ACDB89CCDBA9DD1B89DD1BC9DD0BBA0D0BCA0D0BDA2D2BDA2D3BDA3
+      D2C1A5D6C1A7D7C1A8D8C4A9D5C4AADAC8ABDAC7ACD9C8AFD8CAB2DDCAB4E0CD
+      B6DDCEB7D9D0B4DECEB2E0D0B7DCD1B6DACEB3E0CFB5E0D0B8E3D5B8E3CFB4E2
+      D1B8DED1B9E0D3B7E5D2BDE3D2B8E4D6BAE4D9BAE8D9BEEBDDC4E7D9C8E9DCC1
+      EBDAC4E5D9C3E8D7C5E6DAC7E7DBC6EEDFCCE7DFC7E9DFC4EADFC9EBDCCBEBDD
+      CBE8DBC7E8D4B9E7D5B9E7D2B9E5D1B79769FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFDFECF6DBECF8D9ECF8D3E9F7D6EBF9E3F5FF9AAFBA076A0066AE54EB
+      F2FFD1E3F6CBDFEFC5DBEDBDD6EBC0D8EBC5DCECCCE1EFCDE1F0C7DEEFDAE7FF
+      91AE9B1F7D00197F00459627CADFB9DFE8D0BDD5A6C8DCBACEE2C6CBDFC1CBE0
+      C2C9DEBFBDD5ABB0CC94BBD5A8C1D8B2AECB92AFCC94BED7AFBFD8B2BCD6ADA9
+      B8A28B8B8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6
+      4851452D940F2D95102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F19890051A0
+      3B9B989B858585A6A6A6CECECEADADAD1E4F1032A6112B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2A8F0D1F8C0684A67B6185581B9003309F112B8E0F2B8E0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2E91
+      11077C003C9720D9DBD9CECECFE5E5E6F5F5F6FCFCFDB9B9BA1F4F1231A4112B
+      900F2B8F0F2B8F0F2B8F0F2B8F0F268D09319913999F986473601E8E0431A211
+      2B8E0F2B8E0F2B8F0F2B8F0F2B8F0F2C8F1014880071AB629A959C979798B6B6
+      B7DADADBC7C9C7739B69329D1433A9122E99102B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2C910F2D94102E97102D95102C920F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1187008BB57F9C999CACACABCACA
+      CAE7E7E69F9F9E1B5A0A32A6112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F25
+      8D07278F0AA5AEA179777593938FB7B7B3D8D6D1E9E6DFECEBE1EAE8DFE7E4DA
+      E5E3D8D7D4C845623830A0112C910F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F218D032F9411989B91726E648E897E8A887C52843D31A51232A5112C920F2B
+      8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C910F2D97102F9C102E99102C930F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F102C90100F8000087C0093C1
+      85D7D4CDCAC6BAD9D4C7E1DCCFE4DFD1E5E1D068656023760C2F9E102B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F17870070B05E7E7E7817651333AC102B910F2B8E0F
+      2B8F0F2B8F0F2B8F0F2B8F0F288E0B1C8A01A3B39C7B78758F8E86B1AEA59FA0
+      94588D4431A51232A6122C930F2B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B900F2C920F2D940F2D940F2C930F2C910F2C9010188D00619F4F
+      8A83858380799C9B92BDBCAFD7D3C2E3DED2E6E0D5E6E1D3E6E2D2E6E2D0E5E1
+      D0E5E1D0E5E1D0E6E2D2E6E2D2E5E1D0E6E1D0E6E1D0E5E0CFE5E0CFE5E1D0E5
+      E1D0E6E2D2E5E1D0E5E1D0E6E1CFE6E2D0E6E2D2E5E1D0E5E1D0E5E2CFE6E2D2
+      E6E2D2E5E1D0E6E2D2E6E2D2E6E2D2E6E1CFE6E1CFE6E1CFE5E1CFE6E2CFE5E1
+      CFE5E1CDE6E2CDE5E1CEE3E0CEE6E1CFE8E1CEE6E0CFE5DFCEE5DFCEE5DFCEE5
+      E0CFE6E1CFE8E2CFE9E3D0EAE3D2E9E3CEE9E3CEEAE4CFE9E4CFE8E4CFEBE4CF
+      E9E4CFE8E4CEE9E4CFE9E4D0E9E4D3E9E4D3EAE4D3E9E4D3EAE4D4E9E5D4E9E4
+      D5E9E4D5E9E4D5E9E4D5E9E4D8E8E5D8E8E5D7E8E5D8EAE6D9E8E5D8E9E6D8E8
+      E7DAE9E5DAEAE5DAEBE7DBEBE6DBEAE7DAE8E6DAE9E6DAEAE6DAEAE6DAE9E7DC
+      E9E7DDE9E7DCE9E6DDE9E6DDE9E7DDEAE7DDEAE7DDE9E6DCEAE7DDEAE7DCE9E6
+      DCE9E6DCE9E6DCE9E6DBE9E7DBE9E7DBEBE7DBEAE6DAEAE6DAEBE7DAEAE7DBE9
+      E7DBEAE6DAEAE5DAE9E5DAEBE6DAE9E7DAE9E7DAE8E7DAE8E7DAE9E6D9EAE7DA
+      E9E6D9E8E5D8E7E5D8E9E5D8EBE5D9E9E4D8E9E4D7E9E4D7E9E4D7E9E4D7E9E4
+      D7E9E4D7E9E4D7E8E3D7E8E3D6E9E4D7E9E3D6E9E3D6E9E3D5E9E4D4E8E3D3E8
+      E3D2E9E1D3E9E1D2E8E0D2E7E2D2E7E1D0E8E0CEE8E1CEE8E1CFE8E1CEE9E2CE
+      E9E3CEE8E3CDE9E1CFEAE1CDEAE1CCE9E0CCE9E1CCE9E0CDE9E0CDE9E0CCE9E0
+      CDEAE1CCE9E1CCE8E0CBE8E0CCE9E0CCE8E0CBE8E1CAE9E1CBE9E0CCE8DFCDE8
+      DFCBE8DFCBE8DFCCE8DFCBE9DFCCE9E0CCE8E0C9E9E1CBEAE2CCE9E2CBE9E1CB
+      E9E1CCEAE2CCEAE2CCE9E1CBEAE2CCE9E1CBE9E1CBEBE2CCECE2CCEBE2CCEAE2
+      CBEAE1CBEAE2CBEBE1CBECE2CDECE3CCEBE4CCEAE3CCEAE3CCEAE2CCE9E2CBEA
+      E2CCEAE2CCE9E1CBE9E1CAE9E1CBEBE1CBEBE1CAEBE1CBEBE1CBEAE0CAEADFCA
+      E9DFCAE9DEC9E8DECAE7DFCBE7DEC9E7DECAE9DFCBE8DFCCE9DFCAE9DFC9E8DE
+      C9D8D0B7B3B19678765A4C513C424832454A3450503951503E554F3D56503954
+      4E3C645F60D3DBC713220F0B1B150D19141720131019151B211A1E2524918DA7
+      F2F7E4BAC190404C293D4C311B2B16AAAEA9F9F9EBF3F8E4F9F4E7F0EEE3E5E8
+      DADEE4D5E5E5DDE4E4DBE4E4D9E1E2D9ECF0D56C6F498D92A2FBF7F5E5E7E1D5
+      D8D2C6D0CAC8D3CFCBD7D59BA6A4E3EBDD4D5A45C5CCE4FFFFFFFFFFFFFDFFFF
+      FFFFFFFFFFFFFEFFFFFFFFFFFFFFFEFCFDFEF7FAFAF2F7F6EBF5F4E6EBEBDAE5
+      E4EEF1F0FAFCFDFCFFFFF2F9FAF0F7F5657377A0AFC2F6FAFEE5E5E4FAFDFDEA
+      F3F5C8D4DFD4E1E4F2F5F3F6F3F3DADEDCDED9D6DDD1CDECEAE8E9E5D8E5DACA
+      CAC2AAD0CCCAF2EBDDE5DBC8E7DAC9E7D7C6E1CEBDCBBDABD5D0B23F422EBDB4
+      AFDCD1BFD7CDBAD8C9B1D6C4ABDBC4ACD5BEA9D7BEA4D3BCA0D1BAA0CFB8A5CF
+      B99AD0BA9DCEB799D1B89FD0B89CB5A885585044CCBAAFCAB199C3AC90BEA889
+      BAAC96BEB296C4BCA0CBC6A7D7C6B8C1B3A3BAAA8DBAA588C0A58DC2AC8EC3AF
+      8FBEA88DBFAE8FC2AC93BAA88CC1AC8EC0AB8CC0AB8DBFA889BFAB8CC3AA90C2
+      AC8EC0AA90BEAA8CC4AF91C2A88CC0AA92BFA587C2AC8EC4AC95BEA888C3AD8E
+      C2AB8DC0AA8DC1AA8BC0A98FC1A892C2AC89C0AB8CC2AB8EC1A98DC5AB90C1AC
+      93C1AC92C2AC8FC0AC8CC3AC8DC6AD93C6AE95C0AF8DC2AD8EC8B096C6AD8EC4
+      AE93C3AE93C6AD90C8B298C3B090C8B693C9B697CBB198CBB497CAB696CAB496
+      CCB799CFB89DCCB89FCCB7A0CFB79FCFB99DCAB89BD0BBA0D3BDA2D3BBA2D1BC
+      A3D1BEA5D2BEA5D7C1A7D4C1A8D4C3A7D9C8A9D4C3A9D7C7B0D8C8B0DDCAB3DB
+      CCB5DBCEB5DECFB4E1CDB6E0CEB6DDD2B6DED1B6DDD2B7E1D1B7E1D2B8E0D1B8
+      E5D1B8E2D0B6E3D5B6E4D5B8E5D4BFE5D2BCE5D2BAE5D5BCE3D7C0E5DAC2E8DA
+      C5EADBC8E8DAC8EADDC3EADBC3E7DAC0EBDCC7EBDECAE9DDC8EDDCC7EBDECAEB
+      DEC8EBDAC5E8D7BFE6D5B9E5D2B9E6D4B8E5D1B70000FFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFDFEBF6D9EAF7D8E9F6D0E6F5D4EBFADEE8FF61935D1B7F00
+      BFDAE9D5E5FFC1D9EBC4DAECCCDDEEC8DCEEC2D9ECC8DEEECBE0EED0E0EECFE0
+      F1E5E7FF80A2800A7500378E10D2E1BFDFE8D0C1D8ADCCDFC0CFE2C7CDE1C4C4
+      DBB6C2D9B3CADFC2C9DFC1BED7ADB6D19EB0CC94B2CE9AC0D8B3C5DDBDBBD5AB
+      AECC93A2B3968B8B8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFF78787824770D309F112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F24
+      8D052C900EA4ABA37D7C7D9B9B9BC4C4C4C9C9C92A43232F9D1129900C288E0C
+      298E0C298E0C298E0C298E0D078000A1CE94B8B4B97F887F3F932833A912309F
+      112B910F2A8D0E2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F102C8F1021
+      8A04017900278C14D2DFCDDEDEDFE8E8E9F4F4F5FBFBFCFDFDFED0D0D125451C
+      2F9F112A900E2A8F0E2A8F0E2A8F0E2A8F0E288D0B138500B6D1AFB7B4B8838A
+      833C902533AB122F9D102B8E0F2B8E0F2B8F0F2B8F0F1E8B013F9924B9BABAAA
+      AAABC2C2C3DEDEDFF3F3F4FDFDFED7DAD68AAB80328427087A00087E001B8700
+      238B052B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F298E0D0D8100479D30CFCDCFC8
+      C8C8DBDBDAEEEEEDD1D0CF2B4A2231A2112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0F15880094B28B7D797B8B8A87AEAEA9D0CEC8E4E2D9E9E8DEE7E5
+      DCE3E1D7E0DFD3DDDACD85827B1F670C31A3112B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F1286009CBA9177736D8B887DB0AC9FD0C8BA9CA18A5A9142
+      2795082398021F8901258C092D90102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C8F10258C08118100047B003B9728BB
+      D2B1DBD9D1D4CFC3DCD8CDE2DCD1E4DFD3E5E1D4E5E2D47D7B741E650A31A211
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1F890149A82EA9A7A3918D873B712B33A8
+      1230A0112B900F2B8E0F2B8F0F2B8F0F2C8F1011870086B3799692919C9A92B5
+      B3AAD0CEC3E2DFD2A7AF99598C481D86062398021F8C012189042C90102B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F278E
+      09218D05A0A99897938DABA89EC4C0B3D8D4C6E4DED2E6E1D5E6E1D3E6E2D2E6
+      E2D2E7E2D3E7E2D3E6E2D2E6E2D2E6E2D2E5E0CFE5E0CFE6E1D0E6E1D0E5E1D0
+      E5E1D0E5E1D0E5E1D0E5E1D0E5E1D0E5E1D0E5E1D0E6E1D0E6E1D0E5E0CFE5E1
+      CEE5E1CFE5E2D0E5E1CFE6E1CFE5E0CFE5E0CEE6E1CFE6E1CFE5E0CEE5DFCDE7
+      E0CEE7E1D0E7E0CFE7E1CFE8E1CFE6E2CDE6E3CCE6E3CCE7E2CEE6E0D0E5E0CF
+      E5DECDE6DFCEE9E2D0E9E2CFE9E3CEE9E3CFE9E3CEE9E3CEE9E3CEE8E3CEE7E4
+      CFE9E3CEE9E3CEE8E4D0E8E3CEE8E3D0E9E4D3E9E4D3E9E4D3E9E4D3E8E4D3E9
+      E5D4E8E4D4E8E4D4E9E4D5EAE5D6E9E4D8E8E5D8E8E5D8E8E5D8E9E6D9E8E5D9
+      E8E5D9E8E5DAE9E6DAE9E5D9E9E5DAE9E5DAE9E5D9E7E4D7E7E5D6E9E6D7E9E7
+      D8E8E5DAE9E6DAE9E6DAE8E5DAE8E5DAEAE6DBE9E5DAE8E5DAE9E6DAE8E6DBE8
+      E6DCEAE7DDEAE7DDEAE7DDE8E5DBE9E6DBEAE7DBE9E7DBEAE6DAEBE7DBEAE6DA
+      E9E6DAE8E6DAEAE6DAEBE6DAEAE6DAE9E5DAE9E5D9E9E6D9E9E6D9E8E5D8E8E5
+      D8E8E5D8E8E4D7EAE4D7EAE4D7EAE4D7E9E4D7E9E4D7E9E4D7E9E4D7E8E3D7E8
+      E3D6E9E4D7E8E3D7E8E3D6E8E3D5E8E3D6E9E4D7E9E3D6E9E3D6E8E2D5E8E3D4
+      E8E3D2E8E3D2E9E2D2E9E2D2EAE2D2E9E2D3E8E3D2E7E2D0E8E0D0E8E1CFE8E2
+      CCEAE3CDEBE2CEE9E1CDEAE1CEEAE2CDEAE1CDE9E0CDE9E0CCEAE1CDEAE1CDEA
+      E1CDE9E0CCE9E1CBE9E1CBE9E1CBE9E1CCE9E0CCE9E1CBE9E1CBE9E1CBE8E0CB
+      E8DFCBE8DFCBE8DFCBE8DFCBE8DFCBE8DFCBE8DFCBE8DFCBE8E0CAE8E0CAE8E0
+      CAE9E1CBEAE1CDEAE1CCEAE1CCE9E0CBE9E2CBEAE3CDEAE3CDE9E1CBEBE1CCEB
+      E2CCE8E0CAE8E0CAEAE2CCEBE1CBEBE2CCEBE1CBE9E1CBE9E1CBEAE1CCE9E1CB
+      E9E0CBE9E1CBE9E1CBE9E1CBEAE3CBEAE3CCEAE1CBEBE1CBEBE1CBEBE1CAEAE0
+      CAEAE0C9EAE0C9EAE0C9EAE0C9EAE0C9EAE0C9E9DFC8EADFC7EBE0C9EAE0CAEA
+      E0CAEAE0CAE9E0CBEBE6CEA3A583737053595E3E464C32393C252C2D1C303227
+      424237564B405A535ED4DACA0F2003091508161E133A43314952351F2A161019
+      18677481F0EEEFF2F3E6EBEED4C2CDAAC2CAB0DADDD4E4E5DDE3E4D6E2E4D9E2
+      E2D8E2E4D7E4E7DCE9E7DDEBEADFE7E9E1E2E4DBC9D2C6889B7E9CA6A7EDF0F0
+      CAD8D8D5E6EBE4EFF3E8F3F1F2F9F8B0C5C3E5F3EE586256BCBDD9FFFFFFFFFF
+      FFFFFFFFFCFDFDF7F9F8F1F5F5F1F7F6F1F7F6F1F7F5F0F7F5F1F7F5EAF1F1EA
+      F2F2FAFCFDFDFDFDF8FAFBF0F7FBD2DCDDCAD3D38A9789A8B6B8EBF4F6B6C1C3
+      DEE2DFC5D2D3FFFFFFEDEEE3DDD3C6E2D6C2CEC8B3ECE4D9E9E1CEF2EEE7EFEC
+      DEEBDECAD2C7B1C2BAB4FAF0E4E6D9CADAD1BDCABEABD2C9AFE1D2BFE4D9BD3E
+      4029C0AEA6D5C2A6D7C3AAD9C1A7D6BEA4D4BEA3D2BAA3D1BCA0CCB89AD0B99D
+      D1B99BD2B799D0B79ACFB79BCFB39AD5BEA5B5AA8951443CB2A0A0B4A590CBBE
+      A6D1C7AECBC3AEBFB49CC2AF9ABFAD8EC2AB93B7A690C6AC93C5AE96C3AB8EC2
+      AA8EC1AA8DBFAD8FBEA989C3AA8DC2A98EC2A98DBCAA8CC2AA8DC3AC8EC0AC8C
+      BDA88EC0AB93BDAA89BEAC8CBEAA8CC1AC8EBFAA8BBAAA8DBEAA8EBFAB8BC0AB
+      8DC0AA8CBFAA89BBAB88BDAB8FC2AA8CC1AC8CC2AB91BEAD8EBEA68BC0AA8EC0
+      A58CBEA98CBFAC8CBBA88CC0A991C1AF90BDAC8DBBAA8BC3AE92C2AE91C2A98E
+      C3AD95C6AE92C5B192C9B295C3AF91C9B196C4AE96C9B293C6B090C5B198C5B2
+      98C8B398C8B79AC6B697C8B498C8B697CBBA9FD0BA9DCCBA9BD0BB9FD4BB9FCF
+      BB9DD0BBA2D2BCA2D2BEA4D5C2A6D2C0A5D2BEA9D6C0A7D6C3A8DBC5AED5C2AF
+      D7C9B2DACBB2DECBB5DACAAEDBD3B9DDCFB6E1D0BADCD1B8DDD5BCDED2BFDBCF
+      B9E4D6C1E2D1B9E5D1BEE5D1BAE5D1B8E2D2BFE0D1B9EAD5BCE5D4BEE7D8C0E8
+      D6C2E8DBC1E5DDC1E5DCC3E6DBC5E5DAC3ECDDCAE9DEC5E6DDC3EBDBCAE5DCC1
+      E7DEC5E9DBCAEBDEC4E6DAC0E5D4B6E7D5B7E2D2B7E5D2BD9769FFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFE3EEF7D6E8F7D5E6F5D6E9F6D3EBFBD2DDFF3D84
+      2352A031E9F0FFD3E4F5D4E4F2D8E7F4DDE8F5DCE8F4CBDEF0C5DBEEC9DCEED5
+      E3F0DCEBFADCDDFF5F90510070006EAD4CEFF2E9C8DDB8CEE1C3D2E4CBCDE1C3
+      C3D9B0BFD7ACB9D2A1BFD7AEC8DEBFC9DEC1B7D1A0B4D09CC2D9B5C5DCBCC0D8
+      B3BDD6AEB0CD989AAD878B8B8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFABABAB1C570B32A7112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F
+      2B8F0F2B8F0E15880096B28E807D80929292B8B8B8DCDCDC565C53138000128A
+      001081001081001081001081000F800000740056AC3EEBE9EBE6E6E6E4E4E49E
+      B2994C8D48127E090B82000B7E001181001081001081001081001081000B7E00
+      067B001E88026DB060E4EBE1EDEDEDF1F1F2F8F8F9FCFCFDFDFDFEFEFEFFF0F0
+      F13546330D86000D83000B7E000B7E000B7E000B7E000A7D00006D00ADE19EDF
+      DCE0E5E5E6D8D8D88BA585358529097F000D81001181001181000D8000007900
+      C4DABECDCCCEDADADBEAEAEBF7F7F8FDFDFEFDFDFDFDFDFDFCFCFCE0E9DDBBDF
+      B16CB1582C9011097D00087C000D7F0010810010810011810011810011810011
+      81001181001181001081001081000F80000A7E00087D000F8000198500459D2C
+      F0F0F0E6E6E5EEEEECF6F6F5F7F6F54D554A2B900F2D96102B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F1487006AA6588D898D83837FA0A09CC0BEB9D5D1CBD9
+      D7CFD7D4CCD4D2C7CECDC2C7C4B9908F871A400F31A3112B900F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2C8F1011840085B6758985838D8B80B5AFA2D2CBBDDFD9
+      CBE3DDCEC0BFAD8BAD7754A43B1B88000279000F800011810014830020890323
+      8B06228B05238B06218A031985001181000D7F00067C001985004FA03BA2C795
+      E4E3DCDBD7CEDCD6CCE1DCD0E4E0D3E5E2D6E5E2D6E5E2D6E4E1D69F9E951452
+      02169B000C7F000D7F000D7F000D7F000D7F00047B00077C00E6E9DEC5C2B7CE
+      CCBF87967945902D138700128500138200218A04248B070F8300469C2DC8C5C0
+      B6B4AAC6C3B9D7D4C9E1DFD2E6E4D6E6E4D6D4D5C59BB38B64A94D309513057B
+      000B7E001181001181001D8800238B06238B06258C08258C08228A05228A041C
+      870013820000720054A43ECCC7C2C7C3B4D4CFC1DFDACDE5E0D1E5E1D2E6E1D3
+      E6E2D0E6E2D3E7E2D5E6E1D4E5E0D2E6E2D2E6E2D2E5E1D0E6E1D0E6E1D0E5E0
+      CFE5E0CFE5E1D0E5E1D0E5E0CFE5E1D0E5E1D0E4E2CFE5E1CFE7E0CEE6E1D0E5
+      E0CFE5E0CEE5E0CEE6E1CFE6E1CFE6E1CFE6E1CFE6E0CEE7E1CFE7E1CFE6E0CD
+      E5E0CEE7E2D0E7E2D0E6E1D2E7E1D2E7E1D0E9E1CEE6E2CDE5E2CEE8E2D0E6E1
+      D0E5E0CFE5E0CDE7E1CCEAE4CFE8E2CDE9E3CDE9E4CEEAE4CFEAE3CEEAE4CFE9
+      E4CEE8E4CFE9E4CDE9E3CFE7E3D2E7E3D0E8E3D2E8E3D3E9E4D3E9E4D3E9E4D3
+      E8E4D3E8E4D4E9E4D5E8E4D4E8E4D4E9E4D5EAE4D8E9E6D9E8E7DAE8E6DAE9E7
+      DAEAE6DAEAE6DAE9E6DAE9E5DBE8E5DBE8E5DAE8E6DAE9E6DAE9E5D8E8E4D7E8
+      E6D8E9E6D9EAE5DAEAE6DAEAE6DAE9E5DAE9E5DAE9E5DAE9E5DAE9E5DAEAE6DA
+      E9E5DBE9E6DCE9E6DCE9E6DCE9E6DCE9E6DCEAE7DBEBE7DBE8E7DBE9E7DBEBE7
+      DBEAE6DAE9E6DAE8E6DAEAE6DAEAE6DAEAE6DAE9E5DAE9E6DAE9E6D9E9E6D9E9
+      E6D9E9E6D9E8E5D8E8E4D7E9E4D8E9E4D8E9E4D7E9E4D7E9E4D7E9E4D6E8E3D5
+      E8E3D5E8E3D6E9E4D7E8E3D6E8E3D6E9E4D5E8E4D3E8E4D4E8E2D5E9E3D6E8E2
+      D5E8E3D3E8E3D2E8E3D2EAE3D2EAE3D2E9E2D0E9E1D0E8E2D0E6E2CFE7E1CFE8
+      E1CFE8E1CEEAE1CDEAE1CDEAE1CDEAE2CCEAE3CBEAE1CEEAE2CEEAE2CCE9E1CC
+      EAE2CCEAE2CCE9E1CBEAE1CCE9E1CCE9E0CCE9E0CBE9E0CCE9E1CCE8E1CBE8E0
+      CBE9E2CBEAE2CCE9E0CCE8DFCBE8DFCBE8E0CAE7DFCAE7DFCBE8DFCCE8E0CAE8
+      E1CAE8E0CAE8E0CAE8E0CCE9E0CCE9DFCCE8DFCBE8E0CAE9E1CCE9E1CCE8E0CC
+      E9DFCCE8DFCBE8DFCBE8DFCBE8DFCBEAE0CAEBE1CAEBE1CBE9E1CBE8DFCAE7DE
+      CAE8DFCBE8DFCBE8DFCBE9E1CBE8E0CAE8E0C9E8E1C9E9E1CAEBE0CBEAE0CBEA
+      E0C9E9E0C9EAE0CAEADFCBE9DFCAE9DECAEADFC9EBE0CBEADFCAEAE0C9EAE0C9
+      E9DFC8E9DFC9EAE0CAEAE0CBE0DAC5A8AC8F8586666165415C623F605F414F4F
+      332A361A1E261925262236394BCFD4CA60774EAAB398D0D5C3F6F7E3FAFAE1C3
+      CA9DA7B79DD5DED4E6E5DFE5E4DDE4E4DBE7E9DDEAE9DEE5E6DAE4E4DAE7E7DE
+      EFEDE3FBF5EDF6F3EBE1DFDACECDC69EA29F58667174869B5C7786B5C4D0A4AE
+      BA91A2952F4747D9DFF5FFFFFFFFFFFFFFFFFFE1E7E4EAF0F06B7A63545D6ED7
+      DDEDEBEEF1E5EAEBE8F2F1F8FBFBFCFFFFFBFCFCF9FCFCF1F8F8E7EBEFD8E4E4
+      ECF5F3F8FDFCF1F7F6E3E8EED9DFE0D8E1E1EAEEF1F1F1F1EEF2E29A9E95EEE9
+      E7E9E2D6EEEBD9BBBAB5FFFFFFE5E2CFEBDDCDEDE2CCC5BAA8D5C9C1E6DBCEC1
+      C0B3B7B9B1DBD4C5D8CCB9B6B2A8F7EFE2E3D9CAE8DCC9E6D9C1E5D4B7E1CDB4
+      E1D4B24D4B2EB8ABA5D6C2A9D5C2A5D6BCA4D4BDA2D0BAA2D2BA9DCEBA9DCFBA
+      9CD0B99BCEB297C3AD91C5AF98C9B49BCCBA9BACA07D938F6E4D4E3EBFBAA9CA
+      B4A0C2AE95C3AB90C4AB8EC3AE91C5AF8FC5AF91C3B091BCAB8EC2AB90C5AC92
+      C3AD90C3AE90C2AD8FC4AA8EC4AC8EC1AB8DC1AA8CC3AC8FC4AB8DC0AB8CC2AB
+      8DC3AB8EC3AC8EBEAA8DC1AC8FC0AA8DC0AB8EBEAB8BC0AC8BC2A88FC1AA92C0
+      AB8DC1AC8CC0AD8DBFAB8CC0AD8DC0AB8EC3AB8CBFA98EC0AB8EC2A98BBEAA89
+      C2AB8DBFAA88C1AC90C0AB8EC3AC8FC3AC8EC3AB90C3AC90C2AD91C0AB90BFAD
+      90C8B292C1AF8FC4AF93C2AD91C3AF93C6AE95C6AF90C5B096C8B297C8B396C6
+      B399C8B699CAB699CAB195CEB79CCFB99CCBB89DCAB79ACCB99DCDB89AD0B99B
+      D1B69CD0B9A0D1BA9DD0BA9FD4BCA4D4BCA4D6BEA5D6C3A6D2C0A7D2C2A9D6C5
+      A9DCC6ABD8C9ABDAC9AED9CAB1E1CFB6D8C7ABE1CEB6E1CFB8DDCFB5E0D2B9E2
+      D1B9DED2B8DDD2B7E3D2BAE2D5BFE5D1B7E5D1BCE3D3BCE3D5BAE7D5B9E3D3B8
+      E7D6BCE5D7BCE6D7C2E8D6C1E5D8C0E8DAC4E9DAC0EBD9C3E9DAC5E6DCC3E8DB
+      C6EBDDC9E8DCC8E9DEC7EEDCC6ECDDC3E3D7BDE8D2BAE4D1B6E6D3B79769FFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3EFF8D7E9F8D3E8F7D3E9F7D3EDFEC9
+      D5FA317B1069A94FFCFAFFDEECF7E1EBF6E5ECF7DFE9F5D9E6F3D9E6F3D4E2F1
+      D4E1F1DDE8F5E9F7FFBABFE0327A10097B00ABCE9AEEF3ECD2E4CAD3E4CCCDE0
+      C2C0D7ACBBD4A3C7DDBBC1D8AFB4CE99BCD5A7C6DCBBC2DAB5C2DAB6C5DDBCC1
+      DAB5B0CD96B5D1A0C0D8B3A2B3958B8B8BB0B0B0DBDBDBF5F5F5FFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFDDDDDD304A28309F112B910F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2C8F101387006FAA5F8F8B908A8A8AADADADD5D5D5D2D2D2C9
+      D7C5DDEFD8DCEBD7DBEAD6DAEAD6DAEAD6DBE9D6D6E8D1DAEAD6FAFAFAF8F8F8
+      FBFBFBFDFDFDFEFEFEF4F8F4E3F3DFC2E0B98AC07B7EBA6D7AB86A79B76879B6
+      6892C385BCD9B4E5EEE3F6F6F6F7F7F7F9F9FAFCFCFDFDFDFEFEFEFFFEFEFFFE
+      FEFFFEFEFFC6C7C6CDDFC9D2E7CCD1E5CBD0E5CBCFE4CACFE4CAD1E4CBC2DDBD
+      EBF7E8F6F5F7F7F7F8FAFAFBFCFCFDFEFEFFEBF5E9C3E3BA88BF7874B5626EB1
+      5B4FA244C7E8BEEFEDF0EFEFF0F6F6F7FBFBFCFDFDFEFDFDFDFDFDFDFDFDFDFD
+      FDFDFDFDFDFDFDFDF9FCF9E2EFDED9EED4B1D5A689BF7A80BA6F71B35F6CB058
+      6CB0596CB0596CB0596AB05774B4627DB96D8BBF7CA8CE9DC2DCBBD1E3CBE9F0
+      E6F5F7F3F7F8F7F8F8F6FAF9F8FBFAF9FCFBFA7F7E7E22710C309F112B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F1E8B013C9722A2A2A07A7A7791908CA8A7A3
+      B6B4AFBAB9B2B7B5AEB4B2AAAEADA4A5A39A5E5C57153F0A31A5112B900F2B8F
+      0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1183007DB76D9C979597948AB9B6A9D3
+      CFBFE0DCCCE3DECFE4DECEE5E2D5E5E2D9E1E4D5CDDFC29AC38977B36464AA4F
+      3E97242E8F122C8E102A8E0D3392184C9E3467AC5282B870ADCDA1D3DDCAE6E4
+      DEE2E0D6E0DDD1E1DDD2E4DDD2E5E0D3E5E1D4E5E2D5E5E2D5E5E3D5E5E3D5D1
+      CFC37E8C739CCB879EC78D9BC48A9AC3899AC3899AC28998C28890C080EEEDE8
+      DAD6CCDEDBCFE3DED3E4E2D6C7CDB89EC48A73B45E3D97222A8E0E248A062C91
+      10EAEAE1D2CFC2D7D4C7DEDBCDE3E0D2E5E3D5E5E3D5E6E4D6E5E3D5E5E3D5E4
+      E5D6CEDBC0B1CEA183B96F70B05A4A9D302F90132C8F10228904218A042B8E0F
+      2E9013449A2A62A94C72B061A4CD96E6E4DCDAD8CBDFDCCDE3E0D1E5E2D2E6E2
+      D2E7E3D2E7E2D0E5E1D2E5E1D3E5E1D0E5E0CFE5E0CFE5E0CFE5E0CEE5E0CFE5
+      E0CFE6E1CFE5E2D0E6E1D0E7E1D0E5E0CFE5E0CFE5E0CFE5E0CFE5DFCEE5DFCD
+      E5DFCEE5DFCEE5E0CFE5E0CFE5E0CFE5E0CFE5E0CFE5E0CFE6E1CFE6E0CEE6E1
+      CFE6E1CFE6E1CFE5E1CFE5E1CEE6E0CFE6E0D0E6E0D0E6E0CFE5E1CFE5E0CEE5
+      E0CFE5E1D0E6E1D0E6E0CFE6DFCEEAE3D2E9E3D0E8E3CFE7E3CFE8E3D0E9E3D2
+      EAE4D0EAE4CFE8E4CFE8E4CEE8E4CFE9E4D2E8E3D0E8E3D0E9E4D3E9E3D2E8E3
+      D2E9E4D4E9E4D3E9E4D3E8E4D4E8E4D4E8E4D4E9E4D3E8E4D7E7E5DAEAE7DBE9
+      E6DAEAE6DAEAE6DAE9E7DBE9E7DCE9E6DCE9E6DCE9E6DCE7E5DBE9E6DAEBE7D9
+      E9E5DAEAE6DAEAE6DAEAE5DBEAE5DBEAE7DAEAE7DBEAE7DBE9E6DAE8E5DAE9E6
+      DAE9E7DBEAE7DBEAE6DBEAE6DBEAE6DBEBE7DCEBE7DAEAE7DAEAE6DAEAE6DAEA
+      E6DBEAE5DBE8E6DBEAE6DBEAE6DAEAE6DAE9E6DAE9E6D9EAE7DAEAE6DAE9E5DA
+      E9E5DAEAE6DAE9E6D9E8E5D8E8E5D8E8E5D8E9E4D8E9E4D7E9E4D6E9E4D6E8E3
+      D5E9E4D6E9E4D6E9E4D7E9E4D7E8E3D6E8E3D6E8E3D6E7E2D5E7E2D5E8E3D6E8
+      E3D3E8E3D3E8E3D2E7E2D2E7E2D0E9E2D0E9E2D0E9E2D0E9E2CFE8E1CFE8E1CE
+      E8E2CDE8E2CDE8E2CDEAE1CDEAE1CCEAE2CCEAE2CDEAE2CDEBE2CEEBE2CEE9E1
+      CDEAE2CDEBE2CEEAE1CDEAE1CCE9E1CBE9DFCCE9E0CCE9E1CCE9E1CBE9E0CBE9
+      E0CDE9E0CDE9E1CBE9E1CCE8DFCBE8DFCBE9E0CCE9E0CBE8DFCAE8E0CBE9E0CC
+      E8DFCAE9E0CBE8E0CAE8DFCBE7DFCDE9E0CCE9E0CCE8DFCBE8DFCCE9E0CEE8E0
+      CEE8DFCCE8DECAE9E1CBE9E0CCE8DFCBE8DFCBE8DFCAE8E0CAE8DFCBE8E0CBE8
+      DFCAE7DECAE7DECAE8DFCBE8DFCDE8DFCCE8DFCCE8DECBE8DFCAE7DFCAE7DECB
+      E9DECAE9DECAE6DECAE7DECAE7DECAE6DEC9E7DECAE7DECAE8DECBE9DFC9EADF
+      C9EAE0CBEAE0CAE9E0C9E9DFC9E6DEC7DDD6C3EAE3CCE8D9BFE5D4B6C0B689A8
+      9D6E807951666441575C3E4C503F403C44F2ECF6F6F4E9EEEBE1E5E7D8DEE3D2
+      E5E4D5E6E6D8EAE8DDE7E4DAE4E2D4E7E5DAE5E3D7E3E4D8E4E3D8DDDCCEDDD6
+      CBC9C7B7A6A6A5979A918888867B817E69736D545E5E3A4E4C526B6E465E5545
+      5A57829097BFC8AB3F4F3B525B72727C9A9DA5BDE4E6ECC4D3D6D3E3E16C806C
+      747F90F3F5F5EEF7F6F6F8F6F6F9FAF7FBFBF6FBFCE3EEEFD9E4E4DEE7E8EEF5
+      F8EAF3F3E4ECEFD9E0DECDD7D4E8E9E8F2F2EDEBE6DBE5DDCCE3D8CDEFE7D6A5
+      A191EFE9E0ECE4CFFAEDDABBB6ACECEFF1E3DCD0E9DDCCECE1CAC2C2AAA19E8F
+      CAC7B5EBE7DEF8F3E7EBE3CEEEE3CBAAA9A0FAF0E4EBDDCBEBDCC7E5D3C0E4D1
+      B7E0CBB6E5DAB749492DB1A599D6C3A8D4BDA4D4BA9DD5BA9FD0B89CD1B99DCE
+      B89FC3AF91B5AB8BBEAE99CFC1AECFC2A7CCBCA3CABA9CC6B798E2DCC1B8A984
+      B6AC81CCB090C8AC92C9AF93C8AF90C8AC92C5AE91C5AF90C5AF95BCA48FC5B0
+      91C4AE8FC6AD90C5AE8EC4AD8ECAAC8FC4AB90C3AB90BFAC8EC1A88EC4AA8DBC
+      AA8FC3A98DC4AC8BBEA992C1AA90C8AC90C1AA8CC0A888C3A98DC3AC8FC1AC8D
+      C3A88BBDA98BBBA98CC4AA8BBDAA8EBEA98BC2AB8FC1A88FBEAA8DBFAB8CC5AE
+      91C1AE8FC2AB8FC2AA91C4AD8FC0AB88C2AC8FBFAC8FBFA98FC0AB8EC0AA91BF
+      AC91C2AA91BEAB8EC1B092C1AA8EC3AF93C5AF91C5AF92C8B290C6B193C3B08F
+      C6B497C4B199C6B096C6B297C8B398C9B698CDB79BCBB398CCB79BCBB998CBB8
+      9BCFBA9FCFBA9DD0BA9CD1BB9FCFBA9FCFBAA5D2BDA5D5BEA3D5BDA7D4C1A4D7
+      C4A9D7C4AAD8C5ABD4C5A9DDCBAFD8C8ABD9C8AEDDCEB2DCCDB3DBCFB3DED0B6
+      E3D2B5DED2B7E3D2BAE1D1BAE2D3B9E2D2BAE6D2BCE3D4B8E5D3BAE4D5BAE7D4
+      BEE8D5BEE6D7BEE4D6BDE5D7C0E6D5C0EAD5C1E5D7BFE9D7C2E5D8C2E7D9C4E8
+      D9C4E7DDC2E9DCC5E7DCC4E9DBC5E8DCC6E8DCC6E7D8BFE6D6BDE5D4BCE5D2B8
+      0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEEBF6D6EAF8D4EAF8C7E3F5
+      D5ECFFD2DDF7358510207F08C0CADAF4F3FFDDEDFFDFEDFAE0ECF8D6E4F4DDE9
+      F7E5EFFBE4F1FDEDFCFFE6E4FF789077006D00519D21E4ECDAD7E7D0D4E5CECD
+      E0C1C1D7ACBDD5A6C7DCB9CCE0C3CADFC1BFD7ADB3CE98B7D19FC3DBB7C7DEBF
+      C0D8B2B1CE97ABC98DB9D4A7C3DBB9A9B8A38B8B8BB0B0B0DBDBDBF4F4F4FFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF575B552A8A0F2E98102B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F1D8B01449B2BA09FA0828282A2A2A2CBCBCB
+      EBEBEBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFDFDFEFD
+      FDFEFDFDFEFCFCFDFCFCFDFDFDFEFDFDFEFDFDFEFEFEFFFEFEFFFEFEFFFEFEFF
+      FEFEFFFEFEFFFDFDFEFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
+      FEFFFDFDFEFDFDFEFDFDFEFBFBFCFCFCFDFCFCFDFDFDFEFEFEFFFDFDFDFDFDFD
+      FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFC
+      FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFAFCFCFBFC
+      FCFBFCFCFBFDFDFCFDFDFBFDFDFCFDFCFBFDFCFBFDFCFBB3B2B11E520E32A812
+      2B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F278E0A1E8A01A6B6A1777474807F
+      7B8C8B8792918D94938E918E898F8C878886805B5A55171816267F0D2F9D112B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2D9011097F0091BD85A29D9AA5A398
+      C6C1B6D9D6C7E2DDCEE3DED0E5DED4E5E0D7E6E3DBE5E4DBE5E4DCE6E4DCE8E5
+      DDE8E6DEE4E5DAE2E3D5E1E3D5E0E3D4E1E4D6E7E6DDE8E6DEE7E4DCE5E3D9E4
+      E2D9E4E3D8E4E2D7E5E2D5E5E0D4E5E0D4E5E0D4E5E0D4E4E1D4E4E1D4E4E2D4
+      E5E3D5E5E2D6E6E3D7E5E3D5E6E3D7E5E2D7E5E2D6E5E2D7E6E3D7E5E2D7E7E3
+      D9E6E3D9E4E1D6E5E2D6E6E1D5E5E2D5E5E1D4E5E0D3E5E0D3E4E2D5E1E1D2E1
+      E2D3E0E4D5E8E6DCE1DACCE1DCD0E3E1D2E4E1D3E5E2D4E5E2D4E6E2D5E6E2D5
+      E7E2D5E7E2D6E6E2D5E6E2D3E5E1D3E6E2D5E6E2D6E3E3D4E2E3D4DEE1D0DDE1
+      D0E0E2D3E0E3D3E4E5D7E8E5DBE6E5DBE6E5DBE7E3D9E6E2D7E6E3D7E6E3D7E6
+      E4D8E6E4D6E8E4D6E7E4D6E5E3D5E5E2D4E6E2D2E5E1CFE5E0CFE5E0CFE4DFCE
+      E5E1D0E5E0CFE6E1D2E6E1D4E5E0D3E6E1D3E6E2D2E5E0CFE5E0CFE5E0CFE4DE
+      CDE4DECCE4DECDE4DECDE5DFCEE5DFCDE4DECCE4DECCE4DECAE5DECCE7E1CFE6
+      E1D2E6E1D0E6E1D0E5E0CFE7E1D0E7E2D0E6E1D0E7E2D2E5E0D0E6E1D2E7E1D2
+      E6E2D0E5E0CFE5E0D0E6E1D0E5E0CFE5E0CFE8E3D3E8E3D3E7E2D2E6E1D0E7E2
+      D0E7E2D0E8E3D2E8E3D2E8E2D4E9E3D4E9E4D5E9E4D3E8E3D3E8E3D3E9E4D3E9
+      E4D4E9E4D4E8E4D4E9E4D4E9E4D5E9E5D4E9E4D5E9E4D5E9E4D5E9E4D7EAE5DA
+      EAE6DAE9E5D9E8E4D8E9E5D9E9E6DAE9E7DBEBE7DCEAE7DBEAE7DBEAE5DAE9E7
+      DAEAE7DAE9E5DAE9E5DAEAE6DAE9E5DAE9E5DAE9E5DAE9E6DAEAE6DAEAE6DAEA
+      E6DAEAE6DAEAE6DAEAE6DAE9E5DAEAE6DAEAE6DAEAE6DAEAE6DAEAE6DAE9E5DA
+      EAE5DAEAE6DAEAE6DAE8E5DAE8E6DAEAE6DAE9E5DAE9E5DAE9E5DAE9E6DAE9E5
+      DAE9E5DAE9E5DAE9E5DAE9E6D9E8E5D8E7E5D8E7E4D7E9E4D7E9E4D7E9E4D7E9
+      E4D7E9E4D7E8E3D7E8E3D6E8E3D6E8E3D6E8E3D6E8E3D6E8E3D6E8E3D6E8E3D6
+      E8E3D6E8E3D3E8E3D3E8E3D3E8E3D3E8E3D3E8E2D0E8E2D0E8E2D0E8E1D2E8E1
+      D2E8E1D2E8E0CFE9E2CFE9E3CEEAE2CFEAE1CEEAE1CDE8E2CDE9E2CEEBE1CDEA
+      E2CDEAE2CCEAE2CCEAE3CBEAE2CCEAE0CEEAE0CDE9E0CCE9E0CCE9E1CCE9E1CB
+      E8DFCAE9DFCCE9E0CCE8DFCBE8DFCBE8DFCBE9E0CCEAE1CDE9E0CCE8DFCBE9E0
+      CCE9E0CCE8DFCBE9E0CCE9E0CCE9E0CCE8DFCCE8DFCBE9E0CCE8DFCBE9E0CDE9
+      E0CFE9E0CDE8DFCBE8E0CCE9E0CDE8DFCCE8DFCBE9E0CCE7DECAE8DFCBE9E0CC
+      E8DFCBE8DFCBE8DFCBE8DFCBE8DFCBE8DFCDE7DECBE7DECCE7DECBE8DFCBE7DE
+      CAE7DECAE9DECAE7DECBE7DECAE7DECAE6DECAE6DEC9E7DECBE7DECBE6DEC9E7
+      DEC9E9DECAEADFCAEAE0CBEAE0CAE8DEC9E7DDC8E0D6C6E9E1CBD4C3ABD4C2A8
+      DCC9ACDCCBAADED1AAC6BA959B956A646647443D3EEBDFEEE5E4DCE2E4D7E4E4
+      DAE5E5DAE2E0D4E5E7DAE9EADFEFEAE0E5DDD2D6D2BFCCC6AFD0C1A9C3B79DC8
+      B8A3D3C6A9B6AC89747C6E8F95846D71697982786B7C6F616E6B77898FEBF1FE
+      ADC7AF7D9B807B8989BDCAAC2D411E3B42334B514AC1BEBAB2B2A9C2C3CEC9D8
+      E47D9574697088E7F2FAEBF2F2F6FAFAE5EDEFD1D8DEC4CDCDE3E9E7E0E6EAF6
+      F7F8E2E1D0DEDDD3E4DCD0EDE3D5EEE2D8E7E2D2EAE3CFEBE0D0EAE0D5EFE3D2
+      FAF0DEB1B09CEBE4DFDED6C7D5CDBEBFBDABE5E5E3E8E3D3E9DECCEBDFCDD9D2
+      BFF3E9DAEBE1CEE8DCCCEBDDCDEBDDCBF1E6D09C9B8BF6EDE1E2D6C1E3D5C5E7
+      D2C0E5CFB2DCC9B1EAD8BE585C3AACA097D3BA9DC8AE97CAB8A0CABBA5CFBDA4
+      CBB9A2CBB89FCFBAA6D2BEA7CCB99DC4B091C8AF93C9AE92D0B29ACDB493C6AD
+      8FC8AF93CDB192C8AE93C5AD91C9AD93C9AF90C9AE92C5AE90C2AD8EC3AF91BD
+      A68EC9AE96C5AE8FC8AF91C6AC8FC6AD8FC4AB8FC1AE8FC3AB8FC1AC91C3AB8E
+      C3A990C0AA91C3AC8DC0AC8FC2AB92C3A88CC0AB8DC1AC8FC1AA8BBFAA8EC4A9
+      8DC2AA8FC0AA8CC4AA8DC6AA8FC0A990BFAA8BC4A98DC4AA8EC1AA8EC0AA8EC1
+      AC8FC1A88EC2AD8CBFAC8FC0AD90BEA98DC0AD90C1AB8FC4AD92C3AB90C2AD91
+      C6AF92C2AE91C4B092C1AE93C1AE93C5B193C1AE91C2B196C2AF91C6B295C5B1
+      91C5B091C8B396C8B699CBB197CBB495CAB498CDB69CCAB697CCB69ACBB79ACA
+      B89BC8BB9CCBB99DCBB89DCDBA9FCBBA9CCFBDA3D1C0A5CDB9A5CEBDA4D9BEA6
+      D6BEA5D6C1A9D4C0A9D6C1AADAC4AAD6C4A7DAC6AADBCAAFDCCAAFDCC9B1DBCE
+      B4DDCFB9DBCEB9DDD3B8DDD1B6DED1B6DDD1B7E2D3B5E4D0B6E4D2B9E4D6BCE5
+      D3B7E3D1BDE5D4BAE7D4BAE5D3BCE5D5B9E9D6C1E9D5C2E5D5BEE5D5BCE8D6BF
+      E6D7BEE7D9BEE7D8BDE7DBC1E6DABFE8DAC0E5DCC2E4DBC2E7DBC1EDDDC5EBD8
+      C2E8D3BE9769FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7E7F3D2E7F6D3E9
+      F7CDE6F6CFE6F6E9F3FF85B883006C0033801996A8A8C4C6ECD5D5FFE0E2FFE7
+      EBFFE7EBFFE9EAFFE3E1FFDED5FF9B9EAE0E6C001D8701C9DDB9DBE6CCC9DDBB
+      CEE1C2C2D8ADC0D7AACADEBDCDE1C5CADEBFCAE0C1CBDFC3C0D8B1B2CE97B6D1
+      9FC0D8B1B0CD97AECC93BCD5ABC1DAB6BDD6ADA7B69F8B8B8BB0B0B0DBDBDBF4
+      F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF898989206B0B31A211
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F288E0A228C03A3B19F7C7B7D9898
+      98C0C0C0E4E4E4F8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
+      FEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFDFD
+      FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD
+      FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFDFDFCFDFDFC
+      FDFDFCFDFDFCFDFDFCFDFDFCFDFDFBFDFDFBFDFCFBFDFCFBFDFCFBE3E2E1354B
+      2F2F9F112C920F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1C92006E936367
+      60675858565A59575B5B575A595652514E42413E282826122A0C24790C30A211
+      2A8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F258C07148300BAC9B3A4A2
+      9ABAB5ABD2CEC4DCDBCBE1DED0E3DED3E4DED2E4DFD3E5E1D6E5E2D9E6E4DBE6
+      E4DBE7E4DAE7E4DAE6E3D9E8E3D7E8E2D6E7E2D6E6E2D6E5E3D6E5E3D8E6E2D9
+      E6E3D9E5E4DAE4E4D8E5E3D7E5E2D5E5E2D5E5E1D7E5E1D6E5E1D6E5E2D5E5E2
+      D5E5E3D5E6E2D5E6E2D6E7E2D6E5E0D3E5E0D4E5E1D5E4E0D6E5E1D6E5E1D7E4
+      E0D5E5E1D6E5E1D6E5E2D7E5E1D5E5DFD3E5DFD4E5DFD2E5DFD2E5DFD3E5DED2
+      E4DED0E3DECEE5DFD0E5DFD0E5DED0E5DFD2E5E0D3E5E0D3E5E0D4E6E1D4E6E1
+      D4E6E0D4E7E1D4E7E1D6E5E1D0E5E1D2E5E0D4E5DFD3E6E0D3E6E1D4E6E1D4E6
+      E1D4E7E1D4E7E1D4E6E3D5E6E4D7E8E4D9E8E4DAE7E4DAEAE4DAE9E4DAE7E4D9
+      E6E5DAE7E5DAE7E4D9E8E4D9E7E4D9E6E3D7E5E3D6E5E2D4E6E1D4E7E3D6E7E3
+      D6E7E3D5E8E3D6E7E2D5E8E3D6E8E2D6E6E3D5E5E3D5E6E0D3E6E0D3E5DFD2E5
+      DFCEE5DFCEE5E0CEE5E0CFE5DFCFE5DFCEE5DFCDE4DECCE3DECBE5DFC8E5DECA
+      E7DECFE6E0CFE5E0CEE5DFCEE6E1CFE7E2D3E7E2D2E6E2D2E6E2D2E6E2D0E7E2
+      D5E7E1D4E5E1CFE6E1CFE6E1D0E6E1D0E6E1D0E5E0D0E7E3D2E8E2D3E8E2D4E9
+      E3D4E9E4D4E8E3D2E8E3D3E8E3D4E8E3D4E8E4D5E9E4D6E8E3D4E8E4D5E9E4D5
+      E8E4D4E9E4D5E9E5D5E9E4D4E9E4D7E9E4D7E9E5D4EAE5D6EAE5D7E9E4D8EAE4
+      D7EBE6D7EBE5D9EBE5D9EAE5D8EBE5D9E9E5D9E8E4D9E9E5DAE9E5DAEAE6DAEB
+      E5D9E9E6D9E9E6D9E9E5DAE9E5DAE8E4D9E9E6D8E9E6D9E9E5DAE9E6D9E9E6D9
+      E8E5D8E9E6D9EAE6D9E9E6D9E9E6D9E8E5D8E8E5D8E9E6D9E9E6D9E9E4DAE8E4
+      DAE9E5DAE9E5DAEAE4D9E9E5D8E9E6D8E9E5D9E8E4D9E8E4D9E9E5DAE9E5DAE9
+      E5DAE9E5DAE8E4D9E8E4D9E8E4D9E8E5D8E9E6D9E9E6D9E8E4D8E9E4D7E9E4D7
+      EAE4D8EAE4D8E9E4D7E9E4D7E9E4D7E9E4D7E8E3D6E8E3D6E9E4D7E9E4D7E8E3
+      D6E8E3D6E8E3D6E8E3D4E9E4D3E8E3D3E8E3D3E8E3D3E7E3D3E7E2D2E6E1D0E7
+      E2D2E7E2D2E6E2D0E7E1D2E8E2D2E7E1CFE7E0CFE8E0CFE9E2D0E9E3CFE8E2CD
+      E8E1CDEBE2CFEBE2CFEAE1CEEAE1CDEAE1CCEAE2CCEAE1CDE9E0CCE9E0CCEAE1
+      CCEAE3CCE9E0CCE9E1CCE9E1CCE9DFCCE8DFCEE7E0CEE7E0CEE8E1CEE9E0CDE9
+      E0CDE9E0CDE9E0CCE9E0CDE9E0CDE8DFCCE9E0CCE9E0CCE8DFCCE9E0CCE8DFCC
+      E8DFCCEAE1CFEAE1CEE9E0CCE9E0CEE8DFCEE9E0CDE8DFCDE8DFCDE8DFCBE8DF
+      CBE8DFCCE9E0CCE8DFCCE8DFCBE9E0CCE8DFCBE8DFCDE8DFCCE8DFCDE8DFCCE7
+      DECAE7DECAE7DECAE8DFCBE8DFCBE9DECAE7DECAE7DECAE7DFCBE7DECBE7DECA
+      E6DEC9E6DEC9E7DECBE6DECAE7DEC9E8DECAE8DCCBE6DDCADDD3C5EAE3D0D3C2
+      A6DAC4AED7C3A8D5C3A8D7BFA6D7C1A3E2D0B0A0996B40393ED8D1E4E9E4DAE4
+      DFD6E0DDD4E7E6DBE7E6DEDDDCD0CBC3B6C0B7A6C6BAA7CBBBA7D2C2A9D5C3AA
+      D4C1A6D9C7B3D7CBABBDB7916D76638F96886B736B78807C6F7A7664716C6174
+      78C0D3E394AFA9EDFAEA7B8780CAD4B323370A333B29646960A1A0959CA28DA0
+      A29BD4E0E180967562707ED9E6F0D7DEE2CAD4D7D2DBD9E7E9E6F1EAE3EBE1D5
+      928F7FF1EFF2E9E1CCECDBCDECE1D2ECE2D4EBE4D5EBE5D5F0E6D7EDE4D7EBE1
+      D5E5D9CEDEDDC79EA28ECFD2CADDD9C5F0E6DAEADDCEF7EEE8ECE4D5ECE3D2EB
+      E6D6DBD1BFEBDED0ECDDCDEDE0CAEBDFCBEBDEC9F0E6C79D9987F0E7DBE0D1BC
+      E3D2BDE4D3B8E4CFBADED0BDE1D5B86166489D9792CBBCA9CDC3AFD2C6B1CDC1
+      A6CDBAA0CEB69BCFB79CCDB298CBB396C9B095C9B197CAAF92CAB092CAB193CA
+      AD91CBB195C5AD90C4AF90C4AF93C6AF92C9AA8DC9B290C8AC8EC4AC8FC4AD92
+      C5AD8F9B8B6CBEA68FCAB098C3AA8BC9AD90C9AC8EC5AB8DC1A98EC8B08FC5AB
+      86C6AE91C3AB8CC2AC86BFAA8CC0AB8EC2AA8BC5AD92C5B090BEAA88C5AB92C2
+      A88FC0AB8FC4AC8DC0AC89C5AC8FC0A987BFAB8BC3AD90C0A587C2AD8DBFAC91
+      C3AC90C4AD90C5AE92C4AD97C2AD90C2AA91C6AF93C4AA8DC3B091C3AB93C4AC
+      8FC3AD91C0AD8DC2AB95C4AD98C5AD8EC2AC8DC4AE93C4B293BFAD8EC4B093C6
+      B298C3AE95C4B098C4B096C5B393CDAF95C8B195C8B398CAB697CBB698CCB99B
+      CDB799CEB89ACDB79ACCB99BCCB89DCCB79DCEBAA2CEBA9FD0BBA4D0BDA2D2BE
+      A2D2BDA0D5C0A6D4BEA5D4C3A7D5C3A8D6C2A7DAC5ABDAC7AED7C6ABD7C8AEDA
+      CAACDBCAB0DBCEB5DCCFB7DDCEB2E1CFB2E0CEB7DBCFB5E0CFB6E1D1B6E3D0B6
+      DED2B8E0D4B7E3D5BAE0D2BEE4D4BCE5D5BAE5D2BCE5D1BEE5D2BDE6D6BAE5D6
+      BAE5D5BDE4D7C1E7D7C0E9DABEE7D8BDE5D7BEE6DAC1E9DBBEE9DBC5E6DABFEA
+      DDC6EBDBC5EAD5C00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7E8F4CD
+      E5F6D4E9F8D2E9F7CFE5F4DCECFAE0ECFF6CA95A0074000F780045832A628D5B
+      7C99828AA1958DA197829A866D8F664E7D410E6C00258A07C4DCB0F5F7F4CDE0
+      BFC5DAB1C2D8ACC4DAB2CDE0C2D0E2C8CCE0C3C9DEBDC2DAB3C6DCBACBDFC3C2
+      DAB4B5D09EAFCB92B1CD97BED7B0C4DCBCC2DAB9B4D09E9EB08E8C8C8CB2B2B2
+      DBDBDBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBCBCBC204F
+      1232A6112B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F1387008BB18083
+      7F848F8F8FB4B4B4DBDBDBF4F4F4FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFEFEFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
+      FEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
+      FEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD
+      FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFDFDFCFDFDFCFDFD
+      FCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFCFBFDFCFBFDFCFBFDFCFBFDFCFAFD
+      FCFA5D5F5C29860E2E99102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2D980F
+      297A1321441A1C43111D3D141C3E131B3E1119430C19540923730C2E991030A1
+      112B8D0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2D901000780061AA4ACA
+      C8C4B4B2A7CAC7BCDAD6C9DFDCD1E2DED3E4DFD4E4DFD4E3DFD4E4E1D5E5E2D6
+      E6E3D8E6E3D8E6E3D8E6E3D8E5E2D7E6E3D7E6E3D6E6E3D7E7E4D8E6E4D7E6E3
+      D7E6E2D8E6E3D8E6E4D8E6E4D7E5E3D7E5E2D7E5E2D7E5E2D8E5E2D7E5E1D6E5
+      E2D7E5E2D7E5E3D6E5E3D5E5E2D5E5E1D3E5E0D2E5E0D4E5E0D5E5E0D4E4E0D4
+      E3E1D4E3E0D3E3E0D3E4E0D4E4E2D4E5E2D4E4E0D2E5E0D3E5DFD0E5DFCEE4DF
+      CEE4DECDE4DECFE4DECFE5DECFE4DFD0E5DFD2E5DFD2E5DFD2E4E1D3E5E2D5E5
+      E2D5E5E1D3E6E1D4E6E1D4E7E2D3E5E1CFE5E1CFE5E0D2E5DFD3E5E0D2E5E1D0
+      E5E1D0E7E3D3E8E2D4E7E2D5E5E3D5E6E4D6E8E4D9E8E4DAE9E5DAE9E5DAE8E4
+      DAE7E4D9E6E4DAE6E4DAE6E4DAE8E4DAE8E4D9E7E4D8E7E5D7E6E4D7E7E4D7E9
+      E4D9E9E4D8E8E4D7E8E3D6E8E3D6E8E3D6E8E3D6E7E3D6E5E1D3E5E0D0E6E2D2
+      E6E0D3E6E0D4E6E1D3E5E2D0E6E3D2E5E1D2E5E0D2E6DFD3E5E0CFE5DFCDE5E0
+      CCE5DECCE6DECCE6DECEE5DECCE5DFCAE5DFCCE5E0CFE7E2D0E6E1D0E6E2D2E6
+      E2D2E5E1D2E5E2D3E5E2D2E6E1D0E6E1D0E6E1D0E5E0D0E5E0D0E8E3D3E9E4D4
+      E8E4D5E9E4D5E9E4D4E9E4D3EAE3D6E9E4D5E8E5D2E8E4D4E8E4D4E8E4D5E9E4
+      D8EAE4D7E9E4D6E9E4D6E9E4D6EAE4D7EAE4D8EAE4D8E9E4D7EAE4D7EAE4D9E8
+      E4D9EAE5D8EBE6D7E9E6D9E9E6D9E9E6D9EAE7DAE9E6D9E9E6D9E9E5D9E9E5D9
+      EAE6DAE9E6D9E9E6D9E9E5DAEAE6DAE9E5DAE8E5D8E9E6D8E9E6DAE9E4DAEAE6
+      DAE9E6D9E8E5D8E8E5D8E9E6D9E9E6D9E9E6D9E8E5D8E8E5D8E8E6D8E9E6DAE8
+      E4DAE8E4DAE9E5DAE9E5DAE8E4D9E9E6D8E8E6D9E9E4D8EAE4D8EAE4D8EAE4D8
+      EAE4D9EAE4D9E9E4D9E8E4D9E8E4D9E9E4D9EAE4D8EBE5D9EAE5D9E8E5D8E8E5
+      D8E9E5D8EAE4D8E9E4D8E9E4D7E9E4D7E8E3D6E9E4D7EAE4D8E8E3D6E9E4D7E9
+      E4D7E9E4D7E8E3D6E8E4D4E8E4D3E7E3D3E7E2D4E7E3D3E8E3D3E8E2D3E7E1D3
+      E8E2D4E7E2D2E7E2D0E6E1CFE7E2D2E7E2D2E6E2D2E8E0D0E9E1D2E8E1D0E9E1
+      D2E8E0D0E7DFCEE9E2CFE9E1D0E8E0CFE7E0CFE8E2D0E8E3CDE9E1CDEAE1CFEB
+      E1CFEAE2CEE7E2CCE8E3CCEAE2CDEAE0CCE9E0CCE9E0CDEAE1CFE9E1CFE8E0CE
+      E7E0CFEAE1CFEAE0CEE8DFCBE9E0CCE9E0CCE9DFCCE8E0CBE7E0CCE9E0CFE9E0
+      CCEAE1CCE9E0CCE8E0CEEAE1CEE9E0CEE7DFCFE8DFCFE7E0CEE7E0CDE6DFCCE7
+      E0CDE6DFCDE6DECEE7E0CFE7DFCEE6DECDE8E0CDE8DFCDE8DFCDE8DECDE6DECC
+      E5DECCE6DECAE7DECAE7DECAE7DECBE7DECAE9DECAE9DECAE9DFCBE9DECAE9DE
+      CBE9DECBE8DDCAE7DECAE6DECAE5DDC9E5DEC9E6DEC8E7DECDE6DECCD4CBBDEC
+      E4D4D3C1A3D5C4ABDBC4A9DCC4AAEBD2BAE6D2B7CCBA9D6C714849453AC5BECB
+      D2CFBED2C8B3D6C9B3CCBAA3CBBA9DCBB9A2D1BEA7D9C4A9D6C4A8DDC5AAD9C5
+      ACD9C8AEDBCAAFD9C7ACDBC9B1C9BE967777659BA18F5C685678828FB7C4C9C6
+      D5CE9CADA2B4C1C8DCE8E8EFF5F3A7B3AFFCFFFDC9D7BEC4CCB8909B80B5B198
+      CCC6B5D9D8D8DEE4E0989E7C626468E5E0E2E0DDCCE5DFD2E5DECEE4DBCAE7DC
+      CAF1E5D6C5BEA0C8C3CCF1E5E1F1E4D5EEE6D6EBE2D3E5D9CADBD7CAE3DBCAE3
+      D8C8E4DAC9DED8CCEBE5D6B2B0A3E5E0DAEBE7D5ECE1D5EDE5D6ECE0D2F0E4D4
+      EFE4D4F1E5D3D5CBB6D0C3B8E9DACFEAE1CDEAE0C9EADEC8F7E8CDA09888EBDD
+      D0DBCFB4DDCAB7DCCEB6D2CAB6C5B9A6C6BEA5828558AAA48EDBC7B3CFBAA4CA
+      B89ACCBA99CEBA9AD1B69ACEB697CDB697CAAF96CBB398CDB092CBAF92C8B095
+      C9AF92CAAF93C9AE91C8AD90C4AF91C6AD8ECAB090C1AD8FC8AA8EC4AA8BC3AC
+      8FC4AF90C3AC8EB6A27E867E60988971C5AC90C5AD92C6AC90C2AB8CC5B087C1
+      AC88C9AD8DC2AC8BC3AB8DC6AA8DC2A98CC6AE8FC2AA89C5AD90C1AE89C0AF8E
+      C2A98DC4AA8EC4AA8DC1AB8CC4AB8FC0AB8FC1A68EC0AA8DBFAC8EC1AC8EC2AB
+      8FC0AA92BEAA91C0AD90C0AA91BEAA89C9AF90C5AB8DC1AD90C1AD92BDAA91C2
+      AF92C1AC93C1AC91C5AC95C5AF92C3AD93C6AB93C1AE93C3AF95C0AD92C3B096
+      C5B396C4AF91C4B091C8B398C2AF93C5AF97CAB297CAB299CCB697CCB299CCB4
+      9ACEB399CDB69BCCB89CCEBA9DCEB69BCEB99CD0BA9AD1BC9FD2BA9CD3BA9DD3
+      BCA0D4BEA3D5BDA4D5BEA4D5C0A0D3C2A7D4C3A8D4C0A8D4C3A9D4C6A9D6C7A9
+      D6C5A9D6C2A8DDCAB0DECBB3DDCBB2D8CCB4DDCCB2E2CEB1E1CEB8E5D0B5DDD1
+      B6DCD1B8E0D0B7E0D1B8E4D1B8E5D3B9DED3B9E5D4C0E4D1BEE3D5B9E1D3B9E4
+      D3BCE3D1BAE6D3BDEAD7BDE8D4BDE8D5BFE8D8C1E5DAC0E6DBBFECD7C6EADBC0
+      EBD9C4E8D7C6EADBC4E6D9BD9769FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      D7E9F6CCE6F6CDE7F7CEE5F4D5E7F5D3E4F3D9E8FFEBF5FF9DC4A63E8A291B83
+      00047600006D00096F000A6F00046F000070000A7C0068AE49DBE8CAEBF0E3D6
+      E6CED7E7D0CEE1C2C8DCB7CEE1C4D1E4CACDE1C4C2D9B1C5DBB7BDD5A8B8D2A0
+      C5DBB9CBE0C4B9D3A5B3CF9AC1D9B4C5DCBCBED7B0BED7B0B9D4A89CAF8A9191
+      91B8B8B8DFDFDFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+      ECEC3C4D372E9B102C920F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F158800
+      5EA54B99959A8D8D8DADADADD4D4D4F0F0F0FDFDFDFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFEFEFFFEFEFFFE
+      FEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
+      FEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFEFEFEFE
+      FEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD
+      FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFDFDFCFD
+      FDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFCFBFDFCFBFDFCFBFDFCFBFDFCFB
+      FDFCFAFDFCFA9191901F660B32A4112B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8D1029920B31A80F32A61131A21131A21131A21132A71232A511309F112C
+      930F2B8E0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C90102B8F0E037A00379523
+      D4DACFBEBCB4CBC9BDDAD6CBDFDBCEE2DED2E2DED2E4DED3E5E0D5E4DFD4E3DE
+      D4E5E1D6E6E3D6E6E3D6E5E3D7E5E2D7E5E2D7E6E3D8E6E3D8E6E3D8E7E4D9E6
+      E3D8E6E3D8E7E4D9E6E2D8E7E3D7E7E4D8E7E4D8E5E3D7E4E2D7E5E2D7E5E2D7
+      E5E1D7E5E1D6E5E1D6E5E2D5E5E4D5E6E4D6E6E3D5E6E2D5E5E1D4E5E0D4E5DF
+      D3E5DFD3E4E1D3E4E1D3E5E2D5E5E2D5E4E2D4E5E3D5E5E3D5E5E2D4E5DFD2E4
+      DECEE4DFCCE4DFCFE5DFD2E5E0D3E5E0D3E4E1D3E5E2D4E5E2D4E6E3D5E5E3D5
+      E6E4D6E5E3D5E6E3D7E7E3D6E6E1D4E6E1D3E5E1D3E5E1D3E6E1D2E6E1D3E6E1
+      D4E7E2D4E7E3D4E7E2D5E7E3D5E7E2D5E7E3D6E7E4D6E8E5D8E8E4D8E8E4D9E7
+      E4D8E6E4D7E8E4DAE9E5DBE8E4DBE9E6DCEBE7DCE8E5D9E7E4D7E8E4D6E8E3D6
+      E8E4D6E8E3D6E7E2D4E6E2D3E6E2D3E6E2D2E6E2D3E7E2D5E6E1D4E5DFD0E6E2
+      D2E8E4D5E9E4D7E9E4D8E8E3D6E6E3D3E6E3D3E6E2D3E6E2D3E6E1D2E5E1CFE5
+      E0CDE6E0CEE6DECFE6DFCBE6DFCCE6DFCDE5DFCAE5DECBE6E1CEE8E2D0E8E2D0
+      E5E0CFE5E1D0E6E1D0E6E1D0E6E1D0E5E0CFE5E0CFE5DFCFE5E0D0E5E0D0E9E4
+      D4E9E4D3E9E4D3E8E4D4E8E4D4E8E4D4E8E4D5E9E4D6E8E4D4E8E4D4E9E4D5E9
+      E4D7EAE4D8EAE4D9EAE4D8E9E4D8E9E4D7EAE4D8EBE4D8EAE4D8EBE4D9EAE4D8
+      E9E4D8E9E4D8EBE5D9EAE6D9E9E6D9E9E6D9EAE7DAE9E6D9E9E6D9E9E6D9E9E6
+      D9E9E6D9EBE7DAEAE7DAE9E6D9E9E5DAE9E5DAE9E5D9EAE7DAE9E6DAE9E5DAE8
+      E4D9E8E5D9E8E5D8E9E6D9EAE7DAE8E5D8E8E5D8E9E6D9E8E5D8E9E6D9E8E5D9
+      E9E5DAE9E5DAE9E5D9E9E6D9E9E5D9E9E5D8EAE5D8EAE5D8EAE4D8EAE4D8EAE4
+      D7E9E4D7E9E4D7EAE4D8EAE4D8E9E4D7E9E4D7E9E4D7EAE4D8EAE4D8E9E4D7E9
+      E4D8E9E4D7E9E4D7E9E4D7E9E4D7E9E4D7E9E4D7EAE4D7EAE4D8E9E4D7E9E4D7
+      EAE4D8E9E4D7E9E4D7E8E3D6E8E3D5E8E3D5E7E3D5E7E2D6E7E3D4E8E3D2E8E2
+      D5E7E1D5E7E1D4E7E1D4E7E1D4E8E2D4E7E2D2E7E2D2E7E2D2E9E1D4E9E1D4E8
+      E0D3E7E0D0E7E0D0E7E1CFE7E0CFE7E0D0E8E1D2E7E1D2E9E2D2E9E1D0E8E1CF
+      E9E1CFE8E1CFE8E1CFE7E0CEE7E1CDE9E2CDEAE0CCE9E0CCE9E1CDEAE1CFEAE0
+      CEE8E0CEE7E0CEE9E0CEE9E0CEE9E0CDE9E0CDE9E0CDE8E1CEE7E0CEE8E0CFEA
+      E1D0E8DFCBE8DFCAE8DFCBE9E0CFE9E1CFE9E0CEE7E0CFE8E0D0E8DFD0E8E0D2
+      E8E0D2E8DFD4E8E0D2E7E0CFE7DFCFE8E0D0E6DECEE7DFCFE7DFCEE7E0CDE7DE
+      CEE8DFCDE6DECCE6DECBE7DECAE7DECAE7DECBE7DECAEADFCBEAE0CAEAE0CAE9
+      DFC9E9DEC9E9DECAEADFCAE8DECAE8DECAE8DECAE9DECAE8DEC9E8DFC9E7DECA
+      D1C6B9F2E9E0D5C4A7E0C8AEDBC3ACD4BEA6A49274998164A29372CBC0A2C4BD
+      9FBEAEA7D2CAAAD6C3AADDC3A9D7C2A2D7C5A3D6C2A7D5C4A8DAC5A6DDC6ABD7
+      C3ABDBC4ACD8C4ACDCC7B6DCC9B3DBC9B3C9BD9A827F6CA5A1968286758E97B3
+      FFFFFFFAFBFCCCD6C7ABB1AAEBEDEFDEE9E7C1C9CAEAF0F1D2DBE6B3C3B35154
+      30EAE4C8EADEC6E5DACBEFE6D2A2A27A615A59E5D5D3EADECAEBE0CBE7DBCAEB
+      E1CAEFE4D6F7EADAE5E3B756594EBDBBC8D0C8C1D1CAB4D5D4C0EEE6D5F6E9D8
+      F0EBDAEEE8DBF1E8DCEFE6D5F7EDD6C1B7A9D8D2D2F0E4D5F1E4DAEDE4D7EBE4
+      D3EEE4D3ECE4D3ECE4D7EFE4D0DBD1BAC0B6A2EADFCFF2E7D8F2E5D5DBCFB694
+      8681DDD6CDD7D1B8E3D2BFDDCDB4DECDB2DECAAEE0CBB3E2CCAFD4BCA2D5BAA2
+      D2B99FD4BA9DCCB79DD1BAA0D0B697CEB498CFB396CFB296CAB093C9B097CBB1
+      91CBB090CAB08EC9B08EC8B095C9AD92C5B090C6B093C6AE91C5AE92CAAF8FC3
+      AE8DC4AA8FC6AB90C2AE8DC8B08ED2B798CDB495C4AA88C4AF89C3AB8DC6AC8D
+      C6AC8FC4AB8EC0AB8CC2AB8CC2AA91BFAC8DC4AA8EC2A98EC6AB8CC1AD8EC4AB
+      93C6AB91C2AC8CC3AB8EC5AC8EBFAB8EC2AB8DC2AC8DC0AC8EC5AC8DC1AD89C4
+      AC90C4AA8FC1AA90C0AC92C3AC91C4AD90C4AD92C5AC92C3AF91C4AF92C1AC90
+      C4AD92C3AE92C1AE93C5AE92C4AC93C6AD93C2AE91C9B098C6AE92C2B092C1B0
+      95C2B197C6B091CCB396C9B396C8B195CAB096CBB298CBB499CAB297C8B195CE
+      B79BCCB498CEB899CEB798CCB69BC8B499CDB79DD0BA9DCEB99FCFB99CD0BA9D
+      D0BB9AD0BBA0D3BAA4D2BCA3D3BEA3D5C2A5D5BEA5D4BEA6D6C2A7D5C3A7D8C4
+      A9D7C6A9DAC8ACDBC6B2DCCAB2DCC9B2DACBB0DECBB4E2D0B5DECBB4E5D0B5DE
+      CDB6E1D1B5DDD0B7E0D2B7E2D1BCE5D0B7E5D3B6E5D1BEE4D1BAE5D2BEE5D1BA
+      E7D3BDE5D3B8E5D5BDE5D5BEE3D5BFE2D6C1E8D7BCEBD8BFEBD8C0E7D6BDE9D7
+      C0EAD6C0EBD6C2EBD8C1E8D8BFEAD8BF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFD9EAF7D1E9F7CCE5F4D3E7F6D9EBF9E3F2FFE0ECFFCECCFFB4ACDD51
+      814D03720054A03178B45A57A23158A33365A9457EB567B5D3A2F5F7EEE9F0E3
+      C8DCB5CEE0BFD5E6CED5E6CFD2E4CAD2E4CACFE1C6C1D8AFBAD2A1C7DCBAC5DB
+      B8B6D09CB5D09CC2D9B3C3DAB6C2DAB5C6DDBDC0D9B4AFCB94B4D09FC3DBB8AB
+      BBA09D9D9DC5C5C5E7E7E7F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFF68686827800E2F9B102B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F218C03349417B0B4AF969696B3B3B3D4D4D4EFEFEFFCFCFCFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFEFEFFFEFEFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
+      FEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFDFDFCFDFDFCFDFDFDFDFDFCFDFDFDFDFDFDFDFDFDFD
+      FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFDFDFC
+      FDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFCFBFDFCFBFDFCFBFDFCFBFDFCFBFDFC
+      FBFDFCFBFDFCFAFDFBFAC3C2C1214C1532A5112B8F0F2B8F0F2B8F0F2B8F0F2B
+      8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B900F2B910F2B910F2B900F2B8F0F2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2C90102A8F0D1383000279004FA0
+      3CD8DDD1C9C7BDCCCABFD6D4C7DED9CDE1DDCFE2DED0E1DED0E3DED2E2DED2E3
+      DED2E6DFD4E4E0D5E4E1D6E5E2D6E5E2D7E5E3D7E5E3D7E5E2D8E5E2D8E6E3D9
+      E8E4DAE7E4D9E6E3D8E7E4D7E6E3D8E6E0D9E7E3D9E8E4D8E5E3D7E5E2D7E6E2
+      D7E5E2D7E5E1D6E6E1D5E6E2D5E5E2D5E5E3D5E5E3D5E5E3D5E6E2D6E5E1D4E5
+      E0D3E5DFD3E5E0D3E5E3D5E5E1D6E5E2D7E5E2D7E5E2D6E6E3D7E5E2D6E5E2D6
+      E5E2D5E5E0D3E5E0D2E6E1D4E7E2D6E6E3D7E5E3D6E5E3D7E5E3D7E6E3D7E7E4
+      D8E7E4D8E6E4D9E7E4D9E8E4DAE7E3D8E7E2D5E7E2D5E7E2D6E8E3D6E7E4D3E7
+      E3D2E8E2D6E7E4D7E6E4D7E7E4D7E6E4D7E7E4D7E9E4D7E8E4D7E7E5D7E8E4D7
+      E7E4D7E7E4D7E8E6D8E9E5DAEBE5DCEBE6DCEBE7DDEBE7DCE8E6D9E7E4D5E7E2
+      D3E7E3D3E7E3D3E7E2D3E7E3D2E7E3D0E6E2D0E6E2D2E6E2D2E6E2D2E7E3D3E8
+      E4D5EAE5D8EAE5DAE9E4DAEAE4D8E8E4D6E7E4D4E8E4D7E8E4D4E6E2D2E7E1CF
+      E7E2CFE7E1CFE9DFCFE7DFCFE6E2CDE6E1CBE5DFCBE6E0CCE7E0CFE9E1D0E7DF
+      CFE5DFCDE5DFCDE6E1CFE6E1CFE6E0CFE6E1D0E5E0CFE5E0CFE5DFCEE4DFCFE5
+      E0D0E8E3D3E7E2D2E9E3D3EAE4D4E9E4D6E7E3D6E8E4D4E9E4D6E9E4D7E9E4D4
+      E9E4D6EAE4D8E9E4D8EAE4D9EAE4D8EBE5D9EBE5D9EAE4D8EBE5D9EAE4D8EBE5
+      D9EAE4D8EAE4D8EAE4D6E9E5D9E9E5DAE9E6D9E9E6D9EAE7DAEAE6DAE9E5DAEA
+      E6DAE9E6D9E8E5D8E9E6D9EAE7D9EAE7DAEAE6DAE9E6D9E9E6D9EAE7D9E9E4DA
+      E9E5DAE9E6D9E8E5D9E8E4D9E9E5DAE9E6D9E9E6D9E9E6D9E9E5DAE9E5DAE9E5
+      DAEAE6DAEAE6DAE8E6D8E9E4D7EBE4D8EBE5D9EAE4D8EAE4D8EAE4D7E9E4D7EA
+      E4D8E9E4D7E9E4D7E9E4D7E8E3D6E8E3D6E9E3D6E9E3D6E8E3D6E9E4D7E8E3D6
+      E8E3D6E9E4D7E9E4D7E8E3D6E8E3D6E9E4D7E9E4D7E9E4D7E9E4D7E9E4D7E9E4
+      D7E9E4D7E9E4D7E9E4D7E9E4D7E8E3D6E8E3D6E8E3D6E8E3D6E8E3D7E8E2D5E8
+      E2D4E8E3D6E7E2D5E7E2D5E8E2D5E8E2D5E8E2D5E7E1D4E7E1D4E8E2D5E9E1D4
+      E9E1D4E8E0D3E6E0D0E6E1D0E6E1CFE5E1CFE6E2D2E7E2D2E7E1D3E9E1D4E9E1
+      D2E7E0CFE7E0CFE8E0D0E8E0D0E7DFCFE7DFCEE8E1CFE8E1CFE7E0CEE8E1CEE9
+      E0CEE9DFCEE7E0CDE7E1CCE9E0CCE8DFCCE9E0CEE9E0CFE8E0CFE6E0CEE6E0CF
+      E7E0D0E7E1CFE6E0CBE6E0CBE8DFCBE9E0CEEAE1CFE9E0CEE7DFCFE7DFD0E7DF
+      CFE8E1D0E8E0D0E8E0D2E8E0D2EAE2D3E8E0D0E8E0D0E8E0D0E8E0D3E7DFD0E6
+      DFCDE6DFCEE7E0CDE9DFCDE7DECAE7DECAE8DFCBE8DFCCE8DFCBEADFCBEAE0CA
+      EAE0CAEAE0CAEAE0C9EAE0C9EAE1CAE9DFCAEADECAEADFCBEBDFCBE9DFCAEAE0
+      CAE9DFCAB7B297AB9C99DAC8B6C5B397A6977AA89A7CD2BFA6E6D2B9EAD2B7E0
+      C7A9CDBAA8ADABA0DBCAAFDEC3A9DAC2A9D7C4A4D8C1A8D8C2A9D7C1A9D9C1AA
+      D5C2A8D9C6A8DDC8AFD9C7AEDECDB3D6C5ABDBC9AFD0C4A680856E6E73617980
+      699AA0AAD8DBEEE6EDF3FBFDFCCCD0D0E2E4EEBCCBCCB4B9B3F1F1EBD6DBCCE0
+      D7C1C6C39FE8DFC9E5D9C6E5D5C8F0E7D6B5B0875F5550E9D6D8EBDED3F1E5D5
+      F2E5D9E8DDCDDED3C4D0C7B8CECBB2BFC1A6CED1C8EEE4D7F0EAD9F2E7DBECE6
+      D5EDE7D5EBE5D8EDE5DBF1E5DFEDE8D7F1ECDBC1C1AAD9D4CEEFE6D9ECE7D6EF
+      E5D9ECE5D3F1E7D5EEE6D7EEE9D8EFE3D4F1E3D0EEE3CDD9D0BDCCC5B2CBC3AC
+      C0AF8F9C9380E0D1C9DBC9B3E2CDB8E2CDB3E2C8ACDDC5A7DAC4AAD8C0A5D9C0
+      A5D9BCA4D6BBA0D4BA9DD4BCA2CFB89DCFB697D0B495CFB399CEB397CBAE92CB
+      B190C5B18ECBAF8DCDAE90C6AE92C5AC8FC4AD91C6AC8FC5B08FC2AE90C8AC91
+      C6AD8FC4AC8CC8AA8CBDAB8DC2AB8BBFAC8CC2AA87C3AC87C5AC90C3AD8EC9AB
+      88C1AD8BC4AD8EBFAB89C1AC88C1AA8FBFAA8FC4AB8DC3AB8DC4AD91C0AB8DC5
+      B090C3AC8EC8AC8FC2A98EC1AD8CBFA98CC6A98CC4AA8DBDA98BC5AB8FC1AB91
+      C2AC8FBFA892C0AD8DC1AF8EC2B08FC8AB90C9AB90BDAD8FC1AE8FC0AC8EC4AE
+      92C2AC8EC8B096C4AF92C6AF90C4AF90C2B095C8AF93CAB098C1AC93C6AF99C5
+      B193CEB296C5B293C6AD96C5B297C0B393C3B495CAB495CAB699C5B193CAB298
+      CBB799C5B496CEB99AC9B697CAB697D0B99BCDB99DCFBA9ACCB89ACDBB9FCDBA
+      9CD0BA9DD3BBA2D4BDA4D2BDA4D1BAA2D0BEA4D4BEA3D3C2A8D3C0A6D6C1A7D3
+      C2A7D5C4ACD2C4AED7C6ABDBC8ABDCC9AEDAC7ACD9C9B0DCCCB0E2CBB2DCCEB3
+      E3D1B4E1D0B3DDD1B4E0D1B5E2D1B8DDD0B6E2D2B6DED2B7E2D3B7E5D2BCE3D2
+      BAE2D5BCE1D1B9E5D3BEE4D3BFE2D3BFE5D7C0E5D6BCEAD7C1E5D8C4E7D7C4E7
+      D8C3E6D8C3E7DAC2E7D9C2E5D9BFEADAC2EAD9C20000FFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFDFEEF8D2EAFADBF2FFDFF4FFDEE5FFCDC8F19CA1B04F7A4E
+      046400137E0084BA6EF4F7EFFFFFFFF4F8F3F0F5EDF0F3E8F3F4E7ECF2E5DDEA
+      D6D9E8D2D3E3C8C9DCB6CADDB8D1E3C8D4E5CFCFE1C4C2D8AEBCD4A4C5DBB7CB
+      E0C1CADFC1C5DCB9B7D19FB1CD95BED6ADC7DEC0BFD7B0B0CC95ACCA8FBAD4A9
+      C1DAB7B4C2ADB5B5B5D8D8D8F1F1F1FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFF9C9C9C1C5E0A31A6112A8E0E2A8F0E2A8F0E2A8F0E2A
+      8F0E2A8F0E278E0B178700B6CBB1B5B3B5C7C7C7DEDEDEF2F2F2FDFDFDFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
+      FEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFC
+      FDFDFCFDFDFCFDFDFDFDFDFDFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFD
+      FCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFBFDFDFBFDFCFBFDFCFBFD
+      FCFBFDFCFBFDFCFBFDFBFAFCFBFAEDECEB3747322E9A1029910C2A8E0E2B8F0F
+      2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F0F2B8F
+      0F2B8F0F2B8F0F2B8F0F2A8F0F298E0D258C09188500097E00097D003D9729A0
+      C695DEDCD6CFCDC1D2D0C3D8D6C9DAD8CBDCD9CDE0DBCEE1DDCFE1DDD0E3DED2
+      E3DED2E3DED2E5DED3E5DFD4E5E0D5E6E2D5E6E2D6E6E1D6E6E2D6E7E3D7E6E2
+      D7E7E3D8E6E3D7E6E4D9E7E4D9E6E4D8E6E3D7E6E1D9E7E3D9E7E4D8E5E3D7E5
+      E2D7E5E2D7E4E2D5E4E0D4E6E0D4E5E2D4E5E3D4E5E3D6E4E3D6E4E2D7E5E3D9
+      E5E3D9E5E2D8E5E2D8E6E3D8E6E3D8E6E3D9E6E3DAE5E3D8E7E4D8E6E4D8E4E4
+      D7E5E3D7E5E4D8E6E2D8E6E3D7E5E3D7E6E4D8E6E3DAE5E3D9E5E4D8E6E4D8E7
+      E4D8E7E3D9E7E3D9E6E4DAE7E5DAE7E4DAE7E4DAE7E4D8E8E4D7E8E4D6E9E3D6
+      E9E4D6E7E4D6E8E4D8E8E4DAE8E6DAE9E5D8E9E4D8E8E4D8E9E4D8EAE5D9E9E6
+      DAE9E5D9E9E4D7EAE4D8EAE5D9E9E4D8E9E6DAEBE7DEEAE7DEE8E7DAE9E4D7E8
+      E3D5E9E4D5E8E4D3E7E2D0E8E3D2E9E4D3E8E3D3E7E2D4E7E3D4E8E4D3E7E3D3
+      E9E4D7EBE6DAEAE7DAE8E5D9E6E4D8E9E5D9E9E5DAE8E4D8E7E4D5E9E4D5E6E1
+      D2E7E0CEE7E0CEE8E1CFE6DFCDE6DFCDE5E0CDE5DFCCE6DFCCE6DFCDE6DFCEE6
+      DFCEE5DECDE5DFCBE6E0CCE7E0CEE6DFCFE6E0CEE6E0CEE6E0CEE6DFCEE6DFCE
+      E5DECDE4DFCEE7E4D2E7E3D3E8E3D3E9E4D4E9E4D6E9E3D7E9E4D6E9E4D6E9E5
+      D6E9E4D5E9E4D6EAE4D8EBE5D9EBE5D9EBE4D8EAE5D9EAE6D9EBE6DAEBE7DAEA
+      E6DAE9E6D9E9E6D9E9E6D8E8E5D6E9E5D9EBE5DAE9E6D9E9E6D9EAE7DAEAE6DA
+      E9E5D9E8E5D8E8E5D8E8E6D9E9E5DAE9E5DAEAE6DAE8E5DAE9E6D9EAE7DAE9E6
+      D8E9E5DAE9E5DAE9E5DAEAE6DAE9E5DAE8E5D8EAE5DAEAE5DAE9E5DAE9E5DAE9
+      E5DAEAE6DAEBE6DAEBE7DAE8E5D9E9E6D9E9E6D9E9E5D8E8E4D9E8E4D9E8E4D8
+      E9E4D8EAE4D8EAE4D8EAE4D8E9E4D8E8E4D6E8E3D6E9E4D7E8E4D4E8E4D4E8E4
+      D5E8E3D5E7E3D4E8E4D4E9E4D8E9E4D8E9E4D7E9E4D7E9E4D7E9E4D7E9E4D7E9
+      E4D8E9E4D8E9E4D7E8E3D6E9E4D7E8E3D6E8E2D5E8E3D5E8E3D5E8E3D5E8E3D6
+      E7E2D5E7E2D5E8E3D6E7E2D5E7E2D5E8E1D6E8E2D5E8E3D3E7E2D2E8E2D4E8E2
+      D5E8E2D4E8E2D5E7E1D4E6E0D3E6E0D3E7E1D4E6E0D0E6E1CFE6E1D0E7E0D0E8
+      E0D0E7E1CEE7E0CEE7DFCEE7E0CFE8E0CFE7E0CFE7DFCFE7E0CFE8E0CFE9E1CF
+      E9E0CDE9E0CCE8DFCBE8DFCCE9E1CEE9E0CEE9E0CDE9E0CEE9E0CFE9E1CFE8E0
+      CCE7DFCDE8E0D0E9E1D0E8DFCDE8DFCBE8E0CEE8DFCDEADFCEE9DFCCE9E0CDE8
+      E0CCE7E0CEE7E0CEE7E0CEE6DFCDE9E0D0E9E1D3E7DFD0E7DFCFE8E0D2E9E1D3
+      E8E0D2E8E0D0E7DFCFE7DFCFE7DECEE6DFCDE7DFCBE9DFCAE8DFCAE8DFCBE8DF
+      CBE8DFCAE9E0C9EAE0CAEAE0CAEAE0CAEBDFCAEAE0C9EAE0C8EAE0C9EAE0C9E9
+      DFC9EBE1CCEBE3CDBFB89DCFC5B1796B4BB29C87E8D2C1DECDB8DBC6ABDBC5A8
+      DAC3A9D7C8A9D4C2A6B4AA9BD8CAAFD9C6ABD6C2A9DCC1A8D9C3A9D8C3A9E0C5
+      AEDDC6AEE0CAB2DCC6B1CBBAA0C1B89BC4B99FD6CAB5D9CEB6C6BDB0E0E1DEEC
+      ECDDE5E0C374827198A8B3BCCBDCE8EAECDEDDCFC6C5B7ECE2D5C5BEABF2EDEE
+      E0DAC5E9DAC9EADCCAE8DBCAEFDECBEBE2CEF1E4D2C3C39D59534ADCCFD0DDD2
+      C4D8D1C5DDD7C4DED9CAEAE3D3F1E9DBF1E9DAF1E9DAF0E7D5EEE5D6EEE6D6EF
+      E6D7EFE7D9F1E7D7F0E9DBF1E8DAF3EBDEEFE8DDF3ECDACCC5B2D8D0CBEEE7D5
+      F6ECDFF2E7DAECE3D0E4D8C7DDD1BFDBD1C0DBD0BCD6CDB9D9CDBAE5D7C5E5D8
+      C5EADCC6EADAC0DCC9B0DCC9AFDEC9B1E1CEB6E1CBB3E4CCB1DCC6AED9C5A8DB
+      C5A9D7BDA6D8BCA3D6BB9DD4BA9FCFB89BD2BC9DCDB79BCCB399CEB295CDB297
+      C9AE93C9B195CBB091CCAF95C5AC91C5AC8DCCAF96C4AB92C0AC95C6AE91CAAD
+      92C8AD92C3AE8FC4AD8EC4AB8FC5AC91C8AE8FC4AA8BBFAF8CCAAC91C4AA8DC4
+      AA8EC9B08FC4AA8EC4A990C4AC8EC1A98EC3A88DC5AE8DC3A58EC3AB90BFAA8C
+      C1A48FC2A98FC4AE91C2A88DC6AF91C1AB8EC3AB8FC5AE91C1A98CC1A98FC0AD
+      90C2AB8CC2AC8EC1AB90BEAC8FC1AB8FC3AD8DC5AC91C8AD96C6AE97C4B091C1
+      AE91C5AD96C4AD91C9AE99C9AF96C6AF91CAAF95C3B295C6AD92C9AD98C3AF92
+      C8B193C6B398C9B095C5B296C9B398C4AF91C9B298C6B098C5B093C9B697CAB6
+      96CAB29CC8B498CBB999CFB899CBB899CEB79BCBB99BCBB79ACDB9A2CFB99FD1
+      BAA0CFBA9CD0B79CD5BB9FD2BBA2CFBDA2CFC0A5D2BBA5D6C2A9D7C1A7D3C0A6
+      D9C5AAD3C3ABD5C3A9D2C4AED7C8AED4C5A9DAC6AED9C7B1DACAACE0CBB3DACF
+      AFD9CBB1E0D1B7DBCFB0E4D1BDDECDB6DCD2B7E3D2B9E4D1B7E3D1B8E3D4BDE2
+      D1B7E5D3B6E5D0B7E6D2B9E3D5BEE1D3B9E7D5BFE7D4C2E3D5C3E4D6C2E2D7C1
+      E6D7C0E9DBC1E7D8BCE8DAC0EDD6C0EEDBC5E7D9C7E8D9C50000FFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFEAF5FBDAEBFFDADBFFAFB5D67E928F4076330365
+      00087A0061AC43D4E7C9FFFFFFECF2E3DEEAD3E5EFDEDFEBD5D9E7CCDCE9D4DF
+      ECD9DCEAD6D9E8D3DAE8D3D3E4C9C8DCB5C6DBB4CCDFBFC3D9AFBFD7AAC9DDBC
+      CDE1C4CADEBFC9DFBFCBE0C3C5DBB9B8D2A2B2CE98B9D4A7B0CD96AFCC94BED7
+      AFC1DAB6BDD6AFB9C2B5D2D2D2EBEBEBF9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFD5D5D52048161699000C81000B7E000B7E00
+      0B7E000B7E000B7E000B7E00006E0080BF6EE2E0E3E3E3E3EEEEEEF8F8F8FDFD
+      FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFE
+      FEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
+      FEFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFCFDFDFCFDFDFCFDFDFCFDFD
+      FCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFD
+      FDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFCFBFDFCFBFDFCFBFDFCFB
+      FDFCFBFDFCFBFDFCFBFDFBFAFDFBFAFCFBFAFCFBFA7F7E7D0561001A94000C7E
+      00087D00077C00077C0012820015840018850019850018850018850018850018
+      85001985001684000E8000077C00097D001181001E8800459B2E7BB36BB7CEAD
+      DFDED6D7D4CAD3D0C6D7D5C9DAD8CCD9D8CBDBD8CDDCD9CCDDDACDDEDCCEDEDC
+      CFE2DDD0E3DED0E3DED2E4DFD3E5DFD4E5E0D5E5E0D3E6E1D5E5E0D5E6E1D6E7
+      E2D6E7E3D6E6E2D6E5E2D6E5E3D8E6E3D8E6E2D7E6E2D6E7E2D7E6E2D6E5E2D6
+      E5E2D6E5E1D7E6E2D6E5E0D3E4DFD3E5E0D3E5E3D5E5E4D6E5E3D8E5E4DAE5E4
+      DBE5E5DCE6E5DCE6E5DCE7E6DDE7E6DDE6E4DBE7E5DBE7E5DCE6E4DBE7E4DCE7
+      E4DCE7E5DCE7E4DBE7E4DAE6E3D8E5E4D9E6E4DAE6E4D9E7E4DCE8E4DBE7E4DA
+      E7E5DAE7E4D9E7E3D8E8E4DAE7E4DAE6E4DAE7E5DAE9E6DAE9E6DAEAE5D9E9E3
+      D6E8E3D6E9E3D7E9E4D9EAE7DBEAE7DBE9E5D9E8E4D6E9E4D7E9E3D7E9E4D7E8
+      E4D9E9E6DAEAE5D8E9E3D6E9E4D7EAE4D8E9E4D7E9E6D6EAE5D9E9E5DAE9E4D8
+      E9E2D5E9E4D5E8E4D3E7E2D2E6E2D0E8E3D2E9E4D4E9E4D5E8E3D4E8E3D2E9E3
+      D2E9E4D3E8E3D3E9E3D4E8E4D3E8E3D3E8E3D2EAE4D6EAE4D6E8E2D4E8E3D3E8
+      E3D0E7E1CCE8E0CCE8E0CCE7DFCBE7E0CAE7E0CAE8E0CCE7DFCBE7DFCAE7DFCA
+      E6DECAE6DECAE6DECAE7E0CAE8E0CBE7DECAE5DECAE5DECBE6DFCBE5DECCE6DE
+      CDE6DFCCE5DECDE5DECDE6E2D0E7E3D2E8E2D2E9E3D2E8E3D4E8E3D4E9E4D5E8
+      E4D4E8E4D4E9E4D5E9E4D6EAE4D8EAE4D8EAE4D8EAE4D8EAE4D8EBE5D9EBE6DA
+      EAE7DAE9E7DAEAE7DAE9E6D9E9E6D9E9E6DAEAE6D9EBE5D9E9E6D9E9E6D9EAE7
+      DAEAE7DAE9E6D9E8E5D8EAE5D9EBE6D9EBE5DAE9E5DAEAE6DAE8E5DAE9E7DAEA
+      E7DAE9E6D9EAE7DAEAE7D9E9E6D9E9E5DAE9E5DAE9E6D9EBE5DAEBE5DAEAE6DA
+      EAE6DAEAE6DAEBE7DBEAE6DAE9E5DAEAE5DAEBE6DAEAE7DAE9E7D9E9E5DAE9E5
+      DAE9E6DAEAE5DAEAE4D9EAE4D9EAE5D7E9E4D6E9E4D8E9E4D9E9E4D7E9E4D6E8
+      E4D5E8E3D6E9E4D7E9E4D6E9E4D5E9E4D8E9E4D8E9E4D7E9E4D7E9E4D7E9E4D7
+      E9E4D7E9E4D8E9E4D8E9E4D8E9E4D7E9E4D7E8E3D6E8E3D6E8E3D7E8E3D7E9E4
+      D8E9E4D7E8E3D6E8E3D6E8E3D6E7E2D5E8E3D6E8E2D6E8E2D5E8E3D4E8E4D4E8
+      E3D5E7E2D5E7E1D6E8E2D6E8E2D5E8E1D5E7E1D4E7E1D4E7E1D3E6E2D0E6E1D0
+      E6DFCEE8E0D0E7E0CFE6E0CDE7E0CEE8E1CFE7E1CEE8E1CFE8E0D0E7E0CFE8E1
+      CEEAE1CFE9E0CDE9E0CBE9E0CCEAE1CDEAE1CEE9E0CDE9E0CDE9E0CEE9E0CDE9
+      E0CDE8DFCAE8DFCBE9E1CEE8E0CEE9E0CDE9E0CCE8DFCCE8DFCBE9E0CCE8DFCB
+      E9E0CCE9E0CCE9E0CEE8E0CEE8E0CEE6DFCDE8E0D2E8E0D2E7DFCEE6DECEE7E0
+      CFE7E0CFE7DFCEE6DECEE8E0CFE7DFCFE6DECEE6DFCEE7E0CEE7DFCCE8DFCDE9
+      E0CEE8DFCEE7E0CDE8E0CCE8DFCCE8DFCBE8DECAE9DEC9E9DFCAE8E0CAE8DFC9
+      E8DECAEADECBEAE0CAEBE2CCBDB49CFBF7ECDED4AAB5A67E8C7A60B39E8BDBC2
+      B3E8CCB7E5CAB2D7C2A7D6C4AAB6AEA5D6C6A8DCC6AADEC6A9D9C6AADAC6A9D5
+      C1A9D1BDA9CBBAA2BEB296BCB29FD7CAB3E4D2B8DED2B6DACBB2DBCBB7C5BA9F
+      E9E4E7EFEDE6E0D7BC92966D636653A7A29DDAD3CEE1D6C1D0C6B5E0D1CBC9C0
+      ABF1E7EBE0DFC8EEDFCCEEE3D2EDE2CCDED1C1D2C6B4D5D1BDC8C9A258534BE5
+      D5DAEFE4D9F2E9D8F0E5D7F1E7DAF1E7DDF1E5DBEEE7DCF0E9DAF1E7DAF0E8DA
+      F0E7DAF2E7DFF1E8DBEDE7DAF1E7D8F3E7DFF1E7DFFAF0E6FFF9F1C8C2B3D2CD
+      C8D7D4C3D5CCBDD3C7B9D6CFBAEBE2CFF6E7D9F2E5D6E7DDC6E6D8C2E8D9C5E5
+      D7C2E6D5BAE1CEB2E0CEB2E0CDB2E3CBB0DDCCB1E1CCB1E4CBB6DBC9AFDAC4AA
+      DCC4A9D9C1A4DBC3A6D8C0A4D9BA9DD2BA9FD7BA9BD2B29AD0B698CEB496CDB4
+      95CBB398CCB092C8B08ECAB091CAB190C9AF92C6AD91C6B08EC6AC8EC2AC8EC4
+      AE8EC9AE90C0AC8EC6AC91C5AB8DC4AB91C4AC8CC2AC88C5AC8EC4A68FC4AC90
+      C4AA8CC4AD8EC1AA8BC3A98DC4AC92C5AB8BC6AE89C2AB8CC1AA8CC0AB8BC3AB
+      8EC4AE90C0AC8EC4AD8DC9AC90C5AC8DC0A48BC5AA8FC2AB8EC1AB8EC2AB8DBF
+      AB8FBFA88EC1AB8EC5AA8EC2AB8EC1AB91C5AC90C0AE90C4AE90C6AD90C8AC90
+      C3AE92C5B093C6AF93C4AF91C4B192C5AE96C4B093C5AF93C8B091C5B193CAB2
+      97C8B293CAB296CAB197CBB297C9B295C4B293C9B697C9B096C9B398C8B398C6
+      B296CCB49BCBB49ACBB499CAB69DCBB49ACEBA9DCDB89CCDBA9FCDBA9BCEBA9B
+      CFBBA0D1BAA2D1BAA3D3BCA3D4BC9CD2BDA4D1BEA8D2BEA4D2C0A7D2BDA2D4BE
+      A5D5C2A8D8C1A7D5C4A7D4C3A9D6C5ACD8C5ACDCC7A9E1CAAFDCC8AEDBCCB1D9
+      C7B1DDCCAFDECCB2E1CDB5E1CBB4E3CFB3E3D0BAE1D1B8E2D0B6E0D1B6DCD3B7
+      E1D1B5E5D3B7E4D1B8E4D1B8E5D2BCE4D3BAE1D1BFE6D4BEE5D4BEE7D6C1E8D8
+      C2E9D8C2E9D9C7E9DBC8E4DAC3E6DDC3E6DBC1EDDAC3E9DAC5E6D9C60000FFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFE98A9AC5C855C1F6C0400690016
+      84006AB14DC8DFBCFFFFFFFFFFFFE9F2E6E6EFE0E0EBD6DAE8CEDAE8CEDEEBD6
+      E1EDDDDDEAD6D9E8D1D9E8D2D9E8D1D9E8D3D4E4CAC9DCB7C1D7ABC3D9AFCCE0
+      C0D0E3C9CDE0C3CADFBFC3DAB4C2D9B3CAE0C3C6DDBCB7D2A1AECB91B2CF9ABF
+      D8B2C4DCBBC0D9B6BED1B2D8D8D7EBEBEBF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBB1B2B1B1CFA9BCDDB3BBDA
+      B2BBD9B2BAD9B2BAD9B1BAD9B2BBD9B2B0D3A8C5DFBDF7F7F7F6F6F6F9F9F9FC
+      FCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
+      FEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFCFDFDFCFDFDFCFD
+      FDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFC
+      FDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFCFBFDFCFBFDFDFBFDFC
+      FBFDFCFBFDFCFBFDFCFAFDFCFAFDFBFAFCFBFAFCFBFAFCFBFAECEAEADBDFD8E4
+      F2DEC8DFBFB5D5AAA9CF9CA1CB9480B96E71B25E65AC5059A6425CA6455BA645
+      5AA6455AA54357A44163A94E7DB66B95C286A1C692BED3B2D3DCC8DEDFD6DCDA
+      D0D9D7CBD7D4C8D8D5C9DAD7CCDAD9CEDCD9CEDBDACEDCD9CEDCD9CCDEDBCEE0
+      DCCDE0DCCFE1DDD0E2DED2E3DED3E3DED2E4DED3E4DED3E5DFD3E5DFD4E5E0D6
+      E5E0D5E6E1D5E6E2D5E5E1D4E5E1D4E5E1D4E5E0D3E6E1D6E7E2D6E6E1D4E6E1
+      D4E6E1D4E6E1D4E5E0D4E5E0D5E5DFD3E5DFD3E5E0D3E6E3D5E5E4D8E6E4DAE7
+      E6DEE7E6E0E6E5E0E8E6E0E9E7E1E8E8E1E8E7E1E6E7E0E7E7E0E7E7E0E7E7E0
+      E7E7DEE8E7DDE9E5DDE8E5DFE7E5DCE6E4D8E5E4DAE8E5DDE8E5DCE6E6DDE6E5
+      DDE5E4DCE6E4DAE7E5DAE8E5D8E9E5DAE8E5DAE6E4DAE7E4DAE7E4D8E7E4D7EA
+      E3D7E8E3D6E7E4D7E9E4D8E9E4D9EAE7DBE9E5DAE8E3D6E9E4D5EAE4D6E8E3D6
+      E8E3D6E8E4D7E7E3D6E8E4D4E9E4D6EAE4D7EAE4D8EAE4D7EAE4D4EAE4D4EBE4
+      D3EBE3D2E9E3CFEAE4D0E8E4CEE8E3CFEAE4D3E8E3D3E9E3D5E9E3D3E9E3CFE9
+      E3CEEAE3CEEBE3CFEAE2CCEAE3CDEAE3CDEAE3CDEAE2CCEBE2CDEAE1CCEAE1CC
+      E9E2CDE9E1CBEAE1CAEBE2CBEBE2CBEBE1CAEBE1CAEBE1C9EBE1C9EBE1CBEAE0
+      CAE9DFC9E7E0C8E7E0C8E7E0C8E9DFC8EAE0C9EADFC9E6DEC8E5DEC9E7DFCAE6
+      DFC9E6DEC9E7DFCAE6DECAE6DECBE8E2CDE9E2CFE8E1D0E9E0CFE9E1D0E8E2D2
+      EAE3D4E9E4D4E8E4D4E9E4D3EAE4D6EAE4D9EAE4D8E8E4D7E9E5D8EBE4D8EBE5
+      D9EBE6DAEAE7DAE9E7DAE9E5DAEAE6DAEAE6DAE9E5DBEBE6DAEBE6DAE9E6D9E9
+      E6D9E9E7D9E9E6DAEAE7DAEAE7DAEBE4D9EBE5D9EBE5DAE9E5DAEAE6DAE9E6DA
+      E9E6DAEAE6DAE9E5DAE9E7D9E9E7D9E9E6D9EBE5D9EBE5DAEAE4DAEBE4DAEBE5
+      DAEBE5DAE9E5DAE9E5DAEAE6DAE7E5DAE8E5DAEBE5DAEBE6DAE9E7DAE9E6D9EA
+      E7DAEAE7DAE9E6D9EAE6DAEBE5DAEAE4D9EAE4D9EAE4D9EAE4D8EAE4D8EAE4D9
+      EAE4D8E9E4D7E9E4D7EAE4D8EAE4D9E9E4D7E9E4D7E9E4D7E9E4D7E9E4D7E9E4
+      D7E9E4D7E9E4D7E9E4D8EAE4D9E9E4D8E9E4D7E9E4D7E8E4D7E9E4D8E9E4D7E8
+      E3D6E8E4D6E9E4D7E8E3D6E8E3D6E9E4D7E8E3D6E8E3D6E8E3D6E8E3D6E8E3D6
+      E8E3D6E9E4D7E8E4D8E7E2D8E8E3D8E7E3D5E8E3D5E9E3D6E8E1D5E8E2D3E7E3
+      D2E6E2D0E7E1D2EAE1D3E8E0D0E7DFCFE7E0CFE8E0D0E7E0CEE8E1CFE8E0D0E7
+      E0CFE8E1CFEAE0CFE9E0CDE9E0CCEAE1CDEAE1CDE9E0CBE9E0CCEAE1CCE9E1CB
+      E9E0CBE9E0CBE9DFCBE8DFCAE8E1CBE8E0CBE9E0CCEAE1CEEADFCBE7DFCBE6E0
+      CBE8DFCBE9E0CCE9E0CCE9E0CEE9E0CEE9DFCDE8DFCEEAE2D0E9E0CFE7DFCEE6
+      DFCDE6E0CDE6E0CEE6E0CEE6DFCDE6E0CDE6DFCDE7E0CDE7DFCDE7DFCEE5DFD2
+      E6DFD0E8E0CFE8E0D0E6E0CEE6E0CEE7E0CEE6DFCDE6DECCE8DFCDE8DFCDE8DF
+      CDE7DECDE7DECBE7DFC9E8DFCBEAE1CEBDB49FF6EFE7D5CBA9E2CEB2DAC4A4BD
+      AB86B69E80B49C89B49D89DBC5B6E6D2C0C1B6AEC6C0A5CABA9FD2BEA4D7C3AA
+      D0BEA8CBBCA8CBBCA8D4C7AEE0D1BCE4D1BCDCC9B1DDC6B1E0C7B1E0CAB3DDCF
+      B1CCBDA9D3D2D4E5DFD9DDD0BAF2E2CAFAEFD4F0E3CFEBDAC7E9DCCACDC1ACC1
+      B8ACCBC1B6EBE7E8E9DBCCDBD4C4D3CAB4C9C2AEDBD3C0F1E2D2F8EBDBD8D9B4
+      5C5745EDD9DCECE7D4F1E6D8F1E7DCF0E9E1F0EADCF0E7E1F2E8E1F1E9DAF0E7
+      DBF1EADAF0E7DCF3EBE2F0E7DEF1EDDCFBEEDFFFF3EBF6EEE8E5DCD4A59C8C53
+      4B3ECDCAC9E0DFC7EAE5D2F1E7DBF6EADAF0E5D5EBDCCFEBE0C9E6D9C3E8D8C2
+      E9D8C6E5D8BEE7D6BCE5D0B3E2CDB1E1CAACDECCB3E1CCB0DBC9AEDEC7AFE3C5
+      ACE1C6AAD5BEA6D7BDA5DABEA5D6BCA2D7BAA2D2B69BD0B999D6B99BCEB397D0
+      B49ACFB195C8B092CCB096CDB195C6B090C6AE91C6AD90C6B192C5AD91C3AD90
+      C4AF90C5AB8FC5AC95CAAC90C6AA92C8AC91C2AC90C6AB92C3A88CC5AC8EC1AC
+      8DBEAA89C5AF86C6AF8CC1AC8EC1AB88C1A689C2AA8EC2A88DC5AC8DC0AA88C1
+      A88CC2AA88BBA98BC3AD8FC4AA8CC1AC8EC5A98FC4A98BC0A98DBFA98BC4AB8B
+      C1A88BBDAC8CBBAA8CC2AB8FC0AA8DC0AB90C1AA91C4AA8FC0AD8EC5AD90C6AF
+      91C9AF92C6AA91C6AE95CAAE90C2AF8FC3AF93C8B091C3B290C6B295CAAF92CB
+      B195C6AF91C8B098C6AC93CAB095C9B493C8B192CFB19AC8AF92C6B298C4AD91
+      CBB297CEB39BC5B095C9B398CCB39CC9B39BCAB89ACEB99ACFBA9FCDB99AD2BC
+      9BCCBB9FCEBB9FCDBA9AD2BCA3D2BBA2D7C0A6D9C1A5D3BEA3D1C1A5D5C1A5D8
+      C1A5D8C3A8DEC5A9D6C3A9D6C3AADAC5AADBC7ACD8C7A9DCC9AFDCC6ABDECAB1
+      DCCAB2DACCABE0CCB0DACBB3DBCEB4D8CDB2E1CCB4E0D0B4E0CEB7D9D1B4E2D4
+      BCE3D3B7E2D2BEE3D1BFE5D2BCE3D4B8E0D3B9E5D3BCE5D4BCE5D7BEE6DAC1E5
+      D7C1E7D8C3EADCC0EAD8C4E8DAC3E9D9C8E9DBCAE9DBC7E6DAC6E9DBCAEBDEC9
+      0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4EDE12D8F2639970D
+      8CC075DDEBD8FFFFFFFFFFFFEDF3E8EAF2E6E9F2E4E9F2E5E6F0E1DEEAD5DBE8
+      CFE1EDDBDFECDAD5E5C8D7E6CCD8E7D0D0E2C2D5E5CBD7E7D1D1E3C7C8DCB7CE
+      E1C3D1E3C8CBDFBFC2D9B1CADEBFC1D8AEB5D09BC1D9B2C8DDBFB7D1A1B5D09D
+      C2DAB6C3DBB8BCD6ADC7DABEE6E6E5F1F1F1F9F9F9FDFDFDFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+      FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
+      FEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFCFDFDFC
+      FDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFD
+      FCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFCFBFDFCFBFD
+      FCFBFDFCFBFDFCFBFDFCFBFDFCFAFDFBFAFDFBFAFCFBFAFCFAFAFCFAF9FBFAF9
+      FBFAF8FBFAF8FAF9F6FAF8F5F9F7F3F8F7F1F6F5F1F6F4F0F4F3EDF3F2EBF2F0
+      EAF0EDE5ECEBE4EBEAE3EBE8E0E8E7DEE5E5DBE3E1D9E2E0D7E0DED5DDDCD2DA
+      D9CDDBD9CDDAD7CCDAD7CBDBD9CCDAD8CEDBDAD0DCD9CFDCDBCEDCD8CDDCD9CD
+      DEDBCEDEDBCFE0DBD0E1DDD3E1DDD0E2DED2E4DED2E3DED2E4DED2E4DED3E5DF
+      D3E5DFD3E4DED2E5DFD3E5DFD3E5E0D3E5E0D3E5E0D3E5DFD3E5DED3E5DED4E5
+      E0D4E5E1D4E6E1D5E5E0D4E5E1D4E5E0D4E5DFD3E5DFD3E5E0D3E5E2D6E5E3D9
+      E6E5DDE8E6E1E6E6E0E7E5DEE8E7E1E9E8E2EBE8E3EAE8E3EAE8E0E9E7E0E9E7
+      E2E9E7E3E9E8DEE8E7DCE7E3DAE8E4DBE7E4DAE7E4D7E5E4D8E8E4DBE7E5DCE7
+      E5DCE8E5DCE7E4DBE7E4DAE9E5DAEAE6DAEAE4DAE8E4DBE7E5DCE9E5DBE7E3D8
+      E8E2D7E9E3D8E9E4D8E8E4D6E7E3D4E8E3D7EAE6DAE8E4D6E9E3D3E9E4D3EAE4
+      D4EAE3D3E9E4CFEAE4D0EAE3D0E9E3D0EBE4D0EBE4D0EBE4CFEAE3CEEAE3CEEB
+      E3CEEBE3CDEBE3CCEAE3CCE9E3CBE9E3CDEAE4CEEAE3D0E9E2D3EAE3D4EAE3D2
+      EAE4CFEBE3CDEBE3CDEBE3CCEAE2CBEBE3CDEBE3CCEBE3CCEBE3CCEAE2CCEAE1
+      CCEBE2CCEAE2CBEAE2CBEBE3CBEAE2CAEAE2CAE9E1C9EBE1CAEBE1CAEAE0C9E9
+      E1CAE9E1CAE8E0C9E9E1C9EAE1C9EAE0C9EAE0C9E9DFC9E9DFCAE9DFC9E8DFCA
+      E6E0CBE6DFC9E6DEC7E7DFCAE7DFC9E7DFCAEBE2CDE9E2CEE7E1CEE8E2CEE8E1
+      CFE9E1D0EAE3D2E9E4D3E8E4D3E8E3D3E9E4D4EAE4D6E9E4D5E8E4D6E9E4D7EA
+      E4D9EBE5DAEBE5D9EBE6D9EAE5D9E9E6DAEBE7DAE9E6DAEAE7DAEAE7DAEAE6D9
+      EAE5DAEBE6DAEBE6DAE9E6DAE9E6DAE9E6D9E9E5D9E9E4D9E9E5D9EBE5DAEBE6
+      DAEAE7DBE9E5DAE9E5DAE9E5DAEAE5D9EAE5D9EAE5D9EAE4D9EBE4D9EBE5DAEA
+      E5D9EAE6D9EAE5D9EAE5DAEAE5DAEAE5D9E9E5DAEAE5DAEBE5DAEAE5DAE9E5D9
+      EAE5DAEAE5DAEAE5D9EAE5D8EBE5DAEBE5DAEAE4D8EAE4DAEAE4DAE9E4D7EAE4
+      D7EBE5DAE9E4D8E9E4D7EAE4D8E9E4D8E9E4D7E9E4D7E9E4D7E9E3D7E9E4D7E9
+      E4D7E9E4D7E9E4D8E9E4D7E8E3D7E9E4D8E9E4D7E9E4D8E8E3D7E8E4D7E9E4D8
+      E9E4D6E8E3D6E8E4D7E8E3D6E8E3D6E8E3D6E9E4D8E9E4D8E8E3D7E8E3D6E8E3
+      D7E8E3D7E8E3D6E8E3D7E9E4D7E9E2D8E9E2D8E8E2D7E9E3D7E9E3D6E8E3D4E8
+      E2D4E8E2D4E8E2D4E8E3D6E8E3D6E9E1D5E8E1D3E8E2D2E7E1D2E7E1D2E7E1D2
+      E7E1D2E7E0D0E7DFCFE8E0CEEAE0CEEAE1CEE9E0CCE9E0CCE9E0CCE9E0CCE9E0
+      CDEBE0CBEBE0CCEBE0CBEBE1CBEBE1CCEBE2CBEAE2CAEAE1CCEBE0CEEBE1CDEA
+      DFCBE8DECAEADFCBEADFCBE9DFCBE8DFCDE8DFCDE9DFCDE7DFCFE9E2D2E8E2CE
+      E7E0CEE7E0CEEAE0CFEAE1CFE8E0CEE8DFCFE8DFCDE7DFCDE7DFCEE8E0CFE7DF
+      CFE6DECFE7DFD0E8E0D0E7DECEE6DED0E6DFD2E7DFCEE6DFCDE6DFCEE6DFCFE8
+      E0CEE9DFCDE8DFCDE8E0CDE8DFCCE8DECDEAE1CFC1B49FF4EDE7DDCBACE4CFB0
+      D9C9A9DEC2A9E3CAAFE4D1AEE5CEB09E856674604E9B9091D1CBB0E7D3B8DBC9
+      AFD4C3A8D5C4AADEC4AADAC8AAD7C5ACDCC6AEDAC7AEE1CAB2DBC7B3E3C7B2E2
+      CBB4DECCB3CFBB9FD1CBCAF1EDE2E0D1B8EBD9C5ECD8C4E9DAC4DBCEBDD2C6B4
+      C8CAB3BEC0ACCBC4B3E3DAE0DCDBCAE5DBC9EBDFCEF1E6D7F1E6D4EBE3D0F2E6
+      D9E8E4BD605B49EADCDCF0E7D7F1E7DCF2EADCF3EBDDF6EAE3F1EBE1F2E8E0FA
+      F0E4FDF2E4FAF1E6EBE2D5E5DACEE2DBD0E5DAD2E5DCCFDED8CBE3DECBE9E3D3
+      F8F3DDBCBA96D8D4C6F2E6DDF0E6D6F1E7D7F0E5D6EFE4D2ECE0CBE7DCC4E7DA
+      C4EBD9C8E7D9C6E7DBC6E7D8C1ECD8C5E9D4B9E4CFB2E3D1B2E6CEB4E8D0B8E0
+      C9AFDAC3A8D9C0A6D9C1A5D9BEA5D8BCA4D6BBA3D5BA9DD3BAA2D0B69AD2B89B
+      CBB696CBB397CDB396C8AE93CAB297C9AD92C9AD91C8AD8FC9AF8FC5AF92C8AB
+      92C9AC8FC6AD8FC8AD90C6AD90C5AE8DC2AD8EC5AD8BC2AD8CBFAE8EC9AD8EC5
+      AA8BC0AD8BC8AC91C0AA87C2AB87C4AC8DC0A98DC1AB8EC0AA8EC4A98FC0AA8B
+      C3AC8FBFAC8DC5AB8DC3AB8CC2AB8CC3AD8FBEA58DC4AC91C3AC8EC1A88DC2AE
+      8DC8AC95C4AC8FC1AA8CC2AD8CC4AD90C3A98EC4AC8FC0AC90C2AE91C3AB92C9
+      AE91C4AF92C3AF92CEAE91C9AF95C5AE95C6AF93C9B198C9B696C3AF90C8B195
+      C5B195C6B095C6B292CCB495C8B295CEB295C6AF8ECAB493C9B495C8B193CEB2
+      97C9B397C6B095CAB398CDB397CDB79ACBB49ACBB69DD1B79CCFB8A0CCB99FCF
+      BA9FCCBA9DD0BAA2D5BBA3D3BBA3D2BCA5D3C0A2D4BBA6D7C1A4D5C1A4D8BDA7
+      D5C1A7D4C1AAD5C3A8D8C1A9D4C6A9D7C7A9D5C4AAD9C6ACD8CAAFD8CBAFD7CD
+      B0DBCBAED8C9A9DCCAB4DECAB6E3CCB7DACDB0DED0B5DED0B4DDD0B3DAD1B5E3
+      D2B8E4CFB6E2D1B7DDD2B9E0D4B5E2D3BCE3D5BFE1D3C0E6D8BDE4D7BAE6D5C1
+      E6D5C5E6D5C5E8DAC2E5D9C5EADCC7E7DDC3E8D9CAE8DDCAEBDCC6EBDBCAEBDD
+      CAE9DBC80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFE
+      FDFEFEFEFEFEFEFDFDFDEFF4EBEEF2EAEFF3EDEDF3EBE9F0E4EAF1E7EBF1E9E9
+      F0E6E7EFE3E7EEE2E2EBDBDEE9D5E3ECDDE3ECDEDAE6D0DAE6D1DFEAD9DFEBDB
+      DEE9D9DDE9D8DBE8D6D3E2C8D0E0C2D9E7D2D7E6D0CEDFC0CADDBCD1E1C8D2E2
+      CAD3E3CDD4E4CFD3E2CBDFE8D7F7F7F7FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFD
+      FCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFD
+      FDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFCFBFDFCFB
+      FDFCFBFDFCFBFDFCFBFDFCFAFDFCFAFDFBFAFCFBFAFCFBFAFCFBFAFCFAFAFCFA
+      F9FBFAF8FBFAF8FBFAF6FAF8F5FAF7F4F9F7F3F8F7F2F7F5F0F6F3EFF3F3ECF2
+      F1EBF1EEE8F0EDE4ECE9E2EBE8E0E8E7DCE7E5DBE5E4DAE3E1D9E2E0D7E1DED6
+      DEDDD3DCDAD0DCDACEDAD7CCDAD6CBD9D7CDDAD8CEDBDAD0DBDAD0DBDBCFDCD9
+      CEDDDACDDDDACEDCDACFE0DCD0E2DDD2E2DED2E2DED2E3DED0E3DED0E3DED2E2
+      DED2E3DED0E5DFD3E4DED2E4DED2E5DFD3E4DED2E4DFD2E4DFD2E4DFD2E5DED2
+      E5DED2E5DFD3E5DFD2E5DFD2E4DECFE4DFD0E4DFD2E5DED2E5DFD3E5E0D3E5E0
+      D4E5E2D6E6E4DAE7E4DBE6E4DCE6E5DDE9E7E1EBE9E3EBE8E3EBE9E3EAE8E1E9
+      E7E0E9E7E1E8E7E0E8E7DEE9E5DBE9E4DAE7E3D7E9E4D8E8E5D9E6E4DAE7E5DB
+      E7E5DCE8E5DAE8E4D9E7E2D7E8E4D6E9E5D9EAE6DAE7E4DBE8E5DCE6E7DCE9E4
+      D9E8E2D6E8E2D5E9E3D4E9E3D2E9E3CFE9E3CEE9E2CEEBE3D3EAE2CEEAE2CBEA
+      E3CDEBE3CEEBE3CDEBE2CBEBE2CBEBE3CCEBE2CDEBE3CCEBE3CCEBE2CBEBE2CB
+      EBE4CDEBE3CCEBE3CDEBE3CFEBE3CDEAE3CCEAE2CCEBE4CEEAE3CDE8E2CCE9E3
+      CDE9E3CEEAE3CEEBE3CDEBE3CDEBE4CCEAE2CDEAE2CDEAE3CCEAE3CCEAE3CCEA
+      E2CDEAE2CEE9E1CCE9E1CBE9E1CBE8E2CAE8E2CAE8E1CAE6E0C8EAE0C9EBE1CA
+      EBE1CAEAE0C9EAE0C8EAE0C9E8DFC9E8DFCAE8DFCAE9DFC9E9DFCAE9DFCAEAE0
+      CBE8E0CBE5DFCAE5DFC9E5DEC9E6DEC9E6DECAE6DEC9EBE1CEEAE3CFE9E3CEE9
+      E3CDE9E2CEEAE3CFE9E2D0E9E2D2E9E3D2E9E3D2E8E2D2E9E4D4E9E4D5E9E4D4
+      E9E4D6E9E4D8E9E4D8EAE4D8EBE4D8EAE4D8E9E5D8EBE6DAEAE6D9EAE5D8EBE6
+      D9EAE5D9EAE4D9EBE5DAEBE5DAEAE5D9E9E4D8E8E4D7EAE4D8EAE4D8EBE5D9EB
+      E5D9EBE5DAEAE6DAEAE5D9EAE5D9EAE5D9EAE4D8EAE4D8EAE4D8EAE4D9E9E4D8
+      EAE4D8EAE5D8EAE4D8E9E4D7EAE4D8EBE4D9EAE4D8EAE4D8EBE4D8EAE4D8E9E4
+      D8EAE4D8EAE4D8E9E4D7E9E4D7EAE4D8EAE4D8EAE4D8E9E4D7E9E4D7E9E4D7E9
+      E4D7E9E4D7E9E4D7E9E4D7E9E4D7E8E3D6E8E3D6E8E3D6E9E4D7E8E3D6E8E3D6
+      E9E4D7E7E2D6E8E3D7E8E3D6E8E3D7E8E3D6E9E3D6E9E3D6E9E4D6E8E3D6E8E3
+      D6E8E3D6E7E3D3E8E3D5E9E3D8E8E3D6E8E3D5E8E3D6E7E3D5E8E4D6E8E4D6E8
+      E3D5E7E2D5E8E2D7E8E3D6E8E3D6E9E4D7E9E3D6E9E3D6E9E3D7E8E3D6E8E3D3
+      E8E4D3E9E3D5E8E2D6E8E2D6E8E2D5E8E2D3E8E1D3E9E2D3E8E0D2E8E0D0E9E2
+      D3E9E2D2E8E0D0E8E0D0E8E0D0E8DFCEE9DFCEE9E0CDE9E0CCE9E0CCE9E0CCE8
+      E0CBE9E0CBEBDFCAEBE1CCEBE1CCEBE1CBEBE1CBEBE1CCEBE2CBEBE2CCEBE2CC
+      EBE1CBEBE1CBEBE1CBEBE1CBEBE1CBE9DFC9E9DFCAEBE0CCEBE1CDEAE1CFEAE3
+      D0EAE1CDE9E0CEE8DFCDEBE0CEE9E0CEE9DFCDEAE0D0E9E0CEE6DECDE7DFD0E8
+      E0D0E7DFCFE6DECEE7DFCEE7DFCFE7DFCFE7DFD0E8E0D2E6DECEE6DFCEE7DFCF
+      E6DECFE7DFD0E7DFCEE6DECDE6DECEE7DECEE7DECEE9E1D0C4BCA6EDE8E3DBD1
+      B7DECAAFE2C8AFE0C7ACE0C7AFE0C7ACE4CAAFEBD6B7DCCEA9B7AEAAD5C7ABDA
+      C6A7D9C3AADEC7ACDCC8A9DCC6ACE0C7ACE2C7B0DEC7AFDDC7AFE0C7B0DECDB2
+      E4D0B7E5CEB7E1CBB2D1BEA6B7AEAAE8DFE1E2D5C0D7CEB7CAC2AED1C4B0DAD1
+      BEE5DCC8E6D7C7D7CFC1D6CCBADAD6D7E8DCCFEDE4CFEFE1D4EADFCDEDE4D4F1
+      E3D3F2E7D7EBE6C6615D48EBDDE1F1E7D8EEE9DDF1E9DEF1ECE3FAEFE4FDF2E8
+      FBF3EAEAE2D6D1CCB7D1C8B9DCD5C8EBE4D8F0E9DAF9EDE3F9F2E6F6EDE3FAF0
+      E7F8EDE4F6EBE3FFF7EBF8EDDCF2E7DBF0E9DEEFE4D4F1E4D5ECE3D3EAE0CDEB
+      DAC8E8DAC4EADDC5E5D5C4E4D7C4E6D8C2EADAC9EDDDC5EAD9C3EBD7C4E6D3B9
+      E6CEB4DECAACDAC4A8DAC1A6DBC1A6D9BEA6D5BCA3D6BB99D3BAA0CFB499CFB4
+      98CFB297CCB399C9AE97CBB196CCAF93CAB192CCB296C8B091CAAF91CFAD91C4
+      AE8DC4AF8DC1AB8EC6AE8BC6AD8EC2A88DC4AB90C9AC8EC2AD91C5AC8CC3A988
+      C5AD8EC6AE8EC3AB89C0AD87C0A888C3AB90C0A88DC1AC8CBFAC8BC4AB8EC5AB
+      8DC3AB8EBFA68DC4AA8DC1AA8FBFAB8CC8AC90C4AA8CBFAA8EBEAB8DC3AA8EC1
+      AA8CC3A990C1AD8FC0AB8EC3AD8DC2AD8FC4AE8BC2AC90C2AB8EC5AD8FC5AD90
+      C5AE91C8AE95C8B193CAAD92C8AE95C6AF93C8B095CAB496C9B195CBAF99CCAF
+      95CBAE93C9B191C4B092C8B396C5B193C9B193C9B396C6B395C9B496CDB19BC9
+      B696CBB493CAB496CAB698C9B499CBB497CAB496CCB79ACBB899CBB69CCDBA99
+      D0BA9DCFBAA2CFBAA2D4C0A0D5BBA3D6BEA4D3C1A5D2BDA2D5C1A5D2C1A3D6C3
+      A9D6C2A8D9C3A7D7C2A8D9C3A9DAC8ABD8C6ACD7C6A9DAC8ABDBC9AFDBC9ACD8
+      CBB0D8CBB1DECBB2E0CDB4DECEB2DECCB4DDCCB1DDCEB5DECEB5DCCEB4E2D0B6
+      E1D1B6E2D0B6E1D0B6E3D2B9E1D4B9DED1BCE4D3BEE3D4BDE4D6BDE5D6BFE2D6
+      BFE5DBC3E6DBC5E6DAC5E8DBC9E7DAC6E8DDCAEBDECBEBDFC8EBDDCAEBDDCBEA
+      DDC9E8DEC9EAE0CA0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFE
+      FFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFC
+      FDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFCFBFDFC
+      FBFDFCFBFDFCFBFDFCFBFDFCFAFDFCFAFDFBFAFDFBFAFCFBFAFCFBFAFCFBFAFB
+      FAF9FBFAF9FBFAF8FBFAF6FAF9F6FAF8F5FAF7F4F9F7F2F7F6F1F6F4F0F6F3EF
+      F3F3ECF1F1EBF1EEE8EEEDE4ECE9E1EAE8E0E8E7DDE7E4DBE5E4DBE4E1DAE3E0
+      D8E2DFD7E0DED4DDDCD0DBDACFDAD8CCD9D8CCDAD8CCD8D8CEDAD9D0DADAD0DB
+      DAD2DCDBD2DBDACFDCDBCFDBDBD0DDDDD2DCDBCFDEDCD0E0DED2DEDED2E1DDD2
+      E3DED0E2DED0E2DED0E3DED0E2DED0E4DED2E4DED2E4DED2E5DFD0E5DFCEE3DE
+      CDE3DED0E4DED2E5DDCFE5DDCEE4DECCE5DECEE5DECDE3DECDE3DECCE5DECFE5
+      DED3E5E0D2E5E1D2E6E2D5E7E2D6E5E1D8E6E4DCE9E7E1E9E7E3EAE7E2E9E7E1
+      E8E7E0E9E7E2E7E7E1E7E7DFE9E6DEE9E5DAE8E4D6E8E2D5E9E4D7E9E3D9E9E2
+      DAE8E4D9E7E4D7E8E3D7E7E2D5E5DFCFE6E1D0E6E4D6E5E4D8E7E4DAE9E6DCE8
+      E4D9E7E3D5E6E1D2E6E1D0E6E1CFE6E1CEE6E1CEE7E3CFE9E2CEE9E0CAEAE2CB
+      E9E2CCE9E2CCEAE3CCEBE3CCEBE2CDEAE2CDE9E3CCEBE4CEEBE4CEEBE3CDEBE3
+      CDEBE3CDEBE3CDEBE3CDEBE2CEEBE2CFEBE3CDEBE3CCEBE2CCEBE3CDEBE2CCE9
+      E1CCEBE3CDEAE1CCEBE1CDE9E2CCE9E3CDEBE3CDE9E1CCE9E1CDEAE2CDE9E1CC
+      E9E1CCEAE2CDEAE1CDE9E1CBE9E1CBE9E1CAE8E1CAE8E1CBE8E0CBE8E1CBE8E0
+      CAE8E0CBE8E0CAE9E0CAE9E0CAE8DFCAE7DFCAE7DFCAE5DEC9E6DFC9E6DEC9E7
+      DEC9E8DECBE6DECBE6DECAE6DEC9E5DDC8E6DEC9E5DDC9E6DECAEAE1D0EBE2CF
+      EAE2CDEBE2CEEBE3CDEBE3CCE9E2CFE8E1D0E8E1D0EAE3D2EAE2D2E7E2D0E9E4
+      D3E9E4D4E9E4D4E9E4D5E9E3D6E9E4D5EAE4D5EAE4D6EAE4D8EAE4D8EAE4D8EA
+      E4D8EAE4D8E9E4D7E9E4D7E9E4D7E9E4D7EBE4D7EAE4D6E9E3D6E9E4D6E9E3D6
+      EAE4D6EAE4D6E9E4D7E8E3D6E8E3D3E9E4D4EAE4D5E8E4D6E8E3D5E8E4D6E9E3
+      D7E9E3D6E9E3D6E9E4D7E9E4D7E9E4D7E8E4D6E9E4D7E9E4D7E8E3D6E9E4D7EA
+      E4D8E9E4D7E8E3D7E8E3D6E9E3D6E9E4D6E9E3D6E8E3D5E9E3D6E9E4D6E9E4D5
+      E9E4D4E9E3D6E9E3D6E9E3D6E9E3D6E9E3D6E9E3D6E8E3D5E8E3D5E9E4D4E9E4
+      D4E9E4D4E9E4D5E8E3D4E8E3D4E9E3D6E9E3D6E8E2D5E9E2D7E8E2D5E8E3D3E9
+      E3D6E8E2D5E8E2D5E8E3D3E8E3D3E8E2D5E9E2D3E8E2D2E8E1D2E8E1D2E9E3D3
+      E9E2D3E8E2D0E8E1D2E9E2D3E9E2D3E9E2D3EAE3D4E9E2D3E9E2D3E9E2D3E8E3
+      D0E8E2D0E9E2D4E9E2D5E8E1D2E8E1D2EAE1D3EAE1D2E6E2D2E8E2D2E9E0D0E8
+      E0CFE8E1CFE8E2CFE8E1CFE8E1CFEAE1CFEBE0D0EADFD0E9E0CEE8DFCBE9DFCC
+      EBDFCCEAE0C9EBE1CAEAE0CAEBE1CBEBE1CAEBE1CAEBE1CAEBE1CAEBE2CCEBE3
+      CBEBE4CBECE3CDECE3CCEBE0C9EBE2CBECE2CBEBE0CAEBE0CBEBE1CBEBE0CCEC
+      E4CEECE3D0EBE0CDEBE0CBEADFCAE8E0CBE9E0CCE8DFCCEAE0CEE9E0CEE7DFCE
+      E7DFD0E7DFD0E7DFD0E8E0D0E7DFCFE7E0D2E7DFCFE6DFCEE8E0CFE8E0D3E6DE
+      CFE6DECFE8DFD3E8E0D2E6DED0E6DED0E6DECFE6DFCEE6DFCFE8DFCDCCC1AAE8
+      E3DEDED8BDE2CFB3E1CAAEDDC6A9DDC8ABDDC8ABDEC6AEDEC6AED9C9A9CCBEB1
+      D0CAAEDCC8AADCC7A9DAC3B0DDC3ABDEC6ACDDC7AEDCC7ACE1C8B0E2C6AEE5D1
+      B5E2CBB0D2BEA6C5B89DC6B9A0D4C6B0A6A38DCFC8C4DDD0C3E2D1BDE8D5C3EA
+      D9C7E9DAC9E5D6C8E3D7BED4CCBDDCCEBDD2D0CAEAE1D3EBE1CCEBE3D0EBE1D0
+      EFE4D5ECE4D6F1E5D7F3EDCF605E4FEADCE4EFE4D9E4D9CDE3DCD0E5DBD4E3DD
+      D4E2DCCFE1DACFEDE6DBFAF2E6FDF3E7FBF1E8F6EDE3F8EDE4F7EEE4F8EDE4F8
+      EEE3F8EEE3F8EFE2F2EAE2F1EBE2F6EBDEF7EADBF6E9DBF1E7D6F1E7D6EEE4CE
+      ECE1CCEBDDCAE5D8C1E6D7C4E7DCC2E7D4BEE5D2BFE7DAC3E8D7C3E8D7C0E8D9
+      C3E2D2B8E3CEB1DDC8AADEC4A8DBC1A7D8BEA3D5BAA0D4BB9BD3BA9DCFBA98CD
+      B69ACCB198CFB799CDB399CAB293CEB193C6B091C8AF95C8B090C8AE91CBAD91
+      C5AF91C8AF91CBAE93C8AC8FC5AD8CC5AD8DCCAC93C8AC8DC4AB8EC6AB8FC5AA
+      8CC3AA8DC4AB8DC5AD8FC4AA89BFAC8DC9AF92C4AC89C2AE8DC3AE8CC2AA8EC4
+      AB8CC3AA8DC1A88CC3AD8CC2AA87C3AB89C6A98DBEA988C2A989C4AB8DC5A992
+      BEA486C5AC87C4AC8DC0AB89C5AE90BEAA8CC1AC8CC3AC8CC5AD8DC5AE8EC1B1
+      91C3AD92C5AB90C4AC90CBB193C9AE92CDB197CBB296C9AE96C5AE96C8B196CA
+      AE96C9AF92C9B295CFB29AC5B097C5B096CDAF95CBAD97C8B193CCB797CBB395
+      CAB399C8B296CCB79ACBB199CDB898CBB296CAB298CFB89CCCB297CAB698CDB8
+      9FD2BB9FCEB9A0D4B9A0D3BD9FD1BDA5CEBDA0D4BDA6D3BDA4D4C1A5D5C1A6D9
+      C3A9D5BDA7D8C4A9D2C3AAD8C2A9D8C4A9DDC7AFE0C9AEDACAABD9C6ABDCC9AE
+      DAC9B1DDCBB1DAD0B3D9CCB3DBCDB0DECDB3E1CEB6E1CFB5E3D1B7E1CEB4E1D0
+      BCDED0B9E5D1B8DED5BADCD0BDE2D2BAE0D3B9E2D5C0E5D3C0E4D5BEE3D4C0E5
+      D5BEE5D8C3E4D9C3E8DAC5EADCC8E8DDCAEBDECCEDDEC8EBDDCAEBDECDEBDFC9
+      EBDEC9EBDDCBEBDFCBE7DCC80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
+      FEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFD
+      FCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFCFBFDFCFBFDFCFBFDFCFBFD
+      FCFBFDFCFBFDFCFBFDFCFBFDFCFAFDFCFAFDFBFAFDFBFAFCFBFAFCFBFAFCFBFA
+      FCFAFAFCFAF9FBFAF9FBFAF8FAF9F6FAF9F5FAF7F4F9F7F3F8F7F2F7F6F1F6F3
+      F0F4F3EEF2F2ECF1F0EAF0EDE7EFECE4EBE8E2E9E7DFE8E7DCE8E5DBE5E4DBE3
+      E0D9E2DFD7E1DED6E0DED4DCDCD2DAD9CED9D7CBD9D7CDDAD7CDD9D8CEDAD8CF
+      DAD9D0DBD9D3DCDBD2DCDCCFDCDCD2DEDDD2DEDBD0DDDACDDDDBCFE0DCCFE1DE
+      D2E3DED3E3DED0E1DDCFE2DED0E2DED2E3DED0E3DED3E4DED3E4DED0E4DED0E5
+      DED0E3DECDE3DECDE4DECDE3DDCDE4DDCDE5DCCDE5DDCEE5DECDE4DDCBE4DDCB
+      E5DDCDE4DECEE5E1D0E5E1D3E6E1D4E6E1D4E5E0D6E5E3DBE9E7E0E9E7E2E9E7
+      E1E6E5DEE5E4DCE7E5DEE8E7DFE7E5DDE8E4DBE8E4D8E7E3D0E7E2CFE6E1D0E5
+      E0D0E6E0D2E6E0D0E5DFCEE4E0CFE5E1D0E5E1D0E5E1CFE5E2D3E5E1D5E7E3D7
+      E8E2D6E7E2D4E7E2D5E6E2D3E5E1CEE4E0CFE5E2D0E6E2D2E6E2D2E7E2CFE5E0
+      CAE8E2CEE8E2CFE7E2CBE8E2CBE9E3CDE9E3CEE8E2CCE8E3CCE8E3CDEAE3CEEA
+      E3CEE9E3CEEAE3CDEBE3CCEBE3CDEAE2CDE9E2CDEAE3CEEAE3CEEAE3CDE8E3CC
+      E9E2CCEBE1CEEBE1CCEAE1CCE8E1CCE7E2CCE8E2CCE9E2CDEAE1CDE9E0CDE9E1
+      CCEAE2CDEAE2CCE9E1CBE8E1CBE9E1CBE8E0CBE8E1CAE8E1CAE8E0CBE8E0CBE9
+      E0CCE9E1CCE8E0CBE7DFCAE7DFCBE7DFCBE7DFCAE8E0CAE8E0CAE7DFC9E7E0C9
+      E6E0C8E6E0C8E6DFC9E6DEC9E5DECAE5DDC9E6DDC9E6DECAE5DDC9E5DEC9EAE1
+      CEEBE2CEEAE1CCEAE1CDEAE1CDEAE1CCEBE2CEEAE1CFEAE1CEEBE3D0EBE3D0E9
+      E3D2E8E3D2E9E4D4E9E4D5E8E4D3E8E3D4E8E3D3E9E4D4EAE4D6EAE4D7E9E3D5
+      E9E3D5E9E4D5E8E4D5E8E3D4EAE4D6E9E4D5E8E3D5E9E4D6E8E4D4E8E3D3E9E2
+      D3E9E2D3E9E2D3E9E2D5E9E2D4E8E2D3E8E2D3E7E2D2E8E3CFE8E2D2E8E2D3E9
+      E3D3E8E3D4E8E3D4E8E3D4E8E3D4EAE3D5EAE2D4E9E2D4E8E3D3E8E3D3E7E2D2
+      E7E2D3E8E3D4E9E3D4EAE1D3E9E1D3EAE3D5E8E3D4E7E2D2E8E3D2E8E3D3E7E2
+      D3E8E3D2E8E3D3E8E3D4E9E4D5E9E4D5E8E3D4E8E2D3E9E1D3E9E2D4E8E4D4E8
+      E3D2E9E4D4E9E4D5E8E3D4EAE4D5E8E3D4E8E3D4E8E3D4E9E3D5EAE4D5E8E3D3
+      E7E2D2E9E4D4E8E3D3E8E2D5EAE2D3E9E2D2E8E1D2EAE3D3EAE1D2E9E1D2EAE2
+      D0EAE2D2EAE1D0E9E2D0E9E2D0EAE2D3E9E1D2E9E1D2E9E1D0E9E1D2E9E1D2EA
+      E3D0E9E2D2EAE2D2E9E2D0EAE2D0E9E1CFE9E1D0EBE2CFEAE1CEE8E1CFE9E1CF
+      EAE1CFEAE1CFEAE1CFEAE1CEE9E0CDE9E1CCEAE1CDEAE0CDEAE0CEE9E0CDE9E0
+      CCEAE0CCEAE0CCE9E0CBEAE0CAEBE0CBEBE1CCEBE1CBEBE1CBEBE0CCEBE1CCEB
+      E2CBEBE3CBECE4CCECE3CDECE3CDECE2CBEDE1CAEDE1CAECE2CBECE0CCEBE0CA
+      EBE1CAEDE4CEECE4D2ECE1CDEBE1CBEBE1CBEBE1CBE9E0CBE8DFCBE9E0CDEADF
+      CEE8DFCDE7DFCDE7E0CEE7DFCEE7E0D0E7E0D0E7E0D2E7DFD0E6DFCEE7DFCFE8
+      E0D2E7DFCFE7DFCFE7E1D2E6E0D3E6DFD3E6E0D3E7E0D3E8E0D2E6DED2E7DECB
+      CFC4ACE4DDD6E2D8BDE0CFB4E2C9B2E6CBB1DCCAB0E0C8B1E2C9AEDDCBAED9C5
+      ACCABDB0D5CCB3DAC7A6DDC7ABDCC4A9E0C8AFDDC7ACE2C5ABDAC5A9D2C1A9D0
+      BEA7C4B399C8B89AD2C4ABDED1B9E3D4BDE1D1B5DDCFB9E3D3C4E1D1BFE5D6BE
+      E8D3B9E6D7C3E5D5C5E7D9C8E6DBC1C9C0B1DED2C1C8C6BCE8E2D0EDDFD0E9DE
+      CBF1E1D0EAE3D0F2E7DAFCEEDEEFECD660634FC5BAC3CDCABADED9CAEEE9DAF1
+      EBE3FAF2E8FAF2E7F9F0E4F9EDE4FAEEE7FBF1E8F8EEE3F8F0E6F7EDE4F8EEE6
+      FAEEE3F7EFE4F8EEE3F6EDE3F6EDE3F7ECE0F8EDDDF6E9DBF1EAD9F2E8DAF1E7
+      DBF0E7D7EBE0CFEFE5D4E5D7C1E8D4BFEBD5C3E6D2BCE5D3B8E2D1C0E8D7C6E7
+      D8C3E3D7BDDEC9AEE0C9AEDEC8ABDCC8ABDCC3A8D6BBA4D3BDA0D2B89BD1B69A
+      CEB498CFB89AD0B297CEB298CDB498C9B295CAB196CAB290C8B08EC8AD92C8AE
+      8FC6AF91C6AE91CAAB90C6AC8EC8AD92C4AB8EC9AF8FC6AD8DC5AB8FC6AC8EC1
+      AB8EC5AC90BFAA8EC4B191C2AE8CC1AC8BC6AB90C1A68DC3AB8EC5AC8BC6AC8E
+      C6AC8BC3AB8DC3AA8EC3AB8BC6AC88C4AC8EC3AA89BFAB86C5AD8CC4AB8BC1A6
+      88C1AF8CC0AC89BFAB8DC0AC8DC4AB8DC4AC8CC3AD8EC3AD91C6AD91C1AC8EC1
+      AC8EC5AD90C4AE90C8AB93C8AF95C8AD91C6B093C6AE91CBB095C8B296C9B295
+      C6B193C6B292C8B192C8B395C8B097C6B195C5B196CCB195C9B093CAB398C8B1
+      97CBB399CDB398CEB697CCB698CBB698CDB498CCB699CCB69BCCB79DCCB79BCB
+      B99DCFBA9CD0BB9BD0BAA0D1BAA0D1B99FD4BDA4D3C4A7D2BEA4D6C0A7D4C0A5
+      D9C1A7D7C2A9D6C3AAD3C3AAD9C4ACD7C7ACD8C6ABDAC7AED9C6B1DBC6B0DEC9
+      AEDDCDB3E0CBB5DACBB1D9CAB6E0CEB1E0D1B6E0CEB9E3D2BCDECFB4E1CFB6E4
+      D1B6E0D1B5E2D4B6E0D1B8E2D1BCE1D1BEE0D1BEE3D2BDE0D1BCE3D5BEE1D6BE
+      E4D8C2E6D6C4E5D7C6E7DAC5E7DDC6E7DCC7E9DBC9EBDECCEBDDCCEBDFCBEADE
+      CBE9E1CCE7DDCAEBE0CCE9DFC9EFE1CA0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FEFEFFFEFEFFFEFEFFFEFEFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFD
+      FDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFCFBFDFCFBFDFCFBFDFCFB
+      FDFCFBFDFCFBFDFCFBFDFCFBFDFCFAFDFCFAFDFBFAFDFBFAFCFBFAFCFBFAFCFB
+      FAFCFAFAFCFAF9FBFAF9FBFAF8FBF9F6FAF9F5FAF8F5F9F7F3F8F7F3F8F7F1F6
+      F5F0F4F3EFF3F3EDF1F1EBF1F0EBF0EDE6EEEBE4EBE8E2E9E7DFE8E6DDE8E4DC
+      E5E3DAE2E0D9E2E0D6E1DED5DDDDD3DDDCD2DAD8CED8D7CBD9D7CCD9D7CDDAD6
+      CDDAD8CFDAD9D0DAD8D0DCDACFDBD9CEDCDACFDEDBD0DEDBD0E0DBCEE0DBCEE0
+      DCCFE1DCCFE2DDD2E3DED0E1DCCEE1DCCEE2DDCFE2DED2E3DED3E3DED2E4DDD0
+      E3DED0E3DDCFE3DECDE4DECDE4DCCDE1DDCCE4DECDE5DDCDE5DDCCE5DDCCE5DE
+      CDE5DECDE4DECCE4E0CDE5DFD0E5E0D3E5E0D3E5E0D4E5E1D5E5E2D8E8E4DBE8
+      E5DDE8E5DCE6E4DAE6E3D9E8E4DAE8E5DAE8E4DAE9E4DAE8E3D6E6E1CFE6E1CF
+      E5E1CFE5E1D0E5E0CFE5E0CFE5E0CFE4DFD0E5E0D2E4E0D0E5E1D0E5E2D3E6E1
+      D4E6E0D3E5E0D3E6E1D4E6E1D5E6E1D4E5E2D0E5E0D0E5E1D2E5E2D2E7E2D2E6
+      E1CFE6E3CFE8E2CFE8E2CFE8E2CDE9E3CEE9E3CFE9E3CEE9E3CEEAE3CFE9E2CE
+      E8E2CDE8E3CEE9E4CFE9E3CEEAE3CFE9E3CEE8E2CEE9E2D0E9E2CFE7E1CEE9E3
+      CCE8E2CEE9E3CFE9E2CFE8E1CCE9E2CCE8E2CDE8E2CDE8E2CEE8E2CEE8E1CDE9
+      E0CCE9E1CDEBE2CEE9E2CCE7E1CBE7E1CBE8E1CBE9E0CCE8DFCBE8E0CBE8E0CB
+      E8E0CBE8E0CBE8DFCCE6DECAE7E0CBE7DFCAE7DFCAE6DFC9E6DFC9E7E0CAE7E1
+      CAE7E0C9E6DFC9E7E0CAE6E0C9E6DEC8E6DEC9E6DEC8E5DFC8E5DEC7E5DEC8E6
+      DEC9EAE2CBEAE1CDEAE1CDEBE1CEEAE1CDEAE1CDEBE2CEEBE2CEEBE2CEEBE2CD
+      EAE1CEE9E2D2E8E3D2E9E4D2EAE4D3E8E3D2E9E3D2E8E3D2E9E4D3EAE4D4EAE4
+      D4E8E3D2E8E3D2EAE4D3E9E3D3E8E2D0EAE3D2EAE3D2E9E3D2EAE2D2EAE2D0E9
+      E2CFEAE2CFEAE1CFEAE1CEEAE1CFEAE2CEEAE2CDEAE2CFEAE2CEEBE3CDEAE2CE
+      EBE3D0EBE3D0EAE2CFEBE3D0EBE3D0EBE3D0EBE3D0EBE2CFEBE2CFEBE2CFEBE2
+      CFE9E2CFEAE2D2EAE2D2EAE2D3E9E2D3E9E1D2EAE1D3EAE1D3E9E2D2E9E1D0E9
+      E1D3E9E0D3E9E1D0E9E2D0EAE1D2E9E2D0E9E2CFEAE2D0EAE2D0E9E0CFE9E1CF
+      E8E2D0E8E1D2E8E1D3E8E1D2E7E1D0E8E2D2E8E2D2E8E2D2E8E2D2E9E2D2E9E2
+      D2E9E2D2E9E1D2EAE2D2E9E2D2E9E1D3E9E1D2EAE1D2EAE2D3E9E3D3E9E1D2E9
+      E1D2E8E2CFE9E2CFE9E2D0EAE2D0EAE2D0EAE1D0E9E0D0E9E1D0E9E1CFEAE2CF
+      EAE2CFEAE2D2EAE1D0EAE1CFE8E1CEEAE1CDEAE1CEEBE2CFEBE2CEEAE1CCEAE1
+      CDEAE1CDEAE1CEEAE1CEEBE1CFEAE1CDE9E0CCE9E1CBEAE1CCE9E0CCE9E0CDEA
+      E1CDE9E0CCE9E0CCE9E0CCE9E0CCE8DFCBEAE0CCEAE0CCE9DFCBEAE0CCE9DFCD
+      EAE0CDEBE1CBEBE2CBEBE2CDEBE1CCEBE2CDECE3CEEBE2CBEBE1CAEBE1CAEBE0
+      CBEBE0CBEBE1CAEBE3CDECE4D0EBE2CDEBE1CBEBE1CBEBE1CBE9DFCBE9DFCBE9
+      E0CBEADFCBEADFCBE9E0CBE9DFCBE8DFCCE7E0CFE8DFCFEAE1D0E9E0D0E8DFCF
+      E8DFCFE9E0CFE7DFD0E7DFD3E7E0D3E6DFD2E7DFD0E7DFD0E7DFD0E6DED0E6DE
+      D0E7DECCD8CEB7E0D8D3E3DDC5E1CCB2E1CAB1E0CAB2E2C8ACE1C9B0E0C9B2E0
+      C6AED8C7A8CEC3B0DCD1B9DBC6AAD9C3A9D1BAA4D1BAA4D1C2A9CCC0A6D0C1AA
+      CBBBA9CFC3AADCCCB7DDCFB5E0CEB1DBC8B5DECBB3E4CEB4E5D0B7E3D0BCE6D2
+      C0E3D2BCE7D8BFE5D8C3E9DAC5E6D9C9ECE1CABDB8A5DED5C0C3C0BCF1E7DBE7
+      D9CAE6DACAE5DBCAECDFCFE0D4C7CCC3B3D1CDB7888F6CE7E1DBFAEEE2F6ECE2
+      F3EDE2F7EDE3F9EFE7F6EEE4F3EDE4F8EDE4F9EEE7F9EFE6FAEFE9F8EDE6F7EC
+      E3F8EDE4FAEEE7F7EEE4F7EEE4FAEDE6F2ECE3F6ECE1F1EBDEF6EAE1F1E9DAF1
+      E9DAF0E9E0F2E7D7F0E5D3F0E4D4E9DCC4E9D3BDE9D2B9EDD7BEE2CFB5E9D3BD
+      E9D9BFE7DAC5E6D8BDE5CFB2DECBB0DEC7AEE0C6ABDCC3A8DABEA6D3BA9FCEB8
+      9ACCB499D1B897CDB399D0B295D1B796C8B290CEB395CCB092CDB498CCB095C8
+      AF90C8AD90C9AF92C6AC8FC6AC8DC6AD92C5AB90C8AE8CC9AC8DC8B092C2AC8B
+      C5AD8EC4AC8CC2AC8EC6AC8FC1AB86C1AB8DC4AA8DC6AE91C5A98BC2AC8FC3AB
+      8CC0A984BFAB86C4A98DC1AA8BC2AB8BC4AA87C1AC88C2AB8DBEAA8BBFAA8CC5
+      AB8EC3AB8CBFAB8BC3A987C2AA88C2AB8CC4AA8DC4AC8FBFAA8EC4AD91C1AC8F
+      C2AD91C1B192C8AC8EC6AF93C4AF8EC2AE91C6AC92C6AD92CEB195C4AF96C6AC
+      98C8B095CCB097C6B192C6AF96C6B096CBB198CAAE96C8B193C6AF95C6B195C8
+      B095C9B297CDB798CAB697CAB198CDB99AC9B697CBB699CDB99CCAB799CBB79A
+      CFBA9FCDB89CCFB99DD0BAA0D3B99FD2BAA2D2C1A4D3BCA3D6BCA2D5BDA4D6C1
+      A3D2BEA9D3C2A9D8C1A9D6C4ABD7C4AAD7C7A9DAC8AFD7C5ACDEC9AED9C7AFE0
+      CEB5DECAB3DDCBB1DDCCB1DACFB4E0CFB7DECDB7DECEB3DDD1BCDDD0B8E6D1BA
+      E2D2B7E1D1BDE3D2B8E5D2BCE4D5BFE5D3BEE2D4BADDD3BDE5D5BFE2D4BEE4D6
+      C2E5D7C3E5D7C3E6D8C3E5DAC6E9DCC6EBDDC8EBDFC9ECE0CDEFE1CCEDE0CDEE
+      E2D2EEE2CEEDE2CEEDE3CFEEE1CFF0E3D0EEE1CD0000FFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFBFDFCFBFDFDFCFDFDFCFDFDFCFDFDFC
+      FDFDFCFDFDFCFDFDFCFDFDFCFDFDFCFDFCFBFDFCFBFDFDFBFDFDFCFDFCFBFDFC
+      FBFDFCFBFDFCFBFDFCFBFDFCFBFDFCFAFDFCFAFDFBFAFDFBFAFCFBFAFCFBFAFC
+      FBFAFCFAF9FCFAFAFCFAF9FBFAF8FBFAF8FAF9F6FAF9F5FAF8F5F9F7F3F8F7F2
+      F8F6F1F6F5F0F4F3EEF3F2ECF1F1EBF1EFE9EFEDE4EEEBE3EBE8E0EAE7E0E9E6
+      DFE7E4DCE5E3DAE3E2DAE2E0D6E0DED5DDDDD3DCDBD2DAD9CFDAD8CDD9D7CBD9
+      D7CDDAD9CEDAD8CEDAD8CFDBD9D2DCD9CEDCD9CEDDDACFDEDACFDDDACEDDD9CE
+      DDD9CEE0DCD0E0DCCFDEDBCEE0DBCEE0DBCDE1DCCDE2DDCFE2DBD2E2DED0E2DE
+      CEE2DDD0E2DECDE4DECCE3DDCDE3DDCEE3DCCCE1DDCCE2DDCCE3DBCBE4DBCBE4
+      DECDE3DECCE4DECCE4DECDE5DED0E5DFD3E5DFD3E5E0D3E5E0D4E5E0D4E6E0D5
+      E7E3D7E5E2D7E7E2D7E6E2D6E7E2D6E8E4D7E6E2D6E7E2D6E8E2D4E6E2D3E5E1
+      CFE5E1CFE5DFD0E5DED2E4DFD3E4DFD3E5E0D4E4DFD2E5E0D3E4DFD3E5E0D2E5
+      E1D4E6E2D3E7E1D4E6E0D3E5E0D3E5E0D2E5E1D3E5E1D4E5DFD3E5DFD3E6E1D4
+      E6E1D0E6E1CFE6E1D2E8E2CFE8E1CDE9E1D2E8E1D0E8E2D0E9E3D2E9E3D2E9E3
+      D2E9E2D2E7E2D0E7E2CFE8E3D2E9E4D2E9E3D3E8E3D0E7E1D2E8E2D3E7E0D2E7
+      E1CFE8E2CDE9E3CFE9E3D0E8E2CDE8E2CEE9E2D0E8E2CDE7E2CDE7E2CEE7E2CD
+      E8E2CDE8E2CDE9E2CDE9E2CDE7E1CDE5E0CDE5E0CEE6E1CEE8E0CFE7E0CDE6E0
+      CCE8DFCBE8DFCCE8DFCCE8DECCE6DECAE7DECBE7DFCAE7DFCAE7DFCAE6E0CAE6
+      E0CAE6E0CAE5DEC8E6DEC8E6E0C9E7DFC8E7DFC9E5DDC9E6DEC9E6DEC9E5DEC8
+      E5DEC9E5DEC9EAE1CCEAE2CCEAE2CCEAE2CCEAE2CDEBE2CEEBE2CEEAE1CEEAE1
+      CDEBE2CDEBE2CDEAE2CEE8E3CEE9E3D0E9E3D2E9E2D0E9E3D2E9E2D0E9E2D2E9
+      E3D0EAE3D0E9E3D0EAE2D0EAE2CFEAE2CFE9E1CEEAE2CDEBE3CDEAE2CDECE2CD
+      ECE3CDECE3CCECE3CDEBE1CBEBE1CBEBE3C9EBE3CAECE3CCEBE3CAECE3CBEDE3
+      CDECE4CBECE4CBECE4CBEDE4CBEDE4CBEDE4CBEDE4CBEDE4CCECE4CCECE4CBED
+      E4CBEDE4CBECE4CBECE4CCECE3CDEBE3CDEBE3CEEBE3CDEBE3CCECE3CCECE2CE
+      ECE3CEECE2CDEBE2CCEBE2CBEBE2CBEBE2CDEBE2CCEBE1CBEBE2CCEBE2CCEBE2
+      CCEAE1CCE9E1CCE9E1CEE9E0CEE9E0CEE8E0CEE9E0CEE9E1CFE9E1CFE9E0CEE9
+      E1CFE8E1CFE8E1CFE8E1CFE8E2CFE8E0D0E8E0D0E8E0D2E8E0D2E8E0D2E7E2D2
+      E8E0D0E8E0D0E7E1CFE7E1CEE9E2D0EAE1D0EAE1CFEAE1CDEAE1CFEAE1CFEAE1
+      CDEBE2CDEAE1CCEAE1CCEAE1CBEAE0CDEAE1CFEAE1CEEAE1CCEBE2CDEBE2CDEA
+      E1CDEAE1CDEBE2CDEAE1CDE9E0CCE9E0CDE9E0CCE9E0CCE9E1CBE9E0CCEAE1CD
+      EAE1CEEAE1CDE9E0CCE9E0CCEAE1CDE9E0CCE9E0CCE8DFCCE9E0CCE9E0CCE9E0
+      CCE7DFCCE9E0CEE9E0CFE9E0CCE9E1CBEAE2CDEBE3CEEAE2CDEBE2CCEBE1CBEA
+      E0CAEBE1CBEBE1CAEAE0C9EBE2CCEBE3CEEBE1CBEBE1CBEBE1CBEAE0CAEBE0CB
+      EBDFCAEBDFCAE9E0CAEBE2CCEBE0CAEADFCAE9DFCBE9DFCCE8E0CEEAE0D0E9E0
+      CEE9DFCFE9E0CFE9DFCFE6DFCFE6DFCFE8DFCFE8DFCFE7E0CFE6DFCFE8DFCFE8
+      DECEE7DECEE8DDCAE2D5BEDAD4CEE8E3CADCCDB0E2CCB2E3CBB5E0CCB3E2CCB0
+      E1C8ACD9C5A9D7C2A7C0BAAED1CCB6BAAA87CDBEAAD9CDB4DBCFB3D7C4AADAC4
+      ABDAC2A8DAC7AADCC4ACDBC9AEDBC7ABDCC9AADECAAEE2CBB5E1CDB7E2D1B5E5
+      D1B6E6D1BEE7D2BDE8D4BEE5D6C6E5DAC5E9DECAF6EBDCD1C6A8DBCEC0BCB9B3
+      D5D2C7D7CDBAE9DECDEBE1CEE3DECAEAE0CEEFE6D5F6EFDDF8EFDEF0E7D8F2E7
+      DDF0E9E1F6ECE3F8EDE7F6F0E7FAEEE3FAEDE4F9F1E4F9EFE6F9EFE4F8EEE4F6
+      EDE3F8EDE4F9F0E6FCEFE4F6EEE6F7EEE3F9EEE2F9EEE3F9EDE4FAEFE4F8EEE1
+      F6EDDDF3EAE0F6EBDEF6EADAF3E7D7F3E7D9EBE0CAE6D5BDE8D3BCE6D1B8E8D3
+      BDEADBC9EEE2CFEDE1C7E9D9BFE5D1B7E0CBAEE3CFB2E5C9B1DBC4A6D4BBA3D3
+      BAA0D1B79BCFB797D1B798CDB397CDB69ACEB297CFB495CBB296CAB295CAAF95
+      CBAF93CBAF90C6AE91CAAE91C5AC8FC5AE90C5AC90CAAC8EC9AD8CC6AD90C6AC
+      8EC2AB8FC5AC8DC4AB88C5AF91C2A990C6AE8DC3AE8FC2AD8CC3A88DC6AB91C3
+      AA90C1AC8CC6AB90C5AB8CC4AB89C0AB8DC3AD8BC3AD88C6AD8CC4AA88C5AE8D
+      C5AE89C3AC8EC4AA8DC5AB8FC2AD8EC0A992C1A98FC3AC89C4AC8EC4AE90C3AD
+      8DC4AD8CC6AE91C4B090C5AE8FC1AE8EC8AF93C8B090C6AF93CCAF98C9B095C5
+      B196C5B092C6AF93CCB195CAAF95CAB195C9B395CBB095CAAC96C6B395C8B091
+      CCB69CC8B49BCEB69BC6B199C9B796C9B898C8B497CDBA9CCDB89FCEB89BD0BC
+      A4CABA9DD2BAA0D0BA9CD2BC9FD1BA9DD0BA9DD3C0A2D3C0A4D7BEA6D7C0A6D8
+      C4A7D8C1A9D4C5AAD4C3A9D8C3A9D7C4A9D8C3AADAC6A9DCC4ACD9CCB1DBC9B2
+      D9CBB1DBC9B3DDCAB5DDCEB2DECDB8D9CEBAE1D1B6E3CDB8E0CFB8DDD1B7DDCE
+      BDDED1B9E1D1BADDD1BADDD3BFE0D2BCE4D3BEE1D2BDE5D5BAE6D9BEE2D2BDE2
+      D2C1E5D7C4E6DAC4E7D8C3E7DDC8EBDCCAE9DDCAEBDECAEBE0CAEADECCEEE1CA
+      EEE0CEEFE1D2EAE0CFECE4D0EDE3D2ECE3CEEFE4CFEEE3D09769FFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+      FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFCFBFDFCFBFDFDFCFDFCFBFDFD
+      FCFDFDFCFDFDFCFDFCFBFDFDFCFDFCFBFDFCFBFDFCFCFDFDFCFDFCFBFDFCFBFD
+      FCFBFDFCFBFDFCFBFDFCFBFDFCFAFDFCFAFDFBFAFDFBFAFDFBFAFCFBFAFCFBFA
+      FCFAFAFCFAFAFBFAF9FBFAF9FBFAF8FBFAF8FAF9F6FAF9F5FAF8F5FAF7F5FAF7
+      F3F8F7F1F7F6F1F6F4EFF3F2EDF2F1ECF1F0EBF0EFE9EEECE4EDEAE3EAE7E0EA
+      E7DFE8E7DFE5E3DBE5E3DAE2E1D9E1DFD7E0DED6E0DDD4DDDBD2DAD9CEDAD8CD
+      D9D7CBD8D6CBDAD8CEDAD9CFDBD9D2DBD8D0DBD8CEDDDAD0DCDBD0DCD9CEDCD9
+      CCDCD9CCDCD9CDDEDBCEDDDBCEDDDBCDDEDBCDE1DCCEE3DDD0E2DCD0E1DACFE1
+      DCCEE1DDCCE1DCCCE3DDCDE4DDCCE4DBCCE3DCCCE3DCCAE2DBCBE3DCCBE3DBCB
+      E4DDCCE5DDCDE4DCCCE2DCC9E3DECDE4DDD0E4DED2E5DFD3E5E0D3E5E0D3E5E0
+      D3E5DFD2E5E1D3E5E1D4E5E1D4E5E1D4E5E3D5E5E2D4E5E0D3E5DED2E5DED0E5
+      DFD0E5E0D0E5E0D2E5DFD2E5DFD2E4DFD4E5E0D4E5E0D4E4DFD2E5E0D3E5E0D3
+      E5E0D4E6E2D5E6E2D3E8E2D5E6E1D4E5E0D3E5E1D2E4E0D2E5DFD3E5DFD0E5E0
+      D0E5DFD5E7E2D3E6E1CFE5E0CFE7E2CFE8E2D0E7E1D2E6E0D0E7E2D0E9E4D2E7
+      E3D2E7E4D3E8E4D3E7E3D3E7E2D0E8E2D2E8E3D2E8E3D2E8E3D2E7E2D3E7E2D2
+      E6E1D4E7E1D3E7E2D0E8E2D0E7E2D0E6E1CFE7E1D0E7E2D2E6E2D0E6E2D0E7E1
+      CFE7E1CFE8E1CFE8E2CFE8E1CEE7E2CEE5E1CEE5E0CFE5E1D0E5E1CFE5E0CEE5
+      E0CEE5E0CDE7E0CDE8DFCDE6E0CBE7E0CCE5DFCBE5DFCAE5DFCAE6E0CBE6E0CB
+      E6DFCAE6DFCBE6E0CAE7DFCAE6DEC9E6DEC9E6DEC9E6DEC9E5DDC9E6DECBE6DE
+      CCE5DDCAE5DECAE6DECAEAE1CEEBE2CEEAE2CDEAE1CCEAE2CEEBE2CFEBE2CFEA
+      E1CEE9E2CEEAE2CFEAE2CDEAE2CDEAE3CDEAE3CFEAE2D0EAE2D2EAE3D0E9E2CE
+      EAE2CFEAE2CFEAE2CEEAE2CDEAE3CDEAE1CDEBE2CDEBE2CDEBE2CCEBE2CCEBE2
+      CCECE2CBECE3CBEDE3CBECE3CAECE4CAECE4CAECE3CAEDE3CBECE3CCEDE2CAED
+      E3CBEEE4CAEEE4CAEDE4C9EDE5CAEEE4CAEEE4C9EDE4C9EEE4CAEEE4CAEDE4CA
+      EDE4C9EEE4CAEEE4CAEDE4C9EDE4C9EDE4CAEDE4CAEDE4C9EEE4C9EDE3C9EEE4
+      CAEDE4CBEDE4CAEDE4C8ECE2C9ECE2CAECE3CAECE2CBEBE2CBEBE2CBEBE2CCEC
+      E3CDEBE2CBEBE1CAEBE1CBEBE2CCEBE2CBEBE2CCEAE1CCEBE1CDEBE1CCEBE0CB
+      EBE1CDEBE1CDE8E0CCE8E0CDE8E0CEE8DFCEE8DFCEE8E0CEE9E0CEE8E0CFE8E0
+      D0E6DFD0E8E0D0E8E2CFE9E1D0EAE1D4E9E1CFEAE1CFEAE2CFEAE2CEEBE2D0EB
+      E2D0E8E0CEEAE1CEEBE2CEE9E1CBE9E1CCEAE1CDEBE1CDEBE2CDEAE1CCEAE0CC
+      EAE0CCEBE1CDEAE1CCEBE2CEE9E1CDEAE0CCEBE0CCEAE0CCE9DFCBE9E0CCE9E0
+      CCE9E0CEEAE1CEE9E0CCE9E0CCEAE1CDEAE1CEEAE1CDE9E0CCE9E0CCE9E0CDE9
+      E0CDEAE1CFE9E0CDE9E0CEE9E0CFE9E0CDE9E1CCEBE2CFEAE2CFE9E1CEE9E1CC
+      E9E0CCE8DFCBEADFCBEAE0CAEBE1CAEBE1CBEBE2CCE9E2CDEBE1CBEAE0CAEAE0
+      CAEBE0CBEBDFCBEBDFCAEBE1C9EBE2CBEBDFCBEBE1C8EBE1C8EBDECAEAE0CCEB
+      E1CDEAE0CCEAE0CCEADFCCEADFCDE9E0CCE8E0CCE9DFCBE9DFCDE8DFCEE8DFCD
+      E9DFCDEAE0CDEAE0CFE8DECAE4D7BEDBD5D2F1EAD4E4D2B4E7D0B7E8CFB6D9C2
+      AACCB8A2C4B29AC5B8A0D3C3A8BDB6A8E5DECED1C3A6E1C8B0D5C0A5D7C3A8DB
+      C3A6DDC6A9DAC6A9DCC6AADDC4AADAC6AAD8C5AFDAC5ACDEC6AEDECBB2DCC9B3
+      E0CFB6E5CEB4E5D1B9E8D4C1ECDBC2E7D5BFE7D5C3DACFBECDC0AEBDAF9C8D8A
+      6FB1ADA9F1EEE9F1E5D0ECE1D0ECE3D0F1E6D7EFE5D4F1E7D7F0E4D4F1E9DAF6
+      E9DBF1E6DBF6EADFF8EBDFF7EDE0FAEEE3F9EEE3F9EDE3F8EFE7FAF1E7F8EDE7
+      F7EDE4F6ECE4F6EDE6FAF1E4F9EEE3F6EDE6F9EEE8F9EDE3FEEEE7F8EEE4F7EE
+      E8F7EEE3F3E8DAF3E8DAEFE7DBF1E8DAF1E9D6F1E7D6EBDAC7E3D2BDE7D0B7E3
+      CFB1E7D1BAEEDECAF1E6D5EFE4D5E9DDC6E9D2BFE6CEB9E4C9B4DBCAA7DAC4A6
+      D3B9A2CCB89BCCB797CDB497C8B096CDB29BD0B395D0B499CEB196CDB396CAB3
+      96C9B197C6AF92C8AF8FCBB193C5B193C9AD95CBAD90C8AE8FC5AF8ECAB093C5
+      AD8EC2AD91C5AD8EC4AF8EBEAB8FC3AC8CC4AF8CC5A990C6AE8EC6A98CC9AD90
+      C0AC90C1AE8DC1A88EC5AA8DC5AC8FC3AB8DC4AB8EC1A98CC4AB8DC2AB8EC1AC
+      8CC4A98FC2AB90C0AB88C6AE8EC2AA8BC9AD8FC4AD8EC4AD8FC4AA8DC5AC8DC4
+      AD8EC9AD96C4AC91C2AE8EC6B095C4AD93C0AD8FC4B091C8AE95C4AE91CAAF91
+      CCB08FC8AE91C8B196CBB396C8B292C9B196CBAE97CCB096C8AF96C9B195CBB1
+      97CBB496C9B39ACCB495C9B496CAB795CCB89BCBB99BD0B99DD0B89CCEB99BD1
+      BA9CD0BA9BD4BA9FCFB99DD2BBA2D2BAA2D5BCA6D5BDA3D5BCA4D5BEA5D4C0A6
+      D6C2A6D8C1A7D7C4A9D6C0A7DBC6ACDAC6ACD9C5AADBC8AEDDC8AFDAC8B1DBCB
+      B0DEC9B1DBCAB5DAC9B4DDCDB6DCCCB3E0D2B9DDCFB9E3D1BCE3D1B6E1D1BAE1
+      D0B7DDD4BADCD2BAE0D4B9E1D1BDE3D3C0E3D3C0E4D4C2E1D4C0E5D6C1E2D5BA
+      E5DAC1E1D6BEE6D9C6E5D8C4E7DBC4EADEC7E9DCC9EADFCAEAE1CCEDE0CAEEE3
+      CCEDE2CFEEE1CFECE4CFEEE7CFEDE4D0EEE4D0EFE5D2F1E3D3ECE4D30000}
+    ExplicitWidth = 776
+    ExplicitHeight = 360
+  end
+  object ILogo: TImage
+    Left = 8
+    Top = 544
+    Width = 992
+    Height = 120
+    Anchors = [akLeft, akRight, akBottom]
+    Center = True
+    ExplicitTop = 400
+    ExplicitWidth = 776
+  end
+  object StatusLine: TStatusBar
+    Left = 0
+    Top = 689
+    Width = 1008
+    Height = 21
+    AutoHint = True
+    Panels = <
+      item
+        Width = 600
+      end
+      item
+        Width = 0
+      end>
+    SizeGrip = False
+  end
+  object MainMenu: TMainMenu
+    AutoHotkeys = maManual
+    Left = 40
+    Top = 8
+    object MFile: TMenuItem
+      Caption = 'File'
+      object MLicense: TMenuItem
+        Caption = 'License'
+        OnClick = MLicenseClick
+      end
+      object MConfig: TMenuItem
+        Caption = 'Configuration'
+        Hint = 'Parameterization of the application'
+        OnClick = MConfigClick
+      end
+      object MFolder: TMenuItem
+        Caption = 'Data directory'
+        Hint = 'Select a data directory'
+        OnClick = MFolderClick
+      end
+      object MDataset: TMenuItem
+        Caption = 'Install a new dataset'
+        OnClick = MDatasetClick
+      end
+      object N11: TMenuItem
+        Caption = '-'
+      end
+      object MExit: TMenuItem
+        Caption = 'Quit'
+        OnClick = MExitClick
+      end
+    end
+    object MAliments: TMenuItem
+      AutoHotkeys = maManual
+      Caption = 'Feed'
+      object MMatiere: TMenuItem
+        Caption = 'Feed ingredient composition'
+        OnClick = MMatiereClick
+      end
+      object N21: TMenuItem
+        Caption = '-'
+      end
+      object MAliment: TMenuItem
+        Caption = 'Feed composition'
+        OnClick = MAlimentClick
+      end
+      object MTarif: TMenuItem
+        Caption = 'Costs of feeds'
+        OnClick = MTarifClick
+      end
+      object N22: TMenuItem
+        Caption = '-'
+      end
+      object MImpExp: TMenuItem
+        Caption = 'Import / export'
+        OnClick = MImpExpClick
+      end
+    end
+    object MTruie: TMenuItem
+      Caption = 'Sow'
+      object MSeqAliT: TMenuItem
+        Caption = 'Feed sequence plan'
+        OnClick = MSeqAliTClick
+      end
+      object MRationT: TMenuItem
+        Caption = 'Feed rationing plan'
+        OnClick = MRationTClick
+      end
+      object MLogeT: TMenuItem
+        Caption = 'Housing'
+        OnClick = MLogeTClick
+      end
+      object MProfilT: TMenuItem
+        Caption = 'Animal profile'
+        OnClick = MProfilTClick
+      end
+      object N31: TMenuItem
+        Caption = '-'
+      end
+      object MSimulT: TMenuItem
+        Caption = 'Simulation'
+        OnClick = MSimulTClick
+      end
+      object N32: TMenuItem
+        Caption = '-'
+      end
+      object MBesGest: TMenuItem
+        Caption = 'Requirements during gestation'
+        object MBesGestT: TMenuItem
+          Caption = 'Sow'
+          OnClick = MBesGestTClick
+        end
+        object MBesGestE: TMenuItem
+          Caption = 'Herd'
+          OnClick = MBesGestEClick
+        end
+      end
+      object MBesLact: TMenuItem
+        Caption = 'Requirements during lactation'
+        object MBesLactT: TMenuItem
+          Caption = 'Sow'
+          OnClick = MBesLactTClick
+        end
+        object MBesLactE: TMenuItem
+          Caption = 'Herd'
+          OnClick = MBesLactEClick
+        end
+      end
+    end
+    object MPorc: TMenuItem
+      Caption = 'Growing pig'
+      object MSeqAliP: TMenuItem
+        Caption = 'Feed sequence plan'
+        OnClick = MSeqAliPClick
+      end
+      object MRationP: TMenuItem
+        Caption = 'Feed rationing plan'
+        OnClick = MRationPClick
+      end
+      object MProfilP: TMenuItem
+        Caption = 'Animal profile'
+        OnClick = MProfilPClick
+      end
+      object N41: TMenuItem
+        Caption = '-'
+      end
+      object MSimulP: TMenuItem
+        Caption = 'Simulation'
+        OnClick = MSimulPClick
+      end
+    end
+    object MWindow: TMenuItem
+      Caption = 'Window'
+      Visible = False
+      object MCascade: TMenuItem
+        Caption = 'Cascade'
+        OnClick = WindowCascade
+      end
+      object MTileHorizontal: TMenuItem
+        Caption = 'Tile horizontally'
+        OnClick = MTileHorizontalClick
+      end
+      object MTileVertical: TMenuItem
+        Caption = 'Tile vertically'
+        OnClick = MTileVerticalClick
+      end
+      object MMinimizeAll: TMenuItem
+        Caption = 'Reduce all'
+        OnClick = MMinimizeAllClick
+      end
+      object MRetoreAll: TMenuItem
+        Caption = 'Restore all'
+        OnClick = MRetoreAllClick
+      end
+      object MArrange: TMenuItem
+        Caption = 'Reorganize the icons'
+        OnClick = MArrangeClick
+      end
+    end
+    object MHelp: TMenuItem
+      Caption = 'Help'
+      object MContents: TMenuItem
+        Caption = 'Contents'
+        OnClick = HelpContentsClick
+      end
+      object N61: TMenuItem
+        Caption = '-'
+      end
+      object MIntro: TMenuItem
+        Caption = 'License agreement'
+        OnClick = MIntroClick
+      end
+      object N62: TMenuItem
+        Caption = '-'
+      end
+      object MWeb: TMenuItem
+        Caption = 'Home page'
+        OnClick = MWebClick
+      end
+      object MUpdate: TMenuItem
+        Caption = 'Check for updates'
+        OnClick = MUpdateClick
+      end
+      object MAbout: TMenuItem
+        Caption = 'About...'
+        OnClick = MAboutClick
+      end
+    end
+  end
+  object XPManifestStyle: TXPManifest
+    Left = 40
+    Top = 64
+  end
+  object IdHTTPCheckVersion: TIdHTTP
+    IOHandler = IdSSL
+    AllowCookies = True
+    HandleRedirects = True
+    ProxyParams.BasicAuthentication = False
+    ProxyParams.ProxyPort = 0
+    Request.ContentLength = -1
+    Request.ContentRangeEnd = -1
+    Request.ContentRangeStart = -1
+    Request.ContentRangeInstanceLength = -1
+    Request.Accept = 'text/html, */*'
+    Request.BasicAuthentication = False
+    Request.UserAgent = 'Mozilla/3.0 (compatible; Indy Library)'
+    Request.Ranges.Units = 'bytes'
+    Request.Ranges = <>
+    HTTPOptions = [hoForceEncodeParams]
+    Left = 40
+    Top = 120
+  end
+  object IdSSL: TIdSSLIOHandlerSocketOpenSSL
+    MaxLineAction = maException
+    Port = 0
+    DefaultPort = 0
+    SSLOptions.Mode = sslmUnassigned
+    SSLOptions.VerifyMode = []
+    SSLOptions.VerifyDepth = 0
+    Left = 40
+    Top = 176
+  end
+end
Index: UFGraphAli.pas
===================================================================
--- UFGraphAli.pas	(révision 0)
+++ UFGraphAli.pas	(révision 3)
@@ -0,0 +1,488 @@
+unit UFGraphAli ;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Messages, Graphics, Dialogs, StdCtrls,
+  ExtCtrls, Menus, Chart, Series, TeeProcs, TeEngine;
+
+type
+  TFGraphAli = class(TForm)
+    GBConfig: TGroupBox;
+    CBOnglet: TComboBox;
+    Graph: TChart;
+    Series1: TPieSeries;
+    RBCrois: TRadioButton;
+    RBTruie: TRadioButton;
+    PM: TPopupMenu;
+    MI3D: TMenuItem;
+    MIPrint: TMenuItem;
+    CBTSAA: TComboBox;
+    CBTSMineraux: TComboBox;
+    CBTSFibres: TComboBox;
+    CBTSElem: TComboBox;
+    CBTSAG: TComboBox;
+    MIPreview: TMenuItem;
+    PD: TPrintDialog;
+    procedure FormShow(Sender: TObject);
+    procedure CBOngletChange(Sender: TObject);
+    procedure RBTypeClick(Sender: TObject);
+    procedure CBTSElemChange(Sender: TObject);
+    procedure CBTSAAChange(Sender: TObject);
+    procedure CBTSAGChange(Sender: TObject);
+    procedure CBTSMinerauxChange(Sender: TObject);
+    procedure CBTSFibresChange(Sender: TObject);
+    procedure MI3DClick(Sender: TObject);
+    procedure MIPreviewClick(Sender: TObject);
+    procedure MIPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+    procedure AffGraph ;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FGraphAli: TFGraphAli;
+
+implementation
+
+uses
+  Printers, SysUtils, gnugettext, UVariables, UStrings, UFindRec, UUtil,
+  UFAliment, UFPrevGraph;
+
+{$R *.dfm}
+
+{ TFGraphAli }
+
+procedure TFGraphAli.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 544 + (Width - ClientWidth);
+  Width := 640;
+  Constraints.MinHeight := 354 + (Height - ClientHeight);
+  Height := 480;
+  CBOnglet.ItemIndex := 0;
+  CBTSElem.ItemIndex := 0;
+end;
+
+procedure TFGraphAli.FormShow (Sender : TObject) ;
+begin
+  MIPrint.Enabled := IsComplete or IsEducation ;
+  if PAliment.Typ = 2
+  then
+    RBTruie.Checked := TRUE
+  else
+    RBCrois.Checked := TRUE ;
+  Graph.UndoZoom ;
+  Graph.Foot.Text.Clear ;
+  Graph.Foot.Text.Add (PAliment.Nom) ;
+  Series1.OtherSlice.Text := StrAutres ;
+  Series1.Marks.ArrowLength := 24 ;
+  CBOngletChange (nil) ;
+end ;
+
+procedure TFGraphAli.CBOngletChange (Sender : TObject) ;
+begin
+  case CBOnglet.ItemIndex of
+    0 : // Composition �l�mentaire
+    begin
+      CBTSElem.Visible := TRUE ;
+      CBTSAA.Visible := FALSE ;
+      CBTSAG.Visible := FALSE ;
+      CBTSMineraux.Visible := FALSE ;
+      CBTSFibres.Visible := FALSE ;
+      CBTSElemChange (nil) ;
+    end ;
+    1 : // Acides amin�s
+    begin
+      CBTSElem.Visible := FALSE ;
+      CBTSAA.Visible := TRUE ;
+      CBTSAG.Visible := FALSE ;
+      CBTSMineraux.Visible := FALSE ;
+      CBTSFibres.Visible := FALSE ;
+      CBTSAAChange (nil) ;
+    end ;
+    2 : // Acides gras
+    begin
+      CBTSElem.Visible := FALSE ;
+      CBTSAA.Visible := FALSE ;
+      CBTSAG.Visible := TRUE ;
+      CBTSMineraux.Visible := FALSE ;
+      CBTSFibres.Visible := FALSE ;
+      CBTSAGChange (nil) ;
+    end ;
+    3 : // Min�raux
+    begin
+      CBTSElem.Visible := FALSE ;
+      CBTSAA.Visible := FALSE ;
+      CBTSAG.Visible := FALSE ;
+      CBTSMineraux.Visible := TRUE ;
+      CBTSFibres.Visible := FALSE ;
+      CBTSMinerauxChange (nil) ;
+    end ;
+    4 : // Fibres
+    begin
+      CBTSElem.Visible := FALSE ;
+      CBTSAA.Visible := FALSE ;
+      CBTSAG.Visible := FALSE ;
+      CBTSMineraux.Visible := FALSE ;
+      CBTSFibres.Visible := TRUE ;
+      CBTSFibresChange (nil) ;
+    end ;
+  end ;
+end ;
+
+procedure TFGraphAli.CBTSElemChange (Sender : TObject) ;
+begin
+  Graph.Title.Text.Clear ;
+  if CBTSElem.ItemIndex in [8, 9, 10, 12, 13, 14]
+  then
+  begin
+    if RBCrois.Checked
+    then
+      Graph.Title.Text.Add (Format ('%s (%s)', [CBTSElem.Text, RBCrois.Caption]))
+    else
+      Graph.Title.Text.Add (Format ('%s (%s)', [CBTSElem.Text, RBTruie.Caption])) ;
+    RBCrois.Enabled := TRUE ;
+    RBTruie.Enabled := TRUE ;
+  end
+  else
+  begin
+    Graph.Title.Text.Add (CBTSElem.Text) ;
+    RBCrois.Enabled := FALSE ;
+    RBTruie.Enabled := FALSE ;
+  end ;
+  AffGraph ;
+end ;
+
+procedure TFGraphAli.CBTSAAChange (Sender : TObject) ;
+begin
+  Graph.Title.Text.Clear ;
+  Graph.Title.Text.Add (CBTSAA.Text) ;
+  RBCrois.Enabled := FALSE ;
+  RBTruie.Enabled := FALSE ;
+  AffGraph ;
+end ;
+
+procedure TFGraphAli.CBTSAGChange (Sender : TObject) ;
+begin
+  Graph.Title.Text.Clear ;
+  Graph.Title.Text.Add (CBTSAG.Text) ;
+  RBCrois.Enabled := FALSE ;
+  RBTruie.Enabled := FALSE ;
+  AffGraph ;
+end ;
+
+procedure TFGraphAli.CBTSMinerauxChange (Sender : TObject) ;
+begin
+  Graph.Title.Text.Clear ;
+  Graph.Title.Text.Add (CBTSMineraux.Text) ;
+  RBCrois.Enabled := FALSE ;
+  RBTruie.Enabled := FALSE ;
+  AffGraph ;
+end ;
+
+procedure TFGraphAli.CBTSFibresChange (Sender : TObject) ;
+begin
+  Graph.Title.Text.Clear ;
+  Graph.Title.Text.Add (CBTSFibres.Text) ;
+  RBCrois.Enabled := FALSE ;
+  RBTruie.Enabled := FALSE ;
+  AffGraph ;
+end ;
+
+procedure TFGraphAli.AffGraph ;
+var
+  i, d : integer ;
+  t, v : double ;
+  u : string ;
+begin
+  t := 0 ;
+  Series1.Clear ;
+  for i := 0 to PAliment.MP.NbMat - 1 do
+  begin
+    PMatiere := ListMatiere[FindIdxMatiere(FindNomMatiere(PAliment.MP.NumMat[i]))] ;
+    case CBOnglet.ItemIndex of
+      0 : // Composition �l�mentaire
+        case CBTSElem.ItemIndex of
+          0 : // Frais
+            v := PAliment.MP.Qte[i] ;
+          1 : // Mati�re s�che
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 ;
+          2 : // Mati�res min�rales
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.MM / 1000 ;
+          3 : // Mati�re organique
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.MO / 1000 ;
+          4 : // Mati�res grasses
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 ;
+          5 : // Mati�res azot�es
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.MAT / 1000 ;
+          6 : // Amidon
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Amidon / 1000 ;
+          7 : // Sucres
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Sucres / 1000 ;
+          8 : // Mati�re organique digestible
+            if RBCrois.Checked
+            then
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.MO / 1000 * PMatiere.CC.dMO_C / 100
+            else
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.MO / 1000 * PMatiere.CC.dMO_T / 100 ;
+          9 : // Mati�res grasses digestible
+            if RBCrois.Checked
+            then
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.dLip_C / 100
+            else
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.dLip_T / 100 ;
+          10 : // Mati�res azot�es digestible
+            if RBCrois.Checked
+            then
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.MAT / 1000 * PMatiere.CC.dMAT_C / 100
+            else
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.MAT / 1000 * PMatiere.CC.dMAT_T / 100 ;
+          11 : // Energie brute
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.EB / 1000 ;
+          12 : // Energie digestible
+            if RBCrois.Checked
+            then
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.ED_C / 1000
+            else
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.ED_T / 1000 ;
+          13 : // Energie m�tabolisable
+            if RBCrois.Checked
+            then
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.EM_C / 1000
+            else
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.EM_T / 1000 ;
+          14 : // Energie nette
+            if RBCrois.Checked
+            then
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.EN_C / 1000
+            else
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.EN_T / 1000 ;
+          else
+            v := 0 ;
+        end ;
+      1 : // Acides amin�s
+        case CBTSAA.ItemIndex of
+          0..12 : // Teneurs
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.AAtotal[CBTSAA.ItemIndex] / 1000 ;
+          13..25 : // Teneurs digestibles
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.AAtotal[CBTSAA.ItemIndex - 13] / 1000 * PMatiere.CUDAA[CBTSAA.ItemIndex - 13] / 100 ;
+          else
+            v := 0 ;
+        end ;
+      2 : // Acides gras
+        case CBTSAG.ItemIndex of
+          0 : // C6:0 + C8:0 + C10:0
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C6C8C10 / 100 ;
+          1 : // C12:0
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C12_0 / 100 ;
+          2 : // C14:0
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C14_0 / 100 ;
+          3 : // C16:0
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C16_0 / 100 ;
+          4 : // C16:1
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C16_1 / 100 ;
+          5 : // C18:0
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C18_0 / 100 ;
+          6 : // C18:1
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C18_1 / 100 ;
+          7 : // C18:2
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C18_2 / 100 ;
+          8 : // C18:3
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C18_3 / 100 ;
+          9 : // C18:4
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C18_4 / 100 ;
+          10 : // C20:0
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C20_0 / 100 ;
+          11 : // C20:1
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C20_1 / 100 ;
+          12 : // C20:4
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C20_4 / 100 ;
+          13 : // C20:5
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C20_5 / 100 ;
+          14 : // C22:0
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C22_0 / 100 ;
+          15 : // C22:1
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C22_1 / 100 ;
+          16 : // C22:5
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C22_5 / 100 ;
+          17 : // C22:6
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C22_6 / 100 ;
+          18 : // C24:0
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Lip / 1000 * PMatiere.CC.AGsLip / 100 * PMatiere.CC.C24_0 / 100 ;
+          else
+            v := 0 ;
+        end ;
+      3 : // Min�raux
+        case CBTSMineraux.ItemIndex of
+          0 : // Calcium (Ca)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Ca / 1000 ;
+          1 : // Phosphore (P)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.P / 1000 ;
+          2 : // Sodium (Na)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Na / 1000 ;
+          3 : // Potassium (K)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.K / 1000 ;
+          4 : // Magn�sium (Mg)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Mg / 1000 ;
+          5 : // Chlore (Cl)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Cl / 1000 ;
+          6 : // Soufre (S)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.S / 1000 ;
+          7 : // Cuivre (Cu)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Cu / 1000 ;
+          8 : // Zinc (Zn)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Zn / 1000 ;
+          9 : // Mangan�se (Mn)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Mn / 1000 ;
+          10 : // Fer (Fe)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Fe / 1000 ;
+          11 : // S�l�nium (Se)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Se / 1000 ;
+          12 : // Cobalt (Co)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Co / 1000 ;
+          13 : // Molybd�ne (Mo)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Mb / 1000 ;
+          14 : // Iode (I)
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.I / 1000 ;
+          15 : // Phosphore digestible
+            if PAliment.Presentation = 0
+            then // Granul�s
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.PdigG / 1000
+            else // Farine
+              v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.PdigF / 1000 ;
+          16 : // Phosphore phytique
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.P / 1000 * PMatiere.CC.Phytase / 100 ;
+          17 : // Activit� phytasique
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * (PMatiere.CC.ActPhytE + PMatiere.CC.ActPhytM) / 1000 ;
+          else
+            v := 0 ;
+        end ;
+      4 : // Fibres
+        case CBTSFibres.ItemIndex of
+          0 : // Cellulose brute
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.CB / 1000 ;
+          1 : // NDF
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.NDF / 1000 ;
+          2 : // ADF
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.ADF / 1000 ;
+          3 : // ADL
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.ADL / 1000 ;
+          4 : // Parois v�g�tale
+            v := PAliment.MP.Qte[i] * PAliment.MP.MS[i] / 1000 * PMatiere.CC.Parois / 1000 ;
+          else
+            v := 0 ;
+        end ;
+      else
+        v := 0 ;
+    end ;
+//    Series1.AddPie (v, PMatiere.Nom) ;
+    if PMatiere.Num > 0
+    then // Mati�re premi�re utilisateur
+      Series1.AddPie(v, PMatiere.Nom)
+    else // Mati�re premi�re INRA-AFZ (traduction)
+      Series1.AddPie(v, dgettext('InraAfz', PMatiere.Nom));
+    t := t + v ;
+  end ;
+  case CBOnglet.ItemIndex of
+    0 : // Composition �l�mentaire
+      case CBTSElem.ItemIndex of
+        11..14 : // Valeurs �nerg�tiques
+        begin
+          d := 1 ;
+          u := Format ('%s/%s %s', [StrMJ, StrKg, StrFrais]) ;
+        end ;
+        else // Teneur et digestibilit� f�cale
+        begin
+          d := 0 ;
+          u := Format ('%s/%s %s', [StrG, StrKg, StrFrais]) ;
+        end ;
+      end ;
+    3 : // Min�raux
+      case CBTSMineraux.ItemIndex of
+        7..14 : // Oligo-�l�ments
+        begin
+          d := 2 ;
+          u := Format ('%s/%s %s', [StrMg, StrKg, StrFrais]) ;
+        end ;
+        17 : // Activit� phytasique
+        begin
+          d := 0 ;
+          u := Format ('%s/%s %s', [StrUI, StrKg, StrFrais]) ;
+        end ;
+        else // Macro-�l�ments / Phosphore digestible / Phosphore phytique
+        begin
+          d := 2 ;
+          u := Format ('%s/%s %s', [StrG, StrKg, StrFrais]) ;
+        end ;
+      end ;
+    4 : // Fibres
+    begin
+      d := 1 ;
+      u := Format ('%s/%s %s', [StrG, StrKg, StrFrais]) ;
+    end ;
+    else // Acides amin�s / Acides gras
+    begin
+      d := 2 ;
+      u := Format ('%s/%s %s', [StrG, StrKg, StrFrais]) ;
+    end ;
+  end ;
+  // Je m'assure que le frais est de 1000 g/kg
+  t := t / FAliment.PBTotal.AsFloat * 1000 ;
+  Graph.SubTitle.Text.Clear ;
+  Graph.SubTitle.Text.Add (Format ('Total : %1.*f %s', [d, t, u])) ;
+  if t = 0
+  then
+    Series1.Active := FALSE
+  else
+    Series1.Active := TRUE ;
+end ;
+
+procedure TFGraphAli.RBTypeClick (Sender : TObject) ;
+begin
+  CBTSElemChange (nil) ;
+end ;
+
+procedure TFGraphAli.MI3DClick (Sender : TObject) ;
+begin
+  Graph.View3D := not (Graph.View3D) ;
+end ;
+
+procedure TFGraphAli.MIPreviewClick (Sender : TObject) ;
+begin
+  FPrevGraph := TFPrevGraph.Create (Self) ;
+  with FPrevGraph do
+  begin
+    TPPGraph.Panels.Add (Graph) ;
+    ShowModal ;
+    Release ;
+  end ;
+end ;
+
+procedure TFGraphAli.MIPrintClick (Sender : TObject) ;
+begin
+  if PD.Execute
+  then
+  begin
+    Printer.Orientation := poLandscape ;
+    Graph.Print ;
+  end ;
+end ;
+
+procedure TFGraphAli.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFResBesLactE.pas
===================================================================
--- UFResBesLactE.pas	(révision 0)
+++ UFResBesLactE.pas	(révision 3)
@@ -0,0 +1,534 @@
+unit UFResBesLactE;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, CheckLst, Menus, Printers, 
+  Math, Contnrs, PBNumEdit, PBSuperSpin, Grids, TeEngine, Series, TeeProcs, 
+  Chart, TeeEdit, UVariables, gnugettext;
+
+type
+  TFResBesLactE = class(TForm)
+    PC: TPageControl;
+    TabNRJ: TTabSheet;
+    TabAA: TTabSheet;
+    CBAA3: TComboBox;
+    CBAA4: TComboBox;
+    GBAAY: TGroupBox;
+    Graph: TChart;
+    GBNRJY: TGroupBox;
+    CBNRJ3: TComboBox;
+    LBAA: TListBox;
+    LBNRJ: TListBox;
+    TSAli: TTabSheet;
+    TSMin: TTabSheet;
+    GBMin: TGroupBox;
+    CBMin3: TComboBox;
+    CBMin4: TComboBox;
+    CBNRJ4: TComboBox;
+    PM: TPopupMenu;
+    MI3D: TMenuItem;
+    MIPreview: TMenuItem;
+    MIPrint: TMenuItem;
+    PD: TPrintDialog;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormShow(Sender: TObject);
+    procedure PCChange(Sender: TObject);
+    procedure CBNRJ3Change(Sender: TObject);
+    procedure CBNRJ4Change(Sender: TObject);
+    procedure CBAA3Change(Sender: TObject);
+    procedure CBAA4Change(Sender: TObject);
+    procedure CBAli2Change(Sender: TObject);
+    procedure CBMin3Change(Sender: TObject);
+    procedure CBMin4Change(Sender: TObject);
+    procedure MI3DClick(Sender: TObject);
+    procedure MIPreviewClick(Sender: TObject);
+    procedure MIPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+    BarAli : TBarSeries ;
+    ListNRJ : TStrings ;
+    BarNRJ : array of TBarSeries ;
+    ListAA : TStrings ;
+    BarAA : array of TBarSeries ;
+    BarMin : TBarSeries ;
+    procedure ResetGraph ;
+    procedure InitAli ;
+    procedure AffGraphAli ;
+    procedure InitNRJ ;
+    procedure AffGraphNRJ ;
+    procedure InitAA ;
+    procedure AffGraphAA ;
+    procedure InitMin ;
+    procedure AffGraphMin ;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FResBesLactE: TFResBesLactE;
+
+implementation
+
+uses
+  UStrings, UFindRec, UUtil, UEchelle, UFBesLactE, UFPrevGraph ;
+
+{$R *.dfm}
+
+{ TFResBesLactE }
+
+procedure TFResBesLactE.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 544 + (Width - ClientWidth);
+  Width := 640;
+  Constraints.MinHeight := 400 + (Height - ClientHeight);
+  Height := 480;
+  CBNRJ3.ItemIndex := 0;
+  CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
+  CBNRJ4.Items.Add('%');
+  CBNRJ4.ItemIndex := 0;
+  CBAA3.ItemIndex := 0;
+  CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+  CBAA4.Items.Add('%');
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+  CBAA4.ItemIndex := 0;
+  CBMin3.ItemIndex := 0;
+  CBMin4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+  CBMin4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+  CBMin4.ItemIndex := 0;
+end;
+
+procedure TFResBesLactE.FormShow (Sender : TObject) ;
+begin
+  MIPrint.Enabled := IsComplete or IsEducation ;
+  // Aliment
+  InitAli ;
+  // Energie
+  InitNRJ ;
+  // Acides Amin�s
+  InitAA ;
+  // Min�raux
+  InitMin ;
+  // Affichage principal
+  PC.ActivePageIndex := 0 ;
+  PCChange (nil) ;
+end ;
+
+procedure TFResBesLactE.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+var
+  i : integer ;
+begin
+  // Aliment
+  BarAli.Free ;
+  // Energie
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Free ;
+  SetLength (BarNRJ, 0) ;
+  ListNRJ.Free ;
+  // Acides Amin�s
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Free ;
+  SetLength (BarAA, 0) ;
+  ListAA.Free ;
+  // Min�raux
+  BarMin.Free ;
+end ;
+
+procedure TFResBesLactE.PCChange (Sender : TObject) ;
+begin
+  case PC.ActivePageIndex of
+    0 : // Aliment
+      AffGraphAli ;
+    1 : // Energie
+      AffGraphNRJ ;
+    2 : // Acides Amin�s
+      AffGraphAA ;
+    3 : // Min�raux
+      AffGraphMin ;
+  end ;
+end ;
+
+procedure TFResBesLactE.ResetGraph ;
+var
+  i : integer ;
+begin
+  Graph.UndoZoom ;
+  Graph.View3D := FALSE ;
+  Graph.Legend.Visible := TRUE ;
+  Graph.Title.Text.Clear ;
+  Graph.SubTitle.Text.Clear ;
+  Graph.LeftAxis.Automatic := FALSE ;
+  Graph.BottomAxis.MinimumOffset := 0;
+  Graph.BottomAxis.MaximumOffset := 0;
+  // Aliment
+  BarAli.Active := FALSE ;
+  // Energie
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Active := FALSE ;
+  // Acides Amin�s
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Active := FALSE ;
+  // Min�raux
+  BarMin.Active := FALSE ;
+end ;
+
+procedure TFResBesLactE.MI3DClick (Sender : TObject) ;
+begin
+  Graph.View3D := not (Graph.View3D) ;
+end ;
+
+procedure TFResBesLactE.MIPreviewClick (Sender : TObject) ;
+begin
+  FPrevGraph := TFPrevGraph.Create (Self) ;
+  with FPrevGraph do
+  begin
+    TPPGraph.Panels.Add (Graph) ;
+    ShowModal ;
+    Release ;
+  end ;
+end ;
+
+procedure TFResBesLactE.MIPrintClick (Sender : TObject) ;
+begin
+  if PD.Execute
+  then
+  begin
+    Printer.Orientation := poLandscape ;
+    Graph.Print ;
+  end ;
+end ;
+
+/////////////////
+//   Aliment   //
+/////////////////
+procedure TFResBesLactE.InitAli ;
+begin
+  // BarAli : s�rie (barre) graphique
+  BarAli := TBarSeries.Create (Graph) ;
+  BarAli.ParentChart := Graph ;
+  BarAli.Title := ' ' ;
+  BarAli.SeriesColor := clTeal ;
+  BarAli.BarPen.Color := BarAli.SeriesColor ;
+  BarAli.Marks.Style := smsValue ;
+  BarAli.Marks.ArrowLength := 0 ;
+  BarAli.Marks.Arrow.Visible := FALSE ;
+  BarAli.Marks.Brush.Style := bsClear ;
+  BarAli.Marks.Frame.Visible := FALSE ;
+  BarAli.Marks.Font.Style := [fsBold] ;
+  Graph.AddSeries (BarAli) ;
+end ;
+
+procedure TFResBesLactE.AffGraphAli ;
+var
+  j : integer ;
+
+  // Ordonn�e
+  function AliY : double ;
+  begin
+    with FBesLactE do
+      if (AppEMTot[j] = 0)
+      then
+        result := 0
+      else
+        result := BesEMTot[j] * AppAliTot[j] / AppEMTot[j] ;
+  end ;
+
+// AffGraphAli
+begin
+  ResetGraph ;
+  Graph.Legend.Visible := FALSE ;
+  Graph.Title.Text.Add (TSAli.Caption) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s/%s)', [TSAli.Caption, StrKg, StrJ]) ;
+  Graph.BottomAxis.Title.Caption := _('Litter');
+  // Affichage de la barre
+  BarAli.Active := TRUE ;
+  BarAli.Clear ;
+  for j := 1 to NB_CYCLES do
+    BarAli.AddBar (AliY, Format ('%d', [j]), clTeeColor) ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResBesLactE.CBAli2Change(Sender: TObject);
+begin
+
+end;
+
+/////////////////
+//   Energie   //
+/////////////////
+procedure TFResBesLactE.InitNRJ ;
+const
+  TabColor : array[0..1] of TColor
+    = (clOlive, clWhite) ;
+var
+  i : integer ;
+begin
+  // ListNRJ : liste pour l'�nergie
+  ListNRJ := TStringList.Create ;
+  ListNRJ.Assign (LBNRJ.Items) ;
+  // BarNRJ : s�ries (barres) graphiques
+  SetLength (BarNRJ, ListNRJ.Count) ;
+  for i := 0 to ListNRJ.Count - 1 do
+  begin
+    BarNRJ[i] := TBarSeries.Create (Graph) ;
+    BarNRJ[i].ParentChart := Graph ;
+    BarNRJ[i].Title := ListNRJ[i] ;
+    BarNRJ[i].SeriesColor := TabColor[i] ;
+    BarNRJ[i].BarPen.Color := BarNRJ[i].SeriesColor ;
+    BarNRJ[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarNRJ[i]) ;
+  end ;
+end ;
+
+procedure TFResBesLactE.AffGraphNRJ ;
+var
+  i, j : integer ;
+  m : double ;
+
+  // Ordonn�e
+  function NRJY : double ;
+  begin
+    case i of
+      0 : // Entretien
+        result := FBesLactE.BesEMEntTot[j] ;
+      1 : // Lait
+        result := FBesLactE.BesEMLaitTot[j] ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphNRJ
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (TabNRJ.Caption) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]) ;
+  Graph.BottomAxis.Title.Caption := _('Litter');
+  // Affichage des barres
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Active := TRUE ;
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Clear ;
+  if (CBNRJ4.ItemIndex = 1)
+  then
+    for i := 0 to ListNRJ.Count - 1 do
+      BarNRJ[i].MultiBar := mbStacked100
+  else
+    for i := 0 to ListNRJ.Count - 1 do
+      BarNRJ[i].MultiBar := mbStacked ;
+  for j := 1 to NB_CYCLES do
+  begin
+    case CBNRJ3.ItemIndex of
+      0 : // Energie digestible
+        m := FBesLactE.AppEDTot[j] / FBesLactE.AppEMTot[j] ;
+      2 : // Energie nette
+        m := FBesLactE.AppENTot[j] / FBesLactE.AppEMTot[j] ;
+      else
+        m := 1 ;
+    end ;
+    for i := 0 to ListNRJ.Count - 1 do
+      BarNRJ[i].AddBar (NRJY * m, Format ('%d', [j]), clTeeColor) ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResBesLactE.CBNRJ3Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+procedure TFResBesLactE.CBNRJ4Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+///////////////////////
+//   Acides amin�s   //
+///////////////////////
+procedure TFResBesLactE.InitAA ;
+const
+  TabColor : array[0..1] of TColor
+    = (clOlive, clWhite) ;
+var
+  i : integer ;
+begin
+  // ListAA : liste pour les acides amin�s
+  ListAA := TStringList.Create ;
+  ListAA.Assign (LBAA.Items) ;
+  // BarAA : s�ries (barres) graphiques
+  SetLength (BarAA, ListAA.Count) ;
+  for i := 0 to ListAA.Count - 1 do
+  begin
+    BarAA[i] := TBarSeries.Create (Graph) ;
+    BarAA[i].ParentChart := Graph ;
+    BarAA[i].Title := ListAA[i] ;
+    BarAA[i].SeriesColor := TabColor[i] ;
+    BarAA[i].BarPen.Color := BarAA[i].SeriesColor ;
+    BarAA[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarAA[i]) ;
+  end ;
+end ;
+
+procedure TFResBesLactE.AffGraphAA ;
+var
+  h, i, j : integer ;
+
+  // Ordonn�e
+  function AAY : double ;
+  var
+    a : integer ;
+    d : double ;
+  begin
+    case h of
+      3 : // met+cys
+        a := 13 ;
+      7 : // phe+tyr
+        a := 14 ;
+      else
+        a := h ;
+    end ;
+    // Diviseur
+    case CBAA4.ItemIndex of
+      0 : // Dur�e
+        d := PProfilT.DureeLact ;
+      2 : // Aliment
+        d := FBesLactE.AppAliTot[j] ;
+      else
+        d := 1 ;
+    end ;
+    case i of
+      0 : // Entretien
+        result := Sum (Slice (FBesLactE.BesAAEnt[j, a], PProfilT.DureeLact)) / d ;
+      1 : // Lait
+        result := Sum (Slice (FBesLactE.BesAALait[j, a], PProfilT.DureeLact)) / d ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphAA
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (TabAA.Caption) ;
+  Graph.SubTitle.Text.Add(StrDigestStd);
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBAA3.Text, CBAA4.Text]) ;
+  Graph.BottomAxis.Title.Caption := _('Litter');
+  // Affichage des barres
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Active := TRUE ;
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Clear ;
+  if (CBAA4.ItemIndex = 1)
+  then
+    for i := 0 to ListAA.Count - 1 do
+      BarAA[i].MultiBar := mbStacked100
+  else
+    for i := 0 to ListAA.Count - 1 do
+      BarAA[i].MultiBar := mbStacked ;
+  h := CBAA3.ItemIndex + 1 ;
+  for j := 1 to NB_CYCLES do
+    for i := 0 to ListAA.Count - 1 do
+      BarAA[i].AddBar (AAY, Format ('%d', [j]), clTeeColor) ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResBesLactE.CBAA3Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFResBesLactE.CBAA4Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+//////////////////
+//   Min�raux   //
+//////////////////
+procedure TFResBesLactE.InitMin ;
+begin
+  // BarMin : s�rie (barre) graphique
+  BarMin := TBarSeries.Create (Graph) ;
+  BarMin.ParentChart := Graph ;
+  BarMin.Title := ' ' ;
+  BarMin.SeriesColor := clTeal ;
+  BarMin.BarPen.Color := BarMin.SeriesColor ;
+  BarMin.Marks.Style := smsValue ;
+  BarMin.Marks.ArrowLength := 0 ;
+  BarMin.Marks.Arrow.Visible := FALSE ;
+  BarMin.Marks.Brush.Style := bsClear ;
+  BarMin.Marks.Frame.Visible := FALSE ;
+  BarMin.Marks.Font.Style := [fsBold] ;
+  Graph.AddSeries (BarMin) ;
+end ;
+
+procedure TFResBesLactE.AffGraphMin ;
+var
+  j : integer ;
+
+  // Ordonn�e
+  function MinY : double ;
+  var
+    d : double ;
+  begin
+    // Diviseur
+    case CBMin4.ItemIndex of
+      0 : // Dur�e
+        d := PProfilT.DureeLact ;
+      1 : // Aliment
+        d := FBesLactE.AppAliTot[j] ;
+      else
+        d := 1 ;
+    end ;
+    case CBMin3.ItemIndex of
+      0 : // Phosphore digestible
+        result := Sum (Slice (FBesLactE.BesP[j], PProfilT.DureeLact)) / d ;
+      1 : // Calcium total
+        result := Sum (Slice (FBesLactE.BesCa[j], PProfilT.DureeLact)) / d ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphMin
+begin
+  ResetGraph ;
+  Graph.Legend.Visible := FALSE ;
+  Graph.Title.Text.Add (TSMin.Caption) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBMin3.Text, CBMin4.Text]) ;
+  Graph.BottomAxis.Title.Caption := _('Litter');
+  // Affichage de la barre
+  BarMin.Active := TRUE ;
+  BarMin.Clear ;
+  for j := 1 to NB_CYCLES do
+    BarMin.AddBar (MinY, Format ('%d', [j]), clTeeColor) ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResBesLactE.CBMin3Change(Sender: TObject);
+begin
+  AffGraphMin ;
+end;
+
+procedure TFResBesLactE.CBMin4Change(Sender: TObject);
+begin
+  AffGraphMin ;
+end;
+
+procedure TFResBesLactE.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: Resources/GraphAli.rtf
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream
Index: Resources/GraphAli.rtf
===================================================================
--- Resources/GraphAli.rtf	(révision 2)
+++ Resources/GraphAli.rtf	(révision 3)

Modification de propriétés sur Resources/GraphAli.rtf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Resources/PDMoy.rtf
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream
Index: Resources/PDMoy.rtf
===================================================================
--- Resources/PDMoy.rtf	(révision 2)
+++ Resources/PDMoy.rtf	(révision 3)

Modification de propriétés sur Resources/PDMoy.rtf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Resources/CalcAli.rtf
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream
Index: Resources/CalcAli.rtf
===================================================================
--- Resources/CalcAli.rtf	(révision 2)
+++ Resources/CalcAli.rtf	(révision 3)

Modification de propriétés sur Resources/CalcAli.rtf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Resources/Evaluation_en.rtf
===================================================================
--- Resources/Evaluation_en.rtf	(révision 0)
+++ Resources/Evaluation_en.rtf	(révision 3)
@@ -0,0 +1,65 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1036\deflangfe1036\deftab709{\fonttbl{\f0\fswiss\fprq2\fcharset0 Microsoft Sans Serif;}{\f1\fnil\fcharset2 Symbol;}}
+{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\nowidctlpar\qc\lang1033\ul\b\f0\fs16 License agreement for the Evaluation Version of InraPorc\par
+\pard\nowidctlpar\sb240\qj\ulnone Definitions\par
+\pard\nowidctlpar\fi-567\li567\sb240\qj\ul\b0\i Software\ulnone\i0 : means the content of the downloaded file or delivered on any other medium (e.g., CD, floppy disk, memory stick) supplied with this agreement including:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li851\qj\tx851\i InraPorc\i0\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li851\qj the data from the \i Database\i0\par
+{\pntext\f1\'B7\tab}the presentation of this data\par
+{\pntext\f1\'B7\tab}the associated documentation (help files or other written documents)\par
+{\pntext\f1\'B7\tab}all updates, modified versions, additions, and copies\par
+\pard\nowidctlpar\fi-567\li567\sb240\qj\tx568\ul\i InraPorc\ulnone\i0 : the \i InraPorc\i0  software allows predicting nutritional requirements and nutrient utilization in swine, particularly in sows and growing pigs using data provided by the \i End-user\i0  or using data from the \i Database\i0 . \i InraPorc\i0  has been registered by \i INRA\i0  at the APP (Software Protection Agency) on April 25\super th\nosupersub , 2005. The identification number (IDDN) that was assigned to it, and which accompanies the software and associated publications, is IDDN.FR.001.180002.000.R.P.2005.000.30100.\par
+\pard\nowidctlpar\fi-567\li567\sb240\qj\ul\i Evaluation Version of InraPorc\ulnone\i0 :\i  \i0 the royalty-free version of \i InraPorc\i0 . User data cannot be saved for future use.\par
+\ul\i Database\ulnone\i0 : means the \ldblquote INRA-AFZ Database\rdblquote  and consists in the following:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li851\qj\tx851 textual elements: names of feed ingredients, chemical and nutritional characteristics, and units of measurement\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li851\qj numerical elements, identical to those published in the second edition of the INRA-AFZ \ldblquote Tables de composition et de valeur nutritive des mati\'e8res premi\'e8res destin\'e9es aux animaux d\rquote\'e9levage\rdblquote  (Sauvant, Perez and Tran, coordinators) published in March 2004, including:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1135\qj\tx1134 o\tab values of chemical characteristics: dry matter, crude protein, crude fiber, crude fat (method with and without hydrolysis), ash, Neutral Detergent Fiber, Acid Detergent Fiber, Acid Detergent Lignin, sugars, starch and gross energy\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1135\qj\tx1136 o\tab values of nutritional characteristics: digestible, metabolizable and net energy values, apparent digestibility of energy, organic matter, nitrogen and fat for growing pigs and sows, apparent and standardized ileal amino acid digestibility\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-567\li567\sb240\qj\ul\i Evaluation Version of the Software\ulnone\i0 : the royalty-free version of the \i Software\i0 , including the \i Evaluation Version of InraPorc\i0  and the \i Database\i0 . User data cannot be saved for future use.\par
+\ul\i{\pntext\f1\'B7\tab}Use\ulnone\i0 : means the access to the \i Software\i0 , the downloading, installation, execution, and copying of the \i Software\i0  or any other benefit resulting from using its functions.\par
+\ul\i{\pntext\f1\'B7\tab}INRA\ulnone\i0 : means the Institut National de la Recherche Agronomique, Paris, France, as well as any affiliate(s) of \i INRA\i0 .\par
+\ul\i{\pntext\f1\'B7\tab}AFZ\ulnone\i0 : means the Association Fran\'e7aise de Zootechnie.\par
+\ul\i{\pntext\f1\'B7\tab}End-user\ulnone\i0 : means the beneficiary of this license, hereafter referred to as \ldblquote\i You\i0\rdblquote .\par
+\ul\i{\pntext\f1\'B7\tab}Server\ulnone\i0 : means the server from the \i INRA\i0  Research Centre in Rennes, from which the \i End-user\i0  can download the \i Evaluation Version of the Software\i0  (http://www.rennes.inra.fr/inraporc/).\par
+\ul\i{\pntext\f1\'B7\tab}Domain of the License\ulnone\i0 : means the \i Use\i0  of the \i Software\i0  with the purpose to evaluate the potential and functionality of the \i Software\i0 . Any commercial or academic \i Use\i0  is strictly prohibited, including providing services to third parties, the sale of information, data or any product of commercial value, except specific and written consent from \i INRA\i0 .\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\keepn\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 1.\tab Intellectual Property Rights\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-568\li1136\sb240\qj\tx1136\b0 1.1.\tab\i InraPorc\i0  and the \i Evaluation Version of InraPorc\i0 , as well as any copy of it, are the intellectual property of \i INRA\i0 . The structure, the organization and the source code are trade secrets and confidential information that \i You\i0  are not allowed to use or disclose, except for the purposes mentioned in this agreement.\par
+{\pntext\f1\'B7\tab}1.2.\tab The \i Database\i0 , as well as any copy of it, is the intellectual property of \i INRA\i0  and \i AFZ\i0 . The structure and the organization of the \i Database\i0  are trade secrets and confidential information that \i You\i0  are not allowed to use or disclose, except for the purposes mentioned in this agreement. \par
+{\pntext\f1\'B7\tab}1.3.\tab\i You\i0  agree to respect and not to remove, hide or conceal any copyright, trademark, and indication of confidentiality or any other mention relating to the property or the mark, or legend appearing on \i InraPorc\i0 , the \i Evaluation Version of InraPorc\i0  and the \i Database\i0 .\par
+{\pntext\f1\'B7\tab}1.4.\tab\i InraPorc\i0 , the \i Evaluation Version of InraPorc\i0  and the \i Database\i0  are protected by intellectual property rights in France and abroad by international agreements on author rights. The breach of one of the authors\rquote  rights constitutes an infringement crime punished in France by articles L335-2 and L343-1 of the law on intellectual property rights and punished by 2 (two) years imprisonment and a 150 000 \'80 fine.\par
+{\pntext\f1\'B7\tab}1.5.\tab The authors - \i INRA\i0  and \i AFZ\i0  - reserve all rights that are not expressly cited in the present license agreement.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 2.\tab License of the software\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-568\li1136\sb240\qj\tx1136\b0 2.1.\tab\i INRA\i0  and \i AFZ\i0  grant to \i You\i0  by this agreement a non-exclusive, royalty-free, world-wide license to \i Use\i0  the \i Evaluation Version of the Software\i0  (\i Evaluation Version of InraPorc\i0  and the \i Database\i0 ) for the purposes described above, in the \i Domain of the License\i0 , for a period of 30 days starting from the day of acceptance of this agreement.\par
+{\pntext\f1\'B7\tab}2.2.\tab After accepting this agreement, \i You\i0  may \i Use\i0 , free of charge, the \i Evaluation Version of the Software\i0  to test and evaluate its functionality for a period of 30 days starting from the day of acceptance of this agreement.\par
+{\pntext\f1\'B7\tab}2.3.\tab\i You\i0  are authorized to download, install, and execute the \i Evaluation Version of the Software\i0  on your computer to a limit of one license for one computer (i.e., one hard disk).\par
+{\pntext\f1\'B7\tab}2.4.\tab\i You \i0 are not authorized to rent, sell, sublease, distribute, assign, transfer, license, sublicense or otherwise share the \i Evaluation Version of the Software \i0 or one of the rights of \i INRA\i0  and \i AFZ\i0  on the\i  Software\i0 .\par
+{\pntext\f1\'B7\tab}2.5.\tab\i You\i0  are not authorized to personalize the installation of the \i Evaluation Version of the Software \i0 or extend its functions. In addition, \i You\i0  may not translate, adapt, correct, modify the \i Evaluation Version\i0  \i of the\i0  \i Software.\i0\par
+{\pntext\f1\'B7\tab}2.6.\tab\i INRA\i0  reserves the right to correct errors and to determine the methods dealing with the following acts:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\sb240\qj\tx1420 the reproduction of the source code of\i  InraPorc \i0 and the \i Evaluation Version\i0  of \i InraPorc \i0 or the translation of this code is strictly prohibited even when they are essential for the proper working of the \i Software\i0  with other software\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\qj\tx1420 similarly, \i You\i0  are not authorized to reverse engineer, disassemble or decompile \i InraPorc\i0  or the \i Evaluation Version of InraPorc\i0\par
+{\pntext\f1\'B7\tab}necessary information for the proper working with other software is available from \i INRA, \i0 without implying a commitment for \i INRA\i0  to provide assistance, maintenance or associated services with \i InraPorc\i0  or the \i Evaluation Version of InraPorc\i0\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136 2.7.\tab\i INRA\i0  and \i AFZ\i0  reserve the right to correct errors in the \i Database\i0  without implying a commitment for \i INRA\i0  and \i AFZ\i0  to provide to provide assistance, maintenance or associated services with the \i Database\i0 .\i\par
+\i0 2.8.\tab\i You \i0 are not authorized to extract (i.e., transfer permanently or temporarily) whole or a part of the content of \i InraPorc\i0 , the \i Evaluation Version of InraPorc\i0  or the \i Database\i0  to another medium, by any means and in any form. Moreover, \i You\i0  are not authorized to re-use (i.e., release in public) whole or a part of the content of \i InraPorc\i0 , the \i Evaluation Version of InraPorc\i0  or the \i Database\i0  irrespective its form.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 3.\tab Limitation of warranty\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136\b0 3.1.\tab\i INRA\i0  has no obligation to provide technical support and/or maintenance service for the \i Evaluation Version of InraPorc.\par
+\i0 3.2.\tab\i INRA\i0  and \i AFZ\i0  have no obligation to provide technical support and/or maintenance service for the \i Database\i0 .\par
+3.3.\tab\i INRA\i0  grants a license to \i Use\i0  the \i Evaluation Version of InraPorc\i0  on an \ldblquote as is\rdblquote  basis without warranties, either express or implied of any kind, of merchantability, fitness for a particular purpose or for any kind, and without any obligation for \i INRA\i0  to provide complementary services or technical support.\par
+3.4.\tab\i INRA\i0  and \i AFZ\i0  grant a license to \i Use\i0  the \i Database\i0  on an \ldblquote as is\rdblquote  basis without warranties, either express or implied of any kind, of merchantability, fitness for a particular purpose or for any kind, and without any obligation for \i INRA\i0  and/or \i AFZ\i0  to provide complementary services or technical support.\par
+3.5.\tab\i You\i0  recognize that current scientific and technical knowledge does not allow to test and verify all uses of the \i Evaluation Version of the Software\i0 , or to detect existence of possible defects. \i You\i0  recognize that the \i Evaluation Version of the Software\i0  should be used only by knowledgeable users and that its \i Use\i0  comprises some risks.\par
+3.6.\tab\i You\i0  are responsible for determining the appropriateness of the \i Evaluation Version of InraPorc\i0  to your needs, for the control of its functioning, and for its \i Use\i0  under conditions that will cause no personal harm or property damage.\par
+3.7.\tab The \i Evaluation Version of the Software\i0  is provided on an \ldblquote as is\rdblquote  basis without any other guaranty than the existence of the \i Evaluation Version of the Software\i0  either express or implied, including the exclusion of guaranty regarding any title (of property or exploitation), lack of infringement, commercial quality, secured character, innovating and relevant nature of the \i Evaluation Version of the Software\i0 , the absence of errors, and compatibility with your equipment and/or software configuration.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 4.\tab Disclaimer of liability\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136\b0 4.1.\tab INRA and/or AFZ shall not be held liable by any person:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\sb240\qj\tx1420 for any damage arising from the total or partial failure to fulfill your obligations\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\qj\tx1420 for any direct or indirect damage arising from the \i Use\i0  or the performance of the \i Evaluation Version of the Software\i0  to \i You\i0  as an \i End-user\i0  \par
+{\pntext\f1\'B7\tab}for any indirect damage arising from the \i Use\i0  or the performance of the \i Evaluation Version of the Software\i0\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136 4.2.\tab The parties explicitly agree that any financial or commercial loss (for instance: loss of data, loss of customers or of orders, loss of benefit, operating loss, opportunity loss, commercial trouble) or any action directed against \i You\i0  by a third party constitutes an indirect damage and is not eligible for compensation of damage by \i INRA\i0  and/or \i AFZ\i0 .\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 5.\tab Termination of the agreement\par
+\pard\nowidctlpar\li568\sb240\qj\b0 In case of failure of the \i End-user\i0  to comply with any term of this agreement, the license will automatically terminate. In case of termination, \i You\i0  must immediately destroy the \i Evaluation Version of the Software\i0  as well as any copy, adaptation, improvement or any part of the \i Evaluation Version of the Software\i0  merged with other software.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 6.\tab Applicable law\par
+\pard\nowidctlpar\li568\sb240\qj\b0 This agreement and all disputes arising out of the execution or interpretation of this license shall be governed by French law.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 7.\tab Disputes\par
+\pard\nowidctlpar\li568\sb240\qj\b0 The parties undertake efforts to settle their differences by mutual agreement. In case of persistent disagreement, the courts of Paris will be competent.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 8.\tab Language\par
+\pard\nowidctlpar\li568\sb240\qj\b0 The present license has been established in two versions, one in French and one in English. In case of difficulties of interpretation, the French version shall be used.\par
+}
+
\ Pas de retour chariot à la fin du fichier
Index: Resources/Complete_en.rtf
===================================================================
--- Resources/Complete_en.rtf	(révision 0)
+++ Resources/Complete_en.rtf	(révision 3)
@@ -0,0 +1,133 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1036\deflangfe1036\deftab709{\fonttbl{\f0\fswiss\fprq2\fcharset0 Microsoft Sans Serif;}{\f1\fnil\fcharset2 Symbol;}}
+{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\nowidctlpar\sa240\qc\lang1033\ul\b\f0\fs16 LICENSE AGREEMENT FOR COMMERCIAL END-USERS OF INRAPORC\par
+\pard\nowidctlpar\sa240 BETWEEN\ulnone :\ul\par
+\pard\nowidctlpar\ulnone INRA TRANSFERT S.A.\par
+\b0 Hereinafter called: \b INRA TRANSFERT\b0\par
+With its head office at: 10, rue Vivienne, 75\~002 PARIS, France\par
+Represented here by: Mr \b Philippe LENEE\b0\par
+\pard\nowidctlpar\sa240 In his capacity as: \b Chief Executive Officer\b0\par
+\lang1036\caps Acting on behalf of:\par
+\pard\nowidctlpar\li567\b\caps0 L\rquote INSTITUT NATIONAL DE LA RECHERCHE AGRONOMIQUE\par
+\lang1033\b0 (National Institute for Agronomic Research)\par
+Hereinafter called: \b INRA\b0\par
+A public body of scientific and technological nature\par
+With its head office at: 147, rue de l'Universit\'e9, 75\~338 PARIS cedex 07, France\par
+Represented here by: Mrs \b Marion GUILLOU\b0\par
+\pard\nowidctlpar\li567\sa240 In her capacity as: \b President and General Manager\b0\par
+\pard\nowidctlpar\sa240 and\par
+\pard\nowidctlpar\li567\b L\rquote ASSOCIATION FRANCAISE DE ZOOTECHNIE\par
+\b0 Hereinafter called: \b AFZ\b0\par
+With its head office at: 16, rue Claude Bernard, 75\~231 PARIS cedex 05, France\par
+Represented here by: Mr \b Daniel SAUVANT\b0\par
+\pard\nowidctlpar\li567\sa240 In his capacity as: \b President\b0\par
+\pard\nowidctlpar\sa240\qr Party of the first part,\par
+\pard\nowidctlpar\sa240\ul\b AND\ulnone :\ul\par
+\pard\nowidctlpar\ulnone YOU\b0 , hereinafter called: \b LICENSEE\b0\par
+\pard\nowidctlpar\qr Party of the second part.\par
+\pard\nowidctlpar\sa240\qj\ul\b\par
+PREAMBLE\ulnone :\ul\par
+\ulnone\b0 INRA, in its laboratory \ldblquote Syst\'e8mes d\rquote Elevage, Nutrition Animale et Humaine\rdblquote  (UMR SENAH) has developed INRAPORC. INRAPORC is a software tool which allows predicting nutritional requirements and nutrient utilization in swine, particularly in sows and growing pigs.\par
+INRAPORC uses data of the INRA-AFZ DATABASE, which is the property of INRA and AFZ. The INRA-AFZ DATABASE is the result of a collaboration between INRA and AFZ. The DATABASE contains information of the composition and nutritional values of animal feeds.\par
+By governmental decree of March 14\super th\nosupersub , 2000, INRA has been authorized to establish a subsidiary limited company charged with valorization, called INRA TRANSFERT. INRA TRANSFERT is especially charged with the valorization of patents, know-how, software and databases developed by INRA and can negotiate, sign and manage license agreements related to this.\par
+LICENSEE is a \caps commercial end-user\caps0 , as defined below, who seeks to obtain a non-exclusive license for INRAPORC and the DATABASE..\par
+The aim of the present Agreement is to set out the conditions under which INRA TRANSFERT grants a license to LICENSEE to use INRAPORC and the DATABASE.\par
+\ul\b ACCORDINGLY, THE FOLLOWING HAS BEEN AGREED UPON\ulnone :\ul\par
+PRELIMINARY CLAUSE\par
+\ulnone\b0 For the execution and interpretation of the present license, it is understood that:\par
+\pard\nowidctlpar\fi-568\li568\sa240\qj\ul\b\caps Software\ulnone\b0\caps0 : means the content of the downloaded file or delivered on any other medium (e.g., CD, floppy disk, memory stick) supplied with this agreement including:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li852\qj\tx852 INRAPORC\par
+{\pntext\f1\'B7\tab}the data from DATABASE\par
+{\pntext\f1\'B7\tab}the presentation of this data\par
+{\pntext\f1\'B7\tab}the associated documentation (help files or other written documents)\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li851\sa240\qj\tx852 all updates, modified versions, additions, and copies\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-568\li568\sa240\qj\ul\b INRAPORC\ulnone\b0 : the\i  \i0 INRAPORC software allows predicting nutritional requirements and nutrient utilization in swine, particularly in sows and growing pigs using data provided by the COMMERCIAL END-USER or using data from the DATABASE. INRAPORC has been registered by INRA at the APP (Software Protection Agency) on April 25\super th\nosupersub , 2005. The identification number (IDDN) that was assigned to it, and which accompanies the software and associated publications, is IDDN.FR.001.180002.000.R.P.2005.000.30100.\par
+\ul\b\caps{\pntext\f1\'B7\tab}Database\ulnone\b0\caps0 : means the \ldblquote INRA-AFZ Database\rdblquote  and consists in the following:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li852\qj\tx852 Textual elements: names of feed ingredients, chemical and nutritional characteristics, and units of measurement.\par
+{\pntext\f1\'B7\tab}Numerical elements, identical to those published in the second edition of the INRA-AFZ \ldblquote Tables de composition et de valeur nutritive des mati\'e8res premi\'e8res destin\'e9es aux animaux d\rquote\'e9levage\rdblquote  (Sauvant, Perez and Tran, coordinators) published in March 2004, including:\par
+\pard\nowidctlpar\fi-284\li1136\qj\tx1136 o\tab Values of chemical characteristics: dry matter, crude protein, crude fiber, crude fat (method with and without hydrolysis), ash, Neutral Detergent Fiber, Acid Detergent Fiber, Acid Detergent Lignin, sugars, starch and gross energy.\par
+\pard\nowidctlpar\fi-284\li1136\sa240\qj\tx1136 o\tab Values of nutritional characteristics: digestible, metabolizable and net energy values, apparent digestibility of energy, organic matter, nitrogen and fat for growing pigs and sows, apparent and standardized ileal amino acid digestibility.\par
+\pard\nowidctlpar\fi-568\li568\sa240\qj\ul\b USE\ulnone\b0 : means the access to the SOFTWARE, the downloading, installation, execution, and copying of the \caps software\caps0  or any other benefit resulting from using its functions.\par
+\ul\b\caps Commercial End-User\ulnone\b0 :\caps0  means any person, commercial company, for-profit or not-for-profit organization using the \caps software\caps0  for its internal research, development and production purposes not having the right to redistribute the SOFTWARE to third parties.\par
+\ul\b SERVER\ulnone\b0 : indicates the server located at the INRA Centre in Rennes, from which the COMMERCIAL END-USER may download INRAPORC, updates and the DATABASE (http://www.rennes.inra.fr/inraporc/).\par
+\pard\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 1.\tab PURPOSE OF THE AGREEMENT\par
+\pard\nowidctlpar\li994\sa240\qj\ulnone\b0 The purpose of this agreement is:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1278\qj\tx1278 To define the license conditions to \caps use\caps0  INRAPORC granted by INRA TRANSFERT to the LICENSEE.\par
+{\pntext\f1\'B7\tab}To define the license conditions to \caps use\caps0  the DATABASE and its data granted by INRA TRANSFERT to the LICENSEE.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1278\sa240\qj\tx1278 To define the conditions to obtain a license activation key for the SOFTWARE from the SERVER by the LICENSEE.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 2.\tab NATURE AND SCOPE OF THE INRAPORC LICENSE \par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 2.1.\tab INRA TRANSFERT hereby grants to the LICENSEE, as COMMERCIAL END-USER, who accepts:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\qj\tx1704 A non-exclusive, worldwide, non-transferable license to install and USE INRAPORC on a computer system of the LICENSEE. The license granted for the INRAPORC software is accompanied by a non-exclusive, non-transferable license to the DATABASE and its data. This license is granted under the financial conditions specified in Article 8.1 of this agreement.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\sa240\qj\tx1704 The authorization to use the documents provided by INRA.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1134 2.2.\tab The license granted in this agreement includes the right to install and execute INRAPORC on a single computer owned, rented or legally held by the LICENSEE.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj 2.3.\tab The license is granted \i intuitu personae\i0 . It is personal, inalienable and not transferable, except prior and specific agreement of INRA and INRA TRANSFERT.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li1420\sa240\qj In case of a merger, take-over or transformation of LICENSEE, or transfer of business to another company, the present agreement may not be transferred without prior and written consent from INRA TRANSFERT.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 3.\tab NATURE AND SCOPE OF THE DATABASE LICENSE\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 3.1.\tab INRA TRANSFERT grants LICENSEE, as COMMERCIAL END-USER by this agreement, a non-exclusive, worldwide license to USE the DATABASE with the purpose of its USE with INRAPORC.\par
+{\pntext\f1\'B7\tab}3.2.\tab Any USE of the DATABASE other than with INRAPORC requires a new license agreement for the DATABASE.\par
+{\pntext\f1\'B7\tab}3.3.\tab The LICENSEE is not authorized to rent, sell, sublease, distribute, assign, transfer, license, sublicense or otherwise share the \caps database\i\caps0  \i0 or one of\i  \i0 the rights of INRA and AFZ on the\i  \i0\caps database\caps0 .\i\par
+\i0{\pntext\f1\'B7\tab}3.4.\tab The license is granted \i intuitu personae\i0 . It is personal, inalienable and not transferable, except prior and specific agreement of INRA, AFZ and INRA TRANSFERT.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li1420\sa240\qj In case of a merger, take-over or transformation of LICENSEE, or transfer of business to another company, the present agreement may not be transferred without prior and written consent from INRA TRANSFERT.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 3.5.\tab INRA and AFZ reserve the right to correct errors in the DATABASE, without the obligation for INRA and AFZ to provide assistance, maintenance or associated services related to the DATABASE.\par
+{\pntext\f1\'B7\tab}3.6.\tab INRA and AFZ reserve the right to improve the DATABASE and to add data to it, without the obligation for INRA and AFZ to provide these improvements or additions to the LICENSEE. The use of updates to the DATABASE by the LICENSEE will be subject to additional remuneration.\par
+{\pntext\f1\'B7\tab}3.7.\tab The LICENSEE does not acquire any rights, express or implied, to the DATABASE, other than those specifically set forth in this Article 3.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 4.\tab DELIVERY OF THE SOFTWARE TO THE LICENSEE\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 4.1.\tab After signature of this license agreement\i , \i0 the LICENSEE will receive a confidential license activation key by e-mail allowing the USE of the SOFTWARE. This license activation key will be valid until December 31\super st\nosupersub  of current year. The LICENSEE will receive automatically a new license activation key before the end of each year. This new key will be valid until December 31\super st\nosupersub  of the next year.\ul\par
+\ulnone{\pntext\f1\'B7\tab}4.2.\tab In case of problems during the USE of the SOFTWARE, the LICENSEE may contact INRA through a support form on the SERVER.\ul\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\b Article 5.\tab INTELLECTUAL PROPERTY RIGHTS\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 5.1.\tab INRAPORC, as well as any copy of it, is the intellectual property of INRA. The structure, the organization and the source code are trade secrets and confidential information that the LICENSEE is not allowed to use or disclose, except for the purposes mentioned in this agreement.\par
+{\pntext\f1\'B7\tab}5.2.\tab The DATABASE as well as any copy of it, is the intellectual property of INRA and AFZ. The structure and the organization of the \caps Database\caps0  are trade secrets and confidential information that the\i  \i0 LICENSEE is not allowed to use or disclose, except for the purposes mentioned in this agreement.\par
+{\pntext\f1\'B7\tab}5.3.\tab The LICENSEE will not have any right on INRAPORC or on the DATABASE, the data included in the DATABASE, or possible copies of it, except for the rights conceded in the present agreement. Moreover, the LICENSEE will:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\qj Respect and make respect the rights of INRA on INRAPORC.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\sa240\qj Respect and make respect the rights of INRA and AFZ on the DATABASE and the data included in the DATABASE.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 5.4.\tab The LICENSEE agrees to respect and not to remove, hide or conceal any copyright, trademark, indication of confidentiality or any other mention relating to the property or the mark, or legend appearing on\i  \i0 INRAPORC and the DATABASE, and to reproduce and include all mention of this type on each copy of INRAPORC authorized by the present agreement.\par
+{\pntext\f1\'B7\tab}5.5.\tab INRAPORC and the DATABASE are protected by intellectual property rights in France and abroad by international agreements on author rights. The breach of one of the authors\rquote  rights constitutes an infringement crime punished in France by articles L335-2 and L343-1 of the law on intellectual property rights and punished by 2 (two) years imprisonment and a 150\~000 \'80 fine.\par
+{\pntext\f1\'B7\tab}5.6.\tab The authors - INRA\i  \i0 and\i  \i0 AFZ - reserve all rights that are not expressly cited in the present license agreement.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 6.\tab PUBLICATION AND PUBLICITY\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1134\ulnone\b0 6.1.\tab LICENSEE agrees to cite INRA, AFZ and the SOFTWARE, as follows: \ldblquote INRAPORC was developed and provided by INRA. It uses data of the INRA-AFZ database\rdblquote  or \ldblquote INRAPORC, copyright \'a9 INRA - AFZ\rdblquote , in any publication, presentation or other work for which the SOFTWARE was used to produce or confirm results which are subject to publication, presentation or other communication of work.\par
+{\pntext\f1\'B7\tab}6.2.\tab LICENSEE agrees not to identify INRA and/or AFZ and/or INRA TRANSFERT in any promotional advertising or other promotional material to be disseminated to the public and not to use the name and/or logo of INRA and/or AFZ and/or INRA TRANSFERT without prior written consent of INRA TRANSFERT. Any use of the name of INRA, and/or AFZ and/or INRA TRANSFERT shall be limited to statements of fact and shall not imply endorsement of products or services.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\qj\tx994\ul\b Article 7.\tab LIMITATIONS\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\qj\ulnone\b0\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li994\sa240\qj The LICENSEE is not authorized:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\qj\tx1420 To use INRAPORC and the DATABASE for any other purpose than as a COMMERCIAL END-USER as described in the present agreement.\par
+{\pntext\f1\'B7\tab}To modify INRPORC and the DATABASE, even to correct errors.\par
+{\pntext\f1\'B7\tab}To copy, duplicate, or reproduce INRAPORC and the DATABASE.\par
+{\pntext\f1\'B7\tab}To remove the license activation key of the SOFTWARE.\par
+{\pntext\f1\'B7\tab}To reverse engineer, decompile, or disassemble INRAPORC or to merge all or part of the INRAPORC program with other software programs.\par
+{\pntext\f1\'B7\tab}To rent, sell, sublease, distribute, assign, transfer, license, sublicense or otherwise share one of the rights granted to the LICENSEE to INRAPORC or the DATABASE as described in the present agreement.\par
+{\pntext\f1\'B7\tab}To make available to a third party, all or part of INRAPORC or the DATABASE without prior written consent of INRA TRANSFERT.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 To commercialize or benefit commercially in any other way, any product containing any all or part of INRAPORC or the DATABASE without establishing a separate license agreement, for commercial use, with INRA TRANSFERT.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 8.\tab FINANCIAL CONDITIONS\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 8.1.\tab License fee\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li1420\sa240\qj LICENSEE will pay INRA TRANSFERT a license fee of 500 \'80 (five hundred euros) net of taxes for the license granted by this Agreement. The license fee is to be paid upon reception of an invoice and after signature of this Agreement. This sum is to be paid in euros. Any legal taxes in effect on the date of payment, notably VAT, will be added if applicable. The license fee and added tax will no be refundable by INRA TRANSFERT in any event.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj 8.2.\tab Bank account\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li1420\sa240\qj The license fee and added tax due by LICENSEE shall be paid to INRA TRANSFERT within the month following the issue of the invoice by wire transfer to:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li1420\qj\lang1036 CRCA VOISINS BRETONNEUX\par
+{\pntext\f1\'B7\tab}IBAN: FR76 1820 6001 1709 9398 8100 139\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li1420\sa240\qj\lang1033 BIC/SWIFT: AGRI FR PP 882\par
+{\pntext\f1\'B7\tab}Any sum not paid within the aforementioned time limit shall produce interest at the rate of 1.5% per calendar month of delay; it being understood that for any month already begun, the interest shall be calculated on a pro-rata basis for each day of delay. This condition shall be applicable without prejudice to the right of INRA TRANSFERT to terminate the agreement in accordance with the termination clause.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 9.\tab DURATION\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li994\sa240\qj\ulnone\b0 This agreement is valid from the date of signature.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 10.\tab LIMITATION OF WARRANTY\ulnone\b0\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 10.1.\tab INRA and INRA TRANSFERT have no obligation to provide any technical support and/or maintenance service for INRAPORC and the documentation.\par
+{\pntext\f1\'B7\tab}10.2.\tab INRA, AFZ, and INRA TRANSFERT have no obligation to provide any technical support and/or maintenance service for the DATABASE.\par
+{\pntext\f1\'B7\tab}10.3.\tab INRA TRANSFERT grants a license to USE INRAPORC and the documentation on an \ldblquote as is\rdblquote  basis without warranties, either express or implied of any kind, of merchantability, fitness for a particular purpose or for any kind, and without any obligation for INRA and/or INRA TRANSFERT to provide complementary services or technical support.\par
+{\pntext\f1\'B7\tab}10.4.\tab INRA TRANSFERT grants a license to USE the DATABASE on an \ldblquote as is\rdblquote  basis without warranties, either express or implied of any kind, of merchantability, fitness for a particular purpose or for any kind, and without any obligation for INRA and/or AFZ and/or INRA TRANSFERT to provide complementary services or technical support.\par
+{\pntext\f1\'B7\tab}10.5.\tab The LICENSEE recognizes that current scientific and technical knowledge does not allow to test and verify all uses of INRAPORC and the DATABASE, or to detect existence of possible defects. The LICENSEE recognizes that INRAPORC and the DATABASE should be used only by knowledgeable users and that their USE comprises some risks.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li1420\sa240\qj\tx1420 The LICENSEE is responsible for determining the appropriateness of INRAPORC and the DATABASE to the LICENSEE\rquote s needs, for the control of their functioning, and for their USE under conditions that will cause no personal harm or property damage. \par
+{\pntext\f1\'B7\tab}INRAPORC and the DATABASE are provided on an \ldblquote as is\rdblquote  basis without any other guaranty than the existence of INRAPORC and the DATABASE either express or implied, including the exclusion of guaranty regarding any title (of property or exploitation), lack of infringement, commercial quality, secured character, innovating and relevant nature of INRAPORC and the DATABASE, the absence of errors, and compatibility with equipment and/or software configuration of the LICENSEE.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Articlerticle 11\caps .\tab Disclaimer of liability\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0\caps0 11.1.\tab INRA and/or AFZ and/or INRA TRANSFERT shall not be held liable by any person:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\qj\tx1704 For any damage arising from the total or partial failure of LICENSEE to fulfill his obligations.\par
+{\pntext\f1\'B7\tab}For any direct or indirect damage arising from the USE or the performance of INRAPORC and the DATABASE to the LICENSEE as a COMMERCIAL END-USER, when used for professional purposes.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\sa240\qj\tx1704 For any indirect damage arising from the USE or the performance of INRAPORC and the DATABASE.\par
+\pard\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 11.2.\tab The parties explicitly agree that any financial or commercial loss (for instance: loss of data, loss of customers or of orders, loss of benefit, operating loss, opportunity loss, commercial trouble) or any action directed against the LICENSEE by a third party constitutes an indirect damage and is not eligible for compensation of damage by INRA and/or AFZ and/or INRA TRANSFERT.\par
+\pard\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article\caps  12.\tab TERMINATION of THE AGREEMENT\par
+\pard\nowidctlpar\li994\sa240\qj\ulnone\b0\caps0 In case of failure of the LICENSEE to comply with any term of this agreement, the license will automatically terminate. In case of termination, the LICENSEE\i  \i0 must immediately destroy the \caps software \caps0 as well as any copy, adaptation, improvement or any part of the \caps software\caps0  merged with other software.\par
+\pard\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article\caps  13.\tab Applicable law\par
+\pard\nowidctlpar\li994\sa240\qj\ulnone\b0\caps0 This agreement and all disputes arising out of the execution or interpretation of this license shall be governed by French law.\par
+\pard\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article\caps  14.\tab Disputes\par
+\pard\nowidctlpar\li994\sa240\qj\ulnone\b0\caps0 The parties undertake efforts to settle their differences by mutual agreement. In case of persistent disagreement, the courts of Paris will be competent.\par
+\pard\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article\caps  15.\tab Language\par
+\pard\nowidctlpar\li994\sa240\qj\ulnone\b0\caps0 The present license has been established in two versions, one in French and one in English. In case of difficulties of interpretation, the French version shall be used.\par
+}
+
\ Pas de retour chariot à la fin du fichier
Index: Resources/InraAfz.rtf
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream
Index: Resources/InraAfz.rtf
===================================================================
--- Resources/InraAfz.rtf	(révision 2)
+++ Resources/InraAfz.rtf	(révision 3)

Modification de propriétés sur Resources/InraAfz.rtf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Resources/Education_en.rtf
===================================================================
--- Resources/Education_en.rtf	(révision 0)
+++ Resources/Education_en.rtf	(révision 3)
@@ -0,0 +1,66 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1036\deflangfe1036\deftab709{\fonttbl{\f0\fswiss\fprq2\fcharset0 Microsoft Sans Serif;}{\f1\fnil\fcharset2 Symbol;}}
+{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\nowidctlpar\qc\lang1033\ul\b\f0\fs16 License agreement for the Educational Version of InraPorc\par
+\pard\nowidctlpar\sb240\qj\ulnone Definitions\par
+\pard\nowidctlpar\fi-567\li567\sb240\qj\ul\b0\i Software\ulnone\i0 : means the content of the downloaded file or delivered on any other medium (e.g., CD, floppy disk, memory stick) supplied with this agreement including:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li851\qj\tx851\i InraPorc\i0\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li851\qj the data from the \i Database\i0\par
+{\pntext\f1\'B7\tab}the presentation of this data\par
+{\pntext\f1\'B7\tab}the associated documentation (help files or other written documents)\par
+{\pntext\f1\'B7\tab}all updates, modified versions, additions, and copies\par
+\pard\nowidctlpar\fi-567\li567\sb240\qj\ul\i InraPorc\ulnone\i0 : the \i InraPorc\i0  software allows predicting nutritional requirements and nutrient utilization in swine, particularly in sows and growing pigs using data provided by the \i Academic End-user\i0  or using data from the \i Database\i0 . \i InraPorc\i0  has been registered by \i INRA\i0  at the APP (Software Protection Agency) on April 25\super th\nosupersub , 2005. The identification number (IDDN) that was assigned to it, and which accompanies the software and associated publications, is IDDN.FR.001.180002.000.R.P.2005.000.30100.\par
+\ul\i Educational Version of InraPorc\ulnone\i0 :\i  \i0 the royalty-free version of \i InraPorc\i0  to be used for academic purposes only (i.e., by individuals affiliated to an educational institution). Only a limited number of user data can be saved.\par
+\ul\i Database\ulnone\i0 : means the \ldblquote INRA-AFZ Database\rdblquote  and consists in the following:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li851\qj\tx851 textual elements: names of feed ingredients, chemical and nutritional characteristics, and units of measurement\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li851\qj numerical elements, identical to those published in the second edition of the INRA-AFZ \ldblquote Tables de composition et de valeur nutritive des mati\'e8res premi\'e8res destin\'e9es aux animaux d\rquote\'e9levage\rdblquote  (Sauvant, Perez and Tran, coordinators) published in March 2004, including:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1135\qj\tx1134 o\tab values of chemical characteristics: dry matter, crude protein, crude fiber, crude fat (method with and without hydrolysis), ash, Neutral Detergent Fiber, Acid Detergent Fiber, Acid Detergent Lignin, sugars, starch and gross energy\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1135\qj\tx1136 o\tab values of nutritional characteristics: digestible, metabolizable and net energy values, apparent digestibility of energy, organic matter, nitrogen and fat for growing pigs and sows, apparent and standardized ileal amino acid digestibility\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-567\li567\sb240\qj\ul\i Educational Version of the Software\ulnone\i0 : the royalty-free version of the \i Software\i0 , including the \i Educational Version of InraPorc\i0  and the \i Database\i0 , which may be used only for educational purposes (i.e., by individuals affiliated to an educational institution). Only a limited number of user data can be saved.\par
+\ul\i{\pntext\f1\'B7\tab}Use\ulnone\i0 : means the access to the \i Software\i0 , the downloading, installation, execution, and copying of the \i Software\i0  or any other benefit resulting from using its functions.\par
+\ul\i{\pntext\f1\'B7\tab}INRA\ulnone\i0 : means the Institut National de la Recherche Agronomique, Paris, France, as well as any affiliate(s) of \i INRA\i0 .\par
+\ul\i{\pntext\f1\'B7\tab}AFZ\ulnone\i0 : means the Association Fran\'e7aise de Zootechnie.\par
+\ul\i{\pntext\f1\'B7\tab}Academic End-user\ulnone\i0 : means the beneficiary of this license who is employed by a non-profit organization with the purpose to conduct research or for educational purposes, hereafter referred to as \ldblquote\i You\i0\rdblquote .\par
+\ul\i{\pntext\f1\'B7\tab}Server\ulnone\i0 : means the server from the \i INRA\i0  Research Centre in Rennes, from which the \i Academic End-user\i0  can download the \i Educational Version of the Software\i0  (http://www.rennes.inra.fr/inraporc/).\par
+\ul\i{\pntext\f1\'B7\tab}Domain of the License\ulnone\i0 : means research and development activities with the purpose to generate scientific knowledge or teaching. Any commercial use is strictly prohibited, including providing services to third parties, the sale of information, data or any product of commercial value, except specific and written consent from \i INRA\i0 .\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\keepn\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 1.\tab Intellectual Property Rights\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-568\li1136\sb240\qj\tx1136\b0 1.1.\tab\i InraPorc\i0  and the \i Educational Version of InraPorc\i0 , as well as any copy of it, are the intellectual property of \i INRA\i0 . The structure, the organization and the source code are trade secrets and confidential information that \i You\i0  are not allowed to use or disclose, except for the purposes mentioned in this agreement.\par
+{\pntext\f1\'B7\tab}1.2.\tab The \i Database\i0 , as well as any copy of it, is the intellectual property of \i INRA\i0  and \i AFZ\i0 . The structure and the organization of the \i Database\i0  are trade secrets and confidential information that \i You\i0  are not allowed to use or disclose, except for the purposes mentioned in this agreement. \par
+{\pntext\f1\'B7\tab}1.3.\tab\i You\i0  agree to respect and not to remove, hide or conceal any copyright, trademark, and indication of confidentiality or any other mention relating to the property or the mark, or legend appearing on \i InraPorc\i0 , the \i Educational Version of InraPorc\i0  and the \i Database\i0 .\par
+{\pntext\f1\'B7\tab}1.4.\tab\i InraPorc\i0 , the \i Educational Version of InraPorc\i0  and the \i Database\i0  are protected by intellectual property rights in France and abroad by international agreements on author rights. The breach of one of the authors\rquote  rights constitutes an infringement crime punished in France by articles L335-2 and L343-1 of the law on intellectual property rights and punished by 2 (two) years imprisonment and a 150 000 \'80 fine.\par
+{\pntext\f1\'B7\tab}1.5.\tab The authors - \i INRA\i0  and \i AFZ\i0  - reserve all rights that are not expressly cited in the present license agreement.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 2.\tab License of the software\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-568\li1136\sb240\qj\tx1136\b0 2.1.\tab\i INRA\i0  and \i AFZ\i0  grant to \i You\i0  by this agreement a non-exclusive, royalty-free, world-wide license to \i Use\i0  the \i Educational Version of the Software\i0  (\i Educational Version of InraPorc\i0  and the \i Database\i0 ) for the purposes described above, in the \i Domain of the License\i0  until the 31\super st\nosupersub  of December of the year of the acceptance this agreement.\par
+{\pntext\f1\'B7\tab}2.2.\tab After accepting this agreement, \i You\i0  will receive by e-mail a confidential license activation key allowing you to use the \i Educational Version of the Software\i0 . This activation key will be valid until December 31\super st\nosupersub  of the current year.\par
+{\pntext\f1\'B7\tab}2.3.\tab\i You\i0  are authorized to download, install, and execute the \i Educational Version of the Software\i0  on your computer to a limit of one license for one computer (i.e., one hard disk).\par
+{\pntext\f1\'B7\tab}2.4.\tab For educational purposes (for instance for classroom teaching), \i You\i0  are authorized to download and to install the \i Educational Version\i0  \i of the\i0  \i Software \i0 on a server and to execute the \i Educational Version of the\i0  \i Software \i0 from the server.\par
+{\pntext\f1\'B7\tab}2.5.\tab\i You \i0 are not authorized to rent, sell, sublease, distribute, assign, transfer, license, sublicense or otherwise share the \i Educational Version of the Software \i0 or one of the rights of \i INRA\i0  and \i AFZ\i0  on the\i  Software\i0 .\par
+{\pntext\f1\'B7\tab}2.6.\tab\i You\i0  are not authorized to personalize the installation of the \i Educational Version of the Software \i0 or extend its functions. In addition, \i You\i0  may not translate, adapt, correct, modify the \i Educational Version\i0  \i of the\i0  \i Software.\i0\par
+{\pntext\f1\'B7\tab}2.7.\tab\i INRA\i0  reserves the right to correct errors and to determine the methods dealing with the following acts:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\sb240\qj\tx1420 the reproduction of the source code of\i  InraPorc \i0 and the \i Educational Version\i0  of \i InraPorc \i0 or the translation of this code is strictly prohibited even when they are essential for the proper working of the \i Software\i0  with other software\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\qj\tx1420 similarly, \i You\i0  are not authorized to reverse engineer, disassemble or decompile \i InraPorc\i0  or the \i Educational Version of InraPorc\i0\par
+{\pntext\f1\'B7\tab}necessary information for the proper working with other software is available from \i INRA, \i0 without implying a commitment for \i INRA\i0  to provide assistance, maintenance or associated services with \i InraPorc\i0  or the \i Educational Version of InraPorc\i0\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136 2.8.\tab\i INRA\i0  and \i AFZ\i0  reserve the right to correct errors in the \i Database\i0  without implying a commitment for \i INRA\i0  and \i AFZ\i0  to provide to provide assistance, maintenance or associated services with the \i Database\i0 .\i\par
+\i0 2.9.\tab\i You \i0 are not authorized to extract (i.e., transfer permanently or temporarily) whole or a part of the content of \i InraPorc\i0 , the \i Educational Version of InraPorc\i0  or the \i Database\i0  to another medium, by any means and in any form. Moreover, \i You\i0  are not authorized to re-use (i.e., release in public) whole or a part of the content of \i InraPorc\i0 , the \i Educational Version of InraPorc\i0  or the \i Database\i0  irrespective its form.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 3.\tab Limitation of warranty\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136\b0 3.1.\tab\i INRA\i0  has no obligation to provide technical support and/or maintenance service for the \i Educational Version of InraPorc.\par
+\i0 3.2.\tab\i INRA\i0  and \i AFZ\i0  have no obligation to provide technical support and/or maintenance service for the \i Database\i0 .\par
+3.3.\tab\i INRA\i0  grants a license to \i Use\i0  the \i Educational Version of InraPorc\i0  on an \ldblquote as is\rdblquote  basis without warranties, either express or implied of any kind, of merchantability, fitness for a particular purpose or for any kind, and without any obligation for \i INRA\i0  to provide complementary services or technical support.\par
+3.4.\tab\i INRA\i0  and \i AFZ\i0  grant a license to \i Use\i0  the \i Database\i0  on an \ldblquote as is\rdblquote  basis without warranties, either express or implied of any kind, of merchantability, fitness for a particular purpose or for any kind, and without any obligation for \i INRA\i0  and/or \i AFZ\i0  to provide complementary services or technical support.\par
+3.5.\tab\i You\i0  recognize that current scientific and technical knowledge does not allow to test and verify all uses of the \i Educational Version of the Software\i0 , or to detect existence of possible defects. \i You\i0  recognize that the \i Educational Version of the Software\i0  should be used only by knowledgeable users and that its \i Use\i0  comprises some risks.\par
+3.6.\tab\i You\i0  are responsible for determining the appropriateness of the \i Educational Version of InraPorc\i0  to your needs, for the control of its functioning, and for its \i Use\i0  under conditions that will cause no personal harm or property damage.\par
+3.7.\tab The \i Educational Version of the Software\i0  is provided on an \ldblquote as is\rdblquote  basis without any other guaranty than the existence of the \i Educational Version of the Software\i0  either express or implied, including the exclusion of guaranty regarding any title (of property or exploitation), lack of infringement, commercial quality, secured character, innovating and relevant nature of the \i Educational Version of the Software\i0 , the absence of errors, and compatibility with your equipment and/or software configuration.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 4.\tab Disclaimer of liability\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136\b0 4.1.\tab INRA and/or AFZ shall not be held liable by any person:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\sb240\qj\tx1420 for any damage arising from the total or partial failure to fulfill your obligations\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\qj\tx1420 for any direct or indirect damage arising from the \i Use\i0  or the performance of the \i Educational Version of the Software\i0  to \i You\i0  as an \i Academic End-user\i0  when used for academic purposes\par
+{\pntext\f1\'B7\tab}for any indirect damage arising from the \i Use\i0  or the performance of the \i Educational Version of the Software\i0\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136 4.2.\tab The parties explicitly agree that any financial or commercial loss (for instance: loss of data, loss of customers or of orders, loss of benefit, operating loss, opportunity loss, commercial trouble) or any action directed against \i You\i0  by a third party constitutes an indirect damage and is not eligible for compensation of damage by \i INRA\i0  and/or \i AFZ\i0 .\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 5.\tab Termination of the agreement\par
+\pard\nowidctlpar\li568\sb240\qj\b0 In case of failure of the \i Academic End-user\i0  to comply with any term of this agreement, the license will automatically terminate. In case of termination, \i You\i0  must immediately destroy the \i Educational Version of the Software\i0  as well as any copy, adaptation, improvement or any part of the \i Educational Version of the Software\i0  merged with other software.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 6.\tab Applicable law\par
+\pard\nowidctlpar\li568\sb240\qj\b0 This agreement and all disputes arising out of the execution or interpretation of this license shall be governed by French law.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 7.\tab Disputes\par
+\pard\nowidctlpar\li568\sb240\qj\b0 The parties undertake efforts to settle their differences by mutual agreement. In case of persistent disagreement, the courts of Paris will be competent.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 8.\tab Language\par
+\pard\nowidctlpar\li568\sb240\qj\b0 The present license has been established in two versions, one in French and one in English. In case of difficulties of interpretation, the French version shall be used.\par
+}
+
\ Pas de retour chariot à la fin du fichier
Index: Resources/Entretien.rtf
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream
Index: Resources/Entretien.rtf
===================================================================
--- Resources/Entretien.rtf	(révision 2)
+++ Resources/Entretien.rtf	(révision 3)

Modification de propriétés sur Resources/Entretien.rtf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Resources/Evaluation_fr.rtf
===================================================================
--- Resources/Evaluation_fr.rtf	(révision 0)
+++ Resources/Evaluation_fr.rtf	(révision 3)
@@ -0,0 +1,65 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1036\deflangfe1036\deftab709{\fonttbl{\f0\fswiss\fprq2\fcharset0 Microsoft Sans Serif;}{\f1\fnil\fcharset2 Symbol;}}
+{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\qc\ul\b\f0\fs16 Contrat de licence sur la Version \'c9valuation d\rquote InraPorc\par
+\pard\sb240\qj\ulnone D\'e9finitions\par
+\pard\fi-567\li567\sb240\qj\ul\b0\i Logiciel\ulnone\~\i0 : signifie le contenu du fichier t\'e9l\'e9charg\'e9 ou de tout autre support (CD, disquette, cl\'e9 USB, \'85) fourni avec ce contrat et incluant\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-284\li851\qj\tx851\i InraPorc\i0\~;\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-284\li851\qj les donn\'e9es de la\i  Base de Donn\'e9es\~\i0 ;\par
+{\pntext\f1\'B7\tab}la pr\'e9sentation de ces donn\'e9es\~;\par
+{\pntext\f1\'B7\tab}la documentation associ\'e9e (fichiers explicatifs ou tout autre document \'e9crit)\~;\par
+{\pntext\f1\'B7\tab}toutes mises \'e0 jour, versions modifi\'e9es, ajouts, copies.\par
+\pard\fi-567\li567\sb240\qj\ul\i InraPorc\ulnone\i0\~: le logiciel \i InraPorc\i0  permettant de pr\'e9dire les besoins et l\rquote utilisation des nutriments par le porc, et plus particuli\'e8rement la truie reproductrice et le porc en croissance \'e0 partir des donn\'e9es fournies par l\rquote\i Utilisateur Final \i0 ou \'e0 partir des donn\'e9es de la \i Base de Donn\'e9es\i0 . \i InraPorc\i0  a \'e9t\'e9 d\'e9pos\'e9 par l\rquote\i INRA\i0  aupr\'e8s de l\rquote APP le 25/04/2005. Le num\'e9ro d\rquote identification qui lui a \'e9t\'e9 attribu\'e9 (IDDN), et qui a vocation \'e0 accompagner toutes les diffusions et publications du logiciel, est IDDN.FR.001.180002.000.R.P.2005.000.30100.\par
+\ul\i Version \'c9valuation d\rquote InraPorc\ulnone\i0\~:\i  \i0 version gratuite d\rquote InraPorc dont les donn\'e9es saisies par l\rquote\i Utilisateur Final\i0  ne peuvent \'eatre r\'e9utilis\'e9es ult\'e9rieurement.\par
+\ul\i Base de Donn\'e9es\ulnone\i0\~: la base de donn\'e9es \'ab\~INRA-AFZ\~\'bb est constitu\'e9e\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-284\li851\qj\tx851 d\rquote\'e9l\'e9ments de textes\~: les noms des aliments, la composition chimique et nutritionnelle, et les unit\'e9s de mesure\~;\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-284\li851\qj d\rquote\'e9l\'e9ments num\'e9riques, identiques \'e0 ceux pr\'e9sent\'e9s dans la version imprim\'e9e de la seconde \'e9dition de l\rquote INRA-AFZ \'ab\~Tables de composition et de valeur nutritive des mati\'e8res premi\'e8res destin\'e9es aux animaux d\rquote\'e9levage\~\'bb (Sauvant, Perez et Tran, coordinateurs) parue en mars 2004, \'e0 savoir\~:\par
+\pard\fi-284\li1135\qj\tx1134 o\tab les valeurs de la composition chimique\~: mati\'e8re s\'e8che, prot\'e9ines, acides amin\'e9s, cellulose brute, mati\'e8res grasses (m\'e9thode avec et sans hydrolyse), acides gras, mati\'e8res min\'e9rales, NDF (fibres alimentaires), ADF (ligno-cellulose), ADL (lignine), glucides, amidon et \'e9nergie brute\~;\par
+\pard\fi-284\li1135\qj\tx1136 o\tab les valeurs nutritionnelles\~: valeurs de l\rquote\'e9nergie digestible, m\'e9tabolisable et nette, digestibilit\'e9s apparentes de l\rquote\'e9nergie, des mati\'e8res organiques, des mati\'e8res azot\'e9es et des mati\'e8res grasses pour les porcs en croissance et les truies adultes, digestibilit\'e9s il\'e9ales apparentes et standardis\'e9es des acides amin\'e9s.\par
+\pard\fi-567\li567\sb240\qj\ul\i Version \'c9valuation du Logiciel\ulnone\i0\~: version du \i Logiciel\i0 , incluant la \i Version \'c9valuation d\rquote InraPorc\i0  et la \i Base de Donn\'e9es\i0 , dont les donn\'e9es saisies par l\rquote\i Utilisateur Final\i0  ne peuvent \'eatre r\'e9utilis\'e9es ult\'e9rieurement.\par
+\ul\i Utilisation\ulnone\i0\~: signifie l\rquote acc\'e8s au \i Logiciel\i0 , son t\'e9l\'e9chargement, son installation, son ex\'e9cution, sa copie ou tout autre avantage r\'e9sultant de l\rquote utilisation de ses fonctions.\par
+\ul\i INRA\ulnone\i0\~: signifie l\rquote Institut National de la Recherche Agronomique, Paris, France ainsi que toute(s) filiale(s) de l\rquote\i INRA\i0 .\par
+\ul\i AFZ\ulnone\~\i0 : signifie l\rquote Association Fran\'e7aise de Zootechnie.\par
+\ul\i Utilisateur Final\ulnone\i0\~: signifie le b\'e9n\'e9ficiaire de la pr\'e9sente licence d\'e9sign\'e9 ci-apr\'e8s par \'ab\~\i Vous\i0\~\'bb.\par
+\ul\i Serveur\ulnone\i0\~: d\'e9signe le serveur de l\rquote\i INRA\i0  du centre de Rennes \'e0 partir duquel l\rquote\i Utilisateur Final \i0 peut t\'e9l\'e9charger la\i  Version \'c9valuation \i0 du \i Logiciel \i0 (http://www.rennes.inra.fr/inraporc/).\par
+\ul\i Domaine de la Licence\ulnone\i0\~: signifie l\rquote\i Utilisation\i0  du \i Logiciel\i0  avec l\rquote objectif d\rquote\'e9valuer le potentiel et la fonctionnalit\'e9 du \i Logiciel\i0 . Est exclue du domaine toute utilisation \'e0 des fins commerciales ou acad\'e9miques, que ce soit pour fournir des prestations \'e0 des tiers ou vendre n\rquote importe quel produit commercial.\par
+\pard\keepn\fi-568\li568\sb240\qj\tx568\b 1.\tab Droits de Propri\'e9t\'e9 Intellectuelle\par
+\pard\fi-568\li1136\sb240\qj\tx1136\b0 1.1.\tab\i InraPorc\i0  et la \i Version \'c9valuation d\rquote InraPorc\i0  ainsi que toute copie de ceux-ci sont la propri\'e9t\'e9 intellectuelle de l\rquote\i INRA\i0 . La structure, l\rquote organisation et le code source constituent des secrets commerciaux et des informations confidentielles que \i Vous\i0  n\rquote\'eates pas autoris\'e9s \'e0 utiliser ou \'e0 divulguer, sauf aux fins mentionn\'e9es dans le pr\'e9sent contrat.\par
+1.2.\tab La \i Base de Donn\'e9es\i0  ainsi que toute copie de celle-ci sont la propri\'e9t\'e9 intellectuelle de l\rquote\i INRA\i0  et de l\rquote\i AFZ\i0 . La structure et l\rquote organisation de la \i Base de Donn\'e9es\i0  constituent des secrets commerciaux et des informations confidentielles que\i  Vous\i0  n\rquote\'eates pas autoris\'e9s \'e0 utiliser ou \'e0 divulguer, sauf aux fins mentionn\'e9es dans le pr\'e9sent contrat.\par
+1.3.\tab\i Vous\i0  acceptez de respecter et de ne pas enlever, effacer ou cacher toute mention relative au droit d\rquote auteur, marque, indication de confidentialit\'e9 ou toute autre mention relative \'e0 la propri\'e9t\'e9 ou \'e0 la marque, ou toute l\'e9gende apparaissant sur \i InraPorc\i0 , la \i Version \'c9valuation d\rquote InraPorc\i0  et la \i Base de Donn\'e9es\i0 .\par
+1.4.\tab\i InraPorc,\i0  la\i  Version \'c9valuation d\rquote InraPorc\i0  et la \i Base de Donn\'e9es\i0  sont prot\'e9g\'e9s par le code de la propri\'e9t\'e9 intellectuelle en France et \'e0 l\rquote\'e9tranger par les conventions internationales sur le droit d\rquote auteur. La violation d\rquote un des droits de l\rquote auteur de l\rquote\'9cuvre constitue un d\'e9lit de contrefa\'e7on sanctionn\'e9 en France par les articles L335-2 et L343-1 du code de la propri\'e9t\'e9 intellectuelle et punie de 2 ans d\rquote emprisonnement et 150\~000 \'80 d\rquote amende.\par
+1.5.\tab Les auteurs -\~\i INRA \i0 et\i  AFZ\~\i0 - se r\'e9servent tous les droits qui ne sont pas express\'e9ment cit\'e9s dans le pr\'e9sent contrat de licence.\par
+\pard\fi-568\li568\sb240\qj\tx568\b 2.\tab Licence du logiciel\par
+\pard\fi-567\li1136\sb240\qj\tx1136\b0 2.1.\tab L\rquote\i INRA\i0  et l\rquote\i AFZ\i0  \i Vous\i0  conc\'e8dent par le pr\'e9sent contrat une licence non-exclusive, mondiale et gratuite d\rquote\i Utilisation\i0  de la \i Version \'c9valuation du Logiciel\i0  (\i Version \'c9valuation d\rquote InraPorc\i0  et la \i Base de Donn\'e9es\i0 ) aux fins d\'e9crites ci-dessus, dans le \i Domaine de la Licence\i0 , pour une p\'e9riode de 30 jours \'e0 compter de l\rquote acceptation du pr\'e9sent contrat de licence.\par
+2.2.\tab Apr\'e8s acceptation de la pr\'e9sente licence, \i Vous\i0  pourrez \i Utiliser\i0  gratuitement la \i Version \'c9valuation du Logiciel\i0  pour tester et \'e9valuer sa fonctionnalit\'e9 pour une p\'e9riode de 30 jours \'e0 compter de l\rquote acceptation du pr\'e9sent contrat de licence.\par
+2.3.\tab\i Vous \i0\'eates autoris\'e9 \'e0 t\'e9l\'e9charger, installer, ex\'e9cuter la \i Version \'c9valuation du Logiciel\i0  sur votre ordinateur \'e0 concurrence d\rquote une licence pour un ordinateur (un disque dur).\par
+2.4.\tab\i Vous \i0 n\rquote\'eates pas autoris\'e9 \'e0 louer, vendre, sous-louer, distribuer, c\'e9der, transf\'e9rer, licencier, sous-licencier ou autrement partager la \i Version \'c9valuation du Logiciel\i0  ou l\rquote un des droits de l\rquote\i INRA \i0 et de l\rquote\i AFZ \i0 sur le \i Logiciel\i0 .\par
+2.5.\tab\i Vous\i0  ne pouvez pas personnaliser l\rquote installation de la \i Version \'c9valuation du Logiciel \i0 ou \'e9tendre ses fonctions. De m\'eame, \i Vous\i0  ne pouvez pas traduire, adapter, arranger, modifier la \i Version \'c9valuation du\i0  \i Logiciel\i0 .\par
+2.6.\tab L\rquote\i INRA\i0  se r\'e9serve le droit de corriger les erreurs et de d\'e9terminer les modalit\'e9s particuli\'e8res auxquelles seront soumis les actes suivants\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-294\li1420\sb240\qj\tx1420 La reproduction des codes source d\rquote\i InraPorc, \i0 et de la\i  Version \'c9valuation d\rquote InraPorc,\i0  ou la traduction de ces codes sont interdites m\'eame lorsqu\rquote elles sont indispensables pour obtenir l\rquote interop\'e9rabilit\'e9 du \i Logiciel\i0  avec d\rquote autres logiciels.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-294\li1420\qj\tx1420 De m\'eame, \i Vous \i0 n\rquote\'eates pas autoris\'e9s \'e0 faire de l\rquote ing\'e9nierie inverse, d\'e9compiler ou d\'e9sassembler \i InraPorc \i0 ou la\i  Version \'c9valuation d\rquote InraPorc\i0 .\par
+{\pntext\f1\'B7\tab}Les informations n\'e9cessaires \'e0 l\rquote interop\'e9rabilit\'e9 sont disponibles aupr\'e8s de l\rquote\i INRA\i0  sans que cela implique pour l\rquote\i INRA\i0  un engagement de fournir une assistance ou des services associ\'e9s \'e0 \i InraPorc \i0 ou la \i Version \'c9valuation d\rquote InraPorc\i0 .\par
+\pard\fi-567\li1136\sb240\qj\tx1136 2.7.\tab L\rquote\i INRA\i0  et l\rquote\i AFZ\i0  se r\'e9servent le droit de corriger les erreurs de la \i Base de Donn\'e9es\i0  sans que cela implique pour l\rquote\i INRA\i0  et l\rquote\i AFZ\i0  un engagement de fournir une quelconque assistance, maintenance ou des services associ\'e9s \'e0 la \i Base de Donn\'e9es\i0 .\i\par
+\i0 2.8.\tab\i Vous \i0 n\rquote\'eates pas autoris\'e9 \'e0 extraire (c\rquote est-\'e0-dire, transf\'e9rer de mani\'e8re permanente ou temporaire) tout ou partie du contenu d\rquote\i InraPorc\i0 , de la \i Version \'c9valuation d\rquote InraPorc\i0  et de la \i Base de Donn\'e9es\i0  sur un autre support, par tout moyen et sous toute forme. De m\'eame, \i Vous\i0  n\rquote\'eates pas non plus autoris\'e9s \'e0 r\'e9utiliser (c\rquote est-\'e0-dire, mettre \'e0 disposition du public) tout ou partie du contenu d\rquote\i InraPorc\i0 , de la \i Version \'c9valuation d\rquote InraPorc \i0 et de la \i Base de Donn\'e9es\i0  quelle qu\rquote en soit la forme.\par
+\pard\fi-568\li568\sb240\qj\tx568\b 3.\tab Garantie limit\'e9e\par
+\pard\fi-567\li1136\sb240\qj\tx1136\b0 3.1.\tab L\rquote\i INRA\i0  n\rquote a pas l\rquote obligation d\rquote apporter un soutien technique et/ou d\rquote assurer la maintenance de la \i Version \'c9valuation d\rquote InraPorc.\par
+\i0 3.2.\tab L\rquote\i INRA\i0  et l\rquote\i AFZ\i0  n\rquote ont pas l\rquote obligation d\rquote apporter un soutien technique et/ou d\rquote assurer la maintenance de la \i Base de Donn\'e9es\i0 .\par
+3.3.\tab L\rquote\i INRA\i0  conc\'e8de une licence d\rquote\i Utilisation \i0 de la \i Version \'c9valuation d\rquote InraPorc\i0  \'ab\~telle quelle\~\'bb sans garantie expresse ou implicite de commercialisation, d\rquote adaptation \'e0 un but particulier ou d\rquote aucune autre sorte, et sans obligation de l\rquote\i INRA \i0 de fournir des services suppl\'e9mentaires ou un support technique. \par
+3.4.\tab L\rquote\i INRA\i0  et l\rquote\i AFZ\i0  conc\'e8dent une licence d\rquote\i Utilisation\i0  de la \i Base de Donn\'e9es\i0  \'ab\~telle quelle\~\'bb sans garantie expresse ou implicite de commercialisation, d\rquote adaptation \'e0 un but particulier ou d\rquote aucune autre sorte, et sans obligation de l\rquote\i INRA\i0  et/ou de l\rquote\i AFZ\i0  de fournir des services suppl\'e9mentaires ou un support technique.\par
+3.5.\tab\i Vous\i0  reconnaissez que l\rquote\'e9tat actuel des connaissances scientifiques et techniques ne permet pas de tester et de v\'e9rifier toutes les utilisations de la \i Version \'c9valuation du Logiciel\i0 , ni de d\'e9tecter l\rquote existence d\rquote\'e9ventuels d\'e9fauts. \i Vous\i0  reconnaissez que l\rquote\i Utilisation\i0  de la\i  Version \'c9valuation du Logiciel\i0  est r\'e9serv\'e9e \'e0 des utilisateurs avertis et comporte des risques.\par
+3.6.\tab\i Vous\i0  \'eates responsable du contr\'f4le par tous moyens de l\rquote ad\'e9quation de la \i Version \'c9valuation d\rquote InraPorc\i0  \'e0 vos besoins, du contr\'f4le de leur fonctionnement, de leur utilisation dans des conditions qui ne causent pas des dommages aux personnes et aux biens.\par
+3.7.\tab La \i Version \'c9valuation du Logiciel\i0  est fournie \'ab\~en l\rquote\'e9tat\~\'bb sans aucune autre garantie que celle de l\rquote existence de la \i Version \'c9valuation du Logiciel\i0  tant expresse que tacite, ceci incluant toute exclusion de garantie quant \'e0 un titre (de propri\'e9t\'e9, d\rquote exploitation), l\rquote absence de contrefa\'e7on, la qualit\'e9 marchande, le caract\'e8re s\'e9curis\'e9, innovant ou pertinent de la \i Version \'c9valuation du Logiciel\i0 , l\rquote absence d\rquote erreur, la compatibilit\'e9 avec votre \'e9quipement et/ou configuration logicielle.\par
+\pard\fi-568\li568\sb240\qj\tx568\b 4.\tab Exclusions de responsabilit\'e9\par
+\pard\fi-567\li1136\sb240\qj\tx1136\b0 4.1.\tab L\rquote\i INRA\i0  et l\rquote\i AFZ\i0   ne peuvent \'eatre tenus pour responsable envers quiconque\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-294\li1420\sb240\qj\tx1420 de tout dommage d\'fb \'e0 l\rquote inex\'e9cution totale ou partielle de vos obligations\~;\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-294\li1420\qj\tx1420 de tout dommage direct ou indirect d\'e9coulant de l\rquote\i Utilisation\i0  ou des performances de la \i Version \'c9valuation du Logiciel\i0  que vous pourriez subir en tant qu\rquote\i Utilisateur Final \i0 lorsque ceux-ci sont utilis\'e9s \'e0 des fins professionnelles\~;\par
+{\pntext\f1\'B7\tab}de tout dommage indirect d\'e9coulant de l\rquote utilisation ou des performances de la \i Version Evaluation du Logiciel\i0 .\par
+\pard\fi-567\li1136\sb240\qj\tx1136 4.2.\tab Les parties conviennent express\'e9ment que tout pr\'e9judice financier ou commercial (par exemple\~: pertes de donn\'e9es, perte de client\'e8le ou de commandes, perte de b\'e9n\'e9fices, pertes d\rquote exploitation, manque \'e0 gagner, trouble commercial) ou toute action dirig\'e9e contre \i Vous\i0  par un tiers constitue un dommage indirect et ne saurait ouvrir droit \'e0 r\'e9paration par l\rquote\i INRA \i0 et/ou l\rquote\i AFZ\i0 .\par
+\pard\fi-568\li568\sb240\qj\tx568\b 5.\tab Fin du contrat\par
+\pard\li568\sb240\qj\b0 En cas de manquement de l\rquote\i Utilisateur Final \i0\'e0 l\rquote une des dispositions du pr\'e9sent contrat, la licence sera r\'e9sili\'e9e automatiquement. En cas de r\'e9siliation, \i Vous \i0 devez imm\'e9diatement d\'e9truire la \i Version \'c9valuation du Logiciel\i0  ainsi que toute copie, adaptation, am\'e9lioration ou toute partie de la \i Version \'c9valuation du Logiciel\i0  qui serait incluse dans un autre logiciel.\par
+\pard\fi-568\li568\sb240\qj\tx568\b 6.\tab Loi applicable\par
+\pard\li568\sb240\qj\b0 Le pr\'e9sent contrat ainsi que tout litige naissant de l\rquote ex\'e9cution ou de l\rquote interpr\'e9tation de la licence seront soumis \'e0 loi fran\'e7aise.\par
+\pard\fi-568\li568\sb240\qj\tx568\b 7.\tab Contestations\par
+\pard\li568\sb240\qj\b0 Les parties s\rquote engagent \'e0 r\'e9soudre leurs diff\'e9rends \'e0 l\rquote amiable. En cas de d\'e9saccord persistant, les tribunaux de Paris seront comp\'e9tents.\par
+\pard\fi-568\li568\sb240\qj\tx568\b 8.\tab Langue\par
+\pard\li568\sb240\qj\b0 Le pr\'e9sent contrat a \'e9t\'e9 \'e9tabli en deux versions, une en fran\'e7ais et une en anglais. En cas de difficult\'e9 d\rquote interpr\'e9tation, la version fran\'e7aise fera foi.\par
+}
+
\ Pas de retour chariot à la fin du fichier
Index: Resources/Complete_fr.rtf
===================================================================
--- Resources/Complete_fr.rtf	(révision 0)
+++ Resources/Complete_fr.rtf	(révision 3)
@@ -0,0 +1,146 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1036\deflangfe1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Microsoft Sans Serif;}{\f1\fnil\fcharset2 Symbol;}}
+{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\nowidctlpar\sa240\qc\ul\b\f0\fs16 CONTRAT DE LICENCE POUR UTILISATEUR FINAL COMMERCIAL D\rquote INRAPORC\par
+\pard\nowidctlpar\sa240\qj\par
+ENTRE\ulnone\b0\~:\ul\b\par
+\pard\nowidctlpar\qj\ulnone INRA TRANSFERT S.A.\par
+\b0 Soci\'e9t\'e9 Anonyme au capital de 1 829 388 \'80\par
+N\'b0 de SIRET\~: 433 960 762 00014\par
+Ci-apr\'e8s d\'e9nomm\'e9e\~: \b INRA TRANSFERT\b0\par
+Ayant son si\'e8ge social\~: 10, rue Vivienne, 75\~002 PARIS, France\par
+Ici repr\'e9sent\'e9e par Monsieur \b Philippe LENEE\b0\par
+\pard\nowidctlpar\sa240\qj En sa qualit\'e9 de \b Directeur G\'e9n\'e9ral\b0 ,\par
+AGISSANT AU NOM ET POUR LE COMPTE DE\par
+\pard\nowidctlpar\li540\qj\b L\rquote INSTITUT NATIONAL DE LA RECHERCHE AGRONOMIQUE\par
+\b0 Ci-apr\'e8s d\'e9nomm\'e9\~: \b INRA\b0\par
+Etablissement public \'e0 caract\'e8re scientifique et technologique,\par
+Ayant son si\'e8ge\~: 147, rue de l\rquote Universit\'e9, 75\~338 PARIS cedex 07, France\par
+Repr\'e9sent\'e9 par Madame \b Marion GUILLOU\b0\par
+\pard\nowidctlpar\li540\sa240\qj En sa qualit\'e9 de \b Pr\'e9sidente\b0\par
+\pard\nowidctlpar\sa240\qj et\par
+\pard\nowidctlpar\li540\qj\b L\rquote ASSOCIATION FRANCAISE DE ZOOTECHNIE\par
+\b0 Ci-apr\'e8s d\'e9nomm\'e9e\~: \b AFZ\b0\par
+Ayant son si\'e8ge\~: 16, rue Claude Bernard, 75\~231 PARIS cedex 05, France\par
+Repr\'e9sent\'e9e par Monsieur \b Daniel SAUVANT\b0\par
+\pard\nowidctlpar\li540\sa240\qj En sa qualit\'e9 de \b Pr\'e9sident\b0\par
+\pard\nowidctlpar\sa240\qr D\rquote une part,\par
+\pard\nowidctlpar\sa240\qj\ul\b ET\ulnone\b0\~:\ul\b\par
+\pard\nowidctlpar\qj\ulnone VOUS\b0 , ci-apr\'e8s d\'e9nomm\'e9\~: \b LICENCIE\b0\par
+\pard\nowidctlpar\sa240\qr D\rquote autre part.\par
+\pard\nowidctlpar\sa240\qj\ul\b PREAMBULE\ulnone\~:\ul\par
+\ulnone\b0 L\rquote INRA, au sein de son Laboratoire \'ab\~Syst\'e8mes d\rquote Elevage, Nutrition Animale et Humaine\~\'bb (UMR SENAH) a d\'e9velopp\'e9 INRAPORC. INRAPORC est un logiciel qui permet de pr\'e9dire les besoins et l\rquote utilisation des nutriments par le porc, et plus particuli\'e8rement la truie reproductrice et le porc en croissance.\par
+INRAPORC utilise les donn\'e9es de la BASE DE DONNEES  \'ab\~Tables INRA-AFZ\~\'bb, propri\'e9t\'e9 de l\rquote INRA et de l\rquote AFZ. Les \'ab\~Tables INRA-AFZ\~\'bb sont le r\'e9sultat d\rquote une collaboration \'e9troite entre l\rquote INRA et l\rquote AFZ. Elles indiquent la composition et la valeur nutritive des mati\'e8res premi\'e8res destin\'e9es aux animaux d\rquote\'e9levage.\par
+Par arr\'eat\'e9 du 14 mars 2000, l\rquote INRA a \'e9t\'e9 autoris\'e9 \'e0 constituer une filiale de valorisation sous forme de soci\'e9t\'e9 anonyme, d\'e9nomm\'e9e INRA TRANSFERT. INRA TRANSFERT est notamment charg\'e9e de valoriser les brevets, les savoir-faire, les logiciels et les bases de donn\'e9es de l\rquote INRA, et \'e0 ce titre, de n\'e9gocier, signer et g\'e9rer les contrats de licence y aff\'e9rant.\par
+Le LICENCIE est un \caps utilisateur final commercial\caps0 , comme d\'e9fini ci-dessous, et souhaite obtenir une licence non-exclusive sur INRAPORC et la BASE DE DONNEES.\par
+L\rquote objectif du pr\'e9sent contrat est d\rquote\'e9tablir les conditions dans lesquelles INRA TRANSFERT conc\'e8de une licence au LICENCIE pour l\rquote utilisation d\rquote INRAPORC et de la BASE DE DONNEES.\par
+\ul\b EN CONSEQUENCE DE QUOI, IL A ETE CONVENU CE QUI SUIT\ulnone\~:\ul\par
+ARTICLE PRELIMINAIRE\~: DEFINITIONS\par
+\ulnone\b0 Pour l\rquote ex\'e9cution et l\rquote interpr\'e9tation de la pr\'e9sente licence, on entend par\~:\par
+\pard\nowidctlpar\fi-568\li568\sa240\qj\ul\b LOGICIEL\ulnone\b0\~: signifie le contenu du fichier t\'e9l\'e9charg\'e9 ou de tout autre support (CD, disquette, cl\'e9 USB, \'85) fourni avec ce contrat et incluant\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li852\qj\tx852 INRAPORC\~;\par
+{\pntext\f1\'B7\tab}les donn\'e9es de la BASE DE DONNEES\~;\par
+{\pntext\f1\'B7\tab}la pr\'e9sentation de ces donn\'e9es\~;\par
+{\pntext\f1\'B7\tab}la documentation associ\'e9e (fichiers explicatifs ou tout autre document \'e9crit)\~;\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li852\sa240\qj\tx852 toutes mises \'e0 jour, versions modifi\'e9es, ajouts, copies.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-568\li568\sa240\qj\ul\b INRAPORC\ulnone\b0\~: le logiciel INRAPORC permettant de pr\'e9dire les besoins et l\rquote utilisation des nutriments par le porc, et plus particuli\'e8rement la truie reproductrice et le porc en croissance \'e0 partir des donn\'e9es fournies par l\rquote UTILISATEUR FINAL COMMERCIAL ou \'e0 partir des donn\'e9es de la BASE DE DONNEES. INRAPORC a \'e9t\'e9 d\'e9pos\'e9 par l\rquote INRA aupr\'e8s de l\rquote APP le 25/04/2005. Le num\'e9ro d\rquote identification qui lui a \'e9t\'e9 attribu\'e9 (IDDN), et qui a vocation \'e0 accompagner toutes les diffusions et publications du logiciel, est IDDN.FR.001.180002.000.R.P.2005.000.30100.\par
+\ul\b{\pntext\f1\'B7\tab}BASE DE DONNEES\ulnone\b0\~: la base de donn\'e9es \'ab\~INRA-AFZ\~\'bb est constitu\'e9e\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li852\qj\tx852 d\rquote\'e9l\'e9ments de textes\~: les noms des aliments, la composition chimique et nutritionnelle, et les unit\'e9s de mesure\~;\par
+{\pntext\f1\'B7\tab}d\rquote\'e9l\'e9ments num\'e9riques, identiques \'e0 ceux pr\'e9sent\'e9s dans la version imprim\'e9e de la seconde \'e9dition de l\rquote INRA-AFZ \'ab\~Tables de composition et de valeur nutritive des mati\'e8res premi\'e8res destin\'e9es aux animaux d\rquote\'e9levage\~\'bb (Sauvant, Perez et Tran, coordinateurs) parue en mars 2004, \'e0 savoir\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-283\li1136\qj\tx1136 o\tab les valeurs de la composition chimique\~: mati\'e8re s\'e8che, prot\'e9ines, acides amin\'e9s, cellulose brute, mati\'e8res grasses (m\'e9thode avec et sans hydrolyse), acides gras, mati\'e8res min\'e9rales, NDF (fibres alimentaires), ADF (ligno-cellulose), ADL (lignine), glucides, amidon et \'e9nergie brute\~;\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-283\li1136\sa240\qj\tx1136 o\tab les valeurs nutritionnelles\~: valeurs de l\rquote\'e9nergie digestible, m\'e9tabolisable et nette, digestibilit\'e9s apparentes de l\rquote\'e9nergie, des mati\'e8res organiques, des mati\'e8res azot\'e9es et des mati\'e8res grasses pour les porcs en croissance et les truies adultes, digestibilit\'e9s il\'e9ales apparentes et standardis\'e9es des acides amin\'e9s.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-568\li568\sa240\qj\ul\b UTILISATION\ulnone\b0\~: signifie l\rquote acc\'e8s au LOGICIEL, son t\'e9l\'e9chargement, son installation, son ex\'e9cution, sa copie ou tout autre avantage r\'e9sultant de l\rquote utilisation de ses fonctions.\par
+\ul\b{\pntext\f1\'B7\tab}UTILISATEUR FINAL COMMERCIAL\ulnone\b0\~: d\'e9signe toute personne, soci\'e9t\'e9 commerciale ou organisme avec ou sans but lucratif utilisant le LOGICIEL pour son propre usage interne \'e0 des fins de recherche et d\'e9veloppement et de production sans l\rquote autorisation de redistribuer le LOGICIEL \'e0 des tiers.\par
+\ul\b{\pntext\f1\'B7\tab}SERVEUR\ulnone\b0\~: d\'e9signe le serveur de l\rquote INRA du centre de Rennes \'e0 partir duquel l\rquote UTILISATEUR FINAL COMMERCIAL peut t\'e9l\'e9charger INRAPORC, ses mises \'e0 jour et la BASE DE DONNEES (http://www.rennes.inra.fr/inraporc/).\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 1.\tab OBJET DU CONTRAT\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li994\sa240\qj\ulnone\b0 Le pr\'e9sent contrat a pour objet\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1278\tx1278 de d\'e9finir les conditions de la licence d\rquote UTILISATION d\rquote INRAPORC conc\'e9d\'e9e par INRA TRANSFERT au LICENCIE\~;\par
+{\pntext\f1\'B7\tab}de d\'e9finir les conditions de la licence d\rquote\caps utilisation\caps0  de la BASE DE DONNEES et des donn\'e9es qui y sont contenues conc\'e9d\'e9e par INRA TRANSFERT au LICENCIE\~;\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1278\sa240\tx1278 de d\'e9finir les modalit\'e9s d\rquote obtention d\rquote une cl\'e9 d\rquote activation du LOGICIEL sur le SERVEUR par le LICENCIE.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 2.\tab NATURE ET ETENDUE DE LA LICENCE SUR INRAPORC\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 2.1.\tab INRA TRANSFERT conc\'e8de au LICENCIE, en tant qu\rquote UTILISATEUR FINAL COMMERCIAL qui accepte\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\qj\tx1704 Une licence non-exclusive, mondiale, sans droit de sous-licencier, pour l\rquote installation et l\rquote\caps utilisation\caps0  d\rquote INRAPORC sur ses propres installations. La licence conc\'e9d\'e9e sur le logiciel INRAPORC s\rquote accompagne de la concession d\rquote une licence non-exclusive, sans droit de sous-licencier, sur la BASE DE DONNEES et les donn\'e9es qui y sont inclues. Ladite licence est consentie aux conditions financi\'e8res telles que d\'e9finies \'e0 l\rquote article 8.1 du pr\'e9sent contrat.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\sa240\qj\tx1704 L\rquote autorisation d\rquote utiliser la documentation fournie par l\rquote INRA.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 2.2.\tab La licence conc\'e9d\'e9e par le pr\'e9sent contrat comprennent le droit d\rquote installer INRAPORC sur un seul ordinateur appartenant au LICENCIE, lou\'e9 par lui ou qu\rquote il d\'e9tient l\'e9gitimement.\par
+{\pntext\f1\'B7\tab}2.3.\tab La pr\'e9sente licence est conclue \i intuitu personae\i0 . Elle est personnelle, incessible et intransmissible, sauf accord pr\'e9alable et expr\'e8s de l\rquote INRA et d\rquote INRA TRANSFERT.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li1420\sa240\qj En cas de fusion, absorption, transformation du LICENCIE, transfert d\rquote activit\'e9 \'e0 une autre soci\'e9t\'e9, le pr\'e9sent contrat ne pourra \'eatre transf\'e9r\'e9 sans l\rquote accord pr\'e9alable et \'e9crit d\rquote INRA TRANSFERT.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 3.\tab NATURE ET ETENDUE DES LICENCES SUR LA BASE DE DONNEES\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 3.1.\tab INRA TRANSFERT conc\'e8de au LICENCIE par le pr\'e9sent contrat une licence non-exclusive, mondiale d\rquote\caps utilisation\caps0  de la BASE DE DONNEES en vue de son \caps utilisation\caps0  dans INRAPORC.\par
+{\pntext\f1\'B7\tab}3.2.\tab Toute \caps utilisation\caps0  de la BASE DE DONNEES en dehors d\rquote INRAPORC n\'e9cessitera un nouvel accord de licence sur la BASE DE DONNEES.\par
+{\pntext\f1\'B7\tab}3.3.\tab Le LICENCIE n\rquote est pas autoris\'e9 \'e0 louer, vendre, sous-louer, distribuer, c\'e9der, transf\'e9rer, licencier, sous licencier ou autrement partager la BASE DE DONNEES ou l\rquote un des droits de l\rquote INRA et de l\rquote AFZ sur la BASE DE DONNEES.\par
+{\pntext\f1\'B7\tab}3.4.\tab La pr\'e9sente licence est conclue \i intuitu personae\i0 . Elle est personnelle, incessible et intransmissible, sauf accord pr\'e9alable et expr\'e8s de l\rquote INRA, de l\rquote AFZ et d\rquote INRA TRANSFERT.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi2\li1420\sa240\qj\tx1420 En cas de fusion, absorption, transformation d\rquote LICENCIE, transfert d\rquote activit\'e9 \'e0 une autre soci\'e9t\'e9, la pr\'e9sente licence ne pourra \'eatre transf\'e9r\'e9e sans l\rquote accord pr\'e9alable et \'e9crit d\rquote INRA TRANSFERT.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 3.5.\tab L\rquote INRA et l\rquote AFZ se r\'e9servent le droit de corriger les erreurs de la BASE DE DONNEES sans que cela implique, pour l\rquote INRA et l\rquote AFZ, un engagement de fournir une quelconque assistance, maintenance ou des services associ\'e9s \'e0 la BASE DE DONNEES.\par
+{\pntext\f1\'B7\tab}3.6.\tab L\rquote INRA et l\rquote AFZ se r\'e9servent le droit d\rquote am\'e9liorer la BASE DE DONNEES et d\rquote enrichir les donn\'e9es qui y sont contenues, sans que cela implique pour l\rquote INRA et l\rquote AFZ l\rquote obligation de fournir ces am\'e9liorations au LICENCIE. L\rquote acc\'e8s du LICENCIE aux dites am\'e9liorations sur la BASE DE DONNEES sera sujet \'e0 r\'e9mun\'e9rations compl\'e9mentaires.\par
+{\pntext\f1\'B7\tab}3.7.\tab Le LICENCIE n\rquote acqui\'e8re aucun droit, expresse ou implicite sur la BASE DE DONNEES autres que ceux sp\'e9cifiquement mentionn\'e9s dans le pr\'e9sent article.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 4.\tab REMISE DU LOGICIEL AU LICENCIE\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 4.1.\tab Apr\'e8s acceptation de la pr\'e9sente licence, le LICENCIE recevra par messagerie \'e9lectronique une cl\'e9 d\rquote activation confidentielle lui permettant l\rquote UTILISATION du LOGICIEL. Cette cl\'e9 sera valable jusqu\rquote au 31 d\'e9cembre de l\rquote ann\'e9e en cours. Le LICENCIE recevra automatiquement une nouvelle cl\'e9 confidentielle avant la fin de l\rquote ann\'e9e en cours. Cette nouvelle cl\'e9 sera valable jusqu\rquote au 31 d\'e9cembre de l\rquote ann\'e9e suivante.\par
+{\pntext\f1\'B7\tab}4.2.\tab En cas de probl\'e8mes pour l\rquote UTILISATION du LOGICIEL, LICENCIE pourra contacter l\rquote INRA via un formulaire web pr\'e9vu \'e0 cette fin sur le SERVEUR.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 5.\tab DROITS DE PROPRIETE INTELLECTUELLE\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sb240\sa240\qj\tx1420\ulnone\b0 5.1.\tab L\rquote INRA, conform\'e9ment aux dispositions de la Loi du 11 mars 1957, telle que compl\'e9t\'e9e par la Loi du 3 juillet 1985, est seul propri\'e9taire d\rquote INRAPORC. La structure, l\rquote organisation et le code source constituent des secrets commerciaux et des informations confidentielles que le LICENCIE\i  \i0 n\rquote est pas autoris\'e9 \'e0 utiliser ou \'e0 divulguer, sauf aux fins mentionn\'e9es dans le pr\'e9sent contrat.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 5.2.\tab L\rquote INRA et l\rquote AFZ, conform\'e9ment aux dispositions de la Loi du 11 mars 1957, telle que compl\'e9t\'e9e par la Loi du 3 juillet 1985, sont seuls propri\'e9taires de la BASE DE DONNEES et des donn\'e9es qui y sont inclues. La structure, l\rquote organisation et le code source constituent des secrets commerciaux et des informations confidentielles que le LICENCIE\i  \i0 n\rquote est pas autoris\'e9 \'e0 utiliser ou \'e0 divulguer, sauf aux fins mentionn\'e9es dans le pr\'e9sent contrat.\par
+{\pntext\f1\'B7\tab}5.3.\tab Le LICENCIE ne saurait obtenir aucun droit ou titre sur INRAPORC ou sur la BASE DE DONNEES et les donn\'e9es qui y sont inclues ou sur les copies \'e9ventuelles, except\'e9 les droits conc\'e9d\'e9s au titre du pr\'e9sent contrat. De plus, le LICENCIE s\rquote engage\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\qj\tx1704\'e0 respecter et faire respecter les droits de l\rquote INRA sur INRAPORC\~;\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\sa240\qj\tx1704\'e0 respecter et faire respecter les droits de l\rquote INRA et de l\rquote AFZ sur la BASE DE DONNEES et sur les donn\'e9es qui y sont inclues.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 5.4.\tab Le LICENCIE accepte de respecter et de ne pas enlever, effacer ou cacher toute mention relative au droit d\rquote auteur, marque, indication de confidentialit\'e9 ou toute autre mention relative \'e0 la propri\'e9t\'e9 ou \'e0 la marque, ou toute l\'e9gende apparaissant sur le logiciel, et de reproduire et inclure toute mention de ce type sur chaque copie d\rquote INRAPORC autoris\'e9e par le pr\'e9sent contrat.\par
+{\pntext\f1\'B7\tab}5.5.\tab INRAPORC et la BASE DE DONNEES sont prot\'e9g\'e9s par le code de la propri\'e9t\'e9 intellectuelle en France et \'e0 l\rquote\'e9tranger par les accords internationaux sur les droits d\rquote auteurs. La violation d\rquote un de ces droits constitue un crime puni en France par les articles L335-2 et L343-1 du code de la propri\'e9t\'e9 intellectuelle et punie par 2 (deux) ans d\rquote emprisonnement et 150 000 \'80 d\rquote amende.\par
+{\pntext\f1\'B7\tab}5.6.\tab Les auteurs  - INRA et AFZ - se r\'e9servent tous les droits qui ne sont pas express\'e9ment cit\'e9s dans le pr\'e9sent contrat de licence.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 6.\tab PUBLICATION ET PUBLICITE\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 6.1.\tab Le LICENCIE accepte de citer l\rquote INRA, l\rquote AFZ et le LOGICIEL, comme suit\~: \'ab\~INRAPORC a \'e9t\'e9 cr\'e9\'e9 et fourni par l\rquote INRA. Il utilise les donn\'e9es des tables INRA-AFZ\~\'bb, dans toute publication, pr\'e9sentation ou autres travaux dans lesquels le LOGICIEL a \'e9t\'e9 utilis\'e9 pour produire ou confirmer des r\'e9sultats sujets \'e0 publication, pr\'e9sentation ou travaux.\par
+{\pntext\f1\'B7\tab}6.2.\tab Le LICENCIE accepte de ne pas citer l\rquote INRA et/ou l\rquote AFZ et/ou INRA TRANSFERT dans toute publicit\'e9 ou autre document promotionnel destine au public ou d\rquote utiliser le nom et/ou le sigle de l\rquote INRA et/ou de l\rquote AFZ et/ou d\rquote INRA TRANSFERT, sans l\rquote accord \'e9crit pr\'e9alable d\rquote INRA TRANSFERT. Toute utilisation du nom de l\rquote INRA et /ou de l\rquote AFZ et/ou d\rquote INRA TRANSFERT sera limit\'e9 \'e0 des \'e9tats de faits et n\rquote impliquera aucune garantie sur les produits et les services.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 7.\tab LIMITATIONS\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li994\sa240\qj\ulnone\b0 Le LICENCIE ne saurait\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\qj\tx1420 Utiliser INRAPORC et la BASE DE DONNEES dans un autre but qu\rquote en tant qu\rquote UTILISATEUR FINAL COMMERCIAL tel que d\'e9fini dans le pr\'e9sent contrat\~;\par
+{\pntext\f1\'B7\tab}Modifier INRAPORC et la BASE DE DONNEES, m\'eame en vue de corriger les erreurs\~;\par
+{\pntext\f1\'B7\tab}Copier, dupliquer ou reproduire INRAPORC et la BASE DE DONNEES\~;\par
+{\pntext\f1\'B7\tab}Enlever la cl\'e9 d\rquote activation\~;\par
+{\pntext\f1\'B7\tab}Effectuer de l\rquote ing\'e9nierie inverse, d\'e9compiler ou d\'e9sassembler le programme INRAPORC en code objet ou fusionner tout ou partie du programme INRAPORC dans un autre programme informatique\~;\par
+{\pntext\f1\'B7\tab}Louer, vendre, sous-louer, c\'e9der, transf\'e9rer, conc\'e9der une licence ou une sous-licence ou partager d\rquote une autre mani\'e8re n\rquote importe lequel des droits d\'e9tenus par le LICENCIE sur INRAPORC et la BASE DE DONNEES aux termes du pr\'e9sent contrat\~;\par
+{\pntext\f1\'B7\tab}Rendre tout ou partie d\rquote INRAPORC et de la BASE DE DONNEES accessible \'e0 un tiers sans le consentement pr\'e9alable \'e9crit d\rquote INRA TRANSFERT\~;\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 Commercialiser ou b\'e9n\'e9ficier commercialement de toute autre fa\'e7on, de tout produit incorporant toute partie d\rquote INRAPORC et/ou de la BASE DE DONNEES sans conclure un contrat de licence s\'e9par\'e9, pour usage commercial, avec INRA TRANSFERT.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 8.\tab CONDITIONS FINANCIERES\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 8.1.\tab Paiement de garantie\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li1420\sa240\qj\tx1420 Le LICENCIE versera \'e0 INRA TRANSFERT la somme de 500 \'80 hors taxes (Cinq cents euros hors taxes) au titre du pr\'e9sent contrat de licence. Cette somme forfaitaire sera factur\'e9e apr\'e8s la signature des pr\'e9sentes. Cette somme restera acquise par INRA TRANSFERT en tout \'e9tat de cause et \'e0 titre d\'e9finitif.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 8.2.\tab Compte bancaire\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlcont\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\li1420\sa240\qj\tx994 Le LICENCIE versera la somme due \'e0 INRA TRANSFERT dans les 30 (trente) jours fin de mois suivant l\rquote\'e9mission de la facture sur le compte bancaire suivant\~:\par
+\trowd\trgaph54\trleft1418\trrh241\trpaddl54\trpaddr54\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw30\brdrs\clbrdrt\brdrw30\brdrs\clbrdrr\brdrw30\brdrs\clbrdrb\brdrw15\brdrs \cellx7938\pard\intbl{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\qc CRCA VOISINS LE BRETONNEUX\cell\row\trowd\trgaph54\trleft1418\trrh262\trpaddl54\trpaddr54\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw30\brdrs\clbrdrt\brdrw15\brdrs\clbrdrr\brdrw15\brdrs\clbrdrb\brdrw15\brdrs \cellx3048\clvertalc\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs\clbrdrr\brdrw15\brdrs\clbrdrb\brdrw15\brdrs \cellx4678\clvertalc\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs\clbrdrr\brdrw15\brdrs\clbrdrb\brdrw15\brdrs \cellx6308\clvertalc\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs\clbrdrr\brdrw30\brdrs\clbrdrb\brdrw15\brdrs \cellx7938\pard\intbl{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\qc Banque\cell Guichet\cell Num\'e9ro de compte\cell Cl\'e9 RIB\cell\row\trowd\trgaph54\trleft1418\trrh408\trpaddl54\trpaddr54\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw30\brdrs\clbrdrt\brdrw15\brdrs\clbrdrr\brdrw15\brdrs\clbrdrb\brdrw30\brdrs \cellx3048\clvertalc\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs\clbrdrr\brdrw15\brdrs\clbrdrb\brdrw30\brdrs \cellx4678\clvertalc\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs\clbrdrr\brdrw15\brdrs\clbrdrb\brdrw30\brdrs \cellx6308\clvertalc\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs\clbrdrr\brdrw30\brdrs\clbrdrb\brdrw30\brdrs \cellx7938\pard\intbl{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\qc 18206\cell 00117\cell 09939881001\cell 39\cell\row\pard{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\li1420\sb240\sa240\qj\tx994 Les factures s\rquote entendent pour paiement comptant \'e0 trente jours de l\rquote exp\'e9dition, par ch\'e8que ou virement bancaire, sauf stipulations particuli\'e8res contraires. Les frais de prorogation ou de retard, dans le paiement, sont \'e0 la charge de l\rquote acheteur sur la base du taux d\rquote int\'e9r\'eat appliqu\'e9 par la Banque Centrale Europ\'e9enne \'e0 son op\'e9ration de refinancement la plus r\'e9cente major\'e9 de 7 points. En outre, en cas de recouvrement contentieux, le montant de la facture sera automatiquement major\'e9 de 25% (vingt cinq pour cent) pour couvrir INRA TRANSFERT des frais et honoraires et son repr\'e9sentant judiciaire, et ce \'e0 titre de clause p\'e9nale.\par
+\pard{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\li1420\sa240\qj\tx994 Cette disposition sera applicable sans pr\'e9judice du droit d\rquote INRA TRANSFERT de r\'e9silier le contrat en application des clauses r\'e9solutoires.\par
+\pard{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 9.\tab DUREE\par
+\pard{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\li994\sa240\qj\tx994\ulnone\b0 Cette licence d\'e9marre \'e0 la date de signature du pr\'e9sent contrat.\par
+\pard{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 10.\tab GARANTIE LIMITEE\par
+\pard{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 10.1.\tab L\rquote INRA et INRA TRANSFERT n\rquote ont pas l\rquote obligation d\rquote apporter un soutien technique et/ou d\rquote assurer la maintenance d\rquote INRAPORC et de la documentation.\par
+\pard\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 10.2.\tab L\rquote INRA, l\rquote AFZ et INRA TRANSFERT n\rquote ont pas l\rquote obligation d\rquote apporter un soutien technique et/ou d\rquote assurer la maintenance de la BASE DE DONNEES.\par
+10.3.\tab INRA TRANSFERT conc\'e8de une licence sur INRAPORC et sur la documentation \'ab\~tels quels\~\'bb sans garantie expresse ou implicite de commercialisation, d\rquote adaptation \'e0 un but particulier ou d\rquote aucune autre sorte, et sans obligation de l\rquote INRA et/ou d\rquote INRA TRANSFERT de fournir des services suppl\'e9mentaires ou un support technique.\par
+10.4.\tab INRA TRANSFERT conc\'e8de une licence sur la BASE DE DONNEES \'ab\~telle quelle\~\'bb sans garantie expresse ou implicite de commercialisation, d\rquote adaptation \'e0 un but particulier ou d\rquote aucune autre sorte, et sans obligation de l\rquote INRA et/ou de l\rquote AFZ et/ou d\rquote INRA TRANSFERT de fournir des services suppl\'e9mentaires ou un support technique.\par
+10.5.\tab Le LICENCIE reconna\'eet que l\rquote\'e9tat actuel des connaissances scientifiques et techniques ne permet pas de tester et de v\'e9rifier toutes les utilisations d\rquote INRAPORC et de la BASE DE DONNEES, ni de d\'e9tecter l\rquote existence d\rquote\'e9ventuels d\'e9fauts. Le LICENCIE reconna\'eet que l\rquote\caps utilisation\caps0  d\rquote INRAPORC et/ou de la BASE DE DONNEES est r\'e9serv\'e9e \'e0 des utilisateurs avertis et comporte des risques.\par
+\pard{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\li1420\sa240\qj\tx1420 Le LICENCIE est responsable du contr\'f4le par tous moyens de l\rquote ad\'e9quation d\rquote INRAPORC et la BASE DE DONNEES \'e0 ses besoins, du contr\'f4le de leur fonctionnement, de leur UTILISATION dans des conditions qui ne causent pas des dommages aux personnes et aux biens.\par
+\pard\nowidctlpar\li1420\sa240\qj\tx1420 INRAPORC et la BASE DE DONNEES sont fournis \'ab\~en l\rquote\'e9tat\~\'bb sans aucune autre garantie que celle de l\rquote existence d\rquote INRAPORC et de la BASE DE DONNEES tant expresse que tacite, ceci incluant toute exclusion de garantie quant \'e0 un titre (de propri\'e9t\'e9, d\rquote exploitation), l\rquote absence de contrefa\'e7on, la qualit\'e9 marchande, le caract\'e8re s\'e9curis\'e9, innovant ou pertinent d\rquote INRAPORC et de la BASE DE DONNEES, l\rquote absence d\rquote erreur, la compatibilit\'e9 avec l\rquote\'e9quipement du LICENCIE et/ou configuration logicielle.\par
+\pard{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 11.\tab EXCLUSIONS DE RESPONSABILITE\par
+\pard{\*\pn\pnlvlcont\pnf0\pnindent0\pnstart1\pndec }
+\nowidctlpar\fi-426\li1420\sa240\qj\tx1420\ulnone\b0 11.1.\tab L\rquote INRA et/ou l\rquote AFZ et/ou l\rquote INRA TRANSFERT ne peuvent \'eatre tenus pour responsable envers quiconque\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\qj\tx1704 de tout dommage d\'fb \'e0 l\rquote inex\'e9cution totale ou partielle par le LICENCIE de ses obligations\~;\par
+{\pntext\f1\'B7\tab}de tout dommage direct ou indirect d\'e9coulant de l\rquote UTILISATION ou des performances d\rquote INRAPORC et de la BASE DE DONNEES subis par le LICENCIE en tant qu\rquote UTILISATEUR FINAL COMMERCIAL lorsque ceux-ci sont utilis\'e9s \'e0 des fins professionnelles\~;\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1704\sa240\qj\tx1704 de tout dommage indirect d\'e9coulant de l\rquote UTILISATION ou des performances d\rquote INRAPORC et de la BASE DE DONNEES.\par
+\pard\nowidctlpar\fi-426\li1420\sa240\qj\tx1420 11.2.\tab Les parties conviennent express\'e9ment que tout pr\'e9judice financier ou commercial (par exemple\~: pertes de donn\'e9es, perte de client\'e8le ou de commandes, perte de b\'e9n\'e9fices, pertes d\rquote exploitation, manque \'e0 gagner, trouble commercial) ou toute action dirig\'e9e contre LICENCIE par un tiers constitue un dommage indirect et ne saurait ouvrir droit \'e0 r\'e9paration par l\rquote INRA et/ou l\rquote AFZ et/ou l\rquote INRA TRANSFERT.\par
+\pard\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 12.\tab FIN DE CONTRAT\par
+\pard\nowidctlpar\li994\sa240\qj\tx1136\ulnone\b0 En cas de manquement du LICENCIE \'e0 l\rquote une des dispositions du pr\'e9sent contrat, la licence sera r\'e9sili\'e9e automatiquement. En cas de r\'e9siliation, le LICENCIE doit imm\'e9diatement d\'e9truire le LOGICIEL ainsi que toute copie, adaptation, am\'e9lioration ou toute partie du LOGICIEL qui serait incluse dans un autre logiciel.\par
+\pard\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 13.\tab LOI APPLICABLE\par
+\pard\nowidctlpar\li994\sa240\qj\tx1136\ulnone\b0 Le pr\'e9sent contrat ainsi que tout litige naissant de l\rquote ex\'e9cution ou de l\rquote interpr\'e9tation de la licence seront soumis \'e0 la loi fran\'e7aise.\par
+\pard\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 14.\tab CONTESTATIONS\par
+\pard\nowidctlpar\li994\sa240\qj\tx1136\ulnone\b0 Les parties s\rquote engagent \'e0 r\'e9soudre leurs diff\'e9rends \'e0 l\rquote amiable. En cas de d\'e9saccord persistant, les tribunaux de Paris seront comp\'e9tents.\par
+\pard\nowidctlpar\fi-994\li994\sa240\qj\tx994\ul\b Article 15.\tab LANGUES\par
+\pard\nowidctlpar\li994\sa240\qj\tx1136\ulnone\b0 Le pr\'e9sent contrat a \'e9t\'e9 \'e9tabli en deux versions, une en fran\'e7ais et une en anglais. En cas de difficult\'e9 d\rquote interpr\'e9tation, la version fran\'e7aise fera foi.\par
+}
+
\ Pas de retour chariot à la fin du fichier
Index: Resources/CorrCUD.rtf
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream
Index: Resources/CorrCUD.rtf
===================================================================
--- Resources/CorrCUD.rtf	(révision 2)
+++ Resources/CorrCUD.rtf	(révision 3)

Modification de propriétés sur Resources/CorrCUD.rtf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Resources/Education_fr.rtf
===================================================================
--- Resources/Education_fr.rtf	(révision 0)
+++ Resources/Education_fr.rtf	(révision 3)
@@ -0,0 +1,66 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1036\deflangfe1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Microsoft Sans Serif;}{\f1\fnil\fcharset2 Symbol;}}
+{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\nowidctlpar\qc\ul\b\f0\fs16 Contrat de licence sur la Version \'c9ducation d\rquote InraPorc\par
+\pard\nowidctlpar\sb240\qj\ulnone D\'e9finitions\par
+\pard\nowidctlpar\fi-567\li567\sb240\qj\ul\b0\i Logiciel\ulnone\~\i0 : signifie le contenu du fichier t\'e9l\'e9charg\'e9 ou de tout autre support (CD, disquette, cl\'e9 USB, \'85) fourni avec ce contrat et incluant\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li851\qj\tx852\i InraPorc\i0\~;\par
+{\pntext\f1\'B7\tab}les donn\'e9es de la\i  Base de Donn\'e9es\~\i0 ;\par
+{\pntext\f1\'B7\tab}la pr\'e9sentation de ces donn\'e9es\~;\par
+{\pntext\f1\'B7\tab}la documentation associ\'e9e (fichiers explicatifs ou tout autre document \'e9crit)\~;\par
+{\pntext\f1\'B7\tab}toutes mises \'e0 jour, versions modifi\'e9es, ajouts, copies.\par
+\pard\nowidctlpar\fi-567\li567\sb240\qj\ul\i InraPorc\ulnone\i0\~: le logiciel \i InraPorc\i0  permettant de pr\'e9dire les besoins et l\rquote utilisation des nutriments par le porc, et plus particuli\'e8rement la truie reproductrice et le porc en croissance \'e0 partir des donn\'e9es fournies par l\rquote\i Utilisateur Final Acad\'e9mique\i0  ou \'e0 partir des donn\'e9es de la \i Base de Donn\'e9es\i0 . \i InraPorc\i0  a \'e9t\'e9 d\'e9pos\'e9 par l\rquote\i INRA\i0  aupr\'e8s de l\rquote APP le 25/04/2005. Le num\'e9ro d\rquote identification qui lui a \'e9t\'e9 attribu\'e9 (IDDN), et qui a vocation \'e0 accompagner toutes les diffusions et publications du logiciel, est IDDN.FR.001.180002.000.R.P.2005.000.30100.\par
+\ul\i Version \'c9ducation d\rquote InraPorc\ulnone\i0\~:\i  \i0 version utilisable uniquement \'e0 des fins d\rquote enseignement (c\rquote est-\'e0-dire, par des personnes li\'e9es \'e0 un \'e9tablissement d\rquote enseignement) n\rquote offrant qu\rquote un nombre limit\'e9 de donn\'e9es enregistrables.\par
+\ul\i Base de Donn\'e9es\ulnone\i0\~: la base de donn\'e9es \'ab\~INRA-AFZ\~\'bb est constitu\'e9e\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li851\qj\tx852 d\rquote\'e9l\'e9ments de textes\~: les noms des aliments, la composition chimique et nutritionnelle, et les unit\'e9s de mesure\~;\par
+{\pntext\f1\'B7\tab}d\rquote\'e9l\'e9ments num\'e9riques, identiques \'e0 ceux pr\'e9sent\'e9s dans la version imprim\'e9e de la seconde \'e9dition de l\rquote INRA-AFZ \'ab\~Tables de composition et de valeur nutritive des mati\'e8res premi\'e8res destin\'e9es aux animaux d\rquote\'e9levage\~\'bb (Sauvant, Perez et Tran, coordinateurs) parue en mars 2004, \'e0 savoir\~:\par
+\pard\nowidctlpar\fi-284\li1135\qj\tx1136 o\tab les valeurs de la composition chimique\~: mati\'e8re s\'e8che, prot\'e9ines, acides amin\'e9s, cellulose brute, mati\'e8res grasses (m\'e9thode avec et sans hydrolyse), acides gras, mati\'e8res min\'e9rales, NDF (fibres alimentaires), ADF (ligno-cellulose), ADL (lignine), glucides, amidon et \'e9nergie brute\~;\par
+o\tab les valeurs nutritionnelles\~: valeurs de l\rquote\'e9nergie digestible, m\'e9tabolisable et nette, digestibilit\'e9s apparentes de l\rquote\'e9nergie, des mati\'e8res organiques, des mati\'e8res azot\'e9es et des mati\'e8res grasses pour les porcs en croissance et les truies adultes, digestibilit\'e9s il\'e9ales apparentes et standardis\'e9es des acides amin\'e9s.\par
+\pard\nowidctlpar\fi-567\li567\sb240\qj\ul\i Version \'c9ducation du Logiciel\ulnone\i0\~: version du \i Logiciel\i0 , incluant la \i Version \'c9ducation d\rquote InraPorc\i0  et la \i Base de Donn\'e9es\i0 , utilisable uniquement \'e0 des fins d\rquote enseignement (c\rquote est-\'e0-dire, par des personnes li\'e9es \'e0 un \'e9tablissement d\rquote enseignement) n\rquote offrant qu\rquote un nombre limit\'e9 de donn\'e9es enregistrables.\par
+\ul\i Utilisation\ulnone\i0\~: signifie l\rquote acc\'e8s au \i Logiciel\i0 , son t\'e9l\'e9chargement, son installation, son ex\'e9cution, sa copie ou tout autre avantage r\'e9sultant de l\rquote utilisation de ses fonctions.\par
+\ul\i INRA\ulnone\i0\~: signifie l\rquote Institut National de la Recherche Agronomique, Paris, France ainsi que toute(s) filiale(s) de l\rquote\i INRA\i0 .\par
+\ul\i AFZ\ulnone\~\i0 : signifie l\rquote Association Fran\'e7aise de Zootechnie.\par
+\ul\i Utilisateur Final Acad\'e9mique\ulnone\i0\~: signifie le b\'e9n\'e9ficiaire de la pr\'e9sente licence qui est employ\'e9 par ou qui est \'e9tudiant \'e0 un organisme sans but lucratif et ayant pour finalit\'e9 de conduire des travaux de recherche ou d\rquote enseignement et d\'e9sign\'e9 ci-apr\'e8s par \'ab\~\i Vous\i0\~\'bb.\par
+\ul\i Serveur\ulnone\i0\~: d\'e9signe le serveur de l\rquote\i INRA\i0  du centre de Rennes \'e0 partir duquel l\rquote\i Utilisateur Final Acad\'e9mique \i0 peut t\'e9l\'e9charger la\i  Version \'c9ducation \i0 du \i Logiciel \i0 (http://www.rennes.inra.fr/inraporc/).\par
+\ul\i Domaine de la Licence\ulnone\i0\~: signifie des activit\'e9s de recherche et d\'e9veloppement en vue de la production de connaissances scientifiques ou l\rquote enseignement. Est exclue du domaine toute utilisation \'e0 des fins commerciales, que ce soit pour fournir des prestations \'e0 des tiers ou vendre n\rquote importe quel produit commercial.\par
+\pard\nowidctlpar\fi-567\li567\sb240\qj\tx568\b 1.\tab Droits de Propri\'e9t\'e9 Intellectuelle\par
+\pard\nowidctlpar\fi-568\li1136\sb240\tx1136\b0 1.1.\tab\i InraPorc\i0  et la \i Version \'c9ducation d\rquote InraPorc\i0  ainsi que toute copie de ceux-ci sont la propri\'e9t\'e9 intellectuelle de l\rquote\i INRA\i0 . La structure, l\rquote organisation et le code source constituent des secrets commerciaux et des informations confidentielles que \i Vous\i0  n\rquote\'eates pas autoris\'e9s \'e0 utiliser ou \'e0 divulguer, sauf aux fins mentionn\'e9es dans le pr\'e9sent contrat.\par
+1.2.\tab La \i Base de Donn\'e9es\i0  ainsi que toute copie de celle-ci sont la propri\'e9t\'e9 intellectuelle de l\rquote\i INRA\i0  et de l\rquote\i AFZ\i0 . La structure et l\rquote organisation de la \i Base de Donn\'e9es\i0  constituent des secrets commerciaux et des informations confidentielles que\i  Vous\i0  n\rquote\'eates pas autoris\'e9s \'e0 utiliser ou \'e0 divulguer, sauf aux fins mentionn\'e9es dans le pr\'e9sent contrat.\par
+1.3.\tab\i Vous\i0  acceptez de respecter et de ne pas enlever, effacer ou cacher toute mention relative au droit d\rquote auteur, marque, indication de confidentialit\'e9 ou toute autre mention relative \'e0 la propri\'e9t\'e9 ou \'e0 la marque, ou toute l\'e9gende apparaissant sur \i InraPorc\i0 , la \i Version \'c9ducation d\rquote InraPorc\i0  et la \i Base de Donn\'e9es\i0 .\par
+1.4.\tab\i InraPorc,\i0  la\i  Version \'c9ducation d\rquote InraPorc\i0  et la \i Base de Donn\'e9es\i0  sont prot\'e9g\'e9s par le code de la propri\'e9t\'e9 intellectuelle en France et \'e0 l\rquote\'e9tranger par les conventions internationales sur le droit d\rquote auteur. La violation d\rquote un des droits de l\rquote auteur de l\rquote\'9cuvre constitue un d\'e9lit de contrefa\'e7on sanctionn\'e9 en France par les articles L335-2 et L343-1 du code de la propri\'e9t\'e9 intellectuelle et punie de 2 ans d\rquote emprisonnement et 150 000\i\~\i0\'80 d\rquote amende.\par
+1.5.\tab Les auteurs -\~\i INRA \i0 et\i  AFZ\i0\~- se r\'e9servent tous les droits qui ne sont pas express\'e9ment cit\'e9s dans le pr\'e9sent contrat de licence.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 2.\tab Licence du logiciel\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136\b0 2.1.\tab L\rquote\i INRA\i0  et l\rquote\i AFZ\i0  \i Vous\i0  conc\'e8dent par le pr\'e9sent contrat une licence non-exclusive, mondiale et gratuite d\rquote\i Utilisation\i0  de la \i Version \'c9ducation du Logiciel\i0  (\i Version \'c9ducation d\rquote InraPorc\i0  et la \i Base de Donn\'e9es\i0 ) aux fins d\'e9crites ci-dessus, dans le \i Domaine de la Licence\i0 , jusqu\rquote au 31 d\'e9cembre de l\rquote ann\'e9e en cours \'e0 compter de l\rquote acceptation du pr\'e9sent contrat de licence.\par
+2.2.\tab Apr\'e8s acceptation de la pr\'e9sente licence, \i Vous\i0  recevrez par messagerie \'e9lectronique une cl\'e9 d\rquote activation confidentielle lui permettant l\rquote\i Utilisation\i0  de la \i Version \'c9ducation du Logiciel\i0 . Ce code sera valable jusqu\rquote au 31 d\'e9cembre de l\rquote ann\'e9e en cours.\par
+2.3.\i\tab Vous \i0\'eates autoris\'e9 \'e0 t\'e9l\'e9charger, installer, ex\'e9cuter la \i Version \'c9ducation du Logiciel\i0  sur votre ordinateur \'e0 concurrence d\rquote une licence pour un ordinateur (un disque dur).\par
+2.4.\tab Pour des formations (par exemple, des travaux pratiques), \i Vous \i0\'eates autoris\'e9s \'e0 t\'e9l\'e9charger et installer la \i Version \'c9ducation du Logiciel \i0 sur un serveur et ex\'e9cuter la \i Version \'c9ducation du Logiciel\i0  depuis un serveur.\par
+2.5\i .\tab Vous \i0 n\rquote\'eates pas autoris\'e9 \'e0 louer, vendre, sous-louer, distribuer, c\'e9der, transf\'e9rer, licencier, sous-licencier ou autrement partager la \i Version \'c9ducation du Logiciel\i0  ou l\rquote un des droits de l\rquote\i INRA \i0 et de l\rquote\i AFZ \i0 sur le \i Logiciel\i0 .\par
+2.6.\tab\i Vous\i0  ne pouvez pas personnaliser l\rquote installation de la \i Version \'c9ducation du Logiciel \i0 ou \'e9tendre ses fonctions. De m\'eame, \i Vous\i0  ne pouvez pas traduire, adapter, arranger, modifier la \i Version \'c9ducation du\i0  \i Logiciel\i0 .\par
+2.7.\tab L\rquote\i INRA\i0  se r\'e9serve le droit de corriger les erreurs et de d\'e9terminer les modalit\'e9s particuli\'e8res auxquelles seront soumis les actes suivants\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\sb240\qj\tx1420 La reproduction des codes source d\rquote\i InraPorc, \i0 et de la\i  Version \'c9ducation d\rquote InraPorc,\i0  ou la traduction de ces codes sont interdites m\'eame lorsqu\rquote elles sont indispensables pour obtenir l\rquote interop\'e9rabilit\'e9 du \i Logiciel\i0  avec d\rquote autres logiciels.\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\qj\tx1420 De m\'eame, \i Vous \i0 n\rquote\'eates pas autoris\'e9s \'e0 faire de l\rquote ing\'e9nierie inverse, d\'e9compiler ou d\'e9sassembler \i InraPorc \i0 ou la\i  Version \'c9ducation d\rquote InraPorc\i0 .\par
+{\pntext\f1\'B7\tab}Les informations n\'e9cessaires \'e0 l\rquote interop\'e9rabilit\'e9 sont disponibles aupr\'e8s de l\rquote\i INRA\i0  sans que cela implique pour l\rquote\i INRA\i0  un engagement de fournir une assistance ou des services associ\'e9s \'e0 \i InraPorc \i0 ou la \i Version \'c9ducation d\rquote InraPorc\i0 .\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136 2.8.\tab L\rquote\i INRA\i0  et l\rquote\i AFZ\i0  se r\'e9servent le droit de corriger les erreurs de la \i Base de Donn\'e9es\i0  sans que cela implique pour l\rquote\i INRA\i0  et l\rquote\i AFZ\i0  un engagement de fournir une quelconque assistance, maintenance ou des services associ\'e9s \'e0 la \i Base de Donn\'e9es\i0 .\i\par
+\i0 2.9.\tab\i Vous \i0 n\rquote\'eates pas autoris\'e9 \'e0 extraire (c\rquote est-\'e0-dire, transf\'e9rer de mani\'e8re permanente ou temporaire) tout ou partie du contenu d\rquote\i InraPorc\i0 , de la \i Version \'c9ducation d\rquote InraPorc\i0  et de la \i Base de Donn\'e9es\i0  sur un autre support, par tout moyen et sous toute forme. De m\'eame, \i Vous\i0  n\rquote\'eates pas non plus autoris\'e9s \'e0 r\'e9utiliser (c\rquote est-\'e0-dire, mettre \'e0 disposition du public) tout ou partie du contenu d\rquote\i InraPorc\i0 , de la \i Version \'c9ducation d\rquote InraPorc \i0 et de la \i Base de Donn\'e9es\i0  quelle qu\rquote en soit la forme.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 3.\tab Garantie limit\'e9e\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136\b0 3.1.\tab L\rquote\i INRA\i0  n\rquote a pas l\rquote obligation d\rquote apporter un soutien technique et/ou d\rquote assurer la maintenance de la \i Version \'c9ducation d\rquote InraPorc.\par
+\i0 3.2.\tab L\rquote\i INRA\i0  et l\rquote\i AFZ\i0  n\rquote ont pas l\rquote obligation d\rquote apporter un soutien technique et/ou d\rquote assurer la maintenance de la \i Base de Donn\'e9es\i0 .\par
+3.3.\tab L\rquote\i INRA\i0  conc\'e8de une licence d\rquote\i Utilisation \i0 de la \i Version \'c9ducation d\rquote InraPorc\i0  \'ab\~telle quelle\~\'bb sans garantie expresse ou implicite de commercialisation, d\rquote adaptation \'e0 un but particulier ou d\rquote aucune autre sorte, et sans obligation de l\rquote\i INRA \i0 de fournir des services suppl\'e9mentaires ou un support technique.\par
+3.4.\tab L\rquote\i INRA\i0  et l\rquote\i AFZ\i0  conc\'e8dent une licence d\rquote\i Utilisation\i0  de la \i Base de Donn\'e9es\i0  \'ab\~telle quelle\~\'bb sans garantie expresse ou implicite de commercialisation, d\rquote adaptation \'e0 un but particulier ou d\rquote aucune autre sorte, et sans obligation de l\rquote\i INRA\i0  et/ou de l\rquote\i AFZ\i0  de fournir des services suppl\'e9mentaires ou un support technique.\par
+3.5.\tab\i Vous\i0  reconnaissez que l\rquote\'e9tat actuel des connaissances scientifiques et techniques ne permet pas de tester et de v\'e9rifier toutes les utilisations de la \i Version \'c9ducation du Logiciel\i0 , ni de d\'e9tecter l\rquote existence d\rquote\'e9ventuels d\'e9fauts. \i Vous\i0  reconnaissez que l\rquote\i Utilisation\i0  de la\i  Version \'c9ducation du Logiciel\i0  est r\'e9serv\'e9e \'e0 des utilisateurs avertis et comporte des risques.\par
+3.6.\tab\i Vous\i0  \'eates responsable du contr\'f4le par tous moyens de l\rquote ad\'e9quation de la \i Version \'c9ducation d\rquote InraPorc\i0  \'e0 vos besoins, du contr\'f4le de leur fonctionnement, de leur utilisation dans des conditions qui ne causent pas des dommages aux personnes et aux biens.\par
+3.7.\tab La \i Version \'c9ducation du Logiciel\i0  est fournie \'ab\~en l\rquote\'e9tat\~\'bb sans aucune autre garantie que celle de l\rquote existence de la \i Version \'c9ducation du Logiciel\i0  tant expresse que tacite, ceci incluant toute exclusion de garantie quant \'e0 un titre (de propri\'e9t\'e9, d\rquote exploitation), l\rquote absence de contrefa\'e7on, la qualit\'e9 marchande, le caract\'e8re s\'e9curis\'e9, innovant ou pertinent de la \i Version \'c9ducation du Logiciel\i0 , l\rquote absence d\rquote erreur, la compatibilit\'e9 avec votre \'e9quipement et/ou configuration logicielle.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 4.\tab Exclusions de responsabilit\'e9\par
+\pard\nowidctlpar\fi-568\li1136\sb240\qj\tx1136\b0 4.1.\tab L\rquote\i INRA\i0  et l\rquote\i AFZ\i0   ne peuvent \'eatre tenus pour responsable envers quiconque\~:\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\sb240\qj\tx1420 de tout dommage d\'fb \'e0 l\rquote inex\'e9cution totale ou partielle de vos obligations\~;\par
+\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-284\li1420\qj\tx1420 de tout dommage direct ou indirect d\'e9coulant de l\rquote\i Utilisation\i0  ou des performances de la \i Version \'c9ducation du Logiciel\i0  que vous pourriez subir en tant qu\rquote\i Utilisateur Final Acad\'e9mique\i0  lorsque ceux-ci sont utilis\'e9s \'e0 des fins acad\'e9miques\~;\par
+{\pntext\f1\'B7\tab}de tout dommage indirect d\'e9coulant de l\rquote utilisation ou des performances de la \i Version Education du Logiciel\i0 .\par
+\pard\nowidctlpar\fi-567\li1136\sb240\qj\tx1136 4.2.\tab Les parties conviennent express\'e9ment que tout pr\'e9judice financier ou commercial (par exemple\~: pertes de donn\'e9es, perte de client\'e8le ou de commandes, perte de b\'e9n\'e9fices, pertes d\rquote exploitation, manque \'e0 gagner, trouble commercial) ou toute action dirig\'e9e contre \i Vous\i0  par un tiers constitue un dommage indirect et ne saurait ouvrir droit \'e0 r\'e9paration par l\rquote\i INRA\i0  et/ou l\rquote\i AFZ\i0 .\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 5.\tab Fin du contrat\par
+\pard\nowidctlpar\li568\sb240\qj\b0 En cas de manquement de l\rquote\i Utilisateur Final Acad\'e9mique\i0  \'e0 l\rquote une des dispositions du pr\'e9sent contrat, la licence sera r\'e9sili\'e9e automatiquement. En cas de r\'e9siliation, \i Vous \i0 devez imm\'e9diatement d\'e9truire la \i Version \'c9ducation du Logiciel\i0  ainsi que toute copie, adaptation, am\'e9lioration ou toute partie de la \i Version \'c9ducation du Logiciel\i0  qui serait incluse dans un autre logiciel.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 6.\tab Loi applicable\par
+\pard\nowidctlpar\li568\sb240\qj\b0 Le pr\'e9sent contrat ainsi que tout litige naissant de l\rquote ex\'e9cution ou de l\rquote interpr\'e9tation de la licence seront soumis \'e0 loi fran\'e7aise.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 7.\tab Contestations\par
+\pard\nowidctlpar\li568\sb240\qj\b0 Les parties s\rquote engagent \'e0 r\'e9soudre leurs diff\'e9rends \'e0 l\rquote amiable. En cas de d\'e9saccord persistant, les tribunaux de Paris seront comp\'e9tents.\par
+\pard\nowidctlpar\fi-568\li568\sb240\qj\tx568\b 8.\tab Langue\par
+\pard\nowidctlpar\li568\sb240\qj\b0 Le pr\'e9sent contrat a \'e9t\'e9 \'e9tabli en deux versions, une en fran\'e7ais et une en anglais. En cas de difficult\'e9 d\rquote interpr\'e9tation, la version fran\'e7aise fera foi.\par
+}
+
\ Pas de retour chariot à la fin du fichier
Index: Resources/Resources.res
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream
Index: Resources/Resources.res
===================================================================
--- Resources/Resources.res	(révision 2)
+++ Resources/Resources.res	(révision 3)

Modification de propriétés sur Resources/Resources.res
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Resources/UnitProfilP.rtf
===================================================================
--- Resources/UnitProfilP.rtf	(révision 0)
+++ Resources/UnitProfilP.rtf	(révision 3)
@@ -0,0 +1,5 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1036\deflangfe1036\deftab708{\fonttbl{\f0\fswiss\fprq2\fcharset0 Microsoft Sans Serif;}}
+{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\qj\lang1033\f0\fs16 The mechanisms that regulate voluntary feed intake are not fully understood. If gut capacity is limiting, feed intake may be regulated on a dry matter (or 'bulk') basis. However, if gut capacity is not limiting intake, an energetic regulation of intake may be more likely.\par
+It is left to the user to express the mode of regulation of ad libitum feed intake (i.e., DM, DE, ME or ME). The choice of expressing ad libitum feed intake has consequences on the way the model predicts the response of feeding a high energy diet. For example, if ad libitum feed intake capacity is expressed on a DM basis, feeding a high energy diet will improve performance. If intake capacity is expressed on a NE basis, pigs fed a high energy diet will reduce their DM intake (to maintain an equal NE intake) without affecting performance.\par
+}
+
\ Pas de retour chariot à la fin du fichier
Index: Resources/SimulT.rtf
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream
Index: Resources/SimulT.rtf
===================================================================
--- Resources/SimulT.rtf	(révision 2)
+++ Resources/SimulT.rtf	(révision 3)

Modification de propriétés sur Resources/SimulT.rtf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Resources/Precocite.rtf
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream
Index: Resources/Precocite.rtf
===================================================================
--- Resources/Precocite.rtf	(révision 2)
+++ Resources/Precocite.rtf	(révision 3)

Modification de propriétés sur Resources/Precocite.rtf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Resources/License.rtf
===================================================================
--- Resources/License.rtf	(révision 0)
+++ Resources/License.rtf	(révision 3)
@@ -0,0 +1,29 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1036\deflangfe1036\deftab708{\fonttbl{\f0\fswiss\fprq2\fcharset0 Microsoft Sans Serif;}}
+{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\lang1033\f0\fs16 Three versions of InraPorc are available:\par
+\pard\qj - Evaluation\par
+\pard\fi568\qj Free\par
+Does not require a license key\par
+Limited functionality\par
+\pard\qj - Education\par
+\pard\fi568\qj Free\par
+Reserved for educational purposes\par
+Requires a license key\par
+Limited number of entries can be saved\par
+\pard\qj - Complete\par
+\pard\fi568\qj Purchase required (500 \'80)\par
+Requires a license key\par
+No limitation\par
+\pard\par
+In case of an error (e.g., exceeding the number of data entries that can be saved or invalid license key), the software will work in read-only mode.\par
+\par
+To obtain a license activation key, use the following procedure:\par
+1. Install InraPorc on the computer on which it will be used and start InraPorc from that computer.\par
+2. Fill out all the requested information in the right-hand panel (do not forget to indicate the requested license type).\par
+3. Click on the button "OK" to store this information in the file InraPorc.lic and upload this file using the registration form of the InraPorc web site (\lang2057 http://www.rennes.inra.fr/inraporc/\lang1033 ).\par
+After processing your request, the completed file will be sent back to you by e-mail. Overwrite the existing InraPorc.lic file by the e-mail attachment.\par
+\par
+If your computer is not connected to the internet, copy the file InraPorc.lic to a computer that is connected and fill in the registration form on the InraPorc web site.\par
+\par
+To obtain a license key for the complete version, you must first fill out a purchase order of the InraPorc web site. A license number will be sent to you with the order confirmation.\par
+}
+
\ Pas de retour chariot à la fin du fichier
Index: Resources/Resources.rc
===================================================================
--- Resources/Resources.rc	(révision 0)
+++ Resources/Resources.rc	(révision 3)
@@ -0,0 +1,19 @@
+#pragma code_page(1252)
+EVALUATION_EN   TEXT    "Evaluation_en.rtf"
+EDUCATION_EN    TEXT    "Education_en.rtf"
+COMPLETE_EN     TEXT    "Complete_en.rtf"
+EVALUATION_FR   TEXT    "Evaluation_fr.rtf"
+EDUCATION_FR    TEXT    "Education_fr.rtf"
+COMPLETE_FR     TEXT    "Complete_fr.rtf"
+//LICENSE         TEXT    "License.rtf"
+//CORRCUD         TEXT    "CorrCUD.rtf"
+//CALCALI         TEXT    "CalcAli.rtf"
+//GRAPHALI        TEXT    "GraphAli.rtf"
+//UNITPROFILP     TEXT    "UnitProfilP.rtf"
+//PDMOY           TEXT    "PDMoy.rtf"
+//PRECOCITE       TEXT    "Precocite.rtf"
+//ENTRETIEN       TEXT    "Entretien.rtf"
+//OPTINIT         TEXT    "OptInit.rtf"
+//SIMULT          TEXT    "SimulT.rtf"
+//INRAAFZ         TEXT    "InraAfz.rtf"
+
Index: Resources/OptInit.rtf
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream
Index: Resources/OptInit.rtf
===================================================================
--- Resources/OptInit.rtf	(révision 2)
+++ Resources/OptInit.rtf	(révision 3)

Modification de propriétés sur Resources/OptInit.rtf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: UFRapAliElem.dfm
===================================================================
--- UFRapAliElem.dfm	(révision 0)
+++ UFRapAliElem.dfm	(révision 3)
@@ -0,0 +1,3119 @@
+object FRapAliElem: TFRapAliElem
+  Left = 0
+  Top = 80
+  Caption = 'Feed composition report - Elementary composition'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Tag = 1
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = First
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed composition: elementary composition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 2275
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        6019.270833333333000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRDBTEN_T: TQRDBText
+        Left = 513
+        Top = 516
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1357.312500000000000000
+          1365.250000000000000000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EN_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTED_T: TQRDBText
+        Left = 513
+        Top = 476
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1357.312500000000000000
+          1259.416666666667000000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ED_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEM_T: TQRDBText
+        Left = 511
+        Top = 496
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1352.020833333333000000
+          1312.333333333333000000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EM_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEB_T: TQRDBText
+        Left = 527
+        Top = 456
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1394.354166666667000000
+          1206.500000000000000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEVal_T: TQRLabel
+        Left = 531
+        Top = 432
+        Width = 29
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1404.937500000000000000
+          1143.000000000000000000
+          76.729166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sow'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdAmidon_T: TQRDBText
+        Left = 494
+        Top = 316
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1307.041666666667000000
+          836.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dAmidon_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdSucres_T: TQRDBText
+        Left = 497
+        Top = 336
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1314.979166666667000000
+          889.000000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dSucres_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLip_T: TQRDBText
+        Left = 507
+        Top = 276
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1341.437500000000000000
+          730.250000000000000000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLip_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMAT_T: TQRDBText
+        Left = 497
+        Top = 296
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1314.979166666667000000
+          783.166666666666700000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMAT_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMO_T: TQRDBText
+        Left = 503
+        Top = 256
+        Width = 57
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1330.854166666667000000
+          677.333333333333300000
+          150.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMO_T_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLdFecale_T: TQRLabel
+        Left = 531
+        Top = 192
+        Width = 29
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1404.937500000000000000
+          508.000000000000000000
+          76.729166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sow'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliment: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRDBAliment: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Aliment_'
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTFecale: TQRLabel
+        Left = 270
+        Top = 168
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          444.500000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMS: TQRLabel
+        Left = 40
+        Top = 216
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          571.500000000000000000
+          177.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Dry matter'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMS: TQRDBText
+        Left = 278
+        Top = 216
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          735.541666666666700000
+          571.500000000000000000
+          111.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMS_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLFecale: TQRLabel
+        Left = 40
+        Top = 136
+        Width = 226
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          359.833333333333300000
+          597.958333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content and fecal digestibility'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLdFecale: TQRLabel
+        Left = 360
+        Top = 168
+        Width = 240
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          952.500000000000000000
+          444.500000000000000000
+          635.000000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Digestibility'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRSdFecale: TQRShape
+        Left = 400
+        Top = 184
+        Width = 160
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          1058.333333333330000000
+          486.833333333333000000
+          423.333333333333000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLdFecale_C: TQRLabel
+        Left = 401
+        Top = 192
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1060.979166666667000000
+          508.000000000000000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Growing pig'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMO: TQRLabel
+        Left = 40
+        Top = 256
+        Width = 96
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          677.333333333333300000
+          254.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Organic matter'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMO: TQRDBText
+        Left = 277
+        Top = 256
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          732.895833333333300000
+          677.333333333333300000
+          113.770833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMO_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMAT: TQRLabel
+        Left = 40
+        Top = 296
+        Width = 88
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          783.166666666666700000
+          232.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Crude protein'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMAT: TQRDBText
+        Left = 271
+        Top = 296
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          717.020833333333300000
+          783.166666666666700000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMAT_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSucres: TQRLabel
+        Left = 40
+        Top = 336
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          889.000000000000000000
+          119.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sugars'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTSucres: TQRDBText
+        Left = 257
+        Top = 336
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          679.979166666666700000
+          889.000000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TSucres_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMM: TQRLabel
+        Left = 40
+        Top = 236
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          624.416666666666700000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Minerals'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMM: TQRDBText
+        Left = 276
+        Top = 236
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          730.250000000000000000
+          624.416666666666700000
+          116.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMM_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLip: TQRLabel
+        Left = 40
+        Top = 276
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          730.250000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Crude fat'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTLip: TQRDBText
+        Left = 281
+        Top = 276
+        Width = 39
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          743.479166666666700000
+          730.250000000000000000
+          103.187500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TLip_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAmidon: TQRLabel
+        Left = 40
+        Top = 316
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          836.083333333333300000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Starch'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTAmidon: TQRDBText
+        Left = 254
+        Top = 316
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          672.041666666666700000
+          836.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TAmidon_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMO_C: TQRDBText
+        Left = 421
+        Top = 256
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1113.895833333333000000
+          677.333333333333300000
+          156.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMO_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMAT_C: TQRDBText
+        Left = 415
+        Top = 296
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1098.020833333333000000
+          783.166666666666700000
+          171.979166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMAT_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLip_C: TQRDBText
+        Left = 425
+        Top = 276
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1124.479166666667000000
+          730.250000000000000000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLip_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdSucres_C: TQRDBText
+        Left = 417
+        Top = 336
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1103.312500000000000000
+          889.000000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dSucres_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdAmidon_C: TQRDBText
+        Left = 414
+        Top = 316
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1095.375000000000000000
+          836.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dAmidon_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEB: TQRLabel
+        Left = 40
+        Top = 456
+        Width = 84
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1206.500000000000000000
+          222.250000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Gross energy'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEB_C: TQRDBText
+        Left = 447
+        Top = 456
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1182.687500000000000000
+          1206.500000000000000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEnergie: TQRLabel
+        Left = 40
+        Top = 376
+        Width = 56
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          994.833333333333300000
+          148.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Energy'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLEVal: TQRLabel
+        Left = 360
+        Top = 408
+        Width = 240
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          952.500000000000000000
+          1079.500000000000000000
+          635.000000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Energy values (MJ/kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRSEVal: TQRShape
+        Left = 400
+        Top = 424
+        Width = 160
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          1058.333333333330000000
+          1121.833333333330000000
+          423.333333333333000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLEVal_C: TQRLabel
+        Left = 401
+        Top = 432
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1060.979166666667000000
+          1143.000000000000000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Growing pig'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel1: TQRLabel
+        Left = 40
+        Top = 496
+        Width = 139
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1312.333333333333000000
+          367.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Metabolizable energy'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEM_C: TQRDBText
+        Left = 429
+        Top = 496
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1135.062500000000000000
+          1312.333333333333000000
+          134.937500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EM_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel2: TQRLabel
+        Left = 40
+        Top = 476
+        Width = 112
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1259.416666666667000000
+          296.333333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible energy'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTED_C: TQRDBText
+        Left = 431
+        Top = 476
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1140.354166666667000000
+          1259.416666666667000000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ED_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel3: TQRLabel
+        Left = 40
+        Top = 516
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1365.250000000000000000
+          185.208333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Net energy'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEN_C: TQRDBText
+        Left = 431
+        Top = 516
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1140.354166666667000000
+          1365.250000000000000000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_EN_C_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTFibres: TQRLabel
+        Left = 270
+        Top = 588
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          1555.750000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCB: TQRLabel
+        Left = 40
+        Top = 612
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1619.250000000000000000
+          190.500000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Crude fiber'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCB: TQRDBText
+        Left = 287
+        Top = 612
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1619.250000000000000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLFibres: TQRLabel
+        Left = 40
+        Top = 556
+        Width = 40
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          1471.083333333333000000
+          105.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Fiber'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLADF: TQRLabel
+        Left = 40
+        Top = 652
+        Width = 27
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1725.083333333333000000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'ADF'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTADF: TQRDBText
+        Left = 279
+        Top = 652
+        Width = 41
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          738.187500000000000000
+          1725.083333333333000000
+          108.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ADF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLParois: TQRLabel
+        Left = 40
+        Top = 692
+        Width = 106
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1830.916666666670000000
+          280.458333333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total dietary fiber'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTParois: TQRDBText
+        Left = 268
+        Top = 692
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          709.083333333333000000
+          1830.916666666670000000
+          137.583333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Parois_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNDF: TQRLabel
+        Left = 40
+        Top = 632
+        Width = 27
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1672.166666666667000000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'NDF'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNDF: TQRDBText
+        Left = 279
+        Top = 632
+        Width = 41
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          738.187500000000000000
+          1672.166666666667000000
+          108.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NDF_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLADL: TQRLabel
+        Left = 40
+        Top = 672
+        Width = 27
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1778.000000000000000000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'ADL'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTADL: TQRDBText
+        Left = 280
+        Top = 672
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          740.833333333333300000
+          1778.000000000000000000
+          105.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ADL_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCompo: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          254.000000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'StrCompo'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsItalic]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 2393
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 623
+        Top = 24
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1648.354166666670000000
+          63.500000000000000000
+          145.520833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFAliment: TStringField
+      DisplayWidth = 35
+      FieldName = '_Aliment_'
+      Size = 35
+    end
+    object SFTMS: TStringField
+      FieldName = '_TMS_'
+      Size = 8
+    end
+    object SFTMM: TStringField
+      FieldName = '_TMM_'
+      Size = 8
+    end
+    object SFTMO: TStringField
+      FieldName = '_TMO_'
+      Size = 8
+    end
+    object SFTLip: TStringField
+      FieldName = '_TLip_'
+      Size = 8
+    end
+    object SFTMAT: TStringField
+      FieldName = '_TMAT_'
+      Size = 8
+    end
+    object SFTAmidon: TStringField
+      FieldName = '_TAmidon_'
+      Size = 8
+    end
+    object SFTSucres: TStringField
+      FieldName = '_TSucres_'
+      Size = 8
+    end
+    object SFdMO_C: TStringField
+      FieldName = '_dMO_C_'
+      Size = 8
+    end
+    object SFdMO_T: TStringField
+      FieldName = '_dMO_T_'
+      Size = 8
+    end
+    object SFdLip_C: TStringField
+      FieldName = '_dLip_C_'
+      Size = 8
+    end
+    object SFdLip_T: TStringField
+      FieldName = '_dLip_T_'
+      Size = 8
+    end
+    object SFdMAT_C: TStringField
+      FieldName = '_dMAT_C_'
+      Size = 8
+    end
+    object SFdMAT_T: TStringField
+      FieldName = '_dMAT_T_'
+      Size = 8
+    end
+    object SFdAmidon: TStringField
+      FieldName = '_dAmidon_'
+      Size = 8
+    end
+    object SFdSucres: TStringField
+      FieldName = '_dSucres_'
+      Size = 8
+    end
+    object SFEB: TStringField
+      FieldName = '_EB_'
+      Size = 8
+    end
+    object SFED_C: TStringField
+      FieldName = '_ED_C_'
+      Size = 8
+    end
+    object SFED_T: TStringField
+      FieldName = '_ED_T_'
+      Size = 8
+    end
+    object SFEM_C: TStringField
+      FieldName = '_EM_C_'
+      Size = 8
+    end
+    object SFEM_T: TStringField
+      FieldName = '_EM_T_'
+      Size = 8
+    end
+    object SFEN_C: TStringField
+      FieldName = '_EN_C_'
+      Size = 8
+    end
+    object SFEN_T: TStringField
+      FieldName = '_EN_T_'
+      Size = 8
+    end
+    object SFCB: TStringField
+      FieldName = '_CB_'
+      Size = 8
+    end
+    object SFNDF: TStringField
+      FieldName = '_NDF_'
+      Size = 8
+    end
+    object SFADF: TStringField
+      FieldName = '_ADF_'
+      Size = 8
+    end
+    object SFADL: TStringField
+      FieldName = '_ADL_'
+      Size = 8
+    end
+    object SFParois: TStringField
+      FieldName = '_Parois_'
+      Size = 8
+    end
+  end
+end
Index: UFRapLogeT.dfm
===================================================================
--- UFRapLogeT.dfm	(révision 0)
+++ UFRapLogeT.dfm	(révision 3)
@@ -0,0 +1,1312 @@
+object FRapLogeT: TFRapLogeT
+  Left = 0
+  Top = 80
+  Caption = 'Housing report for sows'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Housing of sow'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 206
+      Width = 718
+      Height = 64
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        169.333333333333300000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRShape2: TQRShape
+        Left = 40
+        Top = 56
+        Width = 638
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          105.833333333333000000
+          148.166666666667000000
+          1688.041666666670000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLRegles: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 45
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          21.166666666666670000
+          119.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Rules'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLNo: TQRLabel
+        Left = 56
+        Top = 40
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          148.166666666666700000
+          105.833333333333300000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '#'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLModeFin: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 141
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          105.833333333333300000
+          373.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Termination condition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEtat: TQRDBText
+        Left = 120
+        Top = 8
+        Width = 71
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          317.500000000000000000
+          21.166666666666670000
+          187.854166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_StrEtat_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 290
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 27
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          21.166666666666670000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 383
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          63.500000000000000000
+          1013.354166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          1711.854166666667000000
+          63.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+    object QRSDRegles: TQRSubDetail
+      Left = 38
+      Top = 270
+      Width = 718
+      Height = 20
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        52.916666666666670000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      Master = QRRapport
+      DataSet = CDSRegles
+      PrintBefore = False
+      PrintIfEmpty = True
+      object QRDBTNo: TQRDBText
+        Left = 41
+        Top = 0
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          108.479166666666700000
+          0.000000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_No_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTModeFin: TQRDBText
+        Left = 80
+        Top = 0
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          0.000000000000000000
+          171.979166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_ModeFin_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object TBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 88
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        232.833333333333300000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbTitle
+      object QRDBTLoge: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Loge_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLoge: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    IndexFieldNames = '_Loge_ ; _Etat_'
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFLoge: TStringField
+      FieldName = '_Loge_'
+      Size = 25
+    end
+    object IFEtat: TIntegerField
+      FieldName = '_Etat_'
+    end
+    object SFStrEtat: TStringField
+      DisplayWidth = 16
+      FieldName = '_StrEtat_'
+      Size = 10
+    end
+  end
+  object DSRelation: TDataSource
+    DataSet = CDSRapport
+    Left = 40
+    Top = 8
+  end
+  object CDSRegles: TClientDataSet
+    Aggregates = <>
+    IndexFieldNames = '_Loge_ ; _Etat_ ; _No_'
+    MasterFields = '_Loge_ ; _Etat_'
+    MasterSource = DSRelation
+    PacketRecords = 0
+    Params = <>
+    Left = 72
+    Top = 8
+    object SFLogeKey: TStringField
+      FieldName = '_Loge_'
+      Size = 25
+    end
+    object IFEtatKey: TIntegerField
+      FieldName = '_Etat_'
+    end
+    object IFNo: TIntegerField
+      FieldName = '_No_'
+    end
+    object SFModeFin: TStringField
+      FieldName = '_ModeFin_'
+      Size = 30
+    end
+    object SFAliment: TStringField
+      FieldName = '_Aliment_'
+      Size = 120
+    end
+  end
+end
Index: UFBesGestT.dfm
===================================================================
--- UFBesGestT.dfm	(révision 0)
+++ UFBesGestT.dfm	(révision 3)
@@ -0,0 +1,888 @@
+object FBesGestT: TFBesGestT
+  Left = 28
+  Top = 168
+  HelpContext = 4800
+  ActiveControl = CBProfil
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Requirements during gestation (sow)'
+  ClientHeight = 464
+  ClientWidth = 624
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBProfil: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 296
+    Height = 288
+    Caption = 'Animal profile'
+    TabOrder = 0
+    object LPortee: TLabel
+      Left = 16
+      Top = 44
+      Width = 23
+      Height = 13
+      Caption = 'Litter'
+    end
+    object CBProfil: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBProfilChange
+    end
+    object PBPortee: TPBSuperSpin
+      Left = 80
+      Top = 40
+      Width = 48
+      Height = 22
+      Cursor = crDefault
+      Alignment = taRightJustify
+      Decimals = 0
+      MaxValue = 8.000000000000000000
+      MinValue = 1.000000000000000000
+      NumberFormat = Standard
+      OnChange = PBPorteeChange
+      ParentShowHint = False
+      ShowHint = False
+      TabOrder = 1
+      Value = 1.000000000000000000
+      EditorEnabled = False
+      Increment = 1.000000000000000000
+      RoundValues = False
+      Wrap = False
+    end
+    object GBMiseBas: TGroupBox
+      Left = 8
+      Top = 160
+      Width = 280
+      Height = 120
+      Caption = 'Farrowing'
+      TabOrder = 3
+      object LP2MB: TLabel
+        Left = 8
+        Top = 44
+        Width = 110
+        Height = 13
+        Caption = 'Backfat thickness (mm)'
+      end
+      object LPdsApMB: TLabel
+        Left = 8
+        Top = 20
+        Width = 79
+        Height = 13
+        Caption = 'Weight after (kg)'
+      end
+      object LNesTotaux: TLabel
+        Left = 8
+        Top = 68
+        Width = 86
+        Height = 13
+        Caption = 'Total number born'
+      end
+      object LPdsNais: TLabel
+        Left = 8
+        Top = 92
+        Width = 76
+        Height = 13
+        Caption = 'Birth weight (kg)'
+      end
+      object PBPdsApMB: TPBNumEdit
+        Left = 200
+        Top = 16
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 1
+        NumberFormat = Standard
+        OnChange = PBPdsApMBChange
+        TabOrder = 0
+      end
+      object PBP2MB: TPBNumEdit
+        Left = 200
+        Top = 40
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 1
+        NumberFormat = Standard
+        OnChange = PBP2MBChange
+        TabOrder = 2
+      end
+      object ChkPdsApMB: TCheckBox
+        Left = 256
+        Top = 18
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to calculate the information from the animal ' +
+          'profile and the age at service'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = ChkPdsApMBClick
+      end
+      object ChkP2MB: TCheckBox
+        Left = 256
+        Top = 42
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to use the information from the animal profil' +
+          'e'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+        OnClick = ChkP2MBClick
+      end
+      object PBNesTotaux: TPBNumEdit
+        Left = 200
+        Top = 64
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 1
+        NumberFormat = Standard
+        OnChange = PBNesTotauxChange
+        TabOrder = 4
+      end
+      object PBPdsNais: TPBNumEdit
+        Left = 200
+        Top = 88
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 3
+        NumberFormat = Standard
+        OnChange = PBPdsNaisChange
+        TabOrder = 6
+      end
+      object ChkNesTotaux: TCheckBox
+        Left = 256
+        Top = 66
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to use the information from the animal profil' +
+          'e'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 5
+        OnClick = ChkNesTotauxClick
+      end
+      object ChkPdsNais: TCheckBox
+        Left = 256
+        Top = 90
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to use the information from the animal profil' +
+          'e'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 7
+        OnClick = ChkPdsNaisClick
+      end
+    end
+    object GBSaillie: TGroupBox
+      Left = 8
+      Top = 64
+      Width = 280
+      Height = 96
+      Caption = 'Service'
+      TabOrder = 2
+      object LAgeSail: TLabel
+        Left = 8
+        Top = 20
+        Width = 34
+        Height = 13
+        Caption = 'Age (d)'
+      end
+      object LPdsSail: TLabel
+        Left = 8
+        Top = 44
+        Width = 79
+        Height = 13
+        Caption = 'Body weight (kg)'
+      end
+      object LP2Sail: TLabel
+        Left = 8
+        Top = 68
+        Width = 110
+        Height = 13
+        Caption = 'Backfat thickness (mm)'
+      end
+      object PBAgeSail: TPBNumEdit
+        Left = 200
+        Top = 16
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 0
+        NumberFormat = Standard
+        OnChange = PBAgeSailChange
+        TabOrder = 0
+      end
+      object PBPdsSail: TPBNumEdit
+        Left = 200
+        Top = 40
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 1
+        NumberFormat = Standard
+        OnChange = PBPdsSailChange
+        TabOrder = 2
+      end
+      object PBP2Sail: TPBNumEdit
+        Left = 200
+        Top = 64
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 1
+        NumberFormat = Standard
+        OnChange = PBP2SailChange
+        TabOrder = 4
+      end
+      object ChkAgeSail: TCheckBox
+        Left = 256
+        Top = 18
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to use the information from the animal profil' +
+          'e'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = ChkAgeSailClick
+      end
+      object ChkPdsSail: TCheckBox
+        Left = 256
+        Top = 42
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to use the information from the animal profil' +
+          'e'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+        OnClick = ChkPdsSailClick
+      end
+      object ChkP2Sail: TCheckBox
+        Left = 256
+        Top = 66
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to use the information from the animal profil' +
+          'e'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 5
+        OnClick = ChkP2SailClick
+      end
+    end
+  end
+  object GBResult: TGroupBox
+    Left = 302
+    Top = 288
+    Width = 320
+    Height = 176
+    Caption = 'Results'
+    Color = clMoneyGreen
+    ParentBackground = False
+    ParentColor = False
+    TabOrder = 3
+    object LAliment: TLabel
+      Left = 16
+      Top = 36
+      Width = 107
+      Height = 13
+      Caption = 'Quantity of feed (kg/d)'
+    end
+    object LBesoins: TLabel
+      Left = 192
+      Top = 12
+      Width = 80
+      Height = 13
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'Requirements'
+    end
+    object LdLys: TLabel
+      Left = 16
+      Top = 108
+      Width = 145
+      Height = 13
+      Caption = 'Digestible lysine (g/d @ 105 d)'
+    end
+    object LEN: TLabel
+      Left = 16
+      Top = 84
+      Width = 86
+      Height = 13
+      Caption = 'Net energy (MJ/d)'
+    end
+    object LEM: TLabel
+      Left = 16
+      Top = 60
+      Width = 134
+      Height = 13
+      Caption = 'Metabolizable energy (MJ/d)'
+    end
+    object PBdLys: TPBNumEdit
+      Left = 208
+      Top = 104
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      ReadOnly = True
+      TabOrder = 3
+    end
+    object PBEN: TPBNumEdit
+      Left = 208
+      Top = 80
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      ReadOnly = True
+      TabOrder = 2
+    end
+    object PBEM: TPBNumEdit
+      Left = 208
+      Top = 56
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      ReadOnly = True
+      TabOrder = 1
+    end
+    object PBAliment: TPBNumEdit
+      Left = 208
+      Top = 32
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      ReadOnly = True
+      TabOrder = 0
+    end
+    object BBRapGest: TBitBtn
+      Left = 128
+      Top = 144
+      Width = 80
+      Height = 24
+      Hint = 'Show the simulation results as a report'
+      Caption = 'Report'
+      Enabled = False
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        333333333333333333333333333333333333333333FFFFF3333333333CCCCC33
+        33333FFFF77777FFFFFFCCCCCC808CCCCCC377777737F777777F008888070888
+        8003773FFF7773FFF77F0F0770F7F0770F037F777737F777737F70FFFFF7FFFF
+        F07373F3FFF7F3FFF37F70F000F7F000F07337F77737F777373330FFFFF7FFFF
+        F03337FF3FF7F3FF37F3370F00F7F00F0733373F7737F77337F3370FFFF7FFFF
+        0733337F33373F337333330FFF030FFF03333373FF7373FF7333333000333000
+        3333333777333777333333333333333333333333333333333333333333333333
+        3333333333333333333333333333333333333333333333333333}
+      NumGlyphs = 2
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 5
+      OnClick = BBRapGestClick
+    end
+    object BBResGest: TBitBtn
+      Left = 32
+      Top = 144
+      Width = 80
+      Height = 24
+      Hint = 'Show the simulation results as graphs'
+      Caption = 'Graphs'
+      Enabled = False
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
+        000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
+        033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
+        B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
+        C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
+        033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
+        3000773373FFFF73377733333700073333333333377777333333333333333333
+        3333333333333333333333333333333333333333333333333333}
+      NumGlyphs = 2
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 4
+      OnClick = BBResGestClick
+    end
+  end
+  object GBLoge: TGroupBox
+    Left = 304
+    Top = 0
+    Width = 320
+    Height = 288
+    Caption = 'Housing'
+    TabOrder = 1
+    object CBLoge: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBLogeChange
+    end
+    object GBComport: TGroupBox
+      Left = 8
+      Top = 168
+      Width = 304
+      Height = 96
+      Hint = 'To modify these values, select the housing "(Manual entry)"'
+      Caption = 'Behavior'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 4
+      object LDebout: TLabel
+        Left = 8
+        Top = 20
+        Width = 89
+        Height = 13
+        Caption = 'Standing time (min)'
+        ParentShowHint = False
+        ShowHint = False
+      end
+      object PAct: TPanel
+        Left = 8
+        Top = 48
+        Width = 240
+        Height = 40
+        BevelOuter = bvNone
+        TabOrder = 1
+        object LCalme: TLabel
+          Left = 8
+          Top = 24
+          Width = 23
+          Height = 13
+          Caption = 'Calm'
+        end
+        object LMoyenne: TLabel
+          Left = 96
+          Top = 24
+          Width = 27
+          Height = 13
+          Caption = 'Mean'
+        end
+        object LActive: TLabel
+          Left = 192
+          Top = 24
+          Width = 30
+          Height = 13
+          Caption = 'Active'
+        end
+        object TBAct: TTrackBar
+          Left = 16
+          Top = 0
+          Width = 200
+          Height = 22
+          BorderWidth = 1
+          LineSize = 15
+          Max = 360
+          Min = 120
+          ParentShowHint = False
+          PageSize = 60
+          Frequency = 60
+          Position = 240
+          SelEnd = 240
+          ShowHint = False
+          TabOrder = 0
+          TabStop = False
+          ThumbLength = 12
+          OnChange = TBActChange
+        end
+      end
+      object PBAct: TPBNumEdit
+        Left = 200
+        Top = 16
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 0
+        NumberFormat = Standard
+        ParentShowHint = False
+        ShowHint = False
+        TabOrder = 0
+        Value = 240.000000000000000000
+      end
+    end
+    object GBParam: TGroupBox
+      Left = 8
+      Top = 64
+      Width = 304
+      Height = 104
+      Hint = 'To modify these values, select the housing "(Manual entry)"'
+      Caption = 'Housing parameters'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 3
+      object LTyp: TLabel
+        Left = 8
+        Top = 20
+        Width = 24
+        Height = 13
+        Caption = 'Type'
+        ParentShowHint = False
+        ShowHint = False
+      end
+      object LSol: TLabel
+        Left = 8
+        Top = 44
+        Width = 23
+        Height = 13
+        Caption = 'Floor'
+        ParentShowHint = False
+        ShowHint = False
+      end
+      object LTemp: TLabel
+        Left = 8
+        Top = 76
+        Width = 60
+        Height = 13
+        Caption = 'Temperature'
+        ParentShowHint = False
+        ShowHint = False
+      end
+      object CBTyp: TComboBox
+        Left = 128
+        Top = 16
+        Width = 120
+        Height = 21
+        Style = csDropDownList
+        ItemHeight = 13
+        ItemIndex = 0
+        ParentShowHint = False
+        ShowHint = False
+        TabOrder = 0
+        Text = 'Individual'
+        OnChange = CBTypChange
+        Items.Strings = (
+          'Individual'
+          'In groups'
+          'Out-doors')
+      end
+      object CBSol: TComboBox
+        Left = 128
+        Top = 40
+        Width = 120
+        Height = 21
+        Style = csDropDownList
+        ItemHeight = 13
+        ItemIndex = 0
+        ParentShowHint = False
+        ShowHint = False
+        TabOrder = 1
+        Text = 'Slatted floor'
+        OnChange = CBSolChange
+        Items.Strings = (
+          'Slatted floor'
+          'Straw-bedded')
+      end
+      object PBTemp: TPBSuperSpin
+        Left = 200
+        Top = 72
+        Width = 48
+        Height = 22
+        Cursor = crDefault
+        Alignment = taRightJustify
+        Decimals = 0
+        NumberFormat = Standard
+        OnChange = PBTempChange
+        ParentShowHint = False
+        ShowHint = False
+        TabOrder = 2
+        EditorEnabled = False
+        Increment = 1.000000000000000000
+        RoundValues = False
+        Wrap = False
+      end
+    end
+    object ChkLoge: TCheckBox
+      Left = 264
+      Top = 18
+      Width = 17
+      Height = 17
+      Hint = 
+        'Check the checkbox to use the information from the animal profil' +
+        'e'
+      TabStop = False
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      OnClick = ChkLogeClick
+    end
+    object PRegle: TPanel
+      Left = 8
+      Top = 40
+      Width = 280
+      Height = 24
+      BevelOuter = bvNone
+      TabOrder = 2
+      Visible = False
+      object LRegle: TLabel
+        Left = 8
+        Top = 4
+        Width = 33
+        Height = 13
+        Caption = 'Rule(s)'
+      end
+      object LNbRegles: TLabel
+        Left = 184
+        Top = 4
+        Width = 14
+        Height = 13
+        Caption = '/ 0'
+      end
+      object PBRegle: TPBSuperSpin
+        Left = 128
+        Top = 0
+        Width = 48
+        Height = 22
+        Cursor = crDefault
+        Hint = 'Show the information corresponding to a selected housing rule'
+        Alignment = taRightJustify
+        Decimals = 0
+        MaxValue = 10.000000000000000000
+        MinValue = 1.000000000000000000
+        NumberFormat = Standard
+        OnChange = PBRegleChange
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        EditorEnabled = False
+        Increment = 1.000000000000000000
+        RoundValues = False
+        Wrap = False
+      end
+    end
+  end
+  object GBAliment: TGroupBox
+    Left = 0
+    Top = 288
+    Width = 296
+    Height = 176
+    Hint = 'Feed supply at which the calcuated requirements are compared'
+    Caption = 'Reference feed'
+    Color = clSilver
+    ParentBackground = False
+    ParentColor = False
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 2
+    object LRation: TLabel
+      Left = 16
+      Top = 68
+      Width = 90
+      Height = 13
+      Caption = 'Feed rationing plan'
+      ParentShowHint = False
+      ShowHint = False
+    end
+    object LSeqAli: TLabel
+      Left = 16
+      Top = 20
+      Width = 97
+      Height = 13
+      Caption = 'Feed sequence plan'
+      ParentShowHint = False
+      ShowHint = False
+    end
+    object LAppAli: TLabel
+      Left = 16
+      Top = 124
+      Width = 104
+      Height = 13
+      Caption = 'Average intake (kg/d)'
+      ParentShowHint = False
+      ShowHint = False
+    end
+    object LEMAli: TLabel
+      Left = 16
+      Top = 148
+      Width = 125
+      Height = 13
+      Caption = 'ME content (MJ/(kg feed))'
+      ParentShowHint = False
+      ShowHint = False
+    end
+    object CBRation: TComboBox
+      Left = 16
+      Top = 88
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 2
+      OnChange = CBRationChange
+    end
+    object CBSeqAli: TComboBox
+      Left = 16
+      Top = 40
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBSeqAliChange
+    end
+    object PBAppAli: TPBNumEdit
+      Left = 208
+      Top = 120
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 3
+      NumberFormat = Standard
+      OnChange = PBAppAliChange
+      ParentShowHint = False
+      ShowHint = False
+      TabOrder = 4
+    end
+    object PBEMAli: TPBNumEdit
+      Left = 208
+      Top = 144
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      OnChange = PBEMAliChange
+      ParentShowHint = False
+      ShowHint = False
+      TabOrder = 6
+    end
+    object ChkSeqAli: TCheckBox
+      Left = 264
+      Top = 42
+      Width = 17
+      Height = 17
+      Hint = 
+        'Check the checkbox to use the information from the animal profil' +
+        'e'
+      TabStop = False
+      TabOrder = 1
+      OnClick = ChkSeqAliClick
+    end
+    object ChkRation: TCheckBox
+      Left = 264
+      Top = 90
+      Width = 17
+      Height = 17
+      Hint = 
+        'Check the checkbox to use the information from the animal profil' +
+        'e'
+      TabStop = False
+      TabOrder = 3
+      OnClick = ChkRationClick
+    end
+    object ChkAppAli: TCheckBox
+      Left = 264
+      Top = 122
+      Width = 17
+      Height = 17
+      Hint = 
+        'Check the checkbox to use the information from the feed rationin' +
+        'g plan'
+      TabStop = False
+      TabOrder = 5
+      OnClick = ChkAppAliClick
+    end
+    object ChkEMAli: TCheckBox
+      Left = 264
+      Top = 146
+      Width = 17
+      Height = 17
+      Hint = 
+        'Check the checkbox to calculate the information from the feed se' +
+        'quence plan and the feed rationing plan'
+      TabStop = False
+      TabOrder = 7
+      OnClick = ChkEMAliClick
+    end
+    object CBRationProfil: TComboBox
+      Left = 16
+      Top = 88
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      Enabled = False
+      ItemHeight = 13
+      ItemIndex = 0
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 8
+      Text = '(Reference feed of the animal profile)'
+      Visible = False
+      OnChange = CBRationChange
+      Items.Strings = (
+        '(Reference feed of the animal profile)')
+    end
+  end
+end
Index: UFUserEquation.dfm
===================================================================
--- UFUserEquation.dfm	(révision 0)
+++ UFUserEquation.dfm	(révision 3)
@@ -0,0 +1,158 @@
+object FUserEquation: TFUserEquation
+  Left = 200
+  Top = 200
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Definition of a user equation'
+  ClientHeight = 248
+  ClientWidth = 468
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object LLongName: TLabel
+    Left = 8
+    Top = 12
+    Width = 53
+    Height = 13
+    Caption = 'Long name'
+  end
+  object LShortName: TLabel
+    Left = 8
+    Top = 36
+    Width = 54
+    Height = 13
+    Caption = 'Short name'
+  end
+  object LEquation: TLabel
+    Left = 32
+    Top = 64
+    Width = 216
+    Height = 20
+    Caption = 'Equation = a + b X1 + c X2'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -16
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object LA: TLabel
+    Left = 8
+    Top = 140
+    Width = 6
+    Height = 13
+    Caption = 'a'
+  end
+  object LB: TLabel
+    Left = 8
+    Top = 164
+    Width = 6
+    Height = 13
+    Caption = 'b'
+  end
+  object LC: TLabel
+    Left = 8
+    Top = 188
+    Width = 6
+    Height = 13
+    Caption = 'c'
+  end
+  object BBOk: TBitBtn
+    Left = 296
+    Top = 216
+    Width = 80
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    NumGlyphs = 2
+    TabOrder = 7
+  end
+  object BBCancel: TBitBtn
+    Left = 384
+    Top = 216
+    Width = 80
+    Height = 25
+    Cancel = True
+    Caption = 'Cancel'
+    ModalResult = 2
+    NumGlyphs = 2
+    TabOrder = 8
+  end
+  object RBMass: TRadioButton
+    Left = 8
+    Top = 90
+    Width = 400
+    Height = 17
+    Caption = 'Mass (X1 = P and X2 = L)'
+    Checked = True
+    TabOrder = 2
+    TabStop = True
+  end
+  object RBRatioPVV: TRadioButton
+    Left = 8
+    Top = 114
+    Width = 400
+    Height = 17
+    Caption = 'Ratio (X1 = P / eBW and X2 = L / eBW)'
+    TabOrder = 3
+  end
+  object ELongName: TEdit
+    Left = 88
+    Top = 8
+    Width = 240
+    Height = 21
+    MaxLength = 35
+    TabOrder = 0
+  end
+  object VEA: TJvValidateEdit
+    Left = 48
+    Top = 136
+    Width = 64
+    Height = 21
+    CriticalPoints.MaxValueIncluded = False
+    CriticalPoints.MinValueIncluded = False
+    DisplayFormat = dfFloat
+    DecimalPlaces = 5
+    TabOrder = 4
+  end
+  object VEB: TJvValidateEdit
+    Left = 48
+    Top = 160
+    Width = 64
+    Height = 21
+    CriticalPoints.MaxValueIncluded = False
+    CriticalPoints.MinValueIncluded = False
+    DisplayFormat = dfFloat
+    DecimalPlaces = 5
+    TabOrder = 5
+  end
+  object VEC: TJvValidateEdit
+    Left = 48
+    Top = 184
+    Width = 64
+    Height = 21
+    CriticalPoints.MaxValueIncluded = False
+    CriticalPoints.MinValueIncluded = False
+    DisplayFormat = dfFloat
+    DecimalPlaces = 5
+    TabOrder = 6
+  end
+  object EShortName: TEdit
+    Left = 88
+    Top = 32
+    Width = 80
+    Height = 21
+    MaxLength = 10
+    TabOrder = 1
+  end
+end
Index: UFSimulP.pas
===================================================================
--- UFSimulP.pas	(révision 0)
+++ UFSimulP.pas	(révision 3)
@@ -0,0 +1,2761 @@
+unit UFSimulP ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls, DB, DBClient, ComObj, 
+  PBNumEdit, PBSuperSpin, JvExControls, JvComponent, JvEnterTab, UVariables, 
+  gnugettext;
+
+type
+  TFSimulP = class(TForm)
+    PC: TPageControl;
+    ResSimul: TTabSheet;
+    CompSimul: TTabSheet;
+    SensSimul: TTabSheet;
+    GBSimul: TGroupBox;
+    SBAddSimul: TSpeedButton;
+    SBDelSimul: TSpeedButton;
+    CBSimul: TComboBox;
+    CBProfil: TComboBox;
+    CBRation: TComboBox;
+    CBSeqAli: TComboBox;
+    CBCompSimul1: TComboBox;
+    CBCompSimul2: TComboBox;
+    CBCompSimul3: TComboBox;
+    CBCompSimul4: TComboBox;
+    CBCompSimul5: TComboBox;
+    ChkCompSimul1: TCheckBox;
+    ChkCompSimul2: TCheckBox;
+    ChkCompSimul3: TCheckBox;
+    ChkCompSimul4: TCheckBox;
+    ChkCompSimul5: TCheckBox;
+    LVariation: TLabel;
+    PBVariation: TPBSuperSpin;
+    CBSensSimul: TComboBox;
+    LSensSimul: TLabel;
+    LProfil: TLabel;
+    LSeqAli: TLabel;
+    LRation: TLabel;
+    BBResSimul: TBitBtn;
+    BBSensSimul: TBitBtn;
+    BBTabSimul: TBitBtn;
+    SBRename: TSpeedButton;
+    SBComment: TSpeedButton;
+    BBRapSimul: TBitBtn;
+    PResSimul: TPanel;
+    PCompSimul: TPanel;
+    BBCompSimul: TBitBtn;
+    PSensSimul: TPanel;
+    PSimul: TPanel;
+    GBInit: TGroupBox;
+    LPVInit: TLabel;
+    LAgeInit: TLabel;
+    RBProtInit: TRadioButton;
+    RBLipInit: TRadioButton;
+    PBLipInit: TPBSuperSpin;
+    PBProtInit: TPBSuperSpin;
+    PBAgeInit: TPBSuperSpin;
+    PBPVInit: TPBSuperSpin;
+    GBFin: TGroupBox;
+    RBDuree: TRadioButton;
+    PBDuree: TPBSuperSpin;
+    PBPVFin: TPBSuperSpin;
+    RBPVFin: TRadioButton;
+    ChkAgeInit: TCheckBox;
+    ChkPVInit: TCheckBox;
+    ChkProtLipInit: TCheckBox;
+    ChkFin: TCheckBox;
+    LPV4Age: TLabel;
+    LAge4PV: TLabel;
+    GBCompBase: TGroupBox;
+    RBCompSimul: TRadioButton;
+    RBCompProfil: TRadioButton;
+    RBCompSeqAli: TRadioButton;
+    RBCompRation: TRadioButton;
+    GBComp1a5: TGroupBox;
+    CBCompSimulRef: TComboBox;
+    SBSave: TSpeedButton;
+    BBRapCompSimul: TBitBtn;
+    BBRapSensSimul: TBitBtn;
+    GBModulation: TGroupBox;
+    LVariable: TLabel;
+    CBVariable: TComboBox;
+    PConfig: TPanel;
+    RBCompElem: TRadioButton;
+    LCompProfilRef: TLabel;
+    LCompSeqAliRef: TLabel;
+    LCompRationRef: TLabel;
+    GBCompElem: TGroupBox;
+    GBCompSimulRef: TGroupBox;
+    PCompElem: TPanel;
+    JvEnterAsTab: TJvEnterAsTab;
+    BBTabCompSimul: TBitBtn;
+    BBTabSensSimul: TBitBtn;
+    BBTabSimulPlus: TBitBtn;
+    OpenDialogFile: TOpenDialog;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure CBSimulChange(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure FormDeactivate(Sender: TObject);
+    procedure SBAddSimulClick(Sender: TObject);
+    procedure SBDelSimulClick(Sender: TObject);
+    procedure PCChange(Sender: TObject);
+    procedure BBResSimulClick(Sender: TObject);
+    procedure BBCompSimulClick(Sender: TObject);
+    procedure BBSensSimulClick(Sender: TObject);
+    procedure CBProfilChange(Sender: TObject);
+    procedure CBRationChange(Sender: TObject);
+    procedure CBSeqAliChange(Sender: TObject);
+    procedure ChkCompSimulClick(Sender: TObject);
+    procedure BBTabSimulClick(Sender: TObject);
+    procedure SBRenameClick(Sender: TObject);
+    procedure SBCommentClick(Sender: TObject);
+    procedure CBSensSimulChange(Sender: TObject);
+    procedure CBCompSimul1Change(Sender: TObject);
+    procedure CBCompSimul2Change(Sender: TObject);
+    procedure CBCompSimul3Change(Sender: TObject);
+    procedure CBCompSimul4Change(Sender: TObject);
+    procedure CBCompSimul5Change(Sender: TObject);
+    procedure BBRapSimulClick(Sender: TObject);
+    procedure PBAgeInitChange(Sender: TObject);
+    procedure ChkAgeInitClick(Sender: TObject);
+    procedure PBPVInitChange(Sender: TObject);
+    procedure ChkPVInitClick(Sender: TObject);
+    procedure RBProtLipInitClick(Sender: TObject);
+    procedure PBProtInitChange(Sender: TObject);
+    procedure PBLipInitChange(Sender: TObject);
+    procedure ChkProtLipInitClick(Sender: TObject);
+    procedure RBModeFinClick(Sender: TObject);
+    procedure PBDureeChange(Sender: TObject);
+    procedure PBPVFinChange(Sender: TObject);
+    procedure ChkFinClick(Sender: TObject);
+    procedure CBCompSimulRefChange(Sender: TObject);
+    procedure SBSaveClick(Sender: TObject);
+    procedure BBRapSensSimulClick(Sender: TObject);
+    procedure BBRapCompSimulClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure CBVariableChange(Sender: TObject);
+    procedure RBCompSimulClick(Sender: TObject);
+    procedure RBCompElemClick(Sender: TObject);
+    procedure RBCompProfilClick(Sender: TObject);
+    procedure RBCompSeqAliClick(Sender: TObject);
+    procedure RBCompRationClick(Sender: TObject);
+    procedure BBTabCompSimulClick(Sender: TObject);
+    procedure BBTabSensSimulClick(Sender: TObject);
+    procedure BBTabSimulPlusClick(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified, Modal: boolean;
+    IdxSimulP: integer;
+    ProtR, LipR: double; // valeurs non arrondies
+    procedure Save;
+    procedure ValidBBResSimul;
+    procedure ValidBBCompSimul;
+    procedure ValidBBSensSimul;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FSimulP: TFSimulP;
+
+implementation
+
+uses
+  ShellAPI, SHFolder, ShlObj, UStrings, UInit, UUtil, UFindRec, UCalcul,
+  UFComment, UCalcSimulP, UFResSimulP, UFRapSimulP, {UFTabSimulP,} UFCompSimulP,
+  UFRapCompSimulP, UFRapSensSimulP;
+
+{$R *.dfm}
+
+{ TFSimulP }
+
+procedure TFSimulP.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 616 + ResSimul.Left + ResSimul.Left + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 376 + ResSimul.Top + ResSimul.Left + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+end;
+
+procedure TFSimulP.FormShow(Sender: TObject);
+begin
+  Modified := False;
+  Modal := False;
+  PC.ActivePageIndex := 0;
+  StringsSimulP(CBSimul.Items, True);
+  SBAddSimul.Enabled := IsComplete or (ListSimulP.Count < 5);
+  SBSave.Enabled := IsComplete or IsEducation;
+  IdxSimulP := -1;
+//  CBSimulChange(nil);
+end;
+
+procedure TFSimulP.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if Modified then Save;
+  Action := caFree;
+  NumWinSimulP := -1;
+end;
+
+procedure TFSimulP.FormActivate(Sender: TObject);
+begin
+  if not Modal
+  then
+  begin
+    StringsProfilP(CBProfil.Items, False);
+    StringsSeqAliP(CBSeqAli.Items, False);
+    StringsRationP(CBRation.Items, False);
+    PCChange(nil);
+    PSimul.Enabled := IsComplete or IsEducation or IsEvaluation;
+  end;
+end;
+
+procedure TFSimulP.FormDeactivate(Sender: TObject);
+begin
+  if Modified and not Modal then Save;
+end;
+
+procedure TFSimulP.PCChange(Sender: TObject);
+begin
+//  if Modified then Save ;
+  case PC.ActivePageIndex of
+    0: // Simulation simple
+      CBSimulChange(nil);
+    1: // Comparaison
+    begin
+      if RBCompSimul.Checked
+      then
+        RBCompSimulClick(nil)
+      else
+        RBCompElemClick(nil);
+      StringsSimulP(CBCompSimulRef.Items, False);
+      CBCompSimulRefChange(nil);
+    end;
+    2: // Sensibilit�
+    begin
+      StringsSimulP (CBSensSimul.Items, False);
+      CBSensSimulChange(nil);
+    end;
+  end;
+end;
+
+// Simulation simple
+
+procedure TFSimulP.Save;
+var
+  s: string;
+begin
+  Modified := False;
+  if IsComplete or IsEducation
+  then
+    if MessageDlg(Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      SaveSimulP;
+      if not SimulPValid(PSimulP)
+      then
+        MessageDlg(Format(MsgInvalidData, [Caption, PSimulP.Nom]), mtWarning, [mbOK], 0);
+    end
+    else
+    begin
+      LoadSimulP;
+      s := CBSimul.Text;
+      StringsSimulP(CBSimul.Items, True);
+      if FindIdxSimulP(s) = -1
+      then
+      begin
+        IdxSimulP := -1;
+        CBSimulChange(nil);
+      end
+      else
+        CBSimul.ItemIndex := CBSimul.Items.IndexOf(s);
+    end;
+end;
+
+procedure TFSimulP.CBSimulChange(Sender: TObject);
+begin
+  if (IdxSimulP <> -1) and (CBSimul.Text <> PSimulP.Nom)
+  then
+    if Modified then Save;
+  IdxSimulP := FindIdxSimulP(CBSimul.Text);
+  if IdxSimulP = -1
+  then // Pas d'enregistrement
+  begin
+    CBSimul.Repaint ;
+    SBDelSimul.Enabled := FALSE ;
+    SBRename.Enabled := FALSE ;
+    SBComment.Enabled := FALSE ;
+    SBSave.Enabled := FALSE ;
+    PSimul.Visible := FALSE ;
+    BBResSimul.Enabled := FALSE ;
+    BBRapSimul.Enabled := FALSE ;
+    BBTabSimul.Enabled := FALSE ;
+    BBTabSimulPlus.Enabled := FALSE ;
+  end
+  else // Affichage de l'enregistrement
+  begin
+    SBDelSimul.Enabled := TRUE ;
+    SBRename.Enabled := TRUE ;
+    SBComment.Enabled := TRUE ;
+    SBSave.Enabled := TRUE ;
+    PSimul.Visible := TRUE ;
+//    BBResSimul.Enabled := TRUE ;
+//    BBRapSimul.Enabled := TRUE ;
+//    BBTabSimul.Enabled := TRUE ;
+//    BBTabSimulPlus.Enabled := TRUE ;
+    PSimulP := ListSimulP[IdxSimulP] ;
+    with PSimulP^ do
+    begin
+      CBSimul.Hint := Memo ;
+      Update := TRUE ;
+      if Profil = -1
+      then
+        CBProfil.ItemIndex := -1
+      else
+        CBProfil.ItemIndex := CBProfil.Items.IndexOf (FindNomProfilP (Profil)) ;
+      if CBProfil.ItemIndex = -1
+      then
+        CBProfil.Hint := ''
+      else
+      begin
+        PProfilP := ListProfilP[FindIdxProfilP (CBProfil.Text)] ;
+        CBProfil.Hint := PProfilP.Memo ;
+      end ;
+      if SeqAli = -1
+      then
+        CBSeqAli.ItemIndex := -1
+      else
+        CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliP (SeqAli)) ;
+      if CBSeqAli.ItemIndex = -1
+      then
+        CBSeqAli.Hint := ''
+      else
+      begin
+        PSeqAliP := ListSeqAliP[FindIdxSeqAliP (CBSeqAli.Text)] ;
+        CBSeqAli.Hint := PSeqAliP.Memo ;
+      end ;
+      if Ration = -1
+      then
+        CBRation.ItemIndex := -1
+      else
+        CBRation.ItemIndex := CBRation.Items.IndexOf (FindNomRationP (Ration)) ;
+      if CBRation.ItemIndex = -1
+      then
+        CBRation.Hint := ''
+      else
+      begin
+        PRationP := ListRationP[FindIdxRationP (CBRation.Text)] ;
+        CBRation.Hint := PRationP.Memo ;
+      end ;
+      if AgeInitProfil
+      then
+        if ChkAgeInit.Checked
+        then
+          ChkAgeInitClick (nil)
+        else
+          ChkAgeInit.Checked := TRUE
+      else
+      begin
+        ChkAgeInit.Checked := FALSE ;
+        PBAgeInit.AsInteger := AgeInit ;
+      end ;
+      if PVInitProfil
+      then
+        if ChkPVInit.Checked
+        then
+          ChkPVInitClick (nil)
+        else
+          ChkPVInit.Checked := TRUE
+      else
+      begin
+        ChkPVInit.Checked := FALSE ;
+        PBPVInit.AsFloat := PVInit ;
+      end ;
+      if ProtLipInitProfil
+      then
+        if ChkProtLipInit.Checked
+        then
+          ChkProtLipInitClick (nil)
+        else
+          ChkProtLipInit.Checked := TRUE
+      else
+      begin
+        ChkProtLipInit.Checked := FALSE ;
+        ProtR := ProtInit ;
+        LipR := LipInit ;
+        PBProtInit.AsFloat := ProtR ;
+//        PBProtInit.Hint := FloatToStr (ProtR) ;
+        PBLipInit.AsFloat := LipR ;
+//        PBLipInit.Hint := FloatToStr (LipR) ;
+      end ;
+      if FinProfil
+      then
+        if ChkFin.Checked
+        then
+          ChkFinClick (nil)
+        else
+          ChkFin.Checked := TRUE
+      else
+      begin
+        ChkFin.Checked := FALSE ;
+        if ModeFin = 0
+        then
+          RBDuree.Checked := TRUE
+        else
+          RBPVFin.Checked := TRUE ;
+        PBDuree.AsInteger := Duree ;
+        PBPVFin.AsFloat := PVFin ;
+      end ;
+      Update := FALSE ;
+    end ;
+    RBProtInit.Checked := True;
+    ValidBBResSimul;
+  end;
+end;
+
+procedure TFSimulP.SBAddSimulClick (Sender : TObject) ;
+var
+  i, n, q : integer ;
+  s : string ;
+  ok : boolean ;
+  PBackup : PRecSimulP ;
+begin
+  if Modified then Save ;
+  if IdxSimulP = -1
+  then
+    q := mrNo
+  else
+    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
+  // saisie du nouveau nom
+  s := '' ;
+  repeat
+    if InputQuery (FSimulP.Caption, MsgName, s)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListSimulP.Count) do
+          begin
+            PSimulP := ListSimulP[i] ;
+            if PSimulP.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      if (IdxSimulP <> -1)
+      then
+        PSimulP := ListSimulP[IdxSimulP] ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  if s <> ''
+  then // Cr�ation du nouvel enregistrement
+  begin
+    // recherche du premier num�ro libre
+    n := 0 ;
+    repeat
+      Inc (n) ;
+      ok := TRUE ;
+      i := 0 ;
+      while ok and (i < ListSimulP.Count) do
+      begin
+        PSimulP := ListSimulP[i] ;
+        if PSimulP.Num = n
+        then
+          ok := FALSE
+        else
+          Inc (i) ;
+      end ;
+    until ok ;
+    New (PSimulP) ;
+    with PSimulP^ do
+    begin
+      Nom := s ;
+      Num := n ;
+      if q = mrYes
+      then
+      begin
+        PBackup := ListSimulP[IdxSimulP] ;
+        Memo := PBackup.Memo ;
+        Profil := PBackup.Profil ;
+        SeqAli := PBackup.SeqAli ;
+        Ration := PBackup.Ration ;
+        AgeInitProfil := PBackup.AgeInitProfil ;
+        PVInitProfil := PBackup.PVInitProfil ;
+        ProtLipInitProfil := PBackup.ProtLipInitProfil ;
+        FinProfil := PBackup.FinProfil ;
+        AgeInit := PBackup.AgeInit ;
+        PVInit := PBackup.PVInit ;
+        ProtInit := PBackup.ProtInit ;
+        LipInit := PBackup.LipInit ;
+        ModeFin := PBackup.ModeFin ;
+        Duree := PBackup.Duree ;
+        PVFin := PBackup.PVFin ;
+      end
+      else
+      begin
+        Memo := '' ;
+        Profil := -1 ;
+        SeqAli := -1 ;
+        Ration := -1 ;
+        AgeInitProfil := TRUE ;
+        PVInitProfil := TRUE ;
+        ProtLipInitProfil := TRUE ;
+        FinProfil := TRUE ;
+        AgeInit := 0 ;
+        PVInit := 0 ;
+        ProtInit := 0 ;
+        LipInit := 0 ;
+        ModeFin := 0 ;
+        Duree := 0 ;
+        PVFin := 0 ;
+      end ;
+    end ;
+    ListSimulP.Add (PSimulP) ;
+    CBSimul.Items.Add (PSimulP.Nom) ;
+    CBSimul.ItemIndex := CBSimul.Items.IndexOf (PSimulP.Nom) ;
+    CBSimulChange (nil) ;
+    Modified := TRUE ;
+    SBAddSimul.Enabled := IsComplete or (ListSimulP.Count < 5) ;
+    SBCommentClick (nil) ;
+  end ;
+end ;
+
+procedure TFSimulP.SBDelSimulClick (Sender : TObject) ;
+begin
+  if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+  then
+  begin
+    Dispose (PSimulP) ;
+    ListSimulP.Delete (IdxSimulP) ;
+    SaveSimulP ; // Sauvegarde !
+    Modified := FALSE ;
+    CBSimul.DeleteSelected ;
+    IdxSimulP := -1 ;
+    CBSimul.ItemIndex := -1 ;
+    CBSimulChange (nil) ;
+    SBAddSimul.Enabled := IsComplete or (ListSimulP.Count < 5) ;
+  end ;
+end ;
+
+procedure TFSimulP.SBRenameClick (Sender : TObject) ;
+var
+  i : integer ;
+  s : string ;
+  ok : boolean ;
+begin
+  // Saisie du nouveau nom
+  s := CBSimul.Text ;
+  repeat
+    if InputQuery (FSimulP.Caption, MsgRename, s) and (s <> CBSimul.Text)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListSimulP.Count) do
+          begin
+            PSimulP := ListSimulP[i] ;
+            if PSimulP.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  PSimulP := ListSimulP[IdxSimulP] ;
+  if s <> ''
+  then // Renommer l'enregistrement
+  begin
+    PSimulP.Nom := s ;
+    Modified := TRUE ;
+    StringsSimulP (CBSimul.Items, TRUE) ;
+    CBSimul.ItemIndex := CBSimul.Items.IndexOf (s) ;
+  end ;
+end ;
+
+procedure TFSimulP.SBCommentClick (Sender : TObject) ;
+begin
+  // Saisie du commentaire
+  FComment := TFComment.Create (Self) ;
+  with FComment do
+  begin
+    Memo.Text := PSimulP.Memo ;
+    if ShowModal = mrOk
+    then // Commenter l'enregistrement
+    begin
+      PSimulP.Memo := Memo.Text ;
+      Modified := TRUE ;
+      CBSimul.Hint := PSimulP.Memo ;
+    end ;
+    Release ;
+  end ;
+end ;
+
+procedure TFSimulP.SBSaveClick(Sender: TObject);
+begin
+  SaveSimulP ;
+  if not SimulPValid (PSimulP)
+  then
+    MessageDlg(Format (MsgInvalidData, [Caption, PSimulP.Nom]), mtWarning, [mbOK], 0) ;
+  Modified := FALSE ;
+end;
+
+procedure TFSimulP.CBProfilChange (Sender : TObject) ;
+begin
+  if CBProfil.ItemIndex = -1
+  then
+    CBProfil.Hint := ''
+  else
+  begin
+    PProfilP := ListProfilP[FindIdxProfilP (CBProfil.Text)] ;
+    CBProfil.Hint := PProfilP.Memo ;
+  end ;
+  if not Update
+  then
+  begin
+    PBProtInit.MaxValue := 0 ;
+    PBProtInit.MinValue := 0 ;
+    PBLipInit.MaxValue := 0 ;
+    PBLipInit.MinValue := 0 ;
+    Modified := TRUE ;
+    PSimulP.Profil := FindNumProfilP (CBProfil.Text) ;
+    // Remplissage des champs avec les valeurs du profil
+    Update := TRUE ;
+    PSimulP.AgeInitProfil := TRUE ;
+    if ChkAgeInit.Checked
+    then
+      ChkAgeInitClick (nil)
+    else
+      ChkAgeInit.Checked := TRUE ;
+    PSimulP.PVInitProfil := TRUE ;
+    if ChkPVInit.Checked
+    then
+      ChkPVInitClick (nil)
+    else
+      ChkPVInit.Checked := TRUE ;
+    PSimulP.ProtLipInitProfil := TRUE ;
+    if ChkProtLipInit.Checked
+    then
+      ChkProtLipInitClick (nil)
+    else
+      ChkProtLipInit.Checked := TRUE ;
+    PSimulP.FinProfil := TRUE ;
+    if ChkFin.Checked
+    then
+      ChkFinClick (nil)
+    else
+      ChkFin.Checked := TRUE ;
+    Update := FALSE ;
+    PBProtInit.MaxValue := 0.18 * CalcPVV (PBPVInit.AsFloat) ;
+    PBProtInit.MinValue := 0.14 * CalcPVV (PBPVInit.AsFloat) ;
+    PBLipInit.MaxValue := CalcLipProt (PBPVInit.AsFloat, PBProtInit.MinValue) ;
+    PBLipInit.MinValue := CalcLipProt (PBPVInit.AsFloat, PBProtInit.MaxValue) ;
+    PBPVFin.MinValue := PBPVInit.AsFloat ;
+    ValidBBResSimul ;
+  end ;
+end ;
+
+procedure TFSimulP.CBSeqAliChange (Sender : TObject) ;
+begin
+  if CBSeqAli.ItemIndex = -1
+  then
+    CBSeqAli.Hint := ''
+  else
+  begin
+    PSeqAliP := ListSeqAliP[FindIdxSeqAliP (CBSeqAli.Text)] ;
+    CBSeqAli.Hint := PSeqAliP.Memo ;
+  end ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulP.SeqAli := FindNumSeqAliP (CBSeqAli.Text) ;
+    ValidBBResSimul ;
+  end ;
+end ;
+
+procedure TFSimulP.CBRationChange (Sender : TObject) ;
+begin
+  if CBRation.ItemIndex = -1
+  then
+    CBRation.Hint := ''
+  else
+  begin
+    PRationP := ListRationP[FindIdxRationP (CBRation.Text)] ;
+    CBRation.Hint := PRationP.Memo ;
+  end ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulP.Ration := FindNumRationP (CBRation.Text) ;
+    ValidBBResSimul ;
+  end ;
+end ;
+
+procedure TFSimulP.PBAgeInitChange(Sender: TObject);
+begin
+  if not Update and (PBAgeInit.AsInteger >= PBAgeInit.MinValue)
+  then
+  begin
+    Modified := TRUE ;
+    PSimulP.AgeInit := PBAgeInit.AsInteger ;
+    ValidBBResSimul ;
+  end ;
+end;
+
+procedure TFSimulP.ChkAgeInitClick(Sender: TObject);
+begin
+  if ChkAgeInit.Checked
+  then
+  begin
+    PBAgeInit.Enabled := FALSE ;
+    if CBProfil.ItemIndex <> -1
+    then
+      PBAgeInit.MinValue := PProfilP.AgeInit ;
+      if not Update
+      then
+      begin
+        Update := TRUE ;
+        PBAgeInit.AsInteger := PProfilP.AgeInit ;
+        Update := FALSE ;
+      end
+      else
+        PBAgeInit.AsInteger := PProfilP.AgeInit ;
+  end
+  else
+    PBAgeInit.Enabled := TRUE ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulP.AgeInitProfil := ChkAgeInit.Checked ;
+    PSimulP.AgeInit := PBAgeInit.AsInteger ;
+    ValidBBResSimul ;
+  end ;
+end;
+
+procedure TFSimulP.PBPVInitChange(Sender: TObject);
+begin
+  if PBPVInit.AsFloat >= PBPVInit.MinValue
+  then
+  begin
+    PBProtInit.MinValue := 0 ;
+    PBProtInit.MaxValue := 0 ;
+    PBProtInit.MaxValue := 0.18 * CalcPVV (PBPVInit.AsFloat) ;
+    PBProtInit.MinValue := 0.14 * CalcPVV (PBPVInit.AsFloat) ;
+    PBLipInit.MinValue := 0 ;
+    PBLipInit.MaxValue := 0 ;
+    PBLipInit.MaxValue := CalcLipProt (PBPVInit.AsFloat, PBProtInit.MinValue) ;
+    PBLipInit.MinValue := CalcLipProt (PBPVInit.AsFloat, PBProtInit.MaxValue) ;
+    PBPVFin.MinValue := PBPVInit.AsFloat ;
+  end ;
+  if not Update and (PBPVInit.AsFloat >= PBPVInit.MinValue)
+  then
+  begin
+    Modified := TRUE ;
+    Update := TRUE ;
+    PSimulP.ProtLipInitProfil := TRUE ;
+    if ChkProtLipInit.Checked
+    then
+      ChkProtLipInitClick (nil)
+    else
+      ChkProtLipInit.Checked := TRUE ;
+    Update := FALSE ;
+    PSimulP.PVInit := PBPVInit.AsFloat ;
+    ValidBBResSimul ;
+  end ;
+end;
+
+procedure TFSimulP.ChkPVInitClick(Sender: TObject);
+begin
+  if ChkPVInit.Checked
+  then
+  begin
+    PBPVInit.Enabled := FALSE ;
+    if CBProfil.ItemIndex <> -1
+    then
+//      PBPVInit.MaxValue := PProfilP.PVFin ;
+      PBPVInit.MinValue := PProfilP.PVInit ;
+      if not Update
+      then
+      begin
+        Update := TRUE ;
+        PBPVInit.AsFloat := PProfilP.PVInit ;
+        Update := FALSE ;
+      end
+      else
+        PBPVInit.AsFloat := PProfilP.PVInit ;
+  end
+  else
+    PBPVInit.Enabled := TRUE ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulP.PVInitProfil := ChkPVInit.Checked ;
+    PSimulP.PVInit := PBPVInit.AsFloat ;
+    ValidBBResSimul ;
+  end ;
+end;
+
+procedure TFSimulP.RBProtLipInitClick(Sender: TObject);
+begin
+  PBProtInit.Enabled := RBProtInit.Checked and RBProtInit.Enabled ;
+  PBLipInit.Enabled := RBLipInit.Checked and RBLipInit.Enabled ;
+end;
+
+procedure TFSimulP.PBProtInitChange(Sender: TObject);
+begin
+  if not Update and (PBProtInit.AsFloat >= PBProtInit.MinValue)
+  then
+  begin
+    Modified := TRUE ;
+    ProtR := PBProtInit.AsFloat ;
+    Update := TRUE ;
+    LipR := CalcLipProt (PBPVInit.AsFloat, PBProtInit.AsFloat) ;
+    PBLipInit.AsFloat := LipR ;
+//    PBLipInit.Hint := FloatToStr (LipR) ;
+    Update := FALSE ;
+    PSimulP.ProtInit := ProtR ;
+    PSimulP.LipInit := LipR ;
+    ValidBBResSimul ;
+  end ;
+end;
+
+procedure TFSimulP.PBLipInitChange(Sender: TObject);
+begin
+  if not Update and (PBLipInit.AsFloat >= PBLipInit.MinValue)
+  then
+  begin
+    Modified := TRUE ;
+    LipR := PBLipInit.AsFloat ;
+    Update := TRUE ;
+    ProtR := CalcProtLip (PBPVInit.AsFloat, LipR) ;
+    PBProtInit.AsFloat := ProtR ;
+//    PBProtInit.Hint := FloatToStr (ProtR) ;
+    Update := FALSE ;
+    PSimulP.LipInit := LipR ;
+    PSimulP.ProtInit := ProtR ;
+    ValidBBResSimul ;
+  end ;
+end;
+
+procedure TFSimulP.ChkProtLipInitClick(Sender: TObject);
+begin
+  if ChkProtLipInit.Checked
+  then
+  begin
+    RBProtInit.Enabled := FALSE ;
+    RBLipInit.Enabled := FALSE ;
+    PBProtInit.Enabled := FALSE ;
+    PBLipInit.Enabled := FALSE ;
+    if CBProfil.ItemIndex <> -1
+    then
+      if ChkPVInit.Checked
+      then // Valeurs du profil
+        if not Update
+        then
+        begin
+          Update := TRUE ;
+          ProtR := PProfilP.ProtInit ;
+          PBProtInit.AsFloat := ProtR ;
+          LipR := PProfilP.LipInit ;
+          PBLipInit.AsFloat := LipR ;
+          Update := FALSE ;
+        end
+        else
+        begin
+          ProtR := PProfilP.ProtInit ;
+          PBProtInit.AsFloat := ProtR ;
+          LipR := PProfilP.LipInit ;
+          PBLipInit.AsFloat := LipR ;
+        end
+      else // Valeurs calcul�es
+      begin
+        if not Update
+        then
+        begin
+          Update := TRUE ;
+          ProtR := CalcProt (PBPVInit.AsFloat) ;
+          PBProtInit.AsFloat := ProtR ;
+          LipR := CalcLipProt (PBPVInit.AsFloat, ProtR) ;
+          PBLipInit.AsFloat := LipR ;
+          Update := FALSE ;
+        end
+        else
+        begin
+          ProtR := CalcProt (PBPVInit.AsFloat) ;
+          PBProtInit.AsFloat := ProtR ;
+          LipR := CalcLipProt (PBPVInit.AsFloat, ProtR) ;
+          PBLipInit.AsFloat := LipR ;
+        end ;
+      end ;
+  end
+  else
+  begin
+    RBProtInit.Enabled := TRUE ;
+    RBLipInit.Enabled := TRUE ;
+    PBProtInit.Enabled := RBProtInit.Checked ;
+    PBLipInit.Enabled := RBLipInit.Checked ;
+  end ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulP.ProtLipInitProfil := ChkProtLipInit.Checked ;
+    PSimulP.ProtInit := ProtR ;
+    PSimulP.LipInit := LipR ;
+    ValidBBResSimul ;
+  end ;
+end;
+
+procedure TFSimulP.RBModeFinClick(Sender: TObject);
+begin
+  PBDuree.Enabled := RBDuree.Checked and RBDuree.Enabled ;
+  PBPVFin.Enabled := RBPVFin.Checked and RBPVFin.Enabled ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    if RBDuree.Checked
+    then
+      PSimulP.ModeFin := 0
+    else
+      PSimulP.ModeFin := 1 ;
+    ValidBBResSimul ;
+  end ;
+end;
+
+procedure TFSimulP.PBDureeChange(Sender: TObject);
+begin
+  if not Update and (PBDuree.AsFloat > 1)
+  then
+  begin
+    Modified := TRUE ;
+    PSimulP.Duree := PBDuree.AsInteger ;
+    ValidBBResSimul ;
+  end ;
+end;
+
+procedure TFSimulP.PBPVFinChange(Sender: TObject);
+begin
+  if not Update and (PBPVFin.AsFloat > PBPVInit.AsFloat)
+  then
+  begin
+    Modified := TRUE ;
+    PSimulP.PVFin := PBPVFin.AsFloat ;
+    ValidBBResSimul ;
+  end ;
+end;
+
+procedure TFSimulP.ChkFinClick(Sender: TObject);
+begin
+  if ChkFin.Checked
+  then
+  begin
+    RBDuree.Enabled := FALSE ;
+    RBPVFin.Enabled := FALSE ;
+    PBDuree.Enabled := FALSE ;
+    PBPVFin.Enabled := FALSE ;
+    if CBProfil.ItemIndex <> -1
+    then
+      if not Update
+      then
+      begin
+        Update := TRUE ;
+        if PProfilP.ModeFin = 0
+        then // Dur�e
+          RBDuree.Checked := TRUE
+        else // Poids vif
+          RBPVFin.Checked := TRUE ;
+        PBDuree.AsInteger := PProfilP.Duree ;
+        PBPVFin.AsFloat := PProfilP.PVFin ;
+        Update := FALSE ;
+      end
+      else
+      begin
+        if PProfilP.ModeFin = 0
+        then // Dur�e
+          RBDuree.Checked := TRUE
+        else // Poids vif
+          RBPVFin.Checked := TRUE ;
+        PBDuree.AsInteger := PProfilP.Duree ;
+        PBPVFin.AsFloat := PProfilP.PVFin ;
+      end ;
+  end
+  else
+  begin
+    RBDuree.Enabled := TRUE ;
+    RBPVFin.Enabled := TRUE ;
+    PBDuree.Enabled := RBDuree.Checked ;
+    PBPVFin.Enabled := RBPVFin.Checked ;
+  end ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulP.FinProfil := ChkFin.Checked ;
+    if RBDuree.Checked
+    then
+      PSimulP.ModeFin := 0
+    else
+      PSimulP.ModeFin := 1 ;
+    PSimulP.Duree := PBDuree.AsInteger ;
+    PSimulP.PVFin := PBPVFin.AsFloat ;
+    ValidBBResSimul ;
+  end ;
+end;
+
+procedure TFSimulP.BBResSimulClick(Sender: TObject);
+begin
+  Modal := True;
+  New(PResSimulP);
+  CalcSimulP(PSimulP.Num, -1, -1, -1, -1, 1, {1,} PResSimulP);
+  FResSimulP := TFResSimulP.Create(Self);
+  FResSimulP.ShowModal;
+  FResSimulP.Release;
+  Dispose(PResSimulP);
+  Modal := False;
+end;
+
+procedure TFSimulP.BBRapSimulClick(Sender: TObject);
+begin
+  Modal := True;
+  New(PResSimulP);
+  CalcSimulP(PSimulP.Num, -1, -1, -1, -1, 1, {1,} PResSimulP);
+  FRapSimulP := TFRapSimulP.Create(Self);
+  FRapSimulP.QRRapport.PreviewModal;
+  FRapSimulP.Release;
+  Dispose(PResSimulP);
+  Modal := False;
+end;
+
+procedure TFSimulP.BBTabSimulClick(Sender: TObject);
+var
+  vExcel, vWorkbook, vWorksheet, vCell: Variant;
+  aFileName, aSheetName, aValue: String;
+  aLig, aCol, j: Integer;
+  t: Double;
+begin
+  try // connexion � une instance existante
+    vExcel := GetActiveOleObject('Excel.Application');
+  except
+    try // ouverture d'une nouvelle instance
+      vExcel := CreateOleObject('Excel.Application');
+    except
+      MessageDlg(MsgExcel, mtError, [mbOK], 0);
+      Exit;
+    end;
+  end;
+  vExcel.Visible:= True;
+  aFileName := ExcelFile;
+  try // utilisation d'un classeur ouvert
+    vWorkbook := vExcel.Workbooks[ExtractFileName(aFileName)];
+    vWorkbook.Activate;
+    vWorkbook.SaveAs(aFileName);
+  except
+    try // ouverture d'un fichier
+      vWorkbook := vExcel.Workbooks.Open(aFileName);
+    except // cr�ation d'un fichier
+      vWorkbook := vExcel.Workbooks.Add;
+      vWorkbook.SaveAs(aFileName);
+    end;
+  end;
+  aSheetName := Caption;
+  try // activation d'une feuille existante
+    vWorksheet := vWorkbook.Worksheets[aSheetName];
+    vWorksheet.Activate;
+  except // cr�ation d'une feuille
+    vWorksheet := vWorkbook.Worksheets.Add;
+    vWorksheet.Name := aSheetName;
+  end;
+  Modal := True;
+  New(PResSimulP);
+  CalcSimulP(PSimulP.Num, -1, -1, -1, -1, 1, {1,} PResSimulP);
+//  AGSimulP(PResSimulP);
+//  FTabSimulP := TFTabSimulP.Create(Self);
+//  FTabSimulP.ShowModal;
+//  FTabSimulP.Release;
+  for aLig := 1 to 6 do
+    for aCol := 1 to 16 do
+    begin
+      vCell := vWorksheet.Cells[aLig, aCol];
+      case aLig of
+        1: // Ligne de titre
+        begin
+          case aCol of
+            1: // Simulation
+              aValue := GBSimul.Caption;
+            2: // Profil animal
+              aValue := LProfil.Caption;
+            3: // S�quence alimentaire
+              aValue := LSeqAli.Caption;
+            4: // Plan de rationnement
+              aValue := LRation.Caption;
+            5: // Mode de fin
+              aValue := StrModeFin;
+            6: // Age initial
+              aValue := LAgeInit.Hint;
+            7: // Age final
+              aValue := Format('%s (%s)', [_('Final age'), _('d')]);
+            8: // Poids vif initial
+              aValue := LPVInit.Hint;
+            9: // Poids vif final
+              aValue := RBPVFin.Hint;
+            10: // Poids de prot�ines initial
+              aValue := RBProtInit.Hint;
+            11: // Poids de prot�ines final
+              aValue := Format('%s (%s)', [_('Final protein mass'), _('kg')]);
+            12: // Poids de lipides initial
+              aValue := RBLipInit.Hint;
+            13: // Poids de lipides final
+              aValue := Format('%s (%s)', [_('Final lipid mass'), _('kg')]);
+            14: // Aliment distribu�
+              aValue := Format('%s (%s)', [_('Feed usage'), _('kg')]);
+            15: // Co�t alimentaire
+              aValue := Format('%s (%s)', [_('Feed cost'), CurrencySign]);
+            16: // Rendement carcasse
+              aValue := Format('%s (%%)', [_('Dressing')]);
+          end;
+          vCell.Value := '''' + aValue;
+        end;
+        2: // Donn�es de simulation simple
+        begin
+          case aCol of
+            1: // Simulation
+              aValue := CBSimul.Text;
+            2: // Profil animal
+              aValue := CBProfil.Text;
+            3: // S�quence alimentaire
+              aValue := CBSeqAli.Text;
+            4: // Plan de rationnement
+              aValue := CBRation.Text;
+            5: // Mode de fin
+              if RBDuree.Checked
+              then
+                aValue := RBDuree.Caption
+              else
+                aValue := RBPVFin.Caption;
+            6: // Age initial
+              aValue := PBAgeInit.Text;
+            7: // Age final
+              aValue := FloatToStrF(PResSimulP.TabResult[1, PResSimulP.NbJSim] + 1, ffFixed, 15, 8);
+            8: // Poids vif initial
+              aValue := PBPVInit.Text;
+            9: // Poids vif final
+              aValue := FloatToStrF(PResSimulP.TabResult[2, PResSimulP.NbJSim] + PResSimulP.TabResult[84, PResSimulP.NbJSim], ffFixed, 15, 8);
+            10: // Poids de prot�ines initial
+              aValue := PBProtInit.Text;
+            11: // Poids de prot�ines final
+              aValue := FloatToStrF(PResSimulP.TabResult[49, PResSimulP.NbJSim] + PResSimulP.TabResult[79, PResSimulP.NbJSim] / 1000, ffFixed, 15, 8);
+            12: // Poids de lipides initial
+              aValue := PBLipInit.Text;
+            13: // Poids de lipides final
+              aValue := FloatToStrF(PResSimulP.TabResult[50, PResSimulP.NbJSim] + PResSimulP.TabResult[80, PResSimulP.NbJSim] / 1000, ffFixed, 15, 8);
+            14: // Aliment distribu�
+            begin
+              t := 0;
+              for j := 1 to PResSimulP.NbJSim do
+                t := t + PResSimulP.TabResult[113, j];
+              aValue := FloatToStrF(t, ffFixed, 15, 2);
+            end;
+            15: // Co�t alimentaire
+            begin
+              t := 0;
+              for j := 1 to PResSimulP.NbJSim do
+              begin
+                if PResSimulP.TabResult[7, j] <> -1
+                then // Aliment 1
+                begin
+                  PAliment := ListAliment[FindIdxAliment(FindNomAliment(Trunc(PResSimulP.TabResult[7, j])))];
+                  t := t + (PResSimulP.TabResult[11, j] * PResSimulP.TabResult[9, j] / 100) * PAliment.Prix / 1000 ;
+                end;
+                if PResSimulP.TabResult[8, j] <> -1
+                then // Aliment 2
+                begin
+                  PAliment := ListAliment[FindIdxAliment(FindNomAliment(Trunc(PResSimulP.TabResult[8, j])))];
+                  t := t + (PResSimulP.TabResult[11, j] * PResSimulP.TabResult[10, j] / 100) * PAliment.Prix / 1000 ;
+                end;
+              end;
+              aValue := FloatToStrF(t, ffFixed, 15, 2);
+            end;
+            16: // Rendement carcasse
+              aValue := FloatToStrF(CalcRC(PProfilP.PVFin, CalcRCStd(PProfilP.PVFin, PProfilP.Carcasse), PResSimulP.TabResult[2, PResSimulP.NbJSim] + PResSimulP.TabResult[84, PResSimulP.NbJSim]) * 100, ffFixed, 15, 15);
+          end;
+          vCell.Value := '''' + aValue;
+        end;
+        else // Effacement
+          vCell.Value := '';
+      end;
+    end;
+  Dispose(PResSimulP);
+  Modal := False;
+end;
+
+procedure TFSimulP.BBTabSimulPlusClick(Sender: TObject);
+var
+  DesktopPath: array[0..MAX_PATH] of Char;
+  vExcel, vWorkbook, vWorksheet, vCell: Variant;
+  aFileName, aSheetName, aValue: String;
+  aLig, aCol, j: Integer;
+  t: Double;
+begin
+  SHGetFolderPath(0, CSIDL_DESKTOP, 0, SHGFP_TYPE_CURRENT, DesktopPath);
+  OpenDialogFile.InitialDir := DesktopPath;
+  if OpenDialogFile.Execute
+  then
+    aFileName := OpenDialogFile.FileName
+  else
+    Exit;
+  try // connexion � une instance existante
+    vExcel := GetActiveOleObject('Excel.Application');
+  except
+    try // ouverture d'une nouvelle instance
+      vExcel := CreateOleObject('Excel.Application');
+    except
+      MessageDlg(MsgExcel, mtError, [mbOK], 0);
+      Exit;
+    end;
+  end;
+  vExcel.Visible:= True;
+  try // utilisation d'un classeur ouvert
+    vWorkbook := vExcel.Workbooks[ExtractFileName(aFileName)];
+    vWorkbook.Activate;
+    vWorkbook.SaveAs(aFileName);
+  except
+    try // ouverture d'un fichier
+      vWorkbook := vExcel.Workbooks.Open(aFileName);
+    except // cr�ation d'un fichier
+      vWorkbook := vExcel.Workbooks.Add;
+      vWorkbook.SaveAs(aFileName);
+    end;
+  end;
+  aSheetName := 'PResSimulP';
+  try // activation d'une feuille existante
+    vWorksheet := vWorkbook.Worksheets[aSheetName];
+    vWorksheet.Activate;
+  except // cr�ation d'une feuille
+    vWorksheet := vWorkbook.Worksheets.Add;
+    vWorksheet.Name := aSheetName;
+  end;
+  Modal := True;
+  New(PResSimulP);
+  CalcSimulP(PSimulP.Num, -1, -1, -1, -1, 1, {1,} PResSimulP);
+  // Ligne de titre
+  for aCol := 1 to NB_COL_PORC do
+  begin
+    vCell := vWorksheet.Cells[1, aCol];
+    case aCol of
+      1: aValue := 'Age';
+      2: aValue := 'PV';
+      3: aValue := 'RegleAli';
+      4: aValue := 'FinAli';
+      5: aValue := 'RegleQte';
+      6: aValue := 'FinQte';
+      7: aValue := 'NumAli1';
+      8: aValue := 'NumAli2';
+      9: aValue := 'PctAli1';
+      10: aValue := 'PctAli2';
+      11: aValue := 'Ingere';
+      12: aValue := 'EBIng';
+      13: aValue := 'MATIng';
+      14: aValue := 'LipIng';
+      15: aValue := 'AmidonIng';
+      16: aValue := 'SucresIng';
+      17: aValue := 'CBIng';
+      18: aValue := 'ResiduIng';
+      19: aValue := 'dNIng';
+      20: aValue := 'dLysIng';
+      21: aValue := 'dMetIng';
+      22: aValue := 'dCysIng';
+      23: aValue := 'dTrpIng';
+      24: aValue := 'dThrIng';
+      25: aValue := 'dPheIng';
+      26: aValue := 'dTyrIng';
+      27: aValue := 'dLeuIng';
+      28: aValue := 'dIleIng';
+      29: aValue := 'dValIng';
+      30: aValue := 'dHisIng';
+      31: aValue := 'dArgIng';
+      32: aValue := 'PDN';
+      33: aValue := 'PDLys';
+      34: aValue := 'PDMet';
+      35: aValue := 'PDCys';
+      36: aValue := 'PDTrp';
+      37: aValue := 'PDThr';
+      38: aValue := 'PDPhe';
+      39: aValue := 'PDTyr';
+      40: aValue := 'PDLeu';
+      41: aValue := 'PDIle';
+      42: aValue := 'PDVal';
+      43: aValue := 'PDHis';
+      44: aValue := 'PDArg';
+      45: aValue := 'PDMetCys';
+      46: aValue := 'PDPheTyr';
+      47: aValue := 'PDFirstLimit';
+      48: aValue := 'PVV';
+      49: aValue := 'p';
+      50: aValue := 'l';
+      51: aValue := 'mr';
+      52: aValue := 'F';
+      53: aValue := 'PfreeMAT';
+      54: aValue := 'PfreeLip';
+      55: aValue := 'PfreeAmidon';
+      56: aValue := 'PfreeSucres';
+      57: aValue := 'PfreeCB';
+      58: aValue := 'PfreeResidu';
+      59: aValue := 'PfreeNE';
+      60: aValue := 'ExcessProt';
+      61: aValue := 'ObligUrinEloss';
+      62: aValue := 'UrinEnergy';
+      63: aValue := 'MEExcessProt';
+      64: aValue := 'NEExcessProt';
+      65: aValue := 'PDfreeNEintake';
+      66: aValue := 'EnergyPD';
+      67: aValue := 'NEintakeSim';
+      68: aValue := 'PDfreeNEPD';
+      69: aValue := 'PDmaxE';
+      70: aValue := 'Standing';
+      71: aValue := 'NEmAL';
+      72: aValue := 'NEm';
+      73: aValue := 'PDfreeNEreq';
+      74: aValue := 'a';
+      75: aValue := 'b';
+      76: aValue := 'px1';
+      77: aValue := 'py1';
+      78: aValue := 'IngereAL';
+      79: aValue := 'PD';
+      80: aValue := 'LD';
+      81: aValue := 'pFin';
+      82: aValue := 'lFin';
+      83: aValue := 'PVfin';
+      84: aValue := 'GMQ';
+      85: aValue := 'Pmat';
+      86: aValue := 'MEintake';
+      87: aValue := 'DietME';
+      88: aValue := 'DietNE';
+      89: aValue := 'MEcrois';
+      90: aValue := 'NEcrois';
+      91: aValue := 'FHP60';
+      92: aValue := 'NEgrowth';
+      93: aValue := 'NIng';
+      94: aValue := 'LysIng';
+      95: aValue := 'MetIng';
+      96: aValue := 'CysIng';
+      97: aValue := 'TrpIng';
+      98: aValue := 'ThrIng';
+      99: aValue := 'PheIng';
+      100: aValue := 'TyrIng';
+      101: aValue := 'LeuIng';
+      102: aValue := 'IleIng';
+      103: aValue := 'ValIng';
+      104: aValue := 'HisIng';
+      105: aValue := 'ArgIng';
+      106: aValue := 'MSAliment';
+      107: aValue := 'AgeFin';
+      108: aValue := 'ProtFin';
+      109: aValue := 'DEcrois';
+      110: aValue := 'px1AL';
+      111: aValue := 'py1AL';
+      112: aValue := 'Gaspillage';
+      113: aValue := 'Distrib';
+      else
+        aValue := '';
+    end;
+    vCell.Value := '''' + aValue;
+  end;
+  // Tableau de r�sultat
+  for aLig := 1 to PResSimulP.NbJSim do
+    for aCol := 1 to NB_COL_PORC do
+    begin
+      vCell := vWorksheet.Cells[aLig + 1, aCol];
+      vCell.Value := PResSimulP.TabResult[aCol, aLig];
+    end;
+  Dispose(PResSimulP);
+  Modal := False;
+  vWorkbook.Save;
+end;
+
+procedure TFSimulP.ValidBBResSimul;
+var
+  ok: boolean;
+  Jour, Age: integer;
+  PV: double;
+begin
+  ok := SimulPValid(PSimulP);
+  BBResSimul.Enabled := ok;
+  BBRapSimul.Enabled := ok;
+  BBTabSimul.Enabled := ok;
+  BBTabSimulPlus.Enabled := ok;
+  GBInit.Visible := ok;
+  GBFin.Visible := ok;
+  if ok
+  then
+  begin
+    New(PResSimulP);
+    CalcSimulP(-1, PProfilP.Num, PSeqAliP.Num, PRationP.Num, -1, 1, {1,} PResSimulP);
+    // PV propos�
+    if PBAgeInit.AsInteger - PProfilP.AgeInit + 1 > PResSimulP.NbJSim
+    then
+      LPV4Age.Caption := ''
+    else
+    begin
+      PV := PResSimulP.TabResult[2, PBAgeInit.AsInteger - PProfilP.AgeInit + 1];
+      LPV4Age.Caption := Format (StrPV4Age, [PBAgeInit.AsInteger, PV]);
+    end;
+    // Age propos�
+    Age := 0;
+    Jour := 1;
+    while (Age = 0) and (Jour <= PResSimulP.NbJSim) do
+      if PResSimulP.TabResult[83, Jour] > PBPVInit.AsFloat
+      then
+        Age := Trunc (PResSimulP.TabResult[1, Jour])
+      else
+        Inc (Jour);
+    if Age = 0
+    then
+      LAge4PV.Caption := ''
+    else
+      LAge4PV.Caption := Format(StrAge4PV, [PBPVInit.AsFloat, Age]);
+    Dispose(PResSimulP);
+  end;
+end;
+
+// Comparaison
+
+procedure TFSimulP.RBCompSimulClick(Sender: TObject);
+begin
+  RBCompProfil.Enabled := FALSE ;
+  RBCompSeqAli.Enabled := FALSE ;
+  RBCompRation.Enabled := FALSE ;
+  CBCompSimulRef.Enabled := FALSE ;
+  GBComp1a5.Caption := RBCompSimul.Caption ;
+  StringsSimulP (CBCompSimul1.Items, FALSE) ;
+  StringsSimulP (CBCompSimul2.Items, FALSE) ;
+  StringsSimulP (CBCompSimul3.Items, FALSE) ;
+  StringsSimulP (CBCompSimul4.Items, FALSE) ;
+  StringsSimulP (CBCompSimul5.Items, FALSE) ;
+  ValidBBCompSimul ;
+end;
+
+procedure TFSimulP.RBCompElemClick(Sender: TObject);
+begin
+  RBCompProfil.Enabled := TRUE ;
+  RBCompSeqAli.Enabled := TRUE ;
+  RBCompRation.Enabled := TRUE ;
+  CBCompSimulRef.Enabled := TRUE ;
+  if RBCompProfil.Checked
+  then
+    RBCompProfilClick(nil) ;
+  if RBCompSeqAli.Checked
+  then
+    RBCompSeqAliClick(nil) ;
+  if RBCompRation.Checked
+  then
+    RBCompRationClick(nil) ;
+end;
+
+procedure TFSimulP.RBCompProfilClick(Sender: TObject);
+begin
+  GBComp1a5.Caption := RBCompProfil.Caption ;
+  StringsProfilP (CBCompSimul1.Items, FALSE) ;
+  StringsProfilP (CBCompSimul2.Items, FALSE) ;
+  StringsProfilP (CBCompSimul3.Items, FALSE) ;
+  StringsProfilP (CBCompSimul4.Items, FALSE) ;
+  StringsProfilP (CBCompSimul5.Items, FALSE) ;
+  CBCompSimulRefChange (nil) ;
+end;
+
+procedure TFSimulP.RBCompSeqAliClick(Sender: TObject);
+begin
+  GBComp1a5.Caption := RBCompSeqAli.Caption ;
+  StringsSeqAliP (CBCompSimul1.Items, FALSE) ;
+  StringsSeqAliP (CBCompSimul2.Items, FALSE) ;
+  StringsSeqAliP (CBCompSimul3.Items, FALSE) ;
+  StringsSeqAliP (CBCompSimul4.Items, FALSE) ;
+  StringsSeqAliP (CBCompSimul5.Items, FALSE) ;
+  CBCompSimulRefChange (nil) ;
+end;
+
+procedure TFSimulP.RBCompRationClick(Sender: TObject);
+begin
+  GBComp1a5.Caption := RBCompRation.Caption ;
+  StringsRationP (CBCompSimul1.Items, FALSE) ;
+  StringsRationP (CBCompSimul2.Items, FALSE) ;
+  StringsRationP (CBCompSimul3.Items, FALSE) ;
+  StringsRationP (CBCompSimul4.Items, FALSE) ;
+  StringsRationP (CBCompSimul5.Items, FALSE) ;
+  CBCompSimulRefChange (nil) ;
+end;
+
+procedure TFSimulP.CBCompSimulRefChange (Sender : TObject) ;
+begin
+  if CBCompSimulRef.ItemIndex = -1
+  then
+  begin
+    CBCompSimulRef.Hint := '' ;
+    LCompProfilRef.Caption := '' ;
+    LCompSeqAliRef.Caption := '' ;
+    LCompRationRef.Caption := '' ;
+  end
+  else
+  begin
+    PSimulP := ListSimulP[FindIdxSimulP (CBCompSimulRef.Text)] ;
+    CBCompSimulRef.Hint := PSimulP.Memo ;
+    LCompProfilRef.Caption := FindNomProfilP (PSimulP.Profil) ;
+    LCompSeqAliRef.Caption := FindNomSeqAliP (PSimulP.SeqAli) ;
+    LCompRationRef.Caption := FindNomRationP (PSimulP.Ration) ;
+    if CBCompSimul1.ItemIndex = -1
+    then // Simulation de r�f�rence
+    begin
+      if RBCompProfil.Checked
+      then // Profils animal
+        CBCompSimul1.ItemIndex := CBCompSimul1.Items.IndexOf (FindNomProfilP (PSimulP.Profil)) ;
+      if RBCompSeqAli.Checked
+      then // S�quences alimentaires
+        CBCompSimul1.ItemIndex := CBCompSimul1.Items.IndexOf (FindNomSeqAliP (PSimulP.SeqAli)) ;
+      if RBCompRation.Checked
+      then // Plans de rationnement
+        CBCompSimul1.ItemIndex := CBCompSimul1.Items.IndexOf (FindNomRationP (PSimulP.Ration)) ;
+    end ;
+  end ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulP.CBCompSimul1Change (Sender : TObject) ;
+begin
+  if CBCompSimul1.ItemIndex = -1
+  then
+    CBCompSimul1.Hint := ''
+  else
+  begin
+    if RBCompSimul.Checked
+    then // Simulations
+    begin
+      PSimulP := ListSimulP[FindIdxSimulP (CBCompSimul1.Text)] ;
+      CBCompSimul1.Hint := PSimulP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompProfil.Checked
+    then // Profils animal
+    begin
+      PProfilP := ListProfilP[FindIdxProfilP (CBCompSimul1.Text)] ;
+      CBCompSimul1.Hint := PProfilP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompSeqAli.Checked
+    then // S�quences alimentaires
+    begin
+      PSeqAliP := ListSeqAliP[FindIdxSeqAliP (CBCompSimul1.Text)] ;
+      CBCompSimul1.Hint := PSeqAliP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompRation.Checked
+    then // Plans de rationnement
+    begin
+      PRationP := ListRationP[FindIdxRationP (CBCompSimul1.Text)] ;
+      CBCompSimul1.Hint := PRationP.Memo ;
+    end ;
+  end ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulP.CBCompSimul2Change (Sender : TObject) ;
+begin
+  if CBCompSimul2.ItemIndex = -1
+  then
+    CBCompSimul2.Hint := ''
+  else
+  begin
+    if RBCompSimul.Checked
+    then // Simulations
+    begin
+      PSimulP := ListSimulP[FindIdxSimulP (CBCompSimul2.Text)] ;
+      CBCompSimul2.Hint := PSimulP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompProfil.Checked
+    then // Profils animal
+    begin
+      PProfilP := ListProfilP[FindIdxProfilP (CBCompSimul2.Text)] ;
+      CBCompSimul2.Hint := PProfilP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompSeqAli.Checked
+    then // S�quences alimentaires
+    begin
+      PSeqAliP := ListSeqAliP[FindIdxSeqAliP (CBCompSimul2.Text)] ;
+      CBCompSimul2.Hint := PSeqAliP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompRation.Checked
+    then // Plans de rationnement
+    begin
+      PRationP := ListRationP[FindIdxRationP (CBCompSimul2.Text)] ;
+      CBCompSimul2.Hint := PRationP.Memo ;
+    end ;
+  end ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulP.CBCompSimul3Change (Sender : TObject) ;
+begin
+  if CBCompSimul3.ItemIndex = -1
+  then
+    CBCompSimul3.Hint := ''
+  else
+  begin
+    if RBCompSimul.Checked
+    then // Simulations
+    begin
+      PSimulP := ListSimulP[FindIdxSimulP (CBCompSimul3.Text)] ;
+      CBCompSimul3.Hint := PSimulP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompProfil.Checked
+    then // Profils animal
+    begin
+      PProfilP := ListProfilP[FindIdxProfilP (CBCompSimul3.Text)] ;
+      CBCompSimul3.Hint := PProfilP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompSeqAli.Checked
+    then // S�quences alimentaires
+    begin
+      PSeqAliP := ListSeqAliP[FindIdxSeqAliP (CBCompSimul3.Text)] ;
+      CBCompSimul3.Hint := PSeqAliP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompRation.Checked
+    then // Plans de rationnement
+    begin
+      PRationP := ListRationP[FindIdxRationP (CBCompSimul3.Text)] ;
+      CBCompSimul3.Hint := PRationP.Memo ;
+    end ;
+  end ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulP.CBCompSimul4Change (Sender : TObject) ;
+begin
+  if CBCompSimul4.ItemIndex = -1
+  then
+    CBCompSimul4.Hint := ''
+  else
+  begin
+    if RBCompSimul.Checked
+    then // Simulations
+    begin
+      PSimulP := ListSimulP[FindIdxSimulP (CBCompSimul4.Text)] ;
+      CBCompSimul4.Hint := PSimulP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompProfil.Checked
+    then // Profils animal
+    begin
+      PProfilP := ListProfilP[FindIdxProfilP (CBCompSimul4.Text)] ;
+      CBCompSimul4.Hint := PProfilP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompSeqAli.Checked
+    then // S�quences alimentaires
+    begin
+      PSeqAliP := ListSeqAliP[FindIdxSeqAliP (CBCompSimul4.Text)] ;
+      CBCompSimul4.Hint := PSeqAliP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompRation.Checked
+    then // Plans de rationnement
+    begin
+      PRationP := ListRationP[FindIdxRationP (CBCompSimul4.Text)] ;
+      CBCompSimul4.Hint := PRationP.Memo ;
+    end ;
+  end ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulP.CBCompSimul5Change (Sender : TObject) ;
+begin
+  if CBCompSimul5.ItemIndex = -1
+  then
+    CBCompSimul5.Hint := ''
+  else
+  begin
+    if RBCompSimul.Checked
+    then // Simulations
+    begin
+      PSimulP := ListSimulP[FindIdxSimulP (CBCompSimul5.Text)] ;
+      CBCompSimul5.Hint := PSimulP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompProfil.Checked
+    then // Profils animal
+    begin
+      PProfilP := ListProfilP[FindIdxProfilP (CBCompSimul5.Text)] ;
+      CBCompSimul5.Hint := PProfilP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompSeqAli.Checked
+    then // S�quences alimentaires
+    begin
+      PSeqAliP := ListSeqAliP[FindIdxSeqAliP (CBCompSimul5.Text)] ;
+      CBCompSimul5.Hint := PSeqAliP.Memo ;
+    end ;
+    if RBCompElem.Checked and RBCompRation.Checked
+    then // Plans de rationnement
+    begin
+      PRationP := ListRationP[FindIdxRationP (CBCompSimul5.Text)] ;
+      CBCompSimul5.Hint := PRationP.Memo ;
+    end ;
+  end ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulP.ChkCompSimulClick (Sender : TObject) ;
+begin
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulP.BBCompSimulClick(Sender: TObject);
+var
+  i: integer;
+begin
+  Modal := True;
+  // Simulation 1
+  with TabSimulP[1] do
+    if ChkCompSimul1.Checked and (CBCompSimul1.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP (CBCompSimul1.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP (CBCompSimulRef.Text) ;
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP (CBCompSimul1.Text)
+      else
+        Profil := -1 ;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP (CBCompSimul1.Text)
+      else
+        SeqAli := -1 ;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP (CBCompSimul1.Text)
+      else
+        Ration := -1 ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 2
+  with TabSimulP[2] do
+    if ChkCompSimul2.Checked and (CBCompSimul2.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP (CBCompSimul2.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP (CBCompSimulRef.Text) ;
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP (CBCompSimul2.Text)
+      else
+        Profil := -1 ;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP (CBCompSimul2.Text)
+      else
+        SeqAli := -1 ;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP (CBCompSimul2.Text)
+      else
+        Ration := -1 ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 3
+  with TabSimulP[3] do
+    if ChkCompSimul3.Checked and (CBCompSimul3.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP (CBCompSimul3.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP (CBCompSimulRef.Text) ;
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP (CBCompSimul3.Text)
+      else
+        Profil := -1 ;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP (CBCompSimul3.Text)
+      else
+        SeqAli := -1 ;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP (CBCompSimul3.Text)
+      else
+        Ration := -1 ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 4
+  with TabSimulP[4] do
+    if ChkCompSimul4.Checked and (CBCompSimul4.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP (CBCompSimul4.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP (CBCompSimulRef.Text) ;
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP (CBCompSimul4.Text)
+      else
+        Profil := -1 ;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP (CBCompSimul4.Text)
+      else
+        SeqAli := -1 ;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP (CBCompSimul4.Text)
+      else
+        Ration := -1 ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 5
+  with TabSimulP[5] do
+    if ChkCompSimul5.Checked and (CBCompSimul5.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP (CBCompSimul5.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP (CBCompSimulRef.Text) ;
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP (CBCompSimul5.Text)
+      else
+        Profil := -1 ;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP (CBCompSimul5.Text)
+      else
+        SeqAli := -1 ;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP (CBCompSimul5.Text)
+      else
+        Ration := -1 ;
+    end
+    else
+      Ok := FALSE ;
+  // Calcul des simulations
+  for i := 1 to 5 do
+    with TabSimulP[i] do
+      if Ok
+      then
+      begin
+        New(Result);
+        CalcSimulP(Simul, Profil, SeqAli, Ration, -1, 1, {1,} Result);
+      end ;
+  FCompSimulP := TFCompSimulP.Create(Self);
+  FCompSimulP.ShowModal;
+  FCompSimulP.Release;
+  for i := 1 to 5 do
+    with TabSimulP[i] do
+      if Ok then Dispose(Result);
+  Modal := False;
+end;
+
+procedure TFSimulP.BBRapCompSimulClick(Sender: TObject);
+var
+  i: integer ;
+begin
+  Modal := True;
+  // Simulation 1
+  with TabSimulP[1] do
+    if ChkCompSimul1.Checked and (CBCompSimul1.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP (CBCompSimul1.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP (CBCompSimulRef.Text) ;
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP (CBCompSimul1.Text)
+      else
+        Profil := -1 ;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP (CBCompSimul1.Text)
+      else
+        SeqAli := -1 ;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP (CBCompSimul1.Text)
+      else
+        Ration := -1 ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 2
+  with TabSimulP[2] do
+    if ChkCompSimul2.Checked and (CBCompSimul2.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP (CBCompSimul2.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP (CBCompSimulRef.Text) ;
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP (CBCompSimul2.Text)
+      else
+        Profil := -1 ;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP (CBCompSimul2.Text)
+      else
+        SeqAli := -1 ;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP (CBCompSimul2.Text)
+      else
+        Ration := -1 ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 3
+  with TabSimulP[3] do
+    if ChkCompSimul3.Checked and (CBCompSimul3.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP (CBCompSimul3.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP (CBCompSimulRef.Text) ;
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP (CBCompSimul3.Text)
+      else
+        Profil := -1 ;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP (CBCompSimul3.Text)
+      else
+        SeqAli := -1 ;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP (CBCompSimul3.Text)
+      else
+        Ration := -1 ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 4
+  with TabSimulP[4] do
+    if ChkCompSimul4.Checked and (CBCompSimul4.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP (CBCompSimul4.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP (CBCompSimulRef.Text) ;
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP (CBCompSimul4.Text)
+      else
+        Profil := -1 ;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP (CBCompSimul4.Text)
+      else
+        SeqAli := -1 ;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP (CBCompSimul4.Text)
+      else
+        Ration := -1 ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 5
+  with TabSimulP[5] do
+    if ChkCompSimul5.Checked and (CBCompSimul5.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP (CBCompSimul5.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP (CBCompSimulRef.Text) ;
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP (CBCompSimul5.Text)
+      else
+        Profil := -1 ;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP (CBCompSimul5.Text)
+      else
+        SeqAli := -1 ;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP (CBCompSimul5.Text)
+      else
+        Ration := -1 ;
+    end
+    else
+      Ok := FALSE ;
+  // Calcul des simulations
+  for i := 1 to 5 do
+    with TabSimulP[i] do
+      if Ok
+      then
+      begin
+        New(Result);
+        CalcSimulP(Simul, Profil, SeqAli, Ration, -1, 1, {1,} Result);
+      end;
+  FRapCompSimulP := TFRapCompSimulP.Create(Self);
+  FRapCompSimulP.QRRapport.PreviewModal;
+  FRapCompSimulP.Release;
+  for i := 1 to 5 do
+    with TabSimulP[i] do
+      if Ok then Dispose(Result);
+  Modal := False;
+end;
+
+procedure TFSimulP.BBTabCompSimulClick(Sender: TObject);
+var
+  vExcel, vWorkbook, vWorksheet, vCell: Variant;
+  aFileName, aSheetName, aValue: String;
+  aLig, aCol, i, j: Integer;
+  t: Double;
+begin
+  Modal := True;
+  // Simulation 1
+  with TabSimulP[1] do
+    if ChkCompSimul1.Checked and (CBCompSimul1.ItemIndex <> -1)
+    then
+    begin
+      Ok := True;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP(CBCompSimul1.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP(CBCompSimulRef.Text);
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP(CBCompSimul1.Text)
+      else
+        Profil := -1;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP(CBCompSimul1.Text)
+      else
+        SeqAli := -1;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP(CBCompSimul1.Text)
+      else
+        Ration := -1;
+    end
+    else
+      Ok := False;
+  // Simulation 2
+  with TabSimulP[2] do
+    if ChkCompSimul2.Checked and (CBCompSimul2.ItemIndex <> -1)
+    then
+    begin
+      Ok := True ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP(CBCompSimul2.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP(CBCompSimulRef.Text);
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP(CBCompSimul2.Text)
+      else
+        Profil := -1;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP(CBCompSimul2.Text)
+      else
+        SeqAli := -1;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP(CBCompSimul2.Text)
+      else
+        Ration := -1;
+    end
+    else
+      Ok := False ;
+  // Simulation 3
+  with TabSimulP[3] do
+    if ChkCompSimul3.Checked and (CBCompSimul3.ItemIndex <> -1)
+    then
+    begin
+      Ok := True ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP(CBCompSimul3.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP(CBCompSimulRef.Text);
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP(CBCompSimul3.Text)
+      else
+        Profil := -1;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP(CBCompSimul3.Text)
+      else
+        SeqAli := -1;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP(CBCompSimul3.Text)
+      else
+        Ration := -1;
+    end
+    else
+      Ok := False ;
+  // Simulation 4
+  with TabSimulP[4] do
+    if ChkCompSimul4.Checked and (CBCompSimul4.ItemIndex <> -1)
+    then
+    begin
+      Ok := True ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP(CBCompSimul4.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP(CBCompSimulRef.Text);
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP(CBCompSimul4.Text)
+      else
+        Profil := -1;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP(CBCompSimul4.Text)
+      else
+        SeqAli := -1;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP(CBCompSimul4.Text)
+      else
+        Ration := -1;
+    end
+    else
+      Ok := False ;
+  // Simulation 5
+  with TabSimulP[5] do
+    if ChkCompSimul5.Checked and (CBCompSimul5.ItemIndex <> -1)
+    then
+    begin
+      Ok := True ;
+      if RBCompSimul.Checked
+      then // Simulations simples
+        Simul := FindNumSimulP(CBCompSimul5.Text)
+      else // Un �l�ment d'une simulation
+        Simul := FindNumSimulP(CBCompSimulRef.Text);
+      if RBCompElem.Checked and RBCompProfil.Checked
+      then // Profil animal
+        Profil := FindNumProfilP(CBCompSimul5.Text)
+      else
+        Profil := -1;
+      if RBCompElem.Checked and RBCompSeqAli.Checked
+      then // S�quence alimentaire
+        SeqAli := FindNumSeqAliP(CBCompSimul5.Text)
+      else
+        SeqAli := -1;
+      if RBCompElem.Checked and RBCompRation.Checked
+      then // Plan de rationnement
+        Ration := FindNumRationP(CBCompSimul5.Text)
+      else
+        Ration := -1;
+    end
+    else
+      Ok := False;
+  // Calcul des simulations
+  for i := 1 to 5 do
+    with TabSimulP[i] do
+      if Ok
+      then
+      begin
+        New(Result);
+        CalcSimulP(Simul, Profil, SeqAli, Ration, -1, 1, {1,} Result);
+      end;
+  try // connexion � une instance existante
+    vExcel := GetActiveOleObject('Excel.Application');
+  except
+    try // ouverture d'une nouvelle instance
+      vExcel := CreateOleObject('Excel.Application');
+    except
+      MessageDlg(MsgExcel, mtError, [mbOK], 0);
+      Exit;
+    end;
+  end;
+  vExcel.Visible:= True;
+  aFileName := ExcelFile;
+  try // utilisation d'un classeur ouvert
+    vWorkbook := vExcel.Workbooks[ExtractFileName(aFileName)];
+    vWorkbook.Activate;
+    vWorkbook.SaveAs(aFileName);
+  except
+    try // ouverture d'un fichier
+      vWorkbook := vExcel.Workbooks.Open(aFileName);
+    except // cr�ation d'un fichier
+      vWorkbook := vExcel.Workbooks.Add;
+      vWorkbook.SaveAs(aFileName);
+    end;
+  end;
+  aSheetName := Caption;
+  try // activation d'une feuille existante
+    vWorksheet := vWorkbook.Worksheets[aSheetName];
+    vWorksheet.Activate;
+  except // cr�ation d'une feuille
+    vWorksheet := vWorkbook.Worksheets.Add;
+    vWorksheet.Name := aSheetName;
+  end;
+  for aLig := 1 to 6 do
+    for aCol := 1 to 16 do
+    begin
+      vCell := vWorksheet.Cells[aLig, aCol];
+      case aLig of
+        1: // Ligne de titre
+        begin
+          case aCol of
+            1: // Simulation
+              aValue := GBSimul.Caption;
+            2: // Profil animal
+              aValue := LProfil.Caption;
+            3: // S�quence alimentaire
+              aValue := LSeqAli.Caption;
+            4: // Plan de rationnement
+              aValue := LRation.Caption;
+            5: // Mode de fin
+              aValue := StrModeFin;
+            6: // Age initial
+              aValue := LAgeInit.Hint;
+            7: // Age final
+              aValue := Format('%s (%s)', [_('Final age'), _('d')]);
+            8: // Poids vif initial
+              aValue := LPVInit.Hint;
+            9: // Poids vif final
+              aValue := RBPVFin.Hint;
+            10: // Poids de prot�ines initial
+              aValue := RBProtInit.Hint;
+            11: // Poids de prot�ines final
+              aValue := Format('%s (%s)', [_('Final protein mass'), _('kg')]);
+            12: // Poids de lipides initial
+              aValue := RBLipInit.Hint;
+            13: // Poids de lipides final
+              aValue := Format('%s (%s)', [_('Final lipid mass'), _('kg')]);
+            14: // Aliment distribu�
+              aValue := Format('%s (%s)', [_('Feed usage'), _('kg')]);
+            15: // Co�t alimentaire
+              aValue := Format('%s (%s)', [_('Feed cost'), CurrencySign]);
+            16: // Rendement carcasse
+              aValue := Format('%s (%%)', [_('Dressing')]);
+          end;
+          vCell.Value := aValue;
+        end;
+        else // Donn�es des simulations
+          with TabSimulP[aLig - 1] do
+            if Ok
+            then
+            begin
+              PSimulP := ListSimulP[FindIdxSimulP(FindNomSimulP(Simul))];
+              if Profil = -1
+              then // Profil de la simulation
+                PProfilP := ListProfilP[FindIdxProfilP(FindNomProfilP(PSimulP.Profil))]
+              else
+                PProfilP := ListProfilP[FindIdxProfilP(FindNomProfilP(Profil))];
+              case aCol of
+                1: // Simulation
+                  if RBCompSimul.Checked
+                  then // Simulations simples
+                    aValue := PSimulP.Nom
+                  else // Un �l�ment d'une simulation
+                    aValue := '';
+                2: // Profil animal
+                  if RBCompElem.Checked and RBCompProfil.Checked
+                  then // Profil animal
+                    aValue := FindNomProfilP(Profil)
+                  else
+                    aValue := FindNomProfilP(PSimulP.Profil);
+                3: // S�quence alimentaire
+                  if RBCompElem.Checked and RBCompSeqAli.Checked
+                  then // S�quence alimentaire
+                    aValue := FindNomSeqAliP(SeqAli)
+                  else
+                    aValue := FindNomSeqAliP(PSimulP.SeqAli);
+                4: // Plan de rationnement
+                  if RBCompElem.Checked and RBCompRation.Checked
+                  then // Plan de rationnement
+                    aValue := FindNomRationP(Ration)
+                  else
+                    aValue := FindNomRationP(PSimulP.Ration);
+                5: // Mode de fin
+                  if PSimulP.FinProfil
+                  then // Profil
+                    if PProfilP.ModeFin = 0
+                    then // Dur�e
+                      aValue := RBDuree.Caption
+                    else // Poids vif
+                      aValue := RBPVFin.Caption
+                  else // Simulation
+                    if PSimulP.ModeFin = 0
+                    then // Dur�e
+                      aValue := RBDuree.Caption
+                    else // Poids vif
+                      aValue := RBPVFin.Caption;
+                6: // Age initial
+                  aValue := FloatToStrF(Result.TabResult[1, 1], ffFixed, 15, 15);
+                7: // Age final
+                  aValue := FloatToStrF(Result.TabResult[1, Result.NbJSim] + 1, ffFixed, 15, 15);
+                8: // Poids vif initial
+                  aValue := FloatToStrF(Result.TabResult[2, 1], ffFixed, 15, 15);
+                9: // Poids vif final
+                  aValue := FloatToStrF(Result.TabResult[2, Result.NbJSim] + Result.TabResult[84, Result.NbJSim], ffFixed, 15, 15);
+                10: // Poids de prot�ines initial
+                  aValue := FloatToStrF(Result.TabResult[49, 1], ffFixed, 15, 15);
+                11: // Poids de prot�ines final
+                  aValue := FloatToStrF(Result.TabResult[49, Result.NbJSim] + Result.TabResult[79, Result.NbJSim] / 1000, ffFixed, 15, 15);
+                12: // Poids de lipides initial
+                  aValue := FloatToStrF(Result.TabResult[50, 1], ffFixed, 15, 15);
+                13: // Poids de lipides final
+                  aValue := FloatToStrF(Result.TabResult[50, Result.NbJSim] + Result.TabResult[80, Result.NbJSim] / 1000, ffFixed, 15, 15);
+                14: // Aliment distribu�
+                begin
+                  t := 0;
+                  for j := 1 to Result.NbJSim do
+                    t := t + Result.TabResult[113, j];
+                  aValue := FloatToStrF(t, ffFixed, 15, 2);
+                end;
+                15: // Co�t alimentaire
+                begin
+                  t := 0;
+                  for j := 1 to Result.NbJSim do
+                  begin
+                    if Result.TabResult[7, j] <> -1
+                    then // Aliment 1
+                    begin
+                      PAliment := ListAliment[FindIdxAliment(FindNomAliment(Trunc(Result.TabResult[7, j])))];
+                      t := t + (Result.TabResult[11, j] * Result.TabResult[9, j] / 100) * PAliment.Prix / 1000;
+                    end;
+                    if Result.TabResult[8, j] <> -1
+                    then // Aliment 2
+                    begin
+                      PAliment := ListAliment[FindIdxAliment(FindNomAliment(Trunc(Result.TabResult[8, j])))];
+                      t := t + (Result.TabResult[11, j] * Result.TabResult[10, j] / 100) * PAliment.Prix / 1000;
+                    end;
+                  end;
+                  aValue := FloatToStrF(t, ffFixed, 15, 2);
+                end;
+                16: // Rendement carcasse
+                  aValue := FloatToStrF(CalcRC(PProfilP.PVFin, CalcRCStd(PProfilP.PVFin, PProfilP.Carcasse), Result.TabResult[2, Result.NbJSim] + Result.TabResult[84, Result.NbJSim]) * 100, ffFixed, 15, 15);
+              end;
+              vCell.Value := aValue;
+            end
+            else // Effacement
+              vCell.Value := '';
+      end;
+    end;
+  for i := 1 to 5 do
+    with TabSimulP[i] do
+      if Ok then Dispose(Result);
+  Modal := False;
+end;
+
+procedure TFSimulP.ValidBBCompSimul;
+begin
+  CBCompSimul1.Enabled := (CBCompSimulRef.ItemIndex <> -1)
+    or RBCompSimul.Checked ;
+  CBCompSimul2.Enabled := CBCompSimul1.Enabled ;
+  CBCompSimul3.Enabled := CBCompSimul1.Enabled ;
+  CBCompSimul4.Enabled := CBCompSimul1.Enabled ;
+  CBCompSimul5.Enabled := CBCompSimul1.Enabled ;
+  BBCompSimul.Enabled := CBCompSimul1.Enabled
+    and (((CBCompSimul1.ItemIndex <> -1) and ChkCompSimul1.Checked)
+      or ((CBCompSimul2.ItemIndex <> -1) and ChkCompSimul2.Checked)
+      or ((CBCompSimul3.ItemIndex <> -1) and ChkCompSimul3.Checked)
+      or ((CBCompSimul4.ItemIndex <> -1) and ChkCompSimul4.Checked)
+      or ((CBCompSimul5.ItemIndex <> -1) and ChkCompSimul5.Checked)) ;
+  BBRapCompSimul.Enabled := BBCompSimul.Enabled ;
+  BBTabCompSimul.Enabled := BBCompSimul.Enabled ;
+end ;
+
+// Sensibilit�
+
+procedure TFSimulP.CBSensSimulChange (Sender : TObject) ;
+begin
+  if CBSensSimul.ItemIndex = -1
+  then
+    CBSensSimul.Hint := ''
+  else
+  begin
+    PSimulP := ListSimulP[FindIdxSimulP (CBSensSimul.Text)] ;
+    CBSensSimul.Hint := PSimulP.Memo ;
+  end ;
+  ValidBBSensSimul ;
+end ;
+
+procedure TFSimulP.CBVariableChange(Sender: TObject);
+begin
+  ValidBBSensSimul ;
+end;
+
+procedure TFSimulP.BBSensSimulClick(Sender: TObject);
+var
+  k: integer;
+begin
+  Modal := True;
+  for k := 1 to 5 do
+    with TabSimulP[k] do
+    begin
+      Ok := TRUE;
+      Simul := FindNumSimulP(CBSensSimul.Text);
+      Profil := -1;
+      SeqAli := -1;
+      Ration := -1;
+      if CBVariable.ItemIndex = 6
+      then // Gaspillage
+        case k of
+          1: Variation := PBVariation.AsFloat * 2 / 100;
+          2: Variation := PBVariation.AsFloat / 100;
+          4: Variation := -PBVariation.AsFloat / 100;
+          5: Variation := -PBVariation.AsFloat * 2 / 100;
+          else Variation := 0;
+        end
+      else
+        case k of
+          1: Variation := 1 + 2 * PBVariation.AsFloat / 100;
+          2: Variation := 1 + PBVariation.AsFloat / 100;
+          4: Variation := 1 - PBVariation.AsFloat / 100;
+          5: Variation := 1 - 2 * PBVariation.AsFloat / 100;
+          else Variation := 1;
+        end;
+      // Calcul des simulations
+      New(Result);
+      CalcSimulP(Simul, -1, -1, -1, CBVariable.ItemIndex, Variation, {1,} Result);
+    end;
+  FCompSimulP := TFCompSimulP.Create(Self);
+  FCompSimulP.ShowModal;
+  FCompSimulP.Release;
+  for k := 1 to 5 do
+    Dispose(TabSimulP[k].Result);
+  Modal := False;
+end;
+
+procedure TFSimulP.BBRapSensSimulClick(Sender: TObject);
+var
+  k: integer;
+begin
+  Modal := True;
+  for k := 1 to 5 do
+    with TabSimulP[k] do
+    begin
+      Ok := TRUE;
+      Simul := FindNumSimulP(CBSensSimul.Text);
+      Profil := -1;
+      SeqAli := -1;
+      Ration := -1;
+      if CBVariable.ItemIndex = 6
+      then // Gaspillage
+        case k of
+          1: Variation := PBVariation.AsFloat * 2 / 100;
+          2: Variation := PBVariation.AsFloat / 100;
+          4: Variation := -PBVariation.AsFloat / 100;
+          5: Variation := -PBVariation.AsFloat * 2 / 100;
+          else Variation := 0;
+        end
+      else
+        case k of
+          1: Variation := 1 + 2 * PBVariation.AsFloat / 100;
+          2: Variation := 1 + PBVariation.AsFloat / 100;
+          4: Variation := 1 - PBVariation.AsFloat / 100;
+          5: Variation := 1 - 2 * PBVariation.AsFloat / 100;
+          else Variation := 1;
+        end;
+      // Calcul des simulations
+      New(Result);
+      CalcSimulP(Simul, -1, -1, -1, CBVariable.ItemIndex, Variation, {1,} Result);
+    end;
+  FRapSensSimulP := TFRapSensSimulP.Create(Self);
+  FRapSensSimulP.QRRapport.PreviewModal;
+  FRapSensSimulP.Release;
+  for k := 1 to 5 do
+    Dispose(TabSimulP[k].Result);
+  Modal := False;
+end;
+
+procedure TFSimulP.BBTabSensSimulClick(Sender: TObject);
+var
+  vExcel, vWorkbook, vWorksheet, vCell: Variant;
+  aFileName, aSheetName, aValue: String;
+  aLig, aCol, i, j: Integer;
+  t: Double;
+begin
+  Modal := True;
+  for i := 1 to 5 do
+    with TabSimulP[i] do
+    begin
+      Ok := True;
+      Simul := FindNumSimulP(CBSensSimul.Text);
+      Profil := -1;
+      SeqAli := -1;
+      Ration := -1;
+      case i of
+        1: Variation := 1 + 2 * PBVariation.AsFloat / 100;
+        2: Variation := 1 + PBVariation.AsFloat / 100;
+        4: Variation := 1 - PBVariation.AsFloat / 100;
+        5: Variation := 1 - 2 * PBVariation.AsFloat / 100;
+        else Variation := 1;
+      end;
+      // Calcul des simulations
+      New(Result);
+      CalcSimulP(Simul, -1, -1, -1, CBVariable.ItemIndex, Variation, {1,} Result);
+    end;
+  try // connexion � une instance existante
+    vExcel := GetActiveOleObject('Excel.Application');
+  except
+    try // ouverture d'une nouvelle instance
+      vExcel := CreateOleObject('Excel.Application');
+    except
+      MessageDlg(MsgExcel, mtError, [mbOK], 0);
+      Exit;
+    end;
+  end;
+  vExcel.Visible:= True;
+  aFileName := ExcelFile;
+  try // utilisation d'un classeur ouvert
+    vWorkbook := vExcel.Workbooks[ExtractFileName(aFileName)];
+    vWorkbook.Activate;
+    vWorkbook.SaveAs(aFileName);
+  except
+    try // ouverture d'un fichier
+      vWorkbook := vExcel.Workbooks.Open(aFileName);
+    except // cr�ation d'un fichier
+      vWorkbook := vExcel.Workbooks.Add;
+      vWorkbook.SaveAs(aFileName);
+    end;
+  end;
+  aSheetName := Caption;
+  try // activation d'une feuille existante
+    vWorksheet := vWorkbook.Worksheets[aSheetName];
+    vWorksheet.Activate;
+  except // cr�ation d'une feuille
+    vWorksheet := vWorkbook.Worksheets.Add;
+    vWorksheet.Name := aSheetName;
+  end;
+  for aLig := 1 to 6 do
+    for aCol := 1 to 16 do
+    begin
+      vCell := vWorksheet.Cells[aLig, aCol];
+      case aLig of
+        1: // Ligne de titre
+        begin
+          case aCol of
+            1: // Simulation
+              aValue := GBSimul.Caption;
+            2: // Profil animal
+              aValue := LProfil.Caption;
+            3: // S�quence alimentaire
+              aValue := LSeqAli.Caption;
+            4: // Plan de rationnement
+              aValue := LRation.Caption;
+            5: // Mode de fin
+              aValue := StrModeFin;
+            6: // Age initial
+              aValue := LAgeInit.Hint;
+            7: // Age final
+              aValue := Format('%s (%s)', [_('Final age'), _('d')]);
+            8: // Poids vif initial
+              aValue := LPVInit.Hint;
+            9: // Poids vif final
+              aValue := RBPVFin.Hint;
+            10: // Poids de prot�ines initial
+              aValue := RBProtInit.Hint;
+            11: // Poids de prot�ines final
+              aValue := Format('%s (%s)', [_('Final protein mass'), _('kg')]);
+            12: // Poids de lipides initial
+              aValue := RBLipInit.Hint;
+            13: // Poids de lipides final
+              aValue := Format('%s (%s)', [_('Final lipid mass'), _('kg')]);
+            14: // Aliment distribu�
+              aValue := Format('%s (%s)', [_('Feed usage'), _('kg')]);
+            15: // Co�t alimentaire
+              aValue := Format('%s (%s)', [_('Feed cost'), CurrencySign]);
+            16: // Rendement carcasse
+              aValue := Format('%s (%%)', [_('Dressing')]);
+          end;
+          vCell.Value := aValue;
+        end;
+        else // Donn�es des simulations
+          with TabSimulP[aLig - 1] do
+          begin
+            PSimulP := ListSimulP[FindIdxSimulP(FindNomSimulP(Simul))];
+            PProfilP := ListProfilP[FindIdxProfilP(FindNomProfilP(PSimulP.Profil))];
+            case aCol of
+              1: // Simulation
+                aValue := Format(StrSimulSens + ' (%1.0f%%)', [CBVariable.Items[CBVariable.ItemIndex], CBSensSimul.Text, Variation * 100]);
+              2: // Profil animal
+                aValue := FindNomProfilP(PSimulP.Profil);
+              3: // S�quence alimentaire
+                aValue := FindNomSeqAliP(PSimulP.SeqAli);
+              4: // Plan de rationnement
+                aValue := FindNomRationP(PSimulP.Ration);
+              5: // Mode de fin
+                if PSimulP.FinProfil
+                then // Profil
+                  if PProfilP.ModeFin = 0
+                  then // Dur�e
+                    aValue := RBDuree.Caption
+                  else // Poids vif
+                    aValue := RBPVFin.Caption
+                else // Simulation
+                  if PSimulP.ModeFin = 0
+                  then // Dur�e
+                    aValue := RBDuree.Caption
+                  else // Poids vif
+                    aValue := RBPVFin.Caption;
+              6: // Age initial
+                aValue := FloatToStrF(Result.TabResult[1, 1], ffFixed, 15, 15);
+              7: // Age final
+                aValue := FloatToStrF(Result.TabResult[1, Result.NbJSim] + 1, ffFixed, 15, 15);
+              8: // Poids vif initial
+                aValue := FloatToStrF(Result.TabResult[2, 1], ffFixed, 15, 15);
+              9: // Poids vif final
+                aValue := FloatToStrF(Result.TabResult[2, Result.NbJSim] + Result.TabResult[84, Result.NbJSim], ffFixed, 15, 15);
+              10: // Poids de prot�ines initial
+                aValue := FloatToStrF(Result.TabResult[49, 1], ffFixed, 15, 15);
+              11: // Poids de prot�ines final
+                aValue := FloatToStrF(Result.TabResult[49, Result.NbJSim] + Result.TabResult[79, Result.NbJSim] / 1000, ffFixed, 15, 15);
+              12: // Poids de lipides initial
+                aValue := FloatToStrF(Result.TabResult[50, 1], ffFixed, 15, 15);
+              13: // Poids de lipides final
+                aValue := FloatToStrF(Result.TabResult[50, Result.NbJSim] + Result.TabResult[80, Result.NbJSim] / 1000, ffFixed, 15, 15);
+              14: // Aliment distribu�
+              begin
+                t := 0;
+                for j := 1 to Result.NbJSim do
+                  t := t + Result.TabResult[113, j];
+                aValue := FloatToStrF(t, ffFixed, 15, 2);
+              end;
+              15: // Co�t alimentaire
+              begin
+                t := 0;
+                for j := 1 to Result.NbJSim do
+                begin
+                  if Result.TabResult[7, j] <> -1
+                  then // Aliment 1
+                  begin
+                    PAliment := ListAliment[FindIdxAliment(FindNomAliment(Trunc(Result.TabResult[7, j])))];
+                    t := t + (Result.TabResult[11, j] * Result.TabResult[9, j] / 100) * PAliment.Prix / 1000;
+                  end;
+                  if Result.TabResult[8, j] <> -1
+                  then // Aliment 2
+                  begin
+                    PAliment := ListAliment[FindIdxAliment(FindNomAliment(Trunc(Result.TabResult[8, j])))];
+                    t := t + (Result.TabResult[11, j] * Result.TabResult[10, j] / 100) * PAliment.Prix / 1000;
+                  end;
+                end;
+                aValue := FloatToStrF(t, ffFixed, 15, 2);
+              end;
+              16: // Rendement carcasse
+                aValue := FloatToStrF(CalcRC(PProfilP.PVFin, CalcRCStd(PProfilP.PVFin, PProfilP.Carcasse), Result.TabResult[2, Result.NbJSim] + Result.TabResult[84, Result.NbJSim]) * 100, ffFixed, 15, 15);
+            end;
+            vCell.Value := aValue;
+          end;
+      end;
+    end;
+  for i := 1 to 5 do
+    Dispose(TabSimulP[i].Result);
+  Modal := False;
+end;
+
+procedure TFSimulP.ValidBBSensSimul;
+begin
+  BBSensSimul.Enabled :=  (CBSensSimul.ItemIndex <> -1) and (CBVariable.ItemIndex <> -1);
+  BBRapSensSimul.Enabled := BBSensSimul.Enabled;
+  BBTabSensSimul.Enabled := BBSensSimul.Enabled;
+end;
+
+end.
Index: UFRapAliAA.pas
===================================================================
--- UFRapAliAA.pas	(révision 0)
+++ UFRapAliAA.pas	(révision 3)
@@ -0,0 +1,244 @@
+unit UFRapAliAA ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapAliAA = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLAliment: TQRLabel;
+    CDSRapport: TClientDataSet;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    SFAliment: TStringField;
+    QRDBAliment: TQRDBText;
+    QRLTAA: TQRLabel;
+    QRLMAT: TQRLabel;
+    QRDBTTMAT: TQRDBText;
+    QRLAA: TQRLabel;
+    QRLdAA: TQRLabel;
+    QRSdFecale: TQRShape;
+    QRLdAA_Std: TQRLabel;
+    QRLdAA_App: TQRLabel;
+    QRLCompo: TQRLabel;
+    QRDBTdMAT_Std: TQRDBText;
+    QRDBTdMAT_App: TQRDBText;
+    SFLys: TStringField;
+    SFdLysStd: TStringField;
+    SFdLysApp: TStringField;
+    SFTMet: TStringField;
+    SFdMetStd: TStringField;
+    SFdMetApp: TStringField;
+    SFTCys: TStringField;
+    SFdCysStd: TStringField;
+    SFdCysApp: TStringField;
+    SFTTrp: TStringField;
+    SFdTrpStd: TStringField;
+    SFdTrpApp: TStringField;
+    SFTThr: TStringField;
+    SFdThrStd: TStringField;
+    SFdThrApp: TStringField;
+    SFTPhe: TStringField;
+    SFdPheStd: TStringField;
+    SFdPheApp: TStringField;
+    SFTTyr: TStringField;
+    SFdTyrStd_: TStringField;
+    SFdTyrApp: TStringField;
+    SFTLeu: TStringField;
+    SFdLeuStd: TStringField;
+    SFdLeuApp: TStringField;
+    SFTIle: TStringField;
+    SFdIleStd: TStringField;
+    SFdIleApp: TStringField;
+    SFTVal: TStringField;
+    SFdValStd: TStringField;
+    SFdValApp: TStringField;
+    SFTHis: TStringField;
+    SFdHisStd: TStringField;
+    SFdHisApp: TStringField;
+    SFTArg: TStringField;
+    SFdArgStd: TStringField;
+    SFdArgApp: TStringField;
+    SFTMetCys: TStringField;
+    SFdMetCysStd: TStringField;
+    SFdMetCysApp: TStringField;
+    SFTPheTyr: TStringField;
+    SFdPheTyrStd: TStringField;
+    SFdPheTyrApp: TStringField;
+    SFTMAT: TStringField;
+    SFdMATStd: TStringField;
+    SFdMATApp: TStringField;
+    QRLMet: TQRLabel;
+    QRDBTTMet: TQRDBText;
+    QRDBTdMetStd: TQRDBText;
+    QRDBTdMetApp: TQRDBText;
+    QRLTrp: TQRLabel;
+    QRDBTTTrp: TQRDBText;
+    QRDBTdTrpStd: TQRDBText;
+    QRDBTdTrpApp: TQRDBText;
+    QRLPhe: TQRLabel;
+    QRDBTTPhe: TQRDBText;
+    QRDBTdPheStd: TQRDBText;
+    QRDBTdPheApp: TQRDBText;
+    QRLLeu: TQRLabel;
+    QRDBTTLeu: TQRDBText;
+    QRDBTdLeuStd: TQRDBText;
+    QRDBTdLeuApp: TQRDBText;
+    QRLVal: TQRLabel;
+    QRDBTTVal: TQRDBText;
+    QRDBTdValStd: TQRDBText;
+    QRDBTdValApp: TQRDBText;
+    QRLArg: TQRLabel;
+    QRDBTTArg: TQRDBText;
+    QRDBTdArgStd: TQRDBText;
+    QRDBTdArgApp: TQRDBText;
+    QRLPheTyr: TQRLabel;
+    QRDBTTPheTyr: TQRDBText;
+    QRDBTdPheTyrStd: TQRDBText;
+    QRDBTdPheTyrApp: TQRDBText;
+    QRLLys: TQRLabel;
+    QRDBTTLys: TQRDBText;
+    QRDBTdLysStd: TQRDBText;
+    QRDBTdLysApp: TQRDBText;
+    QRLCys: TQRLabel;
+    QRDBTTCys: TQRDBText;
+    QRDBTdCysStd: TQRDBText;
+    QRDBTdCysApp: TQRDBText;
+    QRLThr: TQRLabel;
+    QRDBTTThr: TQRDBText;
+    QRDBTdThrStd: TQRDBText;
+    QRDBTdThrApp: TQRDBText;
+    QRLTyr: TQRLabel;
+    QRDBTTTyr: TQRDBText;
+    QRDBTdTyrStd: TQRDBText;
+    QRDBTdTyrApp: TQRDBText;
+    QRLIle: TQRLabel;
+    QRDBTTIle: TQRDBText;
+    QRDBTdIleStd: TQRDBText;
+    QRDBTdIleApp: TQRDBText;
+    QRLHis: TQRLabel;
+    QRDBTTHis: TQRDBText;
+    QRDBTdHisStd: TQRDBText;
+    QRDBTdHisApp: TQRDBText;
+    QRLMetCys: TQRLabel;
+    QRDBTTMetCys: TQRDBText;
+    QRDBTdMetCysStd: TQRDBText;
+    QRDBTdMetCysApp: TQRDBText;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapAliAA: TFRapAliAA;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFAliment, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapAliAA }
+
+procedure TFRapAliAA.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Aliment_'] := FAliment.CBAliment.Text;
+    FieldValues['_TMAT_'] := FAliment.PBTMAT2.Text;
+    FieldValues['_dMAT_Std_'] := FAliment.PBdMATStd.Text;
+    FieldValues['_dMAT_App_'] := FAliment.PBdMATApp.Text;
+    FieldValues['_TLys_'] := FAliment.PBTLys.Text;
+    FieldValues['_dLys_Std_'] := FAliment.PBdLysStd.Text;
+    FieldValues['_dLys_App_'] := FAliment.PBdLysApp.Text;
+    FieldValues['_TMet_'] := FAliment.PBTMet.Text;
+    FieldValues['_dMet_Std_'] := FAliment.PBdMetStd.Text;
+    FieldValues['_dMet_App_'] := FAliment.PBdMetApp.Text;
+    FieldValues['_TCys_'] := FAliment.PBTCys.Text;
+    FieldValues['_dCys_Std_'] := FAliment.PBdCysStd.Text;
+    FieldValues['_dCys_App_'] := FAliment.PBdCysApp.Text;
+    FieldValues['_TTrp_'] := FAliment.PBTTrp.Text;
+    FieldValues['_dTrp_Std_'] := FAliment.PBdTrpStd.Text;
+    FieldValues['_dTrp_App_'] := FAliment.PBdTrpApp.Text;
+    FieldValues['_TThr_'] := FAliment.PBTThr.Text;
+    FieldValues['_dThr_Std_'] := FAliment.PBdThrStd.Text;
+    FieldValues['_dThr_App_'] := FAliment.PBdThrApp.Text;
+    FieldValues['_TPhe_'] := FAliment.PBTPhe.Text;
+    FieldValues['_dPhe_Std_'] := FAliment.PBdPheStd.Text;
+    FieldValues['_dPhe_App_'] := FAliment.PBdPheApp.Text;
+    FieldValues['_TTyr_'] := FAliment.PBTTyr.Text;
+    FieldValues['_dTyr_Std_'] := FAliment.PBdTyrStd.Text;
+    FieldValues['_dTyr_App_'] := FAliment.PBdTyrApp.Text;
+    FieldValues['_TLeu_'] := FAliment.PBTLeu.Text;
+    FieldValues['_dLeu_Std_'] := FAliment.PBdLeuStd.Text;
+    FieldValues['_dLeu_App_'] := FAliment.PBdLeuApp.Text;
+    FieldValues['_TIle_'] := FAliment.PBTIle.Text;
+    FieldValues['_dIle_Std_'] := FAliment.PBdIleStd.Text;
+    FieldValues['_dIle_App_'] := FAliment.PBdIleApp.Text;
+    FieldValues['_TVal_'] := FAliment.PBTVal.Text;
+    FieldValues['_dVal_Std_'] := FAliment.PBdValStd.Text;
+    FieldValues['_dVal_App_'] := FAliment.PBdValApp.Text;
+    FieldValues['_THis_'] := FAliment.PBTHis.Text;
+    FieldValues['_dHis_Std_'] := FAliment.PBdHisStd.Text;
+    FieldValues['_dHis_App_'] := FAliment.PBdHisApp.Text;
+    FieldValues['_TArg_'] := FAliment.PBTArg.Text;
+    FieldValues['_dArg_Std_'] := FAliment.PBdArgStd.Text;
+    FieldValues['_dArg_App_'] := FAliment.PBdArgApp.Text;
+    FieldValues['_TMetCys_'] := FAliment.PBTMetCys.Text;
+    FieldValues['_dMetCys_Std_'] := FAliment.PBdMetCysStd.Text;
+    FieldValues['_dMetCys_App_'] := FAliment.PBdMetCysApp.Text;
+    FieldValues['_TPheTyr_'] := FAliment.PBTPheTyr.Text;
+    FieldValues['_dPheTyr_Std_'] := FAliment.PBdPheTyrStd.Text;
+    FieldValues['_dPheTyr_App_'] := FAliment.PBdPheTyrApp.Text;
+    Post;
+  end ;
+  QRMMemo.Lines.Add(FAliment.CBAliment.Hint);
+  QRLCompo.Caption:= FAliment.Hint;
+  QRLTAA.Caption:= FAliment.GBTAA.Caption;
+  QRLdAA.Caption:= FAliment.GBdAA.Caption;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFCommentAli.dfm
===================================================================
--- UFCommentAli.dfm	(révision 0)
+++ UFCommentAli.dfm	(révision 3)
@@ -0,0 +1,124 @@
+object FCommentAli: TFCommentAli
+  Left = 200
+  Top = 200
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Comment'
+  ClientHeight = 192
+  ClientWidth = 468
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object LType: TLabel
+    Left = 24
+    Top = 84
+    Width = 60
+    Height = 13
+    Caption = 'Type of feed'
+  end
+  object LPrix: TLabel
+    Left = 24
+    Top = 132
+    Width = 24
+    Height = 13
+    Caption = 'Price'
+  end
+  object LMonnaie: TLabel
+    Left = 168
+    Top = 132
+    Width = 56
+    Height = 13
+    Caption = '$ / 1000 kg'
+  end
+  object LPresentation: TLabel
+    Left = 24
+    Top = 108
+    Width = 62
+    Height = 13
+    Caption = 'Physical form'
+  end
+  object Memo: TMemo
+    Left = 8
+    Top = 8
+    Width = 452
+    Height = 60
+    MaxLength = 255
+    TabOrder = 0
+    WantReturns = False
+  end
+  object BBOk: TBitBtn
+    Left = 296
+    Top = 160
+    Width = 80
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    NumGlyphs = 2
+    TabOrder = 4
+  end
+  object BBCancel: TBitBtn
+    Left = 384
+    Top = 160
+    Width = 80
+    Height = 25
+    Cancel = True
+    Caption = 'Cancel'
+    ModalResult = 2
+    NumGlyphs = 2
+    TabOrder = 5
+  end
+  object CBType: TComboBox
+    Left = 120
+    Top = 80
+    Width = 200
+    Height = 21
+    Style = csDropDownList
+    ItemHeight = 13
+    ItemIndex = 0
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 1
+    Text = '(Not specified)'
+    Items.Strings = (
+      '(Not specified)'
+      'Growing pig'
+      'Sow')
+  end
+  object PBPrix: TPBNumEdit
+    Left = 120
+    Top = 128
+    Width = 40
+    Height = 21
+    Alignment = taRightJustify
+    Decimals = 2
+    NumberFormat = Standard
+    TabOrder = 3
+  end
+  object CBPresentation: TComboBox
+    Left = 120
+    Top = 104
+    Width = 120
+    Height = 21
+    Style = csDropDownList
+    ItemHeight = 13
+    ItemIndex = 0
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 2
+    Text = 'Pellets'
+    Items.Strings = (
+      'Pellets'
+      'Mash')
+  end
+end
Index: UFRationP.pas
===================================================================
--- UFRationP.pas	(révision 0)
+++ UFRationP.pas	(révision 3)
@@ -0,0 +1,1189 @@
+unit UFRationP;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, ExtCtrls, Math, PBNumEdit, TeEngine, Series, 
+  TeeProcs, Chart, JvExControls, JvComponent, JvEnterTab, UVariables, 
+  gnugettext;
+
+type
+  TFRationP = class(TForm)
+    GBRation: TGroupBox;
+    SBAddRation: TSpeedButton;
+    SBDelRation: TSpeedButton;
+    CBRation: TComboBox;
+    GBRule: TGroupBox;
+    LModeFin: TLabel;
+    LNo: TLabel;
+    SBAddRule: TSpeedButton;
+    SBDelRule: TSpeedButton;
+    LAli: TLabel;
+    LBRule: TListBox;
+    GBEnd: TGroupBox;
+    PBValFin: TPBNumEdit;
+    GBAjust: TGroupBox;
+    GBParam: TGroupBox;
+    LUnite: TLabel;
+    LEqPV: TLabel;
+    CBUnite: TComboBox;
+    PBaPV: TPBNumEdit;
+    RBCoef: TRadioButton;
+    RBIngere: TRadioButton;
+    PBbPV: TPBNumEdit;
+    PBIng50: TPBNumEdit;
+    PBIng100: TPBNumEdit;
+    Graph: TChart;
+    SeriesLigne: TLineSeries;
+    SBRename: TSpeedButton;
+    SBComment: TSpeedButton;
+    PEqPV: TPanel;
+    PCoefPV: TPanel;
+    CBModeFin: TComboBox;
+    PUnite: TPanel;
+    LType: TLabel;
+    CBType: TComboBox;
+    PQuantite: TPanel;
+    LQuantite: TLabel;
+    PBQuantite: TPBNumEdit;
+    CBEqPV: TComboBox;
+    CBX: TComboBox;
+    CBY: TComboBox;
+    GBSim: TGroupBox;
+    CBSim: TComboBox;
+    GBY: TGroupBox;
+    GBX: TGroupBox;
+    PRation: TPanel;
+    SBSave: TSpeedButton;
+    SBPrint: TSpeedButton;
+    PPercent: TPanel;
+    LPercent: TLabel;
+    PBPercent: TPBNumEdit;
+    JvEnterAsTab: TJvEnterAsTab;
+    LGaspillage: TLabel;
+    PBGaspillage: TPBNumEdit;
+    LaPV: TLabel;
+    LbPV: TLabel;
+    LIng100: TLabel;
+    LIng50: TLabel;
+    PCoefDuree: TPanel;
+    LaDuree: TLabel;
+    LbDuree: TLabel;
+    PBaDuree: TPBNumEdit;
+    PBbDuree: TPBNumEdit;
+    PEqDuree: TPanel;
+    LEqDuree: TLabel;
+    CBEqDuree: TComboBox;
+    GBGraph: TGroupBox;
+    PGraphTop: TPanel;
+    PRules: TPanel;
+    LProfilRef: TLabel;
+    LSeqAliRef: TLabel;
+    LWastage: TLabel;
+    PRight: TPanel;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormShow(Sender: TObject);
+    procedure CBRationChange(Sender: TObject);
+    procedure SBAddRationClick(Sender: TObject);
+    procedure SBDelRationClick(Sender: TObject);
+    procedure LBRuleClick(Sender: TObject);
+    procedure LBRuleDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure SBAddRuleClick(Sender: TObject);
+    procedure SBDelRuleClick(Sender: TObject);
+    procedure PBValFinChange(Sender: TObject);
+    procedure CBUniteChange(Sender: TObject);
+    procedure RBCoefClick(Sender: TObject);
+    procedure PBaPVChange(Sender: TObject);
+    procedure PBbPVChange(Sender: TObject);
+    procedure PBIng50Change(Sender: TObject);
+    procedure PBIng100Change(Sender: TObject);
+    procedure FormDeactivate(Sender: TObject);
+    procedure SBRenameClick(Sender: TObject);
+    procedure SBCommentClick(Sender: TObject);
+    procedure PBQuantiteChange(Sender: TObject);
+    procedure CBTypeChange(Sender: TObject);
+    procedure CBModeFinChange(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure CBEqDureeChange(Sender: TObject);
+    procedure CBEqPVChange(Sender: TObject);
+    procedure CBXChange(Sender: TObject);
+    procedure CBYChange(Sender: TObject);
+    procedure CBSimChange(Sender: TObject);
+    procedure SBSaveClick(Sender: TObject);
+    procedure SBPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure PBPercentChange(Sender: TObject);
+    procedure PBGaspillageChange(Sender: TObject);
+    procedure PBaDureeChange(Sender: TObject);
+    procedure PBbDureeChange(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified: boolean;
+    IdxRationP, NumRule: integer;
+    PResSimulP: PTabResSimulP;
+    procedure Save;
+    procedure AffGraph;
+  public
+    { D�clarations publiques }
+    function StrModeFin(n: integer): String;
+    function StrEquation(n: integer): String;
+  end;
+
+var
+  FRationP: TFRationP;
+
+implementation
+
+uses
+  UStrings, UInit, UUtil, UFindRec, UCalcul, UEchelle, UFComment, UCalcSimulP,
+  UFRapRationP;
+
+{$R *.dfm}
+
+{ TFRationP }
+
+procedure TFRationP.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 748 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 440 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  CBModeFin.ItemIndex := 0;
+  CBType.ItemIndex := 0;
+  CBUnite.ItemIndex := 0;
+  CBEqDuree.ItemIndex := 0;
+  CBEqPV.ItemIndex := 0;
+  CBX.ItemIndex := 0;
+  CBY.ItemIndex := 0;
+end;
+
+procedure TFRationP.FormShow(Sender: TObject);
+begin
+  Modified := False;
+  // Abscisses par d�faut
+  CBX.ItemIndex := XCrois;
+  New(PResSimulP);
+  StringsRationP(CBRation.Items, True);
+  SBAddRation.Enabled := IsComplete or (ListRationP.Count < 5);
+  SBSave.Enabled := IsComplete or IsEducation;
+  IdxRationP := -1;
+//  CBRationChange(nil);
+end;
+
+procedure TFRationP.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if Modified then Save;
+  Dispose(PResSimulP);
+  Action := caFree;
+  NumWinRationP := -1;
+end;
+
+procedure TFRationP.FormActivate(Sender: TObject);
+begin
+  StringsSimulP(CBSim.Items, False);
+//  if IdxRationP <> -1
+//  then
+//    PRationP := ListRationP[IdxRationP];
+  CBRationChange(nil);
+  PRation.Enabled := IsComplete or IsEducation or IsEvaluation;
+  SBAddRule.Visible := PRation.Enabled;
+  SBDelRule.Visible := PRation.Enabled;
+end;
+
+procedure TFRationP.FormDeactivate(Sender: TObject);
+begin
+  if Modified then Save;
+end;
+
+procedure TFRationP.Save;
+var
+  s: string;
+begin
+  Modified := False;
+  if IsComplete or IsEducation
+  then
+    if MessageDlg(Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      SaveRationP;
+      if not RationPValid(PRationP)
+      then
+        MessageDlg(Format(MsgInvalidData, [Caption, PRationP.Nom]), mtWarning, [mbOK], 0);
+    end
+    else
+    begin
+      LoadRationP;
+      s := CBRation.Text;
+      StringsRationP(CBRation.Items, True);
+      if FindIdxRationP(s) = -1
+      then
+      begin
+        IdxRationP := -1;
+        CBRationChange(nil);
+      end
+      else
+        CBRation.ItemIndex := CBRation.Items.IndexOf(s);
+    end;
+end;
+
+procedure TFRationP.CBRationChange (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  if (IdxRationP <> -1) and (CBRation.Text <> PRationP.Nom)
+  then
+    if Modified then Save ;
+  IdxRationP := FindIdxRationP (CBRation.Text) ;
+  LBRule.Clear ;
+  if IdxRationP = -1
+  then
+  begin
+    CBRation.Repaint ;
+    SBDelRation.Enabled := FALSE ;
+    SBRename.Enabled := FALSE ;
+    SBComment.Enabled := FALSE ;
+    SBSave.Enabled := FALSE ;
+    SBPrint.Enabled := FALSE ;
+    PRation.Visible := FALSE ;
+  end
+  else // Affichage de l'enregistrement
+  begin
+    SBDelRation.Enabled := TRUE ;
+    SBRename.Enabled := TRUE ;
+    SBComment.Enabled := TRUE ;
+    SBSave.Enabled := TRUE ;
+    SBPrint.Enabled := TRUE ;
+    PRation.Visible := TRUE ;
+    PRationP := ListRationP[IdxRationP] ;
+    with PRationP^ do
+      CBRation.Hint := Memo ;
+    with PRationP^ do
+      for i := 1 to NbRule do
+        LBRule.Items.Add ('') ;
+    LBRule.ItemIndex := 0 ;
+    LBRuleClick (nil) ;
+    CBSimChange (nil) ;
+  end ;
+end ;
+
+procedure TFRationP.SBAddRationClick (Sender : TObject) ;
+var
+  i, n, q : integer ;
+  s : string ;
+  ok : boolean ;
+  PBackup : PRecRationP ;
+begin
+  if Modified then Save ;
+  if IdxRationP = -1
+  then
+    q := mrNo
+  else
+    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
+  // saisie du nouveau nom
+  s := '' ;
+  repeat
+    if InputQuery (FRationP.Caption, MsgName, s)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListRationP.Count) do
+          begin
+            PRationP := ListRationP[i] ;
+            if PRationP.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      if (IdxRationP <> -1)
+      then
+        PRationP := ListRationP[IdxRationP] ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  if s <> ''
+  then // Cr�ation du nouvel enregistrement
+  begin
+    // recherche du premier num�ro libre
+    n := 0 ;
+    repeat
+      Inc (n) ;
+      ok := TRUE ;
+      i := 0 ;
+      while ok and (i < ListRationP.Count) do
+      begin
+        PRationP := ListRationP[i] ;
+        if PRationP.Num = n
+        then
+          ok := FALSE
+        else
+          Inc (i) ;
+      end ;
+    until ok ;
+    New (PRationP) ;
+    with PRationP^ do
+    begin
+      Nom := s ;
+      Num := n ;
+      if q = mrYes
+      then
+      begin
+        PBackup := ListRationP[IdxRationP] ;
+        Memo := PBackup.Memo ;
+        NbRule := PBackup.NbRule ;
+        Rule := PBackup.Rule ;
+      end
+      else
+      begin
+        Memo := '';
+        NbRule := 1;
+        for i := 1 to MAX_RULE do
+          with Rule[i] do
+          begin
+            ModeFin := -1;
+            ValFin := 0;
+            Gaspillage := 0;
+            RuleType := -1;
+            Unite := -1;
+            EqDuree := -1;
+            EqPV := -1;
+            Percent := 1;
+            Quantity := 0;
+            aDuree := 0;
+            bDuree := 0;
+            aPV := 0;
+            bPV := 0;
+         end;
+      end;
+    end ;
+    ListRationP.Add (PRationP) ;
+    CBRation.Items.Add (PRationP.Nom) ;
+    CBRation.ItemIndex := CBRation.Items.IndexOf (PRationP.Nom) ;
+    CBRationChange (nil) ;
+    Modified := TRUE ;
+    SBAddRation.Enabled := IsComplete or (ListRationP.Count < 5) ;
+    SBCommentClick (nil) ;
+  end ;
+end;
+
+procedure TFRationP.SBDelRationClick (Sender : TObject) ;
+begin
+  if RationPUsed (PRationP.Num)
+  then // Enregistrement utilis�
+    MessageDlg (MsgDelErr, mtWarning, [mbOk], 0)
+  else // Suppression de l'enregistrement
+    if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      Dispose (PRationP) ;
+      ListRationP.Delete (IdxRationP) ;
+      SaveRationP ; // Sauvegarde !
+      Modified := FALSE ;
+      CBRation.DeleteSelected ;
+      IdxRationP := -1 ;
+      CBRation.ItemIndex := -1 ;
+      CBRationChange (nil) ;
+      SBAddRation.Enabled := IsComplete or (ListRationP.Count < 5) ;
+    end ;
+end ;
+
+procedure TFRationP.SBRenameClick (Sender : TObject) ;
+var
+  i : integer ;
+  s : string ;
+  ok : boolean ;
+begin
+  // Saisie du nouveau nom
+  s := CBRation.Text ;
+  repeat
+    if InputQuery (FRationP.Caption, MsgRename, s) and (s <> CBRation.Text)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListRationP.Count) do
+          begin
+            PRationP := ListRationP[i] ;
+            if PRationP.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  PRationP := ListRationP[IdxRationP] ;
+  if s <> ''
+  then // Renommer l'enregistrement
+  begin
+    PRationP.Nom := s ;
+    Modified := TRUE ;
+    StringsRationP (CBRation.Items, TRUE) ;
+    CBRation.ItemIndex := CBRation.Items.IndexOf (s) ;
+  end ;
+end ;
+
+procedure TFRationP.SBCommentClick (Sender : TObject) ;
+begin
+  // Saisie du commentaire
+  FComment := TFComment.Create (Self) ;
+  with FComment do
+  begin
+    Memo.Text := PRationP.Memo ;
+    if ShowModal = mrOk
+    then // Commenter l'enregistrement
+    begin
+      PRationP.Memo := Memo.Text ;
+      Modified := TRUE ;
+      CBRation.Hint := PRationP.Memo ;
+    end ;
+    Release ;
+  end ;
+end ;
+
+procedure TFRationP.SBSaveClick(Sender: TObject);
+begin
+  SaveRationP ;
+  if not RationPValid (PRationP)
+  then
+    MessageDlg(Format (MsgInvalidData, [Caption, PRationP.Nom]), mtWarning, [mbOK], 0) ;
+  Modified := FALSE ;
+end;
+
+procedure TFRationP.SBPrintClick(Sender: TObject);
+begin
+  FRapRationP := TFRapRationP.Create (Self) ;
+  FRapRationP.QRRapport.PreviewModal ;
+  FRapRationP.Release ;
+end;
+
+procedure TFRationP.LBRuleClick(Sender: TObject);
+begin
+  NumRule := LBRule.ItemIndex + 1;
+  SBAddRule.Enabled := LBRule.Items.Count < MAX_RULE;
+  SBDelRule.Enabled := NumRule < PRationP.NbRule;
+  GBEnd.Visible := SBDelRule.Enabled;
+  with PRationP.Rule[NumRule] do
+  begin
+    Update := True;
+    CBModeFin.ItemIndex := ModeFin;
+    CBModeFinChange(nil);
+    PBValFin.AsFloat := ValFin;
+    PBGaspillage.AsFloat := Gaspillage * 100;
+    CBType.ItemIndex := RuleType;
+    CBTypeChange(nil);
+    CBUnite.ItemIndex := Unite;
+    CBUniteChange(nil);
+    CBEqDuree.ItemIndex := EqDuree;
+    CBEqDureeChange(nil);
+    CBEqPV.ItemIndex := EqPV;
+    CBEqPVChange(nil);
+    PBPercent.Value := Percent * 100;
+    PBQuantite.AsFloat := Quantity / (1 - Gaspillage);
+    PBaDuree.AsFloat := aDuree / (1 - Gaspillage);
+    PBbDuree.AsFloat := bDuree / (1 - Gaspillage);
+    PBaPV.AsFloat := aPV / (1 - Gaspillage);
+    if EqPV = 0
+    then // a+b*PV
+      PBbPV.AsFloat := bPV / (1 - Gaspillage)
+    else
+      PBbPV.AsFloat := bPV;
+    PBIng50.AsFloat := CalcIngere(EqPV, Unite, PBaPV.AsFloat, PBbPV.AsFloat, 50);
+    PBIng100.AsFloat := CalcIngere(EqPV, Unite, PBaPV.AsFloat, PBbPV.AsFloat, 100);
+    Update := False;
+  end;
+end;
+
+procedure TFRationP.LBRuleDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
+begin
+  with (Control as TListBox).Canvas do
+  begin
+    // Cadre principal
+    FillRect(Rect);
+    // Texte
+    SetTextAlign(Handle, TA_RIGHT);
+    Rect.Right := LBRule.Width - 4;
+    TextRect(Rect, Rect.Right, Rect.Top, Format('%1.0f%%', [PRationP.Rule[Index + 1].Gaspillage * 100]));
+    Rect.Right := 338;
+    SetTextAlign(Handle, TA_LEFT);
+    Rect.Left := 22;
+    TextRect(Rect, Rect.Left, Rect.Top, StrModeFin(Index + 1));
+    Rect.Left := 182;
+    TextRect(Rect, Rect.Left, Rect.Top, StrEquation(Index + 1));
+    Rect.Left := 0;
+    // Num�ro
+    SetTextAlign(Handle, TA_RIGHT);
+    Rect.Right := 14;
+    TextRect(Rect, Rect.Right, Rect.Top, Format('%d', [Index + 1]));
+  end;
+end;
+
+procedure TFRationP.SBAddRuleClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  for i := PRationP.NbRule downto NumRule do
+    PRationP.Rule[i + 1] := PRationP.Rule[i] ;
+  with PRationP.Rule[NumRule] do
+  begin
+    ModeFin := -1 ;
+    ValFin := 0 ;
+  end ;
+  Inc (PRationP.NbRule) ;
+  LBRule.Items.Add ('') ;
+  LBRule.ItemIndex := NumRule - 1 ;
+  LBRuleClick (nil) ;
+  Modified := TRUE ;
+  ActiveControl := CBModeFin ;
+end ;
+
+procedure TFRationP.SBDelRuleClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  PRationP.NbRule := PRationP.NbRule - 1 ;
+  for i := NumRule to PRationP.NbRule do
+    PRationP.Rule[i] := PRationP.Rule[i + 1] ;
+  i := NumRule ; // Position courante
+  LBRule.DeleteSelected ;
+  LBRule.ItemIndex := i - 1 ;
+  LBRuleClick (nil) ;
+  CBSimChange (nil) ;
+  ActiveControl := LBRule ;
+  Modified := TRUE ;
+end ;
+
+procedure TFRationP.CBModeFinChange(Sender: TObject);
+begin
+  PBValFin.Visible := CBModeFin.ItemIndex <> -1;
+  if CBModeFin.ItemIndex >= 4
+  then // Consommation
+    PBValFin.Decimals := 3
+  else
+    PBValFin.Decimals := 0;
+  if not Update
+  then
+  begin
+    Modified := True;
+    PRationP.Rule[NumRule].ModeFin := CBModeFin.ItemIndex;
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.PBValFinChange(Sender : TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PRationP.Rule[NumRule].ValFin := PBValFin.AsFloat;
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.PBGaspillageChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PRationP.Rule[NumRule].Gaspillage := PBGaspillage.AsFloat / 100;
+    // Recalculer Quantity
+    PRationP.Rule[NumRule].Quantity := PBQuantite.AsFloat * (1 - PRationP.Rule[NumRule].Gaspillage);
+    // Recalculer aDuree et bDuree
+    PRationP.Rule[NumRule].aDuree := PBaDuree.AsFloat * (1 - PRationP.Rule[NumRule].Gaspillage);
+    PRationP.Rule[NumRule].bDuree := PBbDuree.AsFloat * (1 - PRationP.Rule[NumRule].Gaspillage);
+    // Recalculer aPV et bPV
+    PRationP.Rule[NumRule].aPV := PBaPV.AsFloat * (1 - PRationP.Rule[NumRule].Gaspillage);
+    if CBEqPV.ItemIndex = 0
+    then // a+b*PV
+      PRationP.Rule[NumRule].bPV := PBbPV.AsFloat * (1 - PRationP.Rule[NumRule].Gaspillage);
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.CBTypeChange(Sender: TObject);
+begin
+  PUnite.Visible := False;
+  PPercent.Visible := False;
+  PQuantite.Visible := False;
+  PEqDuree.Visible := False;
+  PCoefDuree.Visible := False;
+  PEqPV.Visible := False;
+  PCoefPV.Visible := False;
+  case CBType.ItemIndex of
+    0: // % Ad libitum
+      PPercent.Visible := True;
+    1: // Constant
+    begin
+      PUnite.Visible := True;
+      PQuantite.Visible := True;
+    end;
+    2: // f(dur�e)
+    begin
+      PUnite.Visible := True;
+      PEqDuree.Visible := True;
+      CBEqDureeChange(nil);
+    end;
+    3: // f(poids vif)
+    begin
+      PUnite.Visible := True;
+      PEqPV.Visible := True;
+      CBEqPVChange(nil);
+    end;
+  end;
+  if not Update
+  then
+  begin
+    Modified := True;
+    PRationP.Rule[NumRule].RuleType := CBType.ItemIndex;
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.CBUniteChange(Sender: TObject);
+var
+  etat: boolean;
+  d, m, Ing50, Ing100: Double;
+begin
+  etat := Update;
+  Update := True;
+  // Ajustement de la pr�cision de Quantity, aDuree, bDuree, Ing50 et Ing100
+  if (CBUnite.ItemIndex = 0) or (CBUnite.ItemIndex = 4)
+  then // kg (QI ou MS)
+  begin
+    PBQuantite.Decimals := 3;
+    PBaDuree.Decimals := 3;
+    PBbDuree.Decimals := 3;
+    PBIng50.Decimals := 3;
+    PBIng100.Decimals := 3;
+  end
+  else // MJ (ED, EM ou EN)
+  begin
+    PBQuantite.Decimals := 2;
+    PBaDuree.Decimals := 2;
+    PBbDuree.Decimals := 2;
+    PBIng50.Decimals := 2;
+    PBIng100.Decimals := 2;
+  end;
+  Update := etat;
+  if not Update
+  then
+  begin
+    Update := True;
+    CBEqPVChange(nil);
+    Update := False;
+    // Ancienne unit� (diviseur)
+    case PProfilP.Unite of
+      0: // Quantit� (kg/j)
+        d := cGammaFrais;
+      1: // ED (MJ/j)
+        d := cGammaED;
+      2: // EM (MJ/j)
+        d := cGammaEM;
+      3: // EN (MJ/j)
+        d := cGammaEN;
+      4: // MS (kg/j)
+        d := cGammaMS;
+      else
+        d := 1;
+    end;
+    // Nouvelle unit� (multiplicateur)
+    case CBUnite.ItemIndex of
+      0: // Quantit� (kg/j)
+        m := cGammaFrais;
+      1: // ED (MJ/j)
+        m := cGammaED;
+      2: // EM (MJ/j)
+        m := cGammaEM;
+      3: // EN (MJ/j)
+        m := cGammaEN;
+      4: // MS (kg/j)
+        m := cGammaMS;
+      else
+        m := 1;
+    end;
+    Modified := True;
+    PRationP.Rule[NumRule].Unite := CBUnite.ItemIndex;
+    if d <> m
+    then // Conversion
+    begin
+      Update := True;
+      RBIngere.Checked := True;
+      PBIng50.AsFloat := m * PBIng50.AsFloat / d;
+      PBIng100.AsFloat := m * PBIng100.AsFloat / d;
+      with PRationP.Rule[NumRule] do
+      begin
+        Ing50 := PBIng50.AsFloat * (1 - Gaspillage);
+        Ing100 := PBIng100.AsFloat * (1 - Gaspillage);
+        CalcCoef(EqPV, Unite, Ing50, Ing100, aPV, bPV);
+        PBaPV.AsFloat := aPV / (1 - Gaspillage);
+        if EqPV = 0
+        then // a+b*PV
+          PBbPV.AsFloat := bPV / (1 - Gaspillage)
+        else
+          PBbPV.AsFloat := bPV;
+      end;
+      Update := False;
+    end;
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.CBEqDureeChange(Sender: TObject);
+begin
+  PCoefDuree.Visible := (CBType.ItemIndex = 2) and (CBEqDuree.ItemIndex <> -1);
+  if not Update
+  then
+  begin
+    Modified := True;
+    PRationP.Rule[NumRule].EqDuree := CBEqDuree.ItemIndex;
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.CBEqPVChange(Sender: TObject);
+var
+  etat: Boolean;
+  Ing50, Ing100: Double;
+begin
+  etat := Update;
+  Update := True;
+  // Ajustement de la pr�cision des coefficients a et b
+  case CBEqPV.ItemIndex of
+    0: // a+b*PV
+      if (CBUnite.ItemIndex = 0) or (CBUnite.ItemIndex = 4)
+      then // kg (QI ou MS)
+      begin
+        PBaPV.Decimals := 3;
+        PBbPV.Decimals := 3;
+      end
+      else // MJ (ED, EM ou EN)
+      begin
+        PBaPV.Decimals := 2;
+        PBbPV.Decimals := 2;
+      end;
+    1: // a*PV^b
+    begin
+      if (CBUnite.ItemIndex = 0) or (CBUnite.ItemIndex = 4)
+      then // kg (QI ou MS)
+        PBaPV.Decimals := 4
+      else // MJ (ED, EM ou EN)
+        PBaPV.Decimals := 3;
+      PBbPV.Decimals := 4;
+    end;
+    2: // a*(1-exp(-b*PV))
+    begin
+      if (CBUnite.ItemIndex = 0) or (CBUnite.ItemIndex = 4)
+      then // kg (QI ou MS)
+        PBaPV.Decimals := 3
+      else // MJ (ED, EM ou EN)
+        PBaPV.Decimals := 2;
+      PBbPV.Decimals := 5;
+    end;
+  end;
+  Update := etat;
+  PCoefPV.Visible := (CBType.ItemIndex = 3) and (CBEqPV.ItemIndex <> -1);
+  if not Update
+  then
+  begin
+    Modified := True;
+    PRationP.Rule[NumRule].EqPV := CBEqPV.ItemIndex;
+    Update := True;
+    RBIngere.Checked := True;
+    with PRationP.Rule[NumRule] do
+    begin
+      Ing50 := PBIng50.AsFloat * (1 - Gaspillage);
+      Ing100 := PBIng100.AsFloat * (1 - Gaspillage);
+      CalcCoef(EqPV, Unite, Ing50, Ing100, aPV, bPV);
+      PBaPV.AsFloat := aPV / (1 - Gaspillage);
+      if EqPV = 0
+      then // a+b*PV
+        PBbPV.AsFloat := bPV / (1 - Gaspillage)
+      else
+        PBbPV.AsFloat := bPV;
+    end;
+    Update := False;
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.PBPercentChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PRationP.Rule[NumRule].Percent := PBPercent.AsInteger / 100;
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.PBQuantiteChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PRationP.Rule[NumRule].Quantity := PBQuantite.AsFloat * (1 - PRationP.Rule[NumRule].Gaspillage);
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.PBaDureeChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PRationP.Rule[NumRule].aDuree := PBaDuree.AsFloat * (1 - PRationP.Rule[NumRule].Gaspillage);
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.PBbDureeChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PRationP.Rule[NumRule].bDuree := PBbDuree.AsFloat * (1 - PRationP.Rule[NumRule].Gaspillage);
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.RBCoefClick(Sender: TObject);
+begin
+  PBaPV.Enabled := RBCoef.Checked;
+  PBbPV.Enabled := RBCoef.Checked;
+  PBIng50.Enabled := RBIngere.Checked;
+  PBIng100.Enabled := RBIngere.Checked;
+end;
+
+procedure TFRationP.PBaPVChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PRationP.Rule[NumRule].aPV := PBaPV.AsFloat * (1 - PRationP.Rule[NumRule].Gaspillage);
+    Update := True;
+    with PRationP.Rule[NumRule] do
+    begin
+      PBIng50.AsFloat := CalcIngere(EqPV, Unite, PBaPV.AsFloat, PBbPV.AsFloat, 50);
+      PBIng100.AsFloat := CalcIngere(EqPV, Unite, PBaPV.AsFloat, PBbPV.AsFloat, 100);
+    end;
+    Update := False;
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.PBbPVChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    if CBEqPV.ItemIndex = 0
+    then // a+b*PV
+      PRationP.Rule[NumRule].bPV := PBbPV.AsFloat * (1 - PRationP.Rule[NumRule].Gaspillage)
+    else
+      PRationP.Rule[NumRule].bPV := PBbPV.AsFloat;
+    Update := True;
+    with PRationP.Rule[NumRule] do
+    begin
+      PBIng50.AsFloat := CalcIngere(EqPV, Unite, PBaPV.AsFloat, PBbPV.AsFloat, 50);
+      PBIng100.AsFloat := CalcIngere(EqPV, Unite, PBaPV.AsFloat, PBbPV.AsFloat, 100);
+    end;
+    Update := False;
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.PBIng50Change(Sender: TObject);
+var
+  Ing50, Ing100: Double;
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    Update := True;
+    with PRationP.Rule[NumRule] do
+    begin
+      Ing50 := PBIng50.AsFloat * (1 - Gaspillage);
+      Ing100 := PBIng100.AsFloat * (1 - Gaspillage);
+      CalcCoef(EqPV, Unite, Ing50, Ing100, aPV, bPV);
+      PBaPV.AsFloat := aPV / (1 - Gaspillage);
+      if EqPV = 0
+      then // a+b*PV
+        PBbPV.AsFloat := bPV / (1 - Gaspillage)
+      else
+        PBbPV.AsFloat := bPV;
+    end;
+    Update := False;
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+procedure TFRationP.PBIng100Change(Sender: TObject);
+var
+  Ing50, Ing100: Double;
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    Update := True;
+    with PRationP.Rule[NumRule] do
+    begin
+      Ing50 := PBIng50.AsFloat * (1 - Gaspillage);
+      Ing100 := PBIng100.AsFloat * (1 - Gaspillage);
+      CalcCoef(EqPV, Unite, Ing50, Ing100, aPV, bPV);
+      PBaPV.AsFloat := aPV / (1 - Gaspillage);
+      if EqPV = 0
+      then // a+b*PV
+        PBbPV.AsFloat := bPV / (1 - Gaspillage)
+      else
+        PBbPV.AsFloat := bPV;
+    end;
+    Update := False;
+    LBRule.Repaint;
+    CBSimChange(nil);
+  end;
+end;
+
+function TFRationP.StrModeFin(n: integer): String;
+begin
+  if n = PRationP.NbRule
+  then // Fin de simulation
+    result := _('End of simulation')
+  else
+    with PRationP.Rule[n] do
+      case ModeFin of
+        0, 1, 2, 3 : // Dur�e, Age, Poids vif ou Cumul aliment
+          result := Format('%s=%1.0f', [CBModeFin.Items[ModeFin], ValFin]);
+        4..8 : // Consommation
+          result := Format('%s=%s', [CBModeFin.Items[ModeFin], DblToStr(ValFin, 3)]);
+        else
+          result := '';
+      end;
+end;
+
+function TFRationP.StrEquation(n: integer): String;
+begin
+  with PRationP.Rule[n] do
+    case RuleType of
+      0: // % Ad libitum
+        result := Format('%1.0f%% %s', [Percent * 100, StrAdLib]);
+      1: // Constant
+        if (Unite = 0) or (Unite = 4)
+        then // kg (QI ou MS)
+          result := Format('%s=%s', [CBUnite.Items[Unite], DblToStr(Quantity / (1 - Gaspillage), 3)])
+        else // MJ (ED, EM ou EN)
+          result := Format('%s=%s', [CBUnite.Items[Unite], DblToStr(Quantity / (1 - Gaspillage), 2)]);
+      2: // f(dur�e)
+        case EqDuree of
+          0: // a+b*jour
+            if (Unite = 0) or (Unite = 4)
+            then // kg (QI ou MS)
+              result := Format('%s=%s+%s*%s', [CBUnite.Items[Unite], DblToStr(aDuree / (1 - Gaspillage), 3), DblToStr (bDuree / (1 - Gaspillage), 2), _('Day')])
+            else // MJ (ED, EM ou EN)
+              result := Format('%s=%s+%s*%s', [CBUnite.Items[Unite], DblToStr(aDuree / (1 - Gaspillage), 2), DblToStr (bDuree / (1 - Gaspillage), 3), _('Day')]);
+          1: // a+b*semaine
+            if (Unite = 0) or (Unite = 4)
+            then // kg (QI ou MS)
+              result := Format('%s=%s+%s*%s', [CBUnite.Items[Unite], DblToStr(aDuree / (1 - Gaspillage), 3), DblToStr (bDuree / (1 - Gaspillage), 2), _('Week')])
+            else // MJ (ED, EM ou EN)
+              result := Format('%s=%s+%s*%s', [CBUnite.Items[Unite], DblToStr(aDuree / (1 - Gaspillage), 2), DblToStr (bDuree / (1 - Gaspillage), 3), _('Week')]);
+          else
+            result := '';
+        end;
+      3: // f(poids vif)
+        case EqPV of
+          0: // a+b*PV
+            if (Unite = 0) or (Unite = 4)
+            then // kg (QI ou MS)
+              result := Format('%s=%s+%s*%s', [CBUnite.Items[Unite], DblToStr(aPV / (1 - Gaspillage), 3), DblToStr(bPV / (1 - Gaspillage), 2), _('BW')])
+            else // MJ (ED, EM ou EN)
+              result := Format('%s=%s+%s*%s', [CBUnite.Items[Unite], DblToStr(aPV / (1 - Gaspillage), 2), DblToStr(bPV / (1 - Gaspillage), 3), _('BW')]);
+          1: // a*PV^b
+            if (Unite = 0) or (Unite = 4)
+            then // kg (QI ou MS)
+              result := Format('%s=%s*%s^%s', [CBUnite.Items[Unite], DblToStr(aPV / (1 - Gaspillage), 4), _('BW'), DblToStr(bPV, 4)])
+            else // MJ (ED, EM ou EN)
+              result := Format('%s=%s*%s^%s', [CBUnite.Items[Unite], DblToStr(aPV / (1 - Gaspillage), 3), _('BW'), DblToStr(bPV, 4)]);
+          2: // a*(1-exp(-b*PV))
+            if (Unite = 0) or (Unite = 4)
+            then // kg (QI ou MS)
+              result := Format('%s=%s*(1-exp(-%s*%s))', [CBUnite.Items[Unite], DblToStr(aPV / (1 - Gaspillage), 3), DblToStr(bPV, 5), _('BW')])
+            else // MJ (ED, EM ou EN)
+              result := Format('%s=%s*(1-exp(-%s*%s))', [CBUnite.Items[Unite], DblToStr(aPV / (1 - Gaspillage), 2), DblToStr(bPV, 5), _('BW')]);
+          else
+            result := '';
+        end;
+      else
+        result := '';
+    end;
+end;
+
+procedure TFRationP.AffGraph;
+var
+  j: integer;
+
+  // Abscisse
+  function X: double;
+  begin
+    case CBX.ItemIndex of
+      0: // Poids vif
+        result := PResSimulP.TabResult[2, j];
+      1: // Age
+        result := PResSimulP.TabResult[1, j];
+      2: // Jours
+        result := j;
+      3: // Semaines
+        result := j / 7;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e
+  function Y: double;
+  begin
+    case CBY.ItemIndex of
+      0: // QI
+        result := PResSimulP.TabResult[113, j];
+      1: // MS
+        result := PResSimulP.TabResult[106, j] * PResSimulP.TabResult[113, j];
+      2: // ED
+        result := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[113, j];
+      3: // EM
+        result := PResSimulP.TabResult[89, j] * PResSimulP.TabResult[113, j];
+      4: // EN
+        result := PResSimulP.TabResult[90, j] * PResSimulP.TabResult[113, j];
+      else
+        result := 0;
+    end;
+  end;
+
+// AffGraph
+begin
+  Graph.LeftAxis.Title.Caption := CBY.Text;
+  Graph.BottomAxis.Title.Caption := CBX.Text;
+  SeriesLigne.Clear;
+  if (CBSim.ItemIndex <> -1) and RationPValid (PRationP)
+  then // Affichage de la ligne
+    for j := 1 to PResSimulP.NbJSim do
+      SeriesLigne.AddXY (X, Y, '', clTeeColor);
+  if CBX.ItemIndex = 3
+  then
+    Graph.BottomAxis.Increment := 1
+  else
+    Graph.BottomAxis.Increment := 10;
+  AjustEchelle(Graph);
+end;
+
+procedure TFRationP.CBXChange(Sender: TObject);
+begin
+  AffGraph;
+end;
+
+procedure TFRationP.CBYChange(Sender: TObject);
+begin
+  AffGraph;
+end;
+
+procedure TFRationP.CBSimChange(Sender: TObject);
+begin
+  if RationPValid(PRationP) and (CBSim.ItemIndex <> -1)
+  then
+  begin
+    PSimulP := ListSimulP[FindIdxSimulP(CBSim.Text)];
+    CBSim.Hint := PSimulP.Memo ;
+    LProfilRef.Caption := Format(StrRationProfil, [FindNomProfilP(PSimulP.Profil)]);
+    LSeqAliRef.Caption := Format(StrRationSeqAli, [FindNomSeqAliP(PSimulP.SeqAli)]);
+    CalcSimulP(PSimulP.Num, -1, -1, PRationP.Num, -1, 1, {1,} PResSimulP);
+  end
+  else
+  begin
+    CBSim.Hint := '';
+    LProfilRef.Caption := '';
+    LSeqAliRef.Caption := '';
+  end ;
+  AffGraph;
+end;
+
+end.
Index: UFSimulT.pas
===================================================================
--- UFSimulT.pas	(révision 0)
+++ UFSimulT.pas	(révision 3)
@@ -0,0 +1,1329 @@
+unit UFSimulT ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls, PBNumEdit, PBSuperSpin, 
+  JvExControls, JvComponent, JvEnterTab, UVariables, gnugettext;
+
+type
+  TFSimulT = class(TForm)
+    PC: TPageControl;
+    ResSimul: TTabSheet;
+    CompSimul: TTabSheet;
+    SensSimul: TTabSheet;
+    GBSimul: TGroupBox;
+    SBAddSimul: TSpeedButton;
+    SBDelSimul: TSpeedButton;
+    CBSimul: TComboBox;
+    CBProfil: TComboBox;
+    CBRation: TComboBox;
+    CBSeqAli: TComboBox;
+    CBCompSimul1: TCheckBox;
+    CBCompSimul2: TCheckBox;
+    CBCompSimul3: TCheckBox;
+    CBCompSimul4: TCheckBox;
+    CBCompSimul5: TCheckBox;
+    LVariable: TLabel;
+    LVariation: TLabel;
+    PBVariation: TPBSuperSpin;
+    LProfil: TLabel;
+    LSeqAli: TLabel;
+    LRation: TLabel;
+    PSimul: TPanel;
+    BBResSimul: TBitBtn;
+    BBTabSimul: TBitBtn;
+    SBRename: TSpeedButton;
+    SBComment: TSpeedButton;
+    BBRapSimul: TBitBtn;
+    PResSimul: TPanel;
+    CBSimulSens: TComboBox;
+    LSimulSens: TLabel;
+    PSensSimul: TPanel;
+    BBSensSimul: TBitBtn;
+    CBSimulComp1: TComboBox;
+    CBSimulComp2: TComboBox;
+    CBSimulComp3: TComboBox;
+    CBSimulComp4: TComboBox;
+    CBSimulComp5: TComboBox;
+    PCompSimul: TPanel;
+    BBCompSimul: TBitBtn;
+    GBAlim: TGroupBox;
+    GBFin: TGroupBox;
+    GBInit: TGroupBox;
+    PCenter: TPanel;
+    PLeft: TPanel;
+    GBParam: TGroupBox;
+    LLoge: TLabel;
+    CBLoge: TComboBox;
+    LDureeLact: TLabel;
+    LPorteeInit: TLabel;
+    LPorteeFin: TLabel;
+    CBStadeInit: TComboBox;
+    CBStadeFin: TComboBox;
+    LBPortee: TListBox;
+    PBDureeLact: TPBSuperSpin;
+    PBPorteeInit: TPBSuperSpin;
+    PBPorteeFin: TPBSuperSpin;
+    PAlim: TPanel;
+    LOptInit: TLabel;
+    CBOptInit: TComboBox;
+    CBVariable: TComboBox;
+    GBEtatVar: TGroupBox;
+    LPorteeVar: TLabel;
+    CBStadeVar: TComboBox;
+    PBPorteeVarInit: TPBSuperSpin;
+    PBPorteeVarFin: TPBSuperSpin;
+    LAVar: TLabel;
+    LStadeVar: TLabel;
+    GBModulation: TGroupBox;
+    SBSave: TSpeedButton;
+    ChkSeqAli: TCheckBox;
+    ChkRation: TCheckBox;
+    CBRationProfil: TComboBox;
+    JvEnterAsTab: TJvEnterAsTab;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure CBSimulChange(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure FormDeactivate(Sender: TObject);
+    procedure SBAddSimulClick(Sender: TObject);
+    procedure SBDelSimulClick(Sender: TObject);
+    procedure PCChange(Sender: TObject);
+    procedure BBResSimulClick(Sender: TObject);
+    procedure BBCompSimulClick(Sender: TObject);
+    procedure BBSensSimulClick(Sender: TObject);
+    procedure CBProfilChange(Sender: TObject);
+    procedure CBRationChange(Sender: TObject);
+    procedure CBSeqAliChange(Sender: TObject);
+    procedure CBCompSimul1Click(Sender: TObject);
+    procedure CBCompSimul2Click(Sender: TObject);
+    procedure CBCompSimul3Click(Sender: TObject);
+    procedure CBCompSimul4Click(Sender: TObject);
+    procedure CBCompSimul5Click(Sender: TObject);
+    procedure BBTabSimulClick(Sender: TObject);
+    procedure SBRenameClick(Sender: TObject);
+    procedure SBCommentClick(Sender: TObject);
+    procedure BBRapSimulClick(Sender: TObject);
+    procedure CBSimulSensChange(Sender: TObject);
+    procedure CBSimulComp1Change(Sender: TObject);
+    procedure CBSimulComp2Change(Sender: TObject);
+    procedure CBSimulComp3Change(Sender: TObject);
+    procedure CBSimulComp4Change(Sender: TObject);
+    procedure CBSimulComp5Change(Sender: TObject);
+    procedure LBPorteeDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure LBPorteeClick(Sender: TObject);
+    procedure PBDureeLactChange(Sender: TObject);
+    procedure PBPorteeInitChange(Sender: TObject);
+    procedure PBPorteeFinChange(Sender: TObject);
+    procedure CBStadeInitChange(Sender: TObject);
+    procedure CBStadeFinChange(Sender: TObject);
+    procedure CBLogeChange(Sender: TObject);
+    procedure CBOptInitChange(Sender: TObject);
+    procedure CBVariableChange(Sender: TObject);
+    procedure PBPorteeVarInitChange(Sender: TObject);
+    procedure PBPorteeVarFinChange(Sender: TObject);
+    procedure SBSaveClick(Sender: TObject);
+    procedure BBRapSensSimulClick(Sender: TObject);
+    procedure BBRapCompSimulClick(Sender: TObject);
+    procedure ChkSeqAliClick(Sender: TObject);
+    procedure ChkRationClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified, Modal: boolean;
+    IdxSimulT: integer;
+    procedure Save;
+    procedure ValidBBResSimul;
+    procedure ValidBBCompSimul;
+    procedure ValidBBSensSimul;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FSimulT: TFSimulT;
+
+implementation
+
+uses
+  UStrings, UInit, UUtil, UFindRec, UFComment, UCalcSimulT, UFResSimulT,
+  UFRapSimulT, {UFTabSimulT,} UFCompSimulT, UFWarning;
+
+{$R *.dfm}
+
+{ TFSimulT }
+
+procedure TFSimulT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 624 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 396 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  CBOptInit.ItemIndex := 0;
+  CBRationProfil.ItemIndex := 0;
+  CBStadeVar.ItemIndex := 0;
+end;
+
+procedure TFSimulT.FormShow(Sender: TObject);
+begin
+  Modified := False;
+  Modal := False;
+  PC.ActivePageIndex := 0;
+  // Simualtion simple
+  StringsSimulT(CBSimul.Items, True);
+  SBAddSimul.Enabled := IsComplete or (ListSimulT.Count < 5);
+  SBSave.Enabled := IsComplete or IsEducation;
+  // Comparaison
+  StringsSimulT(CBSimulComp1.Items, False);
+  StringsSimulT(CBSimulComp2.Items, False);
+  StringsSimulT(CBSimulComp3.Items, False);
+  StringsSimulT(CBSimulComp4.Items, False);
+  StringsSimulT(CBSimulComp5.Items, False);
+  // Sensibilit�
+  StringsSimulT(CBSimulSens.Items, False);
+  PBPorteeVarInit.AsInteger := 1;
+  PBPorteeVarFin.AsInteger := 8;
+  IdxSimulT := -1;
+//  CBSimulChange(nil);
+end;
+
+procedure TFSimulT.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if Modified then Save;
+  Action := caFree;
+  NumWinSimulT := -1;
+end;
+
+procedure TFSimulT.FormActivate(Sender: TObject);
+begin
+  if not Modal
+  then
+  begin
+    StringsProfilT(CBProfil.Items, False);
+    StringsLogeT(CBLoge.Items, False);
+    StringsSeqAliT(CBSeqAli.Items, False);
+    StringsRationT(CBRation.Items, False);
+    PCChange(nil);
+    PSimul.Enabled := IsComplete or IsEducation or IsEvaluation;
+  end;
+end;
+
+procedure TFSimulT.FormDeactivate(Sender: TObject);
+begin
+  if Modified and not Modal then Save;
+end;
+
+procedure TFSimulT.PCChange(Sender: TObject);
+begin
+//  if Modified then Save;
+  case PC.ActivePageIndex of
+    0: // Simulation simple
+      CBSimulChange(nil);
+    1: // Comparaison
+    begin
+      StringsSimulT(CBSimulComp1.Items, False);
+      CBSimulComp1Change(nil);
+      StringsSimulT(CBSimulComp2.Items, False);
+      CBSimulComp2Change(nil);
+      StringsSimulT(CBSimulComp3.Items, False);
+      CBSimulComp3Change(nil);
+      StringsSimulT(CBSimulComp4.Items, False);
+      CBSimulComp4Change(nil);
+      StringsSimulT(CBSimulComp5.Items, False);
+      CBSimulComp5Change(nil);
+    end;
+    2: // Sensibilit�
+    begin
+      StringsSimulT(CBSimulSens.Items, False);
+      CBSimulSensChange(nil);
+    end;
+  end;
+end;
+
+// Simulation simple
+
+procedure TFSimulT.Save;
+var
+  s: string;
+begin
+  Modified := False;
+  if IsComplete or IsEducation
+  then
+    if MessageDlg(Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      SaveSimulT;
+      if not SimulTValid(PSimulT)
+      then
+        MessageDlg(Format(MsgInvalidData, [Caption, PSimulT.Nom]), mtWarning, [mbOK], 0);
+      // Comparaison
+      StringsSimulT(CBSimulComp1.Items, False);
+      StringsSimulT(CBSimulComp2.Items, False);
+      StringsSimulT(CBSimulComp3.Items, False);
+      StringsSimulT(CBSimulComp4.Items, False);
+      StringsSimulT(CBSimulComp5.Items, False);
+      // Sensibilit�
+      StringsSimulT(CBSimulSens.Items, False);
+    end
+    else
+    begin
+      LoadSimulT;
+      s := CBSimul.Text;
+      StringsSimulT(CBSimul.Items, True);
+      if FindIdxSimulT(s) = -1
+      then
+      begin
+        IdxSimulT := -1;
+        CBSimulChange(nil);
+      end
+      else
+        CBSimul.ItemIndex := CBSimul.Items.IndexOf(s);
+    end;
+end;
+
+procedure TFSimulT.CBSimulChange(Sender: TObject);
+begin
+  if (IdxSimulT <> -1) and (CBSimul.Text <> PSimulT.Nom)
+  then
+    if Modified then Save;
+  IdxSimulT := FindIdxSimulT (CBSimul.Text);
+  if IdxSimulT = -1
+  then // Pas d'enregistrement
+  begin
+    CBSimul.Repaint ;
+    SBDelSimul.Enabled := FALSE ;
+    SBRename.Enabled := FALSE ;
+    SBComment.Enabled := FALSE ;
+    SBSave.Enabled := FALSE ;
+    PSimul.Visible := FALSE ;
+    BBResSimul.Enabled := FALSE ;
+    BBRapSimul.Enabled := FALSE ;
+    BBTabSimul.Enabled := FALSE ;
+  end
+  else // Affichage de l'enregistrement
+  begin
+    SBDelSimul.Enabled := TRUE ;
+    SBRename.Enabled := TRUE ;
+    SBComment.Enabled := TRUE ;
+    SBSave.Enabled := TRUE ;
+    PSimul.Visible := TRUE ;
+    PSimulT := ListSimulT[IdxSimulT] ;
+    with PSimulT^ do
+    begin
+      Update := TRUE ;
+      CBSimul.Hint := Memo ;
+      if Profil = -1
+      then
+        CBProfil.ItemIndex := -1
+      else
+        CBProfil.ItemIndex := CBProfil.Items.IndexOf (FindNomProfilT (Profil)) ;
+      if CBProfil.ItemIndex = -1
+      then
+        CBProfil.Hint := ''
+      else
+      begin
+        PProfilT := ListProfilT[FindIdxProfilT (CBProfil.Text)] ;
+        CBProfil.Hint := PProfilT.Memo ;
+      end ;
+      if Logement = -1
+      then
+        CBLoge.ItemIndex := -1
+      else
+        CBLoge.ItemIndex := CBLoge.Items.IndexOf (FindNomLogeT (Logement)) ;
+      if CBLoge.ItemIndex = -1
+      then
+        CBLoge.Hint := ''
+      else
+      begin
+        PLogeT := ListLogeT[FindIdxLogeT (CBLoge.Text)] ;
+        CBLoge.Hint := PLogeT.Memo ;
+      end ;
+      PBDureeLact.AsInteger := DureeLact ;
+      CBOptInit.ItemIndex := OptInit ;
+      PBPorteeInit.AsInteger := StadeInit div 3 + 1 ;
+      CBStadeInit.ItemIndex := StadeInit mod 3 ;
+      PBPorteeFin.AsInteger := StadeFin div 3 + 1 ;
+      CBStadeFin.ItemIndex := StadeFin mod 3 ;
+      LBPortee.ItemIndex := -1 ;
+      LBPorteeClick (nil) ;
+      LBPortee.Repaint ;
+      Update := FALSE ;
+    end ;
+    ValidBBResSimul;
+  end;
+end;
+
+procedure TFSimulT.SBAddSimulClick (Sender : TObject) ;
+var
+  i, n, q : integer ;
+  s : string ;
+  ok : boolean ;
+  PBackup : PRecSimulT ;
+begin
+  if Modified then Save ;
+  if IdxSimulT = -1
+  then
+    q := mrNo
+  else
+    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
+  // saisie du nouveau nom
+  s := '' ;
+  repeat
+    if InputQuery (FSimulT.Caption, MsgName, s)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListSimulT.Count) do
+          begin
+            PSimulT := ListSimulT[i] ;
+            if PSimulT.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      if (IdxSimulT <> -1)
+      then
+        PSimulT := ListSimulT[IdxSimulT] ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  if s <> ''
+  then // Cr�ation du nouvel enregistrement
+  begin
+    // recherche du premier num�ro libre
+    n := 0 ;
+    repeat
+      Inc (n) ;
+      ok := TRUE ;
+      i := 0 ;
+      while ok and (i < ListSimulT.Count) do
+      begin
+        PSimulT := ListSimulT[i] ;
+        if PSimulT.Num = n
+        then
+          ok := FALSE
+        else
+          Inc (i) ;
+      end ;
+    until ok ;
+    New (PSimulT) ;
+    with PSimulT^ do
+    begin
+      Nom := s ;
+      Num := n ;
+      if q = mrYes
+      then
+      begin
+        PBackup := ListSimulT[IdxSimulT] ;
+        Memo := PBackup.Memo ;
+        Profil := PBackup.Profil ;
+        Logement := PBackup.Logement ;
+        DureeLact := PBackup.DureeLact ;
+        DureeISSF := PBackup.DureeISSF ; // DureeISSF n'est plus utilis�
+        OptInit := PBackup.OptInit ;
+        StadeInit := PBackup.StadeInit ;
+        StadeFin := PBackup.StadeFin ;
+        SeqAli := PBackup.SeqAli ;
+        Ration := PBackup.Ration ;
+      end
+      else
+      begin
+        Memo := '' ;
+        Profil := -1 ;
+        Logement := -1 ;
+        DureeLact := 28 ;
+        DureeISSF := 5 ; // DureeISSF n'est plus utilis�
+        OptInit := 0 ;
+        StadeInit := 0 ;
+        StadeFin := 2 ;
+        for i := 1 to NB_CYCLES do
+          SeqAli[i] := -1 ;
+        for i := 1 to NB_CYCLES do
+          Ration[i] := -1 ;
+      end ;
+    end ;
+    ListSimulT.Add (PSimulT) ;
+    CBSimul.Items.Add (PSimulT.Nom) ;
+    CBSimul.ItemIndex := CBSimul.Items.IndexOf (PSimulT.Nom) ;
+    CBSimulChange (nil) ;
+    Modified := TRUE ;
+    SBAddSimul.Enabled := IsComplete or (ListSimulT.Count < 5) ;
+    SBCommentClick (nil) ;
+  end ;
+end ;
+
+procedure TFSimulT.SBDelSimulClick (Sender : TObject) ;
+begin
+  if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+  then
+  begin
+    Dispose (PSimulT) ;
+    ListSimulT.Delete (IdxSimulT) ;
+    SaveSimulT ; // Sauvegarde !
+    Modified := FALSE ;
+    CBSimul.DeleteSelected ;
+    IdxSimulT := -1 ;
+    CBSimul.ItemIndex := -1 ;
+    CBSimulChange (nil) ;
+    SBAddSimul.Enabled := IsComplete or (ListSimulT.Count < 5) ;
+  end ;
+end ;
+
+procedure TFSimulT.SBRenameClick (Sender : TObject) ;
+var
+  i : integer ;
+  s : string ;
+  ok : boolean ;
+begin
+  // Saisie du nouveau nom
+  s := CBSimul.Text ;
+  repeat
+    if InputQuery (FSimulT.Caption, MsgRename, s) and (s <> CBSimul.Text)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListSimulT.Count) do
+          begin
+            PSimulT := ListSimulT[i] ;
+            if PSimulT.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  PSimulT := ListSimulT[IdxSimulT] ;
+  if s <> ''
+  then // Renommer l'enregistrement
+  begin
+    PSimulT.Nom := s ;
+    Modified := TRUE ;
+    StringsSimulT (CBSimul.Items, TRUE) ;
+    CBSimul.ItemIndex := CBSimul.Items.IndexOf (s) ;
+  end ;
+end ;
+
+procedure TFSimulT.SBCommentClick (Sender : TObject) ;
+begin
+  // Saisie du commentaire
+  FComment := TFComment.Create (Self) ;
+  with FComment do
+  begin
+    Memo.Text := PSimulT.Memo ;
+    if ShowModal = mrOk
+    then // Commenter l'enregistrement
+    begin
+      PSimulT.Memo := Memo.Text ;
+      Modified := TRUE ;
+      CBSimul.Hint := PSimulT.Memo ;
+    end ;
+    Release ;
+  end ;
+end ;
+
+procedure TFSimulT.SBSaveClick(Sender: TObject);
+begin
+  SaveSimulT ;
+  if not SimulTValid (PSimulT)
+  then
+    MessageDlg(Format (MsgInvalidData, [Caption, PSimulT.Nom]), mtWarning, [mbOK], 0) ;
+  Modified := FALSE ;
+end;
+
+procedure TFSimulT.CBProfilChange (Sender : TObject) ;
+begin
+  if CBProfil.ItemIndex = -1
+  then
+    CBProfil.Hint := ''
+  else
+  begin
+    PProfilT := ListProfilT[FindIdxProfilT (CBProfil.Text)] ;
+    CBProfil.Hint := PProfilT.Memo ;
+  end ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulT.Profil := FindNumProfilT (CBProfil.Text) ;
+    PBDureeLact.AsInteger := PProfilT.DureeLact ;
+    ValidBBResSimul ;
+  end ;
+end ;
+
+procedure TFSimulT.CBLogeChange (Sender : TObject) ;
+begin
+  if CBLoge.ItemIndex = -1
+  then
+    CBLoge.Hint := ''
+  else
+  begin
+    PLogeT := ListLogeT[FindIdxLogeT (CBLoge.Text)] ;
+    CBLoge.Hint := PLogeT.Memo ;
+  end ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulT.Logement := FindNumLogeT (CBLoge.Text) ;
+    ValidBBResSimul ;
+  end ;
+end ;
+
+procedure TFSimulT.PBDureeLactChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulT.DureeLact := PBDureeLact.AsInteger ;
+  end ;
+end ;
+
+procedure TFSimulT.CBOptInitChange (Sender : TObject) ;
+begin
+  if CBOptInit.ItemIndex = 2
+  then // Au d�part seulement
+    if AffOptInit
+    then
+    begin
+      FWarning := TFWarning.Create (Self) ;
+      with FWarning do
+      begin
+        Msg := 'OptInit';
+        ShowModal ;
+        Release ;
+        AffOptInit := FALSE ;
+      end ;
+    end ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulT.OptInit := CBOptInit.ItemIndex ;
+  end ;
+end ;
+
+procedure TFSimulT.PBPorteeInitChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulT.StadeInit := (PBPorteeInit.AsInteger - 1) * 3
+      + CBStadeInit.ItemIndex ;
+    if PSimulT.StadeInit >= PSimulT.StadeFin
+    then
+      if PSimulT.StadeFin >= 21
+      then // Port�e 8
+      begin
+        PSimulT.StadeFin := PSimulT.StadeFin + 1 ;
+        Update := TRUE ;
+        CBStadeFin.ItemIndex := PSimulT.StadeFin mod 3 ;
+        Update := FALSE ;
+      end
+      else
+      begin
+        PSimulT.StadeFin := PSimulT.StadeFin + 3 ;
+        Update := TRUE ;
+        PBPorteeFin.AsInteger := PSimulT.StadeFin div 3 + 1 ;
+        Update := FALSE ;
+      end ;
+    LBPortee.Repaint ;
+  end ;
+end ;
+
+procedure TFSimulT.CBStadeInitChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulT.StadeInit := (PBPorteeInit.AsInteger - 1) * 3
+      + CBStadeInit.ItemIndex ;
+    if PSimulT.StadeInit >= PSimulT.StadeFin
+    then
+      if PSimulT.StadeFin mod 3 = 2
+      then // Sevrage
+      begin
+        PSimulT.StadeFin := PSimulT.StadeFin + 3 ;
+        Update := TRUE ;
+        PBPorteeFin.AsInteger := PSimulT.StadeFin div 3 + 1 ;
+        Update := FALSE ;
+      end
+      else
+      begin
+        PSimulT.StadeFin := PSimulT.StadeFin + 1 ;
+        Update := TRUE ;
+        CBStadeFin.ItemIndex := PSimulT.StadeFin mod 3 ;
+        Update := FALSE ;
+      end ;
+    LBPortee.Repaint ;
+  end ;
+end ;
+
+procedure TFSimulT.PBPorteeFinChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulT.StadeFin := (PBPorteeFin.AsInteger - 1) * 3
+      + CBStadeFin.ItemIndex ;
+    if PSimulT.StadeInit >= PSimulT.StadeFin
+    then
+      if PSimulT.StadeFin div 3 = PSimulT.StadeInit div 3
+      then
+      begin
+        PSimulT.StadeFin := PSimulT.StadeInit + 1 ;
+        Update := TRUE ;
+        CBStadeFin.ItemIndex := PSimulT.StadeFin mod 3 ;
+        Update := FALSE ;
+      end
+      else
+      begin
+        PSimulT.StadeFin := PSimulT.StadeFin + 3 ;
+        Update := TRUE ;
+        PBPorteeFin.AsInteger := PSimulT.StadeFin div 3 + 1 ;
+        Update := FALSE ;
+      end ;
+    LBPortee.Repaint ;
+  end ;
+end ;
+
+procedure TFSimulT.CBStadeFinChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulT.StadeFin := (PBPorteeFin.AsInteger - 1) * 3
+      + CBStadeFin.ItemIndex ;
+    if PSimulT.StadeInit >= PSimulT.StadeFin
+    then
+      if PSimulT.StadeFin >= 21
+      then // Port�e 8
+      begin
+        PSimulT.StadeFin := PSimulT.StadeInit + 1 ;
+        Update := TRUE ;
+        CBStadeFin.ItemIndex := PSimulT.StadeFin mod 3 ;
+        Update := FALSE ;
+      end
+      else
+      begin
+        PSimulT.StadeFin := PSimulT.StadeFin + 3 ;
+        Update := TRUE ;
+        PBPorteeFin.AsInteger := PSimulT.StadeFin div 3 + 1 ;
+        Update := FALSE ;
+      end ;
+    LBPortee.Repaint ;
+  end ;
+end ;
+
+procedure TFSimulT.LBPorteeDrawItem (Control : TWinControl ; Index : Integer ;
+  Rect : TRect ; State : TOwnerDrawState) ;
+begin
+  with (Control as TListBox).Canvas do
+  begin
+    // Cadre principal
+    FillRect (Rect) ;
+//    if (PSimulT.SeqAli[Index + 1] = -1) or (PSimulT.Ration[Index + 1] = -1)
+//    then
+//      Font.Color := clRed
+//    else
+      if (odSelected in State)
+      then
+        Font.Color := clYellow
+      else
+        Font.Color := clBlue ;
+    // ISSF
+    if (Index * 3 + 2 >= PSimulT.StadeInit)
+      and (Index * 3 + 2 < PSimulT.StadeFin)
+    then
+      TextRect (Rect, Rect.Left + 240, Rect.Top, StrISSF) ;
+    Rect.Right := 240 ;
+    // Lactation
+    if (Index * 3 + 1 >= PSimulT.StadeInit)
+      and (Index * 3 + 1 < PSimulT.StadeFin)
+    then
+      TextRect (Rect, Rect.Left + 160, Rect.Top, StrLactation) ;
+    Rect.Right := 160 ;
+    // Gestation
+    if (Index * 3 >= PSimulT.StadeInit)
+      and (Index * 3 < PSimulT.StadeFin)
+    then
+      TextRect (Rect, Rect.Left + 80, Rect.Top, StrGestation) ;
+    Rect.Right := 80 ;
+    // Texte
+    if (odSelected in State)
+    then
+      Font.Color := clWhite
+    else
+      Font.Color := clBlack ;
+    TextRect (Rect, Rect.Left, Rect.Top, LBPortee.Items[Index]) ;
+  end ;
+end ;
+
+procedure TFSimulT.LBPorteeClick (Sender : TObject) ;
+begin
+  if LBPortee.ItemIndex = -1
+  then
+    LBPortee.ItemIndex := PBPorteeInit.AsInteger - 1 ;
+  Update := TRUE ;
+  ChkSeqAli.Checked := (PSimulT.SeqAli[LBPortee.ItemIndex + 1] = -1) ;
+  ChkRation.Checked := (PSimulT.Ration[LBPortee.ItemIndex + 1] = -1) ;
+  if PSimulT.Profil = -1
+  then
+    CBSeqAli.ItemIndex := -1
+  else
+    if ChkSeqAli.Checked
+    then
+      CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliT (PProfilT.SeqAli))
+    else
+      CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliT (PSimulT.SeqAli[LBPortee.ItemIndex + 1])) ;
+  CBSeqAliChange (nil) ;
+  if ChkRation.Checked
+  then
+    CBRation.ItemIndex := -1
+  else
+    CBRation.ItemIndex := CBRation.Items.IndexOf (FindNomRationT (PSimulT.Ration[LBPortee.ItemIndex + 1])) ;
+  CBRationChange (nil) ;
+  Update := FALSE ;
+end ;
+
+procedure TFSimulT.CBSeqAliChange (Sender : TObject) ;
+begin
+  if CBSeqAli.ItemIndex = -1
+  then
+    CBSeqAli.Hint := ''
+  else
+  begin
+    PSeqAliT := ListSeqAliT[FindIdxSeqAliT (CBSeqAli.Text)] ;
+    CBSeqAli.Hint := PSeqAliT.Memo ;
+  end ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulT.SeqAli[LBPortee.ItemIndex + 1] := FindNumSeqAliT (CBSeqAli.Text) ;
+//    LBPortee.Repaint ;
+  end ;
+end ;
+
+procedure TFSimulT.ChkSeqAliClick(Sender: TObject);
+begin
+  CBSeqAli.Enabled := not ChkSeqAli.Checked ;
+  if ChkSeqAli.Checked
+  then
+    if not Update
+    then
+    begin
+      Modified := TRUE ;
+      PSimulT.SeqAli[LBPortee.ItemIndex + 1] := -1 ;
+      Update := TRUE ;
+      if PSimulT.Profil = -1
+      then
+        CBSeqAli.ItemIndex := -1
+      else
+        CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliT (PProfilT.SeqAli)) ;
+      CBSeqAliChange (nil) ;
+      Update := FALSE ;
+//      LBPortee.Repaint ;
+    end ;
+end;
+
+procedure TFSimulT.CBRationChange (Sender : TObject) ;
+begin
+  if CBRation.ItemIndex = -1
+  then
+    CBRation.Hint := ''
+  else
+  begin
+    PRationT := ListRationT[FindIdxRationT (CBRation.Text)] ;
+    CBRation.Hint := PRationT.Memo ;
+  end ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSimulT.Ration[LBPortee.ItemIndex + 1] := FindNumRationT (CBRation.Text) ;
+//    LBPortee.Repaint ;
+  end ;
+end ;
+
+procedure TFSimulT.ChkRationClick(Sender: TObject);
+begin
+  CBRation.Visible := not ChkRation.Checked ;
+  CBRationProfil.Visible := ChkRation.Checked ;
+  if ChkRation.Checked
+  then
+    if not Update
+    then
+    begin
+      Modified := TRUE ;
+      PSimulT.Ration[LBPortee.ItemIndex + 1] := -1 ;
+      Update := TRUE ;
+      CBRation.ItemIndex := -1 ;
+      CBRationChange (nil) ;
+      Update := FALSE ;
+//      LBPortee.Repaint ;
+    end ;
+end;
+
+procedure TFSimulT.BBResSimulClick (Sender : TObject) ;
+begin
+  if AffSimulT
+  then
+  begin
+    FWarning := TFWarning.Create (Self) ;
+    with FWarning do
+    begin
+      Msg := 'SimulT';
+      ShowModal ;
+      Release ;
+      AffSimulT := FALSE ;
+    end ;
+  end ;
+  Modal := True;
+  New (PResSimulT) ;
+  CalcSimulT (PSimulT.Num, -1, 1, 1, 8, 0, PResSimulT) ;
+  FResSimulT := TFResSimulT.Create (Self) ;
+  FResSimulT.ShowModal ;
+  FResSimulT.Release ;
+  Dispose (PResSimulT) ;
+  Modal := False;
+end ;
+
+procedure TFSimulT.BBRapSimulClick (Sender : TObject) ;
+begin
+  if AffSimulT
+  then
+  begin
+    FWarning := TFWarning.Create (Self) ;
+    with FWarning do
+    begin
+      Msg := 'SimulT';
+      ShowModal ;
+      Release ;
+      AffSimulT := FALSE ;
+    end ;
+  end ;
+  Modal := True;
+  New (PResSimulT) ;
+  CalcSimulT (PSimulT.Num, -1, 1, 1, 8, 0, PResSimulT) ;
+  FRapSimulT := TFRapSimulT.Create (Self) ;
+  FRapSimulT.QRRapport.PreviewModal ;
+  FRapSimulT.Release ;
+  Dispose (PResSimulT) ;
+  Modal := False;
+end ;
+
+procedure TFSimulT.BBTabSimulClick (Sender : TObject) ;
+begin
+//  Modal := True;
+//  New (PResSimulT) ;
+//  CalcSimulT (PSimulT.Num, -1, 1, 1, 8, 0, PResSimulT) ;
+//  FTabSimulT := TFTabSimulT.Create (Self) ;
+//  FTabSimulT.ShowModal ;
+//  FTabSimulT.Release ;
+//  Dispose (PResSimulT) ;
+//  Modal := False;
+end ;
+
+procedure TFSimulT.ValidBBResSimul ;
+var
+  ok : boolean ;
+begin
+  ok := SimulTValid (PSimulT) ;
+//  PCenter.Visible := ok ;
+  BBResSimul.Enabled := ok ;
+  BBRapSimul.Enabled := ok ;
+  BBTabSimul.Enabled := ok ;
+  if ok then LBPorteeClick (nil) ;
+end ;
+
+// Comparaison
+
+procedure TFSimulT.CBCompSimul1Click (Sender : TObject) ;
+begin
+  if CBCompSimul1.Checked
+  then
+    CBSimulComp1.Enabled := TRUE
+  else
+    CBSimulComp1.Enabled := FALSE ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulT.CBCompSimul2Click (Sender : TObject) ;
+begin
+  if CBCompSimul2.Checked
+  then
+    CBSimulComp2.Enabled := TRUE
+  else
+    CBSimulComp2.Enabled := FALSE ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulT.CBCompSimul3Click (Sender : TObject) ;
+begin
+  if CBCompSimul3.Checked
+  then
+    CBSimulComp3.Enabled := TRUE
+  else
+    CBSimulComp3.Enabled := FALSE ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulT.CBCompSimul4Click (Sender : TObject) ;
+begin
+  if CBCompSimul4.Checked
+  then
+    CBSimulComp4.Enabled := TRUE
+  else
+    CBSimulComp4.Enabled := FALSE ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulT.CBCompSimul5Click (Sender : TObject) ;
+begin
+  if CBCompSimul5.Checked
+  then
+    CBSimulComp5.Enabled := TRUE
+  else
+    CBSimulComp5.Enabled := FALSE ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulT.CBSimulComp1Change (Sender : TObject) ;
+begin
+  if CBSimulComp1.ItemIndex = -1
+  then
+    CBSimulComp1.Hint := ''
+  else
+  begin
+    PSimulT := ListSimulT[FindIdxSimulT (CBSimulComp1.Text)] ;
+    CBSimulComp1.Hint := PSimulT.Memo ;
+  end ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulT.CBSimulComp2Change (Sender : TObject) ;
+begin
+  if CBSimulComp2.ItemIndex = -1
+  then
+    CBSimulComp2.Hint := ''
+  else
+  begin
+    PSimulT := ListSimulT[FindIdxSimulT (CBSimulComp2.Text)] ;
+    CBSimulComp2.Hint := PSimulT.Memo ;
+  end ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulT.CBSimulComp3Change (Sender : TObject) ;
+begin
+  if CBSimulComp3.ItemIndex = -1
+  then
+    CBSimulComp3.Hint := ''
+  else
+  begin
+    PSimulT := ListSimulT[FindIdxSimulT (CBSimulComp3.Text)] ;
+    CBSimulComp3.Hint := PSimulT.Memo ;
+  end ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulT.CBSimulComp4Change (Sender : TObject) ;
+begin
+  if CBSimulComp4.ItemIndex = -1
+  then
+    CBSimulComp4.Hint := ''
+  else
+  begin
+    PSimulT := ListSimulT[FindIdxSimulT (CBSimulComp4.Text)] ;
+    CBSimulComp4.Hint := PSimulT.Memo ;
+  end ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulT.CBSimulComp5Change (Sender : TObject) ;
+begin
+  if CBSimulComp5.ItemIndex = -1
+  then
+    CBSimulComp5.Hint := ''
+  else
+  begin
+    PSimulT := ListSimulT[FindIdxSimulT (CBSimulComp5.Text)] ;
+    CBSimulComp5.Hint := PSimulT.Memo ;
+  end ;
+  ValidBBCompSimul ;
+end ;
+
+procedure TFSimulT.BBCompSimulClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  if AffSimulT
+  then
+  begin
+    FWarning := TFWarning.Create (Self) ;
+    with FWarning do
+    begin
+      Msg := 'SimulT';
+      ShowModal ;
+      Release ;
+      AffSimulT := FALSE ;
+    end ;
+  end ;
+  Modal := True;
+  // Simulation 1
+  with TabSimulT[1] do
+    if CBCompSimul1.Checked and (CBSimulComp1.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      Simul := FindNumSimulT (CBSimulComp1.Text) ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 2
+  with TabSimulT[2] do
+    if CBCompSimul2.Checked and (CBSimulComp2.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      Simul := FindNumSimulT (CBSimulComp2.Text) ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 3
+  with TabSimulT[3] do
+    if CBCompSimul3.Checked and (CBSimulComp3.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      Simul := FindNumSimulT (CBSimulComp3.Text) ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 4
+  with TabSimulT[4] do
+    if CBCompSimul4.Checked and (CBSimulComp4.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      Simul := FindNumSimulT (CBSimulComp4.Text) ;
+    end
+    else
+      Ok := FALSE ;
+  // Simulation 5
+  with TabSimulT[5] do
+    if CBCompSimul5.Checked and (CBSimulComp5.ItemIndex <> -1)
+    then
+    begin
+      Ok := TRUE ;
+      Simul := FindNumSimulT (CBSimulComp5.Text) ;
+    end
+    else
+      Ok := FALSE ;
+  // Calcul des simulations
+  for i := 1 to 5 do
+    with TabSimulT[i] do
+      if Ok
+      then
+      begin
+        New (Result) ;
+        CalcSimulT (Simul, -1, 1, 1, 8, 0, Result) ;
+      end ;
+  FCompSimulT := TFCompSimulT.Create (Self) ;
+  FCompSimulT.ShowModal ;
+  FCompSimulT.Release ;
+  for i := 1 to 5 do
+    with TabSimulT[i] do
+      if Ok then Dispose (Result) ;
+  Modal := False;
+end ;
+
+procedure TFSimulT.BBRapCompSimulClick(Sender: TObject);
+begin
+//
+end;
+
+procedure TFSimulT.ValidBBCompSimul ;
+begin
+  if (CBCompSimul1.Checked and (CBSimulComp1.ItemIndex <> -1))
+    or (CBCompSimul2.Checked and (CBSimulComp2.ItemIndex <> -1))
+    or (CBCompSimul3.Checked and (CBSimulComp3.ItemIndex <> -1))
+    or (CBCompSimul4.Checked and (CBSimulComp4.ItemIndex <> -1))
+    or (CBCompSimul5.Checked and (CBSimulComp5.ItemIndex <> -1))
+  then
+    BBCompSimul.Enabled := TRUE
+  else
+    BBCompSimul.Enabled := FALSE ;
+  BBCompSimul.Enabled := BBCompSimul.Enabled ;
+end ;
+
+// Sensibilit�
+
+procedure TFSimulT.CBSimulSensChange (Sender : TObject) ;
+begin
+  if CBSimulSens.ItemIndex = -1
+  then
+    CBSimulSens.Hint := ''
+  else
+  begin
+    PSimulT := ListSimulT[FindIdxSimulT (CBSimulSens.Text)] ;
+    CBSimulSens.Hint := PSimulT.Memo ;
+  end ;
+  ValidBBSensSimul ;
+end ;
+
+procedure TFSimulT.CBVariableChange(Sender: TObject);
+begin
+  GBEtatVar.Visible := (CBVariable.ItemIndex > 2) ;
+  CBStadeVar.Enabled := (CBVariable.ItemIndex <> 3) ;
+  if CBVariable.ItemIndex = 3
+  then // Temp�rature ambiante
+    CBStadeVar.ItemIndex := 0 ; // Gestation
+  ValidBBSensSimul ;
+end;
+
+procedure TFSimulT.PBPorteeVarInitChange(Sender: TObject);
+begin
+  if (PBPorteeVarInit.AsInteger >= PBPorteeVarInit.MinValue)
+    and (PBPorteeVarInit.AsInteger <= PBPorteeVarInit.MaxValue)
+  then
+    if (PBPorteeVarInit.AsInteger > PBPorteeVarFin.AsInteger)
+    then
+      PBPorteeVarFin.AsInteger := PBPorteeVarInit.AsInteger ;
+end;
+
+procedure TFSimulT.PBPorteeVarFinChange(Sender: TObject);
+begin
+  if (PBPorteeVarFin.AsInteger >= PBPorteeVarFin.MinValue)
+    and (PBPorteeVarFin.AsInteger <= PBPorteeVarFin.MaxValue)
+  then
+    if (PBPorteeVarFin.AsInteger < PBPorteeVarInit.AsInteger)
+    then
+      PBPorteeVarInit.AsInteger := PBPorteeVarFin.AsInteger ;
+end;
+
+procedure TFSimulT.BBSensSimulClick (Sender : TObject) ;
+var
+  i, k : integer ;
+  d : double ;
+begin
+  if AffSimulT
+  then
+  begin
+    FWarning := TFWarning.Create (Self) ;
+    with FWarning do
+    begin
+      Msg := 'SimulT';
+      ShowModal ;
+      Release ;
+      AffSimulT := FALSE ;
+    end ;
+  end ;
+  Modal := True;
+  i := CBVariable.ItemIndex ;
+  d := PBVariation.AsFloat ;
+  TabSimulT[1].Variation := (100 + d * 2) / 100 ;
+  TabSimulT[2].Variation := (100 + d) / 100 ;
+  TabSimulT[3].Variation := 1 ;
+  TabSimulT[4].Variation := (100 - d) / 100 ;
+  TabSimulT[5].Variation := (100 - d * 2) / 100 ;
+  for k := 1 to 5 do
+    with TabSimulT[k] do
+    begin
+      Ok := TRUE ;
+      Simul := FindNumSimulT (CBSimulSens.Text) ;
+      // Calcul des simulations
+      New (Result) ;
+      if (CBVariable.ItemIndex > 2)
+      then
+        CalcSimulT (Simul, i, Variation, PBPorteeVarInit.AsInteger, PBPorteeVarFin.AsInteger, CBStadeVar.ItemIndex, Result)
+      else
+        CalcSimulT (Simul, i, Variation, 1, 8, 0, Result) ;
+    end ;
+  FCompSimulT := TFCompSimulT.Create (Self) ;
+  FCompSimulT.ShowModal ;
+  FCompSimulT.Release ;
+  for k := 1 to 5 do
+    Dispose (TabSimulT[k].Result) ;
+  Modal := False;
+end ;
+
+procedure TFSimulT.BBRapSensSimulClick(Sender: TObject);
+begin
+//
+end;
+
+procedure TFSimulT.ValidBBSensSimul ;
+begin
+  BBSensSimul.Enabled := (CBSimulSens.ItemIndex <> -1) and (CBVariable.ItemIndex <> -1);
+  BBSensSimul.Enabled := BBSensSimul.Enabled;
+end ;
+
+end.
Index: UFRapportAli.pas
===================================================================
--- UFRapportAli.pas	(révision 0)
+++ UFRapportAli.pas	(révision 3)
@@ -0,0 +1,156 @@
+unit UFRapportAli ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, ExtCtrls, QuickRpt, UVariables, gnugettext;
+
+type
+  TFRapportAli = class(TForm)
+    SBRapAliElem: TSpeedButton;
+    SBRapAliAA: TSpeedButton;
+    SBRapAliAG: TSpeedButton;
+    SBRapAliMin: TSpeedButton;
+    SBRapAliMat: TSpeedButton;
+    ChkRapAliElem: TCheckBox;
+    ChkRapAliAA: TCheckBox;
+    ChkRapAliAG: TCheckBox;
+    CHKRapAliMin: TCheckBox;
+    ChkRapAliMat: TCheckBox;
+    PMat: TPanel;
+    BBPrint: TBitBtn;
+    PD: TPrintDialog;
+    BBClose: TBitBtn;
+    procedure SBRapAliElemClick(Sender: TObject);
+    procedure SBRapAliAAClick(Sender: TObject);
+    procedure SBRapAliAGClick(Sender: TObject);
+    procedure SBRapAliMinClick(Sender: TObject);
+    procedure SBRapAliMatClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure BBPrintClick(Sender: TObject);
+    procedure ChkRapAliClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapportAli : TFRapportAli ;
+
+implementation
+
+uses
+  Printers, UUtil, UFRapAliElem, UFRapAliAA, UFRapAliAG, UFRapAliMin,
+  UFRapAliMat ;
+
+{$R *.dfm}
+
+{ TFRapportAli }
+
+procedure TFRapportAli.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+end;
+
+procedure TFRapportAli.FormShow(Sender: TObject);
+begin
+  PMat.Visible:= ConfAffMP;
+end;
+
+procedure TFRapportAli.ChkRapAliClick(Sender: TObject);
+begin
+  BBPrint.Enabled := (IsComplete or IsEducation)
+    and (ChkRapAliElem.Checked or ChkRapAliAA.Checked or ChkRapAliAG.Checked or ChkRapAliMin.Checked or ChkRapAliMat.Checked);
+end;
+
+procedure TFRapportAli.SBRapAliElemClick(Sender: TObject);
+begin
+  FRapAliElem := TFRapAliElem.Create (Self) ;
+  FRapAliElem.QRRapport.PreviewModal ;
+  FRapAliElem.Release ;
+end;
+
+procedure TFRapportAli.SBRapAliAAClick(Sender: TObject);
+begin
+  FRapAliAA := TFRapAliAA.Create (Self) ;
+  FRapAliAA.QRRapport.PreviewModal ;
+  FRapAliAA.Release ;
+end;
+
+procedure TFRapportAli.SBRapAliAGClick(Sender: TObject);
+begin
+  FRapAliAG := TFRapAliAG.Create (Self) ;
+  FRapAliAG.QRRapport.PreviewModal ;
+  FRapAliAG.Release ;
+end;
+
+procedure TFRapportAli.SBRapAliMinClick(Sender: TObject);
+begin
+  FRapAliMin := TFRapAliMin.Create (Self) ;
+  FRapAliMin.QRRapport.PreviewModal ;
+  FRapAliMin.Release ;
+end;
+
+procedure TFRapportAli.SBRapAliMatClick(Sender: TObject);
+begin
+  FRapAliMat := TFRapAliMat.Create (Self) ;
+  FRapAliMat.QRRapport.PreviewModal ;
+  FRapAliMat.Release ;
+end;
+
+procedure TFRapportAli.BBPrintClick(Sender: TObject);
+begin
+  if PD.Execute
+  then
+  begin
+    if ChkRapAliElem.Checked
+    then
+    begin
+      FRapAliElem := TFRapAliElem.Create (Self) ;
+      FRapAliElem.QRRapport.PrinterSettings.PrinterIndex := Printer.PrinterIndex;
+      FRapAliElem.QRRapport.Print ;
+      FRapAliElem.Release ;
+    end ;
+    if ChkRapAliAA.Checked
+    then
+    begin
+      FRapAliAA := TFRapAliAA.Create (Self) ;
+      FRapAliAA.QRRapport.PrinterSettings.PrinterIndex := Printer.PrinterIndex;
+      FRapAliAA.QRRapport.Print ;
+      FRapAliAA.Release ;
+    end ;
+    if ChkRapAliAG.Checked
+    then
+    begin
+      FRapAliAG := TFRapAliAG.Create (Self) ;
+      FRapAliAG.QRRapport.PrinterSettings.PrinterIndex := Printer.PrinterIndex;
+      FRapAliAG.QRRapport.Print ;
+      FRapAliAG.Release ;
+    end ;
+    if ChkRapAliMin.Checked
+    then
+    begin
+      FRapAliMin := TFRapAliMin.Create (Self) ;
+      FRapAliMin.QRRapport.PrinterSettings.PrinterIndex := Printer.PrinterIndex;
+      FRapAliMin.QRRapport.Print ;
+      FRapAliMin.Release ;
+    end ;
+    if ChkRapAliMat.Checked
+    then
+    begin
+      FRapAliMat := TFRapAliMat.Create (Self) ;
+      FRapAliMat.QRRapport.PrinterSettings.PrinterIndex := Printer.PrinterIndex;
+      FRapAliMat.QRRapport.Print ;
+      FRapAliMat.Release ;
+    end ;
+    Close;
+  end;
+end;
+
+end.
Index: numhess.inc
===================================================================
--- numhess.inc	(révision 0)
+++ numhess.inc	(révision 3)
@@ -0,0 +1,67 @@
+{ ******************************************************************
+  Numerical hessian and gradient
+  ****************************************************************** }
+
+procedure HessGrad(X, G : TVector; H : TMatrix);
+
+const
+  Eta = 1.0E-6;     { Relative increment }
+
+var
+  Delta, Xminus, Xplus, Fminus, Fplus : TVector;
+  Temp1, Temp2, F, F2plus             : Float;
+  I, J                                : Integer;
+
+begin
+  DimVector(Delta, Nvar);   { Increments   }
+  DimVector(Xminus, Nvar);  { X - Delta    }
+  DimVector(Xplus, Nvar);   { X + Delta    }
+  DimVector(Fminus, Nvar);  { F(X - Delta) }
+  DimVector(Fplus, Nvar);   { F(X + Delta) }
+
+  F := Func(X);
+
+  for I := 1 to Nvar do
+    begin
+      if X[I] <> 0.0 then
+        Delta[I] := Eta * Abs(X[I])
+      else
+        Delta[I] := Eta;
+      Xplus[I] := X[I] + Delta[I];
+      Xminus[I] := X[I] - Delta[I];
+    end;
+
+  for I := 1 to Nvar do
+    begin
+      Temp1 := X[I];
+      X[I] := Xminus[I];
+      Fminus[I] := Func(X);
+      X[I] := Xplus[I];
+      Fplus[I] := Func(X);
+      X[I] := Temp1;
+    end;
+
+  for I := 1 to Nvar do
+    begin
+      G[I] := (Fplus[I] - Fminus[I]) / (2.0 * Delta[I]);
+      H[I,I] := (Fplus[I] + Fminus[I] - 2.0 * F) / Sqr(Delta[I]);
+    end;
+
+  for I := 1 to Pred(Nvar) do
+    begin
+      Temp1 := X[I];
+      X[I] := Xplus[I];
+      for J := Succ(I) to Nvar do
+        begin
+          Temp2 := X[J];
+          X[J] := Xplus[J];
+          F2plus := Func(X);
+          H[I,J] := (F2plus - Fplus[I] - Fplus[J] + F) / (Delta[I] * Delta[J]);
+          H[J,I] := H[I,J];
+          X[J] := Temp2;
+        end;
+      X[I] := Temp1;
+    end;
+
+end;
+
Index: UFRapAliAG.pas
===================================================================
--- UFRapAliAG.pas	(révision 0)
+++ UFRapAliAG.pas	(révision 3)
@@ -0,0 +1,218 @@
+unit UFRapAliAG ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapAliAG = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLAliment: TQRLabel;
+    CDSRapport: TClientDataSet;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    SFAliment: TStringField;
+    QRDBAliment: TQRDBText;
+    QRLTAG: TQRLabel;
+    QRLC6C8C10: TQRLabel;
+    QRDBTTC6C8C10_Tot: TQRDBText;
+    QRLCompo: TQRLabel;
+    QRLTot: TQRLabel;
+    QRDBTTC6C8C10_0: TQRDBText;
+    QRL0: TQRLabel;
+    QRL1: TQRLabel;
+    QRL2: TQRLabel;
+    QRL3: TQRLabel;
+    QRL4: TQRLabel;
+    QRL5: TQRLabel;
+    QRL6: TQRLabel;
+    QRLC14: TQRLabel;
+    QRDBTTC14_Tot: TQRDBText;
+    QRDBTTC14_0: TQRDBText;
+    QRLC18: TQRLabel;
+    QRDBTTC18_Tot: TQRDBText;
+    QRDBTTC18_0: TQRDBText;
+    QRDBTTC18_1: TQRDBText;
+    QRDBTTC18_2: TQRDBText;
+    QRDBTTC18_3: TQRDBText;
+    QRDBTTC18_4: TQRDBText;
+    QRLC22: TQRLabel;
+    QRDBTTC22_Tot: TQRDBText;
+    QRDBTTC22_0: TQRDBText;
+    QRDBTTC22_1: TQRDBText;
+    QRDBTTC22_5: TQRDBText;
+    QRDBTTC22_6: TQRDBText;
+    QRLCTot: TQRLabel;
+    QRDBTTCTot_Tot: TQRDBText;
+    QRDBTTCTot_0: TQRDBText;
+    QRDBTTCTot_1: TQRDBText;
+    QRDBTTCTot_2: TQRDBText;
+    QRDBTTCTot_3: TQRDBText;
+    QRDBTTCTot_4: TQRDBText;
+    QRDBTTCTot_5: TQRDBText;
+    QRDBTTCTot_6: TQRDBText;
+    QRLC12: TQRLabel;
+    QRDBTTC12_Tot: TQRDBText;
+    QRDBTTC12_0: TQRDBText;
+    QRLC16: TQRLabel;
+    QRDBTTC16_Tot: TQRDBText;
+    QRDBTTC16_0: TQRDBText;
+    QRDBTTC16_1: TQRDBText;
+    QRLC20: TQRLabel;
+    QRDBTTC20_Tot: TQRDBText;
+    QRDBTTC20_0: TQRDBText;
+    QRDBTTC20_1: TQRDBText;
+    QRDBTTC20_4: TQRDBText;
+    QRDBTTC20_5: TQRDBText;
+    QRLC24: TQRLabel;
+    QRDBTTC24_Tot: TQRDBText;
+    QRDBTTC24_0: TQRDBText;
+    QRLLip: TQRLabel;
+    QRDBTLip: TQRDBText;
+    QRLAGsLip: TQRLabel;
+    QRDBTAGsLip: TQRDBText;
+    SFAGsLip: TStringField;
+    SFC6C8C10_0: TStringField;
+    SFLip: TStringField;
+    SFC14_0: TStringField;
+    SFC6C8C10_Tot: TStringField;
+    SFC16_0: TStringField;
+    SFC18_0: TStringField;
+    SFC20_5: TStringField;
+    SFC22_6: TStringField;
+    SFC24_0: TStringField;
+    SFC12_0: TStringField;
+    SFC12_Tot: TStringField;
+    SFC14_Tot: TStringField;
+    SFC16_1: TStringField;
+    SFC16_Tot: TStringField;
+    SFC18_1: TStringField;
+    SFC18_2: TStringField;
+    SFC18_3: TStringField;
+    SFC18_4: TStringField;
+    SFC18_Tot: TStringField;
+    SFCTot_1: TStringField;
+    SFC20_Tot: TStringField;
+    SFC22_Tot: TStringField;
+    SFC20_0: TStringField;
+    SFC22_0: TStringField;
+    SFC20_1: TStringField;
+    SFC20_4: TStringField;
+    SFC22_1: TStringField;
+    SFC22_5: TStringField;
+    SFC24_Tot: TStringField;
+    SFCTot_Tot: TStringField;
+    SFCTot_2: TStringField;
+    SFCTot_3: TStringField;
+    SFCTot_4: TStringField;
+    SFCTot_5_: TStringField;
+    SFCTot_6: TStringField;
+    SFCTot_0: TStringField;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapAliAG: TFRapAliAG;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFAliment, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapAliAG }
+
+procedure TFRapAliAG.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Aliment_'] := FAliment.CBAliment.Text;
+    FieldValues['_C6C8C10_0_'] := FAliment.PBC6C8C10_0.Text;
+    FieldValues['_C6C8C10_Tot_'] := FAliment.PBC6C8C10_tot.Text;
+    FieldValues['_C12_0_'] := FAliment.PBC12_0.Text;
+    FieldValues['_C12_Tot_'] := FAliment.PBC12_tot.Text;
+    FieldValues['_C14_0_'] := FAliment.PBC14_0.Text;
+    FieldValues['_C14_Tot_'] := FAliment.PBC14_tot.Text;
+    FieldValues['_C16_0_'] := FAliment.PBC16_0.Text;
+    FieldValues['_C16_1_'] := FAliment.PBC16_1.Text;
+    FieldValues['_C16_Tot_'] := FAliment.PBC16_tot.Text;
+    FieldValues['_C18_0_'] := FAliment.PBC18_0.Text;
+    FieldValues['_C18_1_'] := FAliment.PBC18_1.Text;
+    FieldValues['_C18_2_'] := FAliment.PBC18_2.Text;
+    FieldValues['_C18_3_'] := FAliment.PBC18_3.Text;
+    FieldValues['_C18_4_'] := FAliment.PBC18_4.Text;
+    FieldValues['_C18_Tot_'] := FAliment.PBC18_tot.Text;
+    FieldValues['_C20_0_'] := FAliment.PBC20_0.Text;
+    FieldValues['_C20_1_'] := FAliment.PBC20_1.Text;
+    FieldValues['_C20_4_'] := FAliment.PBC20_4.Text;
+    FieldValues['_C20_5_'] := FAliment.PBC20_5.Text;
+    FieldValues['_C20_Tot_'] := FAliment.PBC20_tot.Text;
+    FieldValues['_C22_0_'] := FAliment.PBC22_0.Text;
+    FieldValues['_C22_1_'] := FAliment.PBC22_1.Text;
+    FieldValues['_C22_5_'] := FAliment.PBC22_5.Text;
+    FieldValues['_C22_6_'] := FAliment.PBC22_6.Text;
+    FieldValues['_C22_Tot_'] := FAliment.PBC22_tot.Text;
+    FieldValues['_C24_0_'] := FAliment.PBC24_0.Text;
+    FieldValues['_C24_Tot_'] := FAliment.PBC24_tot.Text;
+    FieldValues['_CTot_0_'] := FAliment.PBCtot_0.Text;
+    FieldValues['_CTot_1_'] := FAliment.PBCtot_1.Text;
+    FieldValues['_CTot_2_'] := FAliment.PBCtot_2.Text;
+    FieldValues['_CTot_3_'] := FAliment.PBCtot_3.Text;
+    FieldValues['_CTot_4_'] := FAliment.PBCtot_4.Text;
+    FieldValues['_CTot_5_'] := FAliment.PBCtot_5.Text;
+    FieldValues['_CTot_6_'] := FAliment.PBCtot_6.Text;
+    FieldValues['_CTot_Tot_'] := FAliment.PBCtot_tot.Text;
+    FieldValues['_Lip_'] := FAliment.PBLip2.Text;
+    FieldValues['_AGsLip_'] := FAliment.PBAG.Text;
+    Post;
+  end ;
+  QRMMemo.Lines.Add(FAliment.CBAliment.Hint);
+  QRLCompo.Caption:= FAliment.Hint;
+  QRLTAG.Caption:= FAliment.GBTAG.Caption;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFRationT.pas
===================================================================
--- UFRationT.pas	(révision 0)
+++ UFRationT.pas	(révision 3)
@@ -0,0 +1,1139 @@
+unit UFRationT ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, Math, PBNumEdit, PBSuperSpin, 
+  TeEngine, Series, TeeProcs, Chart, JvExControls, JvComponent, JvEnterTab, 
+  UVariables, gnugettext;
+
+type
+  TFRationT = class(TForm)
+    GBRation: TGroupBox;
+    SBAddRation: TSpeedButton;
+    SBDelRation: TSpeedButton;
+    CBRation: TComboBox;
+    GBRule: TGroupBox;
+    LModeFin: TLabel;
+    LNo: TLabel;
+    SBAddRule: TSpeedButton;
+    SBDelRule: TSpeedButton;
+    LAli: TLabel;
+    LBRule: TListBox;
+    GBEnd: TGroupBox;
+    LUnitFin: TLabel;
+    PBValFin: TPBNumEdit;
+    GBAjust: TGroupBox;
+    LUnite: TLabel;
+    CBUnite: TComboBox;
+    PBa: TPBNumEdit;
+    PBb: TPBNumEdit;
+    La: TLabel;
+    Graph: TChart;
+    SeriesLigne: TLineSeries;
+    SBRename: TSpeedButton;
+    SBComment: TSpeedButton;
+    CBModeFin: TComboBox;
+    LType: TLabel;
+    CBType: TComboBox;
+    TC: TTabControl;
+    LMoyenne: TLabel;
+    PBMoyenne: TPBNumEdit;
+    Pa: TPanel;
+    Pc: TPanel;
+    Lc: TLabel;
+    PBc: TPBNumEdit;
+    Pb: TPanel;
+    Lb: TLabel;
+    Pd: TPanel;
+    Ld: TLabel;
+    PQuantite: TPanel;
+    LQuantite: TLabel;
+    PBQuantite: TPBNumEdit;
+    PBd: TPBSuperSpin;
+    SBSave: TSpeedButton;
+    SBPrint: TSpeedButton;
+    GBParam: TGroupBox;
+    PRation: TPanel;
+    JvEnterAsTab: TJvEnterAsTab;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormShow(Sender: TObject);
+    procedure CBRationChange(Sender: TObject);
+    procedure SBAddRationClick(Sender: TObject);
+    procedure SBDelRationClick(Sender: TObject);
+    procedure LBRuleClick(Sender: TObject);
+    procedure LBRuleDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure SBAddRuleClick(Sender: TObject);
+    procedure SBDelRuleClick(Sender: TObject);
+    procedure PBValFinChange(Sender: TObject);
+    procedure CBUniteChange(Sender: TObject);
+    procedure PBaChange(Sender: TObject);
+    procedure PBbChange(Sender: TObject);
+    procedure FormDeactivate(Sender: TObject);
+    procedure SBRenameClick(Sender: TObject);
+    procedure SBCommentClick(Sender: TObject);
+    procedure CBTypeChange(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure TCChange(Sender: TObject);
+    procedure PBcChange(Sender: TObject);
+    procedure PBdChange(Sender: TObject);
+    procedure PBQuantiteChange(Sender: TObject);
+    procedure SBSaveClick(Sender: TObject);
+    procedure SBPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified : boolean ;
+    IdxRationT, NbRule, NumRule : integer ;
+    Rule : array[1..MAX_RULE] of RecRuleRationT ;
+    procedure Save ;
+    procedure AffGraph ;
+  public
+    { D�clarations publiques }
+    function StrModeFin (etat, regle : integer) : string ;
+    function StrEquation (etat, regle : integer) : string ;
+  end;
+
+var
+  FRationT: TFRationT;
+
+implementation
+
+uses
+  UStrings, UInit, UUtil, UFindRec, UEchelle, UCalcul, UFComment, UFRapRationT ;
+
+{$R *.dfm}
+
+{ TFRationT }
+
+procedure TFRationT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 616 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 476 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  CBUnite.ItemIndex := 0;
+  CBModeFin.ItemIndex := 0;
+  CBType.ItemIndex := 0;
+end;
+
+procedure TFRationT.FormShow (Sender : TObject) ;
+begin
+  Modified := FALSE ;
+  StringsRationT (CBRation.Items, TRUE) ;
+  SBAddRation.Enabled := IsComplete or (ListRationT.Count < 5) ;
+  SBSave.Enabled := IsComplete or IsEducation ;
+  IdxRationT := -1 ;
+//  CBRationChange (nil) ;
+end ;
+
+procedure TFRationT.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+begin
+  if Modified then Save ;
+  Action := caFree ;
+  NumWinRationT := -1 ;
+end ;
+
+procedure TFRationT.FormActivate (Sender : TObject) ;
+begin
+//  if IdxRationT <> -1
+//  then
+//    PRationT := ListRationT[IdxRationT] ;
+  CBRationChange (nil) ;
+  GBParam.Enabled := IsComplete or IsEducation or IsEvaluation ;
+  SBAddRule.Visible := GBParam.Enabled ;
+  SBDelRule.Visible := GBParam.Enabled ;
+end ;
+
+procedure TFRationT.FormDeactivate (Sender : TObject) ;
+begin
+  if Modified then Save ;
+end ;
+
+procedure TFRationT.Save ;
+var
+  s : string ;
+begin
+  Modified := FALSE ;
+  if IsComplete or IsEducation
+  then
+    if MessageDlg (Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      SaveRationT ;
+      if not RationTValid (PRationT)
+      then
+        MessageDlg(Format (MsgInvalidData, [Caption, PRationT.Nom]), mtWarning, [mbOK], 0) ;
+    end
+    else
+    begin
+      LoadRationT ;
+      s := CBRation.Text ;
+      StringsRationT (CBRation.Items, TRUE) ;
+      if FindIdxRationT (s) = -1
+      then
+      begin
+        IdxRationT := -1 ;
+        CBRationChange (nil) ;
+      end
+      else
+        CBRation.ItemIndex := CBRation.Items.IndexOf (s) ;
+    end ;
+end ;
+
+procedure TFRationT.CBRationChange (Sender : TObject) ;
+begin
+  if (IdxRationT <> -1) and (CBRation.Text <> PRationT.Nom)
+  then
+    if Modified then Save ;
+  IdxRationT := FindIdxRationT (CBRation.Text) ;
+  if IdxRationT = -1
+  then
+  begin
+    CBRation.Repaint ;
+    SBDelRation.Enabled := FALSE ;
+    SBRename.Enabled := FALSE ;
+    SBComment.Enabled := FALSE ;
+    SBSave.Enabled := FALSE ;
+    SBPrint.Enabled := FALSE ;
+    TC.Visible := FALSE ;
+  end
+  else // Affichage de l'enregistrement
+  begin
+    SBDelRation.Enabled := TRUE ;
+    SBRename.Enabled := TRUE ;
+    SBComment.Enabled := TRUE ;
+    SBSave.Enabled := TRUE ;
+    SBPrint.Enabled := TRUE ;
+    TC.Visible := TRUE ;
+    PRationT := ListRationT[IdxRationT] ;
+    with PRationT^ do
+      CBRation.Hint := Memo ;
+    TCChange (nil) ;
+  end ;
+end ;
+
+procedure TFRationT.SBAddRationClick (Sender : TObject) ;
+var
+  i, n, q : integer ;
+  s : string ;
+  ok : boolean ;
+  PBackup : PRecRationT ;
+begin
+  if Modified then Save ;
+  if IdxRationT = -1
+  then
+    q := mrNo
+  else
+    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
+  // saisie du nouveau nom
+  s := '' ;
+  repeat
+    if InputQuery (FRationT.Caption, MsgName, s)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListRationT.Count) do
+          begin
+            PRationT := ListRationT[i] ;
+            if PRationT.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      if (IdxRationT <> -1)
+      then
+        PRationT := ListRationT[IdxRationT] ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  if s <> ''
+  then // Cr�ation du nouvel enregistrement
+  begin
+    // recherche du premier num�ro libre
+    n := 0 ;
+    repeat
+      Inc (n) ;
+      ok := TRUE ;
+      i := 0 ;
+      while ok and (i < ListRationT.Count) do
+      begin
+        PRationT := ListRationT[i] ;
+        if PRationT.Num = n
+        then
+          ok := FALSE
+        else
+          Inc (i) ;
+      end ;
+    until ok ;
+    New (PRationT) ;
+    with PRationT^ do
+    begin
+      Nom := s ;
+      Num := n ;
+      if q = mrYes
+      then
+      begin
+        PBackup := ListRationT[IdxRationT] ;
+        Memo := PBackup.Memo ;
+        NbRuleGest := PBackup.NbRuleGest ;
+        RuleGest := PBackup.RuleGest ;
+        UniteGest := PBackup.UniteGest ;
+        NbRuleLact := PBackup.NbRuleLact ;
+        RuleLact := PBackup.RuleLact ;
+        UniteLact := PBackup.UniteLact ;
+        NbRuleISSF := PBackup.NbRuleISSF ;
+        RuleISSF := PBackup.RuleISSF ;
+        UniteISSF := PBackup.UniteISSF ;
+      end
+      else
+      begin
+        Memo := '' ;
+        NbRuleGest := 1 ;
+        for i := 1 to MAX_RULE do
+          with RuleGest[i] do
+          begin
+            ModeFin := -1 ;
+            ValFin := 0 ;
+            Equation := 0 ;
+            a := 0 ;
+            b := 0 ;
+            c := 0 ;
+            d := 0 ;
+          end ;
+        UniteGest := 0 ;
+        NbRuleLact := 1 ;
+        for i := 1 to MAX_RULE do
+          with RuleLact[i] do
+          begin
+            ModeFin := -1 ;
+            ValFin := 0 ;
+            Equation := 0 ;
+            a := 0 ;
+            b := 0 ;
+            c := 0 ;
+            d := 28 ;
+          end ;
+        UniteLact := 0 ;
+        NbRuleISSF := 1 ;
+        for i := 1 to MAX_RULE do
+          with RuleISSF[i] do
+          begin
+            ModeFin := -1 ;
+            ValFin := 0 ;
+            Equation := 0 ;
+            a := 0 ;
+            b := 0 ;
+            c := 0 ;
+            d := 0 ;
+          end ;
+        UniteISSF := 0 ;
+      end ;
+    end ;
+    ListRationT.Add (PRationT) ;
+    CBRation.Items.Add (PRationT.Nom) ;
+    CBRation.ItemIndex := CBRation.Items.IndexOf (PRationT.Nom) ;
+    CBRationChange (nil) ;
+    Modified := TRUE ;
+    SBAddRation.Enabled := IsComplete or (ListRationT.Count < 5) ;
+    SBCommentClick (nil) ;
+  end ;
+end;
+
+procedure TFRationT.SBDelRationClick (Sender : TObject) ;
+var
+  i, j : integer ;
+begin
+  if RationTUsed (PRationT.Num)
+  then // Enregistrement utilis�
+    MessageDlg (MsgDelErr, mtWarning, [mbOk], 0)
+  else // Suppression de l'enregistrement
+    if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      // Mise � jour du 30/11/2006
+      // Suppression des r�f�rences masqu�es dans des simulations
+      if ListSimulT.Count > 0
+      then
+        for i := 0 to ListSimulT.Count - 1 do
+        begin
+          PSimulT := ListSimulT[i] ;
+          for j := 1 to NB_CYCLES do
+            if PSimulT.Ration[j] = PRationT.Num
+            then
+              PSimulT.Ration[j] := -1 ;
+        end ;
+      SaveSimulT ; // Sauvegarde !
+      // Fin de mise � jour
+      Dispose (PRationT) ;
+      ListRationT.Delete (IdxRationT) ;
+      SaveRationT ; // Sauvegarde !
+      Modified := FALSE ;
+      CBRation.DeleteSelected ;
+      IdxRationT := -1 ;
+      CBRation.ItemIndex := -1 ;
+      CBRationChange (nil) ;
+      SBAddRation.Enabled := IsComplete or (ListRationT.Count < 5) ;
+    end ;
+end ;
+
+procedure TFRationT.SBRenameClick (Sender : TObject) ;
+var
+  i : integer ;
+  s : string ;
+  ok : boolean ;
+begin
+  // Saisie du nouveau nom
+  s := CBRation.Text ;
+  repeat
+    if InputQuery (FRationT.Caption, MsgRename, s) and (s <> CBRation.Text)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListRationT.Count) do
+          begin
+            PRationT := ListRationT[i] ;
+            if PRationT.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  PRationT := ListRationT[IdxRationT] ;
+  if s <> ''
+  then // Renommer l'enregistrement
+  begin
+    PRationT.Nom := s ;
+    Modified := TRUE ;
+    StringsRationT (CBRation.Items, TRUE) ;
+    CBRation.ItemIndex := CBRation.Items.IndexOf (s) ;
+  end ;
+end ;
+
+procedure TFRationT.SBCommentClick (Sender : TObject) ;
+begin
+  // Saisie du commentaire
+  FComment := TFComment.Create (Self) ;
+  with FComment do
+  begin
+    Memo.Text := PRationT.Memo ;
+    if ShowModal = mrOk
+    then // Commenter l'enregistrement
+    begin
+      PRationT.Memo := Memo.Text ;
+      Modified := TRUE ;
+      CBRation.Hint := PRationT.Memo ;
+    end ;
+    Release ;
+  end ;
+end ;
+
+procedure TFRationT.SBSaveClick(Sender: TObject);
+begin
+  SaveRationT ;
+  if not RationTValid (PRationT)
+  then
+    MessageDlg(Format (MsgInvalidData, [Caption, PRationT.Nom]), mtWarning, [mbOK], 0) ;
+  Modified := FALSE ;
+end;
+
+procedure TFRationT.SBPrintClick(Sender: TObject);
+begin
+  FRapRationT := TFRapRationT.Create (Self) ;
+  FRapRationT.QRRapport.PreviewModal ;
+  FRapRationT.Release ;
+end;
+
+procedure TFRationT.TCChange (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  case TC.TabIndex of
+    0 : // Gestation
+      with PRationT^ do
+      begin
+        NbRule := NbRuleGest ;
+        for i := 1 to MAX_RULE do
+          Rule[i] := RuleGest[i] ;
+        CBUnite.ItemIndex := UniteGest ;
+      end ;
+    1 : // Lactation
+      with PRationT^ do
+      begin
+        NbRule := NbRuleLact ;
+        for i := 1 to MAX_RULE do
+          Rule[i] := RuleLact[i] ;
+        CBUnite.ItemIndex := UniteLact ;
+      end ;
+    2 : // I.S.S.F.
+      with PRationT^ do
+      begin
+        NbRule := NbRuleISSF ;
+        for i := 1 to MAX_RULE do
+          Rule[i] := RuleISSF[i] ;
+        CBUnite.ItemIndex := UniteISSF ;
+      end ;
+  end ;
+  LBRule.Clear ;
+  with PRationT^ do
+    for i := 1 to NbRule do
+      LBRule.Items.Add ('') ;
+  LBRule.ItemIndex := 0 ;
+  LBRuleClick (nil) ;
+  if TC.TabIndex = 1
+  then // Lactation
+    CBType.Enabled := TRUE
+  else
+    CBType.Enabled := FALSE ;
+  AffGraph ;
+end ;
+
+procedure TFRationT.LBRuleClick (Sender : TObject) ;
+begin
+  NumRule := LBRule.ItemIndex + 1 ;
+  if LBRule.Items.Count < MAX_RULE
+  then
+    SBAddRule.Enabled := TRUE
+  else
+    SBAddRule.Enabled := FALSE ;
+  if NumRule = NbRule
+  then // Fin
+    SBDelRule.Enabled := FALSE
+  else
+    SBDelRule.Enabled := TRUE ;
+  GBEnd.Visible := SBDelRule.Enabled ;
+  with Rule[NumRule] do
+  begin
+    Update := TRUE ;
+    PBValFin.AsInteger := ValFin ;
+    CBType.ItemIndex := Equation ;
+    CBTypeChange (nil) ;
+    PBQuantite.AsFloat := a ;
+    PBa.AsFloat := a ;
+    PBb.AsFloat := b ;
+    PBc.AsFloat := c ;
+    PBd.AsInteger := d ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFRationT.LBRuleDrawItem(Control: TWinControl; Index: Integer;
+  Rect: TRect; State: TOwnerDrawState);
+begin
+  with (Control as TListBox).Canvas do
+  begin
+    // Cadre principal
+    FillRect(Rect);
+    // Texte
+    SetTextAlign(Handle, TA_LEFT);
+    Rect.Left := 22;
+    TextRect(Rect, Rect.Left, Rect.Top, StrModeFin(TC.TabIndex, Index + 1));
+    Rect.Left := 150;
+    TextRect(Rect, Rect.Left, Rect.Top, StrEquation(TC.TabIndex, Index + 1));
+    Rect.Left := 0;
+    // Num�ro
+    SetTextAlign(Handle, TA_RIGHT);
+    Rect.Right := 14;
+    TextRect(Rect, Rect.Right, Rect.Top, Format('%d', [Index + 1]));
+  end;
+end;
+
+procedure TFRationT.SBAddRuleClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  for i := NbRule downto NumRule do
+    Rule[i + 1] := Rule[i] ;
+  with Rule[NumRule] do
+  begin
+    ModeFin := 0 ;
+    ValFin := 0 ;
+  end ;
+  Inc (NbRule) ;
+  case TC.TabIndex of
+    0 : // Gestation
+      with PRationT^ do
+      begin
+        NbRuleGest := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleGest[i] := Rule[i] ;
+      end ;
+    1 : // Lactation
+      with PRationT^ do
+      begin
+        NbRuleLact := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleLact[i] := Rule[i] ;
+      end ;
+    2 : // I.S.S.F.
+      with PRationT^ do
+      begin
+        NbRuleISSF := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleISSF[i] := Rule[i] ;
+      end ;
+  end ;
+  LBRule.Items.Add ('') ;
+  LBRule.ItemIndex := NumRule - 1 ;
+  LBRuleClick (nil) ;
+  Modified := TRUE ;
+  ActiveControl := PBValFin ;
+end ;
+
+procedure TFRationT.SBDelRuleClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  NbRule := NbRule - 1 ;
+  for i := NumRule to NbRule do
+    Rule[i] := Rule[i + 1] ;
+  case TC.TabIndex of
+    0 : // Gestation
+      with PRationT^ do
+      begin
+        NbRuleGest := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleGest[i] := Rule[i] ;
+      end ;
+    1 : // Lactation
+      with PRationT^ do
+      begin
+        NbRuleLact := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleLact[i] := Rule[i] ;
+      end ;
+    2 : // I.S.S.F.
+      with PRationT^ do
+      begin
+        NbRuleISSF := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleISSF[i] := Rule[i] ;
+      end ;
+  end ;
+  i := NumRule ; // Position courante
+  LBRule.DeleteSelected ;
+  LBRule.ItemIndex := i - 1 ;
+  LBRuleClick (nil) ;
+  ActiveControl := LBRule ;
+  Modified := TRUE ;
+  AffGraph ;
+end ;
+
+procedure TFRationT.CBUniteChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PRationT^ do
+          UniteGest := CBUnite.ItemIndex ;
+      1 : // Lactation
+        with PRationT^ do
+          UniteLact := CBUnite.ItemIndex ;
+      2 : // I.S.S.F.
+        with PRationT^ do
+          UniteISSF := CBUnite.ItemIndex ;
+    end ;
+    LBRule.Repaint ;
+    AffGraph ;
+  end ;
+end ;
+
+procedure TFRationT.PBValFinChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].ValFin := PBValFin.AsInteger ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PRationT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PRationT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PRationT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+    AffGraph ;
+  end ;
+end ;
+
+procedure TFRationT.CBTypeChange (Sender : TObject) ;
+begin
+  case CBType.ItemIndex of
+    0 : // Constant
+    begin
+      PQuantite.Visible := TRUE ;
+      Pa.Visible := FALSE ;
+      Pb.Visible := FALSE ;
+      Pc.Visible := FALSE ;
+      Pd.Visible := FALSE ;
+    end ;
+    1 : // Lin�aire
+    begin
+      PQuantite.Visible := FALSE ;
+      Pa.Visible := TRUE ;
+      Pb.Visible := TRUE ;
+      Pc.Visible := FALSE ;
+      Pd.Visible := FALSE ;
+    end ;
+    2 : // Lin�aire-plateau
+    begin
+      PQuantite.Visible := FALSE ;
+      Pa.Visible := TRUE ;
+      Pb.Visible := TRUE ;
+      Pc.Visible := TRUE ;
+      Pd.Visible := TRUE ;
+    end ;
+    3 : // Curvilin�aire
+    begin
+      PQuantite.Visible := FALSE ;
+      Pa.Visible := TRUE ;
+      Pb.Visible := FALSE ;
+      Pc.Visible := TRUE ;
+      Pd.Visible := TRUE ;
+    end ;
+  end ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    with Rule[NumRule] do
+      Equation := CBType.ItemIndex ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PRationT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PRationT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PRationT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+    AffGraph ;
+  end ;
+end ;
+
+procedure TFRationT.PBQuantiteChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].a := PBQuantite.AsFloat ;
+    PBa.AsFloat := Rule[NumRule].a ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PRationT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PRationT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PRationT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+    AffGraph ;
+  end ;
+end ;
+
+procedure TFRationT.PBaChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].a := PBa.AsFloat ;
+    PBQuantite.AsFloat := Rule[NumRule].a ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PRationT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PRationT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PRationT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+    AffGraph ;
+  end ;
+end ;
+
+procedure TFRationT.PBbChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].b := PBb.AsFloat ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PRationT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PRationT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PRationT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+    AffGraph ;
+  end ;
+end ;
+
+procedure TFRationT.PBcChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].c := PBc.AsFloat ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PRationT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PRationT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PRationT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+    AffGraph ;
+  end ;
+end ;
+
+procedure TFRationT.PBdChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].d := PBd.AsInteger ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PRationT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PRationT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PRationT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+    AffGraph ;
+  end ;
+end ;
+
+function TFRationT.StrModeFin (etat, regle : integer) : string ;
+var
+  Nb : integer ;
+  Rec : RecRuleRationT ;
+begin
+  case etat of
+    0 : // Gestation
+      Nb := PRationT.NbRuleGest ;
+    1 : // Lactation
+      Nb := PRationT.NbRuleLact ;
+    else // I.S.S.F.
+      Nb := PRationT.NbRuleISSF ;
+  end ;
+  if regle = Nb
+  then // Fin
+    case etat of
+      0 : // Gestation
+        result := StrMiseBas ;
+      1 : // Lactation
+        result := StrSevrage ;
+      2 : // I.S.S.F.
+        result := StrSaillie ;
+    end
+  else
+  begin
+    case etat of
+      0 : // Gestation
+        Rec := PRationT.RuleGest[regle] ;
+      1 : // Lactation
+        Rec := PRationT.RuleLact[regle] ;
+      2 : // I.S.S.F.
+        Rec := PRationT.RuleISSF[regle] ;
+    end ;
+    with Rec do
+      case ModeFin of
+        0 : // Dur�e
+          result := Format ('%s = %d %s', [CBModeFin.Items[ModeFin], ValFin, StrJ]) ;
+        else
+          result := '' ;
+      end ;
+  end ;
+end ;
+
+function TFRationT.StrEquation (etat, regle : integer) : string ;
+var
+  Rec : RecRuleRationT ;
+begin
+  case etat of
+    0 : // Gestation
+      Rec := PRationT.RuleGest[regle] ;
+    1 : // Lactation
+      Rec := PRationT.RuleLact[regle] ;
+    2 : // I.S.S.F.
+      Rec := PRationT.RuleISSF[regle] ;
+  end ;
+  with Rec do
+    case Equation of
+      0 : // Constant (a)
+        result := Format ('%s=%s', [CBUnite.Text, DblToStr (a, PBa.Decimals)]) ;
+      1 : // Lin�aire (a+b*jour)
+        result := Format ('%s=%s+%s*%s', [CBUnite.Text, DblToStr (a, PBa.Decimals), DblToStr (b, PBb.Decimals), _('Day')]) ;
+      else
+        result := Format ('%s=%s', [CBUnite.Text, CBType.Items[Equation]]) ;
+    end ;
+end ;
+
+procedure TFRationT.AffGraph ;
+var
+  f, i, j, k : integer ;
+  q, t : double ;
+  ok : boolean ;
+
+  function Quantite : double ;
+  begin
+    with Rule[k] do
+      case Equation of
+        0 : // Constant
+          result := a ;
+        1 : // Lin�aire
+          result := a + b * (i - 1) ;
+        2 : // Lin�aire-plateau
+          result := LPvaleur (a, b, c, i, d) ;
+        3 : // Curvilin�aire
+          result := CLvaleur (a, c, i, d) ;
+        else
+          result := 0 ;
+      end ;
+  end ;
+
+begin
+  Graph.LeftAxis.Title.Caption := CBUnite.Text ;
+  SeriesLigne.Clear ;
+  ok := TRUE ;
+  case TC.TabIndex of
+    0 : // Gestation
+    begin
+      f := 114 ;
+      Graph.BottomAxis.Increment := 20 ;
+      Graph.BottomAxis.MinorTickCount := 3 ;
+      for k := 1 to NbRule do
+        if Rule[k].a = 0 then ok := FALSE ;
+    end ;
+    1 : // Lactation
+    begin
+      f := 28 ;
+      Graph.BottomAxis.Increment := 7 ;
+      Graph.BottomAxis.MinorTickCount := 6 ;
+      for k := 1 to NbRule do
+        case Rule[k].Equation of
+         1 : // Lin�aire
+           begin
+            if Rule[k].a = 0 then ok := FALSE ;
+            if Rule[k].b = 0 then ok := FALSE ;
+          end ;
+          2 : // Lin�aire-plateau
+          begin
+            if Rule[k].a = 0 then ok := FALSE ;
+            if Rule[k].b = 0 then ok := FALSE ;
+            if Rule[k].c <= Rule[k].a then ok := FALSE ;
+          end ;
+          3 : // Curvilin�aire
+          begin
+            if Rule[k].a = 0 then ok := FALSE ;
+            if Rule[k].c <= Rule[k].a then ok := FALSE ;
+          end ;
+          else // Constant
+            if Rule[k].a = 0 then ok := FALSE ;
+        end ;
+    end ;
+    else // I.S.S.F.
+    begin
+      f := 10 ;
+      Graph.BottomAxis.Increment := 1 ;
+      Graph.BottomAxis.MinorTickCount := 0 ;
+      for k := 1 to NbRule do
+        if Rule[k].a = 0 then ok := FALSE ;
+    end ;
+  end ;
+  if not ok then Exit ;
+  t := 0 ;
+  j := 0 ;
+  for k := 1 to NbRule do
+    with Rule[k] do
+    begin
+      if (ModeFin = 0) and (ValFin > 0)
+      then // R�gle dur�e
+      begin
+        for i := j + 1 to j + ValFin do
+        begin
+          q := Quantite ;
+          SeriesLigne.AddXY (i, q) ;
+          t := t + q ;
+        end ;
+        j := j + ValFin ;
+      end
+      else
+        if (k = NbRule) and (j < f)
+        then // R�gle fin
+        begin
+          for i := j + 1 to f do
+          begin
+            q := Quantite ;
+            SeriesLigne.AddXY (i, q) ;
+            t := t + q ;
+          end ;
+          j := f ;
+        end ;
+    end ;
+  PBMoyenne.AsFloat := t / j ;
+  AjustEchelle (Graph) ;
+end ;
+
+end.
Index: UFRapBesGestT.pas
===================================================================
--- UFRapBesGestT.pas	(révision 0)
+++ UFRapBesGestT.pas	(révision 3)
@@ -0,0 +1,339 @@
+unit UFRapBesGestT ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapBesGestT = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    CDSRapport: TClientDataSet;
+    QRLSaillie: TQRLabel;
+    QRLPoids: TQRLabel;
+    QRLCaract: TQRLabel;
+    QRLMiseBas: TQRLabel;
+    QRLP2: TQRLabel;
+    QRLAge: TQRLabel;
+    QRLPortee: TQRLabel;
+    QRLNesVifs: TQRLabel;
+    QRLPdsPt: TQRLabel;
+    QRLTyp: TQRLabel;
+    FFPdsSail: TFloatField;
+    FFPdsMB: TFloatField;
+    FFP2Sail: TFloatField;
+    FFP2MB: TFloatField;
+    IFAgeSail: TIntegerField;
+    IFAgeMB: TIntegerField;
+    QRLVariation: TQRLabel;
+    QRDBTPdsSail: TQRDBText;
+    QRDBTPdsMB: TQRDBText;
+    QREPds: TQRExpr;
+    QRDBTP2Sail: TQRDBText;
+    QRDBTP2MB: TQRDBText;
+    QREP2: TQRExpr;
+    QRDBTAgeSail: TQRDBText;
+    QRDBTAgeMB: TQRDBText;
+    QREAge: TQRExpr;
+    IFPortee: TIntegerField;
+    FFPdsPort: TFloatField;
+    SFLoge: TStringField;
+    QRDBText1: TQRDBText;
+    QRDBText2: TQRDBText;
+    QRDBText3: TQRDBText;
+    QRDBText6: TQRDBText;
+    QRLNRJ: TQRLabel;
+    QRLAA: TQRLabel;
+    QRLNRJEnt: TQRLabel;
+    QRLNRJAct: TQRLabel;
+    QRLNRJThe: TQRLabel;
+    QRLNRJPort: TQRLabel;
+    QRLNRJRes: TQRLabel;
+    QRLNRJTot: TQRLabel;
+    QRDBTEMEnt: TQRDBText;
+    QRLEMEnt: TQRLabel;
+    QRLPctEnt: TQRLabel;
+    QRDBTEMThe: TQRDBText;
+    QRLEMThe: TQRLabel;
+    QRLPctThe: TQRLabel;
+    QRDBTEMRes: TQRDBText;
+    QRLEMRes: TQRLabel;
+    QRLPctRes: TQRLabel;
+    QRDBTEMAct: TQRDBText;
+    QRLEMAct: TQRLabel;
+    QRLPctAct: TQRLabel;
+    QRDBTEMPort: TQRDBText;
+    QRLEMPort: TQRLabel;
+    QRLPctPort: TQRLabel;
+    QRDBTEMTot: TQRDBText;
+    QREPctEnt: TQRExpr;
+    QREPctThe: TQRExpr;
+    QREPctRes: TQRExpr;
+    QREPctAct: TQRExpr;
+    QREPctPort: TQRExpr;
+    FFBesEMEnt: TFloatField;
+    FFBesEMAct: TFloatField;
+    FFBesEMThe: TFloatField;
+    FFBesEMPort: TFloatField;
+    FFBesEMRes: TFloatField;
+    FFBesEMTot: TFloatField;
+    FFAppED: TFloatField;
+    FFAppEM: TFloatField;
+    FFAppEN: TFloatField;
+    FFBesAli: TFloatField;
+    QRLEMTot: TQRLabel;
+    QRLENTot: TQRLabel;
+    QREENTot: TQRExpr;
+    QRLAli: TQRLabel;
+    QRDBTAli: TQRDBText;
+    QRLAATot: TQRLabel;
+    QRLAAAli: TQRLabel;
+    QRLPctLys: TQRLabel;
+    QRLAATot35: TQRLabel;
+    QRLAATot105: TQRLabel;
+    QRLAAAli35: TQRLabel;
+    QRLAAAli105: TQRLabel;
+    QRLLys: TQRLabel;
+    QRLMet: TQRLabel;
+    QRLMetCys: TQRLabel;
+    QRLTrp: TQRLabel;
+    QRLThr: TQRLabel;
+    QRLPhe: TQRLabel;
+    QRLPheTyr: TQRLabel;
+    QRLLeu: TQRLabel;
+    QRLIle: TQRLabel;
+    QRLVal: TQRLabel;
+    QRLHis: TQRLabel;
+    QRLArg: TQRLabel;
+    QRDBTLysTot35: TQRDBText;
+    QRDBTMetTot35: TQRDBText;
+    QRDBTMetCysTot35: TQRDBText;
+    QRDBTTrpTot35: TQRDBText;
+    QRDBTThrTot35: TQRDBText;
+    QRDBTPheTot35: TQRDBText;
+    QRDBTPheTyrTot35: TQRDBText;
+    QRDBTLeuTot35: TQRDBText;
+    QRDBTIleTot35: TQRDBText;
+    QRDBTValTot305: TQRDBText;
+    QRDBTHisTot35: TQRDBText;
+    QRDBTArgTot35: TQRDBText;
+    QRDBTLysTot105: TQRDBText;
+    QRDBTMetTot105: TQRDBText;
+    QRDBTMetCysTot105: TQRDBText;
+    QRDBTTrpTot105: TQRDBText;
+    QRDBTThrTot105: TQRDBText;
+    QRDBTPheTot105: TQRDBText;
+    QRDBTPheTyrTot105: TQRDBText;
+    QRDBTLeuTot105: TQRDBText;
+    QRDBTIleTot105: TQRDBText;
+    QRDBTValTot105: TQRDBText;
+    QRDBTHisTot105: TQRDBText;
+    QRDBTArgTot105: TQRDBText;
+    QRELysAli35: TQRExpr;
+    QREMetAli35: TQRExpr;
+    QREMetCysAli35: TQRExpr;
+    QRETrpAli35: TQRExpr;
+    QREThrAli35: TQRExpr;
+    QREPheAli35: TQRExpr;
+    QREPheTyrAli35: TQRExpr;
+    QRELeuAli35: TQRExpr;
+    QREIleAli35: TQRExpr;
+    QREValAli35: TQRExpr;
+    QREHisAli35: TQRExpr;
+    QREArgAli35: TQRExpr;
+    QRELysAli105: TQRExpr;
+    QREMetAli105: TQRExpr;
+    QREMetCysAli105: TQRExpr;
+    QRETrpAli105: TQRExpr;
+    QREThrAli105: TQRExpr;
+    QREPheAli105: TQRExpr;
+    QREPheTyrAli105: TQRExpr;
+    QRELeuAli105: TQRExpr;
+    QREIleAli105: TQRExpr;
+    QREValAli105: TQRExpr;
+    QREHisAli105: TQRExpr;
+    QREArgAli105: TQRExpr;
+    QRELysPctLys: TQRExpr;
+    QREMetPctLys: TQRExpr;
+    QREMetCysPctLys: TQRExpr;
+    QRETrpPctLys: TQRExpr;
+    QREThrPctLys: TQRExpr;
+    QREPhePctLys: TQRExpr;
+    QREPheTyrPctLys: TQRExpr;
+    QRELeuPctLys: TQRExpr;
+    QREIlePctLys: TQRExpr;
+    QREValPctLys: TQRExpr;
+    QREHisPctLys: TQRExpr;
+    QREArgPctLys: TQRExpr;
+    FFLys105: TFloatField;
+    FFMet105: TFloatField;
+    FFMetCys105: TFloatField;
+    FFTrp105: TFloatField;
+    FFThr105: TFloatField;
+    FFPhe105: TFloatField;
+    FFPheTyr105: TFloatField;
+    FFLeu105: TFloatField;
+    FFIle105: TFloatField;
+    FFVal105: TFloatField;
+    FFHis105: TFloatField;
+    FFArg105: TFloatField;
+    FFLys35: TFloatField;
+    FFMet35: TFloatField;
+    FFMetCys35: TFloatField;
+    FFTrp35: TFloatField;
+    FFThr35: TFloatField;
+    FFPhe35: TFloatField;
+    FFPheTyr35: TFloatField;
+    FFLeu35: TFloatField;
+    FFIle35: TFloatField;
+    FFVal35: TFloatField;
+    FFHis35: TFloatField;
+    FFArg35: TFloatField;
+    QRShape1: TQRShape;
+    QRShape2: TQRShape;
+    QRShape3: TQRShape;
+    QRLMinAli: TQRLabel;
+    QRLMinTot: TQRLabel;
+    QRShape4: TQRShape;
+    QRShape5: TQRShape;
+    QRLMin: TQRLabel;
+    QRLMinTot35: TQRLabel;
+    QRLMinTot105: TQRLabel;
+    QRLMinAli35: TQRLabel;
+    QRLMinAli105: TQRLabel;
+    QREPAli105: TQRExpr;
+    QREPAli35: TQRExpr;
+    QRLabel9: TQRLabel;
+    QRDBTP35Tot: TQRDBText;
+    QRDBTP105Tot: TQRDBText;
+    QRECaAli105: TQRExpr;
+    QRECaAli35: TQRExpr;
+    QRLabel10: TQRLabel;
+    QRDBTCa35Tot: TQRDBText;
+    QRDBTCa105Tot: TQRDBText;
+    FFP35: TFloatField;
+    FFCa35: TFloatField;
+    FFP105: TFloatField;
+    FFCa105: TFloatField;
+    FFNesTotaux: TFloatField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRSDDate: TQRSysData;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapBesGestT: TFRapBesGestT;
+
+implementation
+
+uses
+  UStrings, UUtil, UFBesGestT, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapBesGestT }
+
+procedure TFRapBesGestT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Portee_'] := FBesGestT.PBPortee.AsInteger ;
+    FieldValues['_NesTotaux_'] := FBesGestT.PBNesTotaux.AsFloat ;
+    FieldValues['_PdsPort_'] := FBesGestT.PBPdsNais.AsFloat * FBesGestT.PBNesTotaux.AsFloat ;
+    FieldValues['_PdsSail_'] := FBesGestT.PBPdsSail.AsFloat ;
+    FieldValues['_PdsMB_'] := FBesGestT.PBPdsApMB.AsFloat ;
+    FieldValues['_P2Sail_'] := FBesGestT.PBP2Sail.AsFloat ;
+    FieldValues['_P2MB_'] := FBesGestT.PBP2MB.AsFloat ;
+    FieldValues['_AgeSail_'] := FBesGestT.PBAgeSail.AsInteger ;
+    FieldValues['_AgeMB_'] := FBesGestT.PBAgeSail.AsInteger + DureeGest ;
+    if FBesGestT.CBLoge.ItemIndex = 0
+    then
+      FieldValues['_Loge_'] := Format ('%s - %s - %d %s - %d %s', [FBesGestT.CBTyp.Text, FBesGestT.CBSol.Text, FBesGestT.PBTemp.AsInteger, StrDegC, FBesGestT.PBAct.AsInteger, StrMnDebout])
+    else
+      FieldValues['_Loge_'] := FBesGestT.CBLoge.Text ;
+    FieldValues['_BesEMEnt_'] := FBesGestT.BesEMEntTot ;
+    FieldValues['_BesEMAct_'] := FBesGestT.BesEMActTot ;
+    FieldValues['_BesEMThe_'] := FBesGestT.BesEMTheTot ;
+    FieldValues['_BesEMPort_'] := FBesGestT.BesEMPortTot ;
+    FieldValues['_BesEMRes_'] := FBesGestT.BesEMResTot ;
+    FieldValues['_BesEMTot_'] := FBesGestT.BesEMTot ;
+    FieldValues['_AppED_'] := FBesGestT.AppEDTot ;
+    FieldValues['_AppEM_'] := FBesGestT.AppEMTot ;
+    FieldValues['_AppEN_'] := FBesGestT.AppENTot ;
+    if (FBesGestT.AppEMTot = 0)
+    then
+      FieldValues['_BesAli_'] := 0
+    else
+      FieldValues['_BesAli_'] := FBesGestT.BesEMTot * FBesGestT.AppAliTot / FBesGestT.AppEMTot ;
+    FieldValues['_Lys35_'] := FBesGestT.BesAA[1, 35] ;
+    FieldValues['_Met35_'] := FBesGestT.BesAA[2, 35] ;
+    FieldValues['_MetCys35_'] := FBesGestT.BesAA[13, 35] ;
+    FieldValues['_Trp35_'] := FBesGestT.BesAA[4, 35] ;
+    FieldValues['_Thr35_'] := FBesGestT.BesAA[5, 35] ;
+    FieldValues['_Phe35_'] := FBesGestT.BesAA[6, 35] ;
+    FieldValues['_PheTyr35_'] := FBesGestT.BesAA[14, 35] ;
+    FieldValues['_Leu35_'] := FBesGestT.BesAA[8, 35] ;
+    FieldValues['_Ile35_'] := FBesGestT.BesAA[9, 35] ;
+    FieldValues['_Val35_'] := FBesGestT.BesAA[10, 35] ;
+    FieldValues['_His35_'] := FBesGestT.BesAA[11, 35] ;
+    FieldValues['_Arg35_'] := FBesGestT.BesAA[12, 35] ;
+    FieldValues['_Lys105_'] := FBesGestT.BesAA[1, 105] ;
+    FieldValues['_Met105_'] := FBesGestT.BesAA[2, 105] ;
+    FieldValues['_MetCys105_'] := FBesGestT.BesAA[13, 105] ;
+    FieldValues['_Trp105_'] := FBesGestT.BesAA[4, 105] ;
+    FieldValues['_Thr105_'] := FBesGestT.BesAA[5, 105] ;
+    FieldValues['_Phe105_'] := FBesGestT.BesAA[6, 105] ;
+    FieldValues['_PheTyr105_'] := FBesGestT.BesAA[14, 105] ;
+    FieldValues['_Leu105_'] := FBesGestT.BesAA[8, 105] ;
+    FieldValues['_Ile105_'] := FBesGestT.BesAA[9, 105] ;
+    FieldValues['_Val105_'] := FBesGestT.BesAA[10, 105] ;
+    FieldValues['_His105_'] := FBesGestT.BesAA[11, 105] ;
+    FieldValues['_Arg105_'] := FBesGestT.BesAA[12, 105] ;
+    FieldValues['_P35_'] := FBesGestT.BesP[35] ;
+    FieldValues['_Ca35_'] := FBesGestT.BesCa[35] ;
+    FieldValues['_P105_'] := FBesGestT.BesP[105] ;
+    FieldValues['_Ca105_'] := FBesGestT.BesCa[105] ;
+    Post;
+  end ;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFRapSeqAliP.dfm
===================================================================
--- UFRapSeqAliP.dfm	(révision 0)
+++ UFRapSeqAliP.dfm	(révision 3)
@@ -0,0 +1,1312 @@
+object FRapSeqAliP: TFRapSeqAliP
+  Left = 0
+  Top = 80
+  Caption = 'Report of feed sequence plan for growing pigs'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed sequence plan for growing pigs'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 152
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        402.166666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRShape2: TQRShape
+        Left = 40
+        Top = 144
+        Width = 638
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          105.833333333333000000
+          381.000000000000000000
+          1688.041666666670000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLSeqAli: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSeqAli: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          140.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_SeqAli_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRLRegles: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 45
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          254.000000000000000000
+          119.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Rules'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLNo: TQRLabel
+        Left = 56
+        Top = 128
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          148.166666666666700000
+          338.666666666666700000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '#'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLModeFin: TQRLabel
+        Left = 80
+        Top = 128
+        Width = 141
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          338.666666666666700000
+          373.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Termination condition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliment: TQRLabel
+        Left = 240
+        Top = 128
+        Width = 81
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          338.666666666666700000
+          214.312500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed(s) used'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 290
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 27
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          21.166666666666670000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 383
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          63.500000000000000000
+          1013.354166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          1711.854166666667000000
+          63.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+    object QRSDRegles: TQRSubDetail
+      Left = 38
+      Top = 270
+      Width = 718
+      Height = 20
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        52.916666666666670000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      Master = QRRapport
+      DataSet = CDSRegles
+      PrintBefore = False
+      PrintIfEmpty = True
+      object QRDBTAliment: TQRDBText
+        Left = 240
+        Top = 0
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          0.000000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_Aliment_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNo: TQRDBText
+        Left = 41
+        Top = 0
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          108.479166666666700000
+          0.000000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_No_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTModeFin: TQRDBText
+        Left = 80
+        Top = 0
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          0.000000000000000000
+          171.979166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_ModeFin_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    IndexFieldNames = '_SeqAli_'
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFSeqAli: TStringField
+      FieldName = '_SeqAli_'
+      Size = 25
+    end
+  end
+  object DSRelation: TDataSource
+    DataSet = CDSRapport
+    Left = 40
+    Top = 8
+  end
+  object CDSRegles: TClientDataSet
+    Aggregates = <>
+    IndexFieldNames = '_SeqAli_ ; _No_'
+    MasterFields = '_SeqAli_'
+    MasterSource = DSRelation
+    PacketRecords = 0
+    Params = <>
+    Left = 72
+    Top = 8
+    object SFIndex: TStringField
+      FieldName = '_SeqAli_'
+      Size = 25
+    end
+    object IFNo: TIntegerField
+      FieldName = '_No_'
+    end
+    object SFModeFin: TStringField
+      FieldName = '_ModeFin_'
+      Size = 30
+    end
+    object SFAliment: TStringField
+      FieldName = '_Aliment_'
+      Size = 120
+    end
+  end
+end
Index: UFRapMatElem.pas
===================================================================
--- UFRapMatElem.pas	(révision 0)
+++ UFRapMatElem.pas	(révision 3)
@@ -0,0 +1,202 @@
+unit UFRapMatElem;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapMatElem = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLMatiere: TQRLabel;
+    CDSRapport: TClientDataSet;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    SFMatiere: TStringField;
+    QRDBMatiere: TQRDBText;
+    QRLTFecale: TQRLabel;
+    QRLMS: TQRLabel;
+    QRDBTTMS: TQRDBText;
+    QRLFecale: TQRLabel;
+    QRLdFecale: TQRLabel;
+    QRSdFecale: TQRShape;
+    QRLdFecale_C: TQRLabel;
+    QRLdFecale_T: TQRLabel;
+    QRLMO: TQRLabel;
+    QRDBTTMO: TQRDBText;
+    QRLMAT: TQRLabel;
+    QRDBTTMAT: TQRDBText;
+    QRLSucres: TQRLabel;
+    QRDBTTSucres: TQRDBText;
+    QRLMM: TQRLabel;
+    QRDBTTMM: TQRDBText;
+    QRLLip: TQRLabel;
+    QRDBTTLip: TQRDBText;
+    QRLAmidon: TQRLabel;
+    QRDBTTAmidon: TQRDBText;
+    QRDBTdMO_C: TQRDBText;
+    QRDBTdMAT_C: TQRDBText;
+    QRDBTdLip_C: TQRDBText;
+    QRDBTdMO_T: TQRDBText;
+    QRDBTdMAT_T: TQRDBText;
+    QRDBTdLip_T: TQRDBText;
+    QRDBTdSucres_C: TQRDBText;
+    QRDBTdAmidon_C: TQRDBText;
+    QRDBTdSucres_T: TQRDBText;
+    QRDBTdAmidon_T: TQRDBText;
+    SFTMS: TStringField;
+    SFTMM: TStringField;
+    SFdMO_T: TStringField;
+    SFdLip_T: TStringField;
+    SFdMAT_T: TStringField;
+    SFdAmidon: TStringField;
+    SFdSucres: TStringField;
+    SFTMO: TStringField;
+    SFTLip: TStringField;
+    SFTMAT: TStringField;
+    SFTAmidon: TStringField;
+    SFTSucres: TStringField;
+    SFdMO_C: TStringField;
+    SFdLip_C: TStringField;
+    SFdMAT_C: TStringField;
+    QRLEB: TQRLabel;
+    QRDBTEB_C: TQRDBText;
+    QRLEnergie: TQRLabel;
+    QRLEVal: TQRLabel;
+    QRSEVal: TQRShape;
+    QRLEVal_C: TQRLabel;
+    QRLEVal_T: TQRLabel;
+    QRLabel1: TQRLabel;
+    QRDBTEM_C: TQRDBText;
+    QRLabel2: TQRLabel;
+    QRDBTED_C: TQRDBText;
+    QRLabel3: TQRLabel;
+    QRDBTEN_C: TQRDBText;
+    QRDBTEB_T: TQRDBText;
+    QRDBTEM_T: TQRDBText;
+    QRDBTED_T: TQRDBText;
+    QRDBTEN_T: TQRDBText;
+    SFEM_C: TStringField;
+    SFEB: TStringField;
+    SFEN_C: TStringField;
+    SFED_C: TStringField;
+    SFED_T: TStringField;
+    SFEM_T: TStringField;
+    SFEN_T: TStringField;
+    QRLTFibres: TQRLabel;
+    QRLCB: TQRLabel;
+    QRDBTCB: TQRDBText;
+    QRLFibres: TQRLabel;
+    QRLADF: TQRLabel;
+    QRDBTADF: TQRDBText;
+    QRLParois: TQRLabel;
+    QRDBTParois: TQRDBText;
+    QRLNDF: TQRLabel;
+    QRDBTNDF: TQRDBText;
+    QRLADL: TQRLabel;
+    QRDBTADL: TQRDBText;
+    SFCB: TStringField;
+    SFNDF: TStringField;
+    SFADF: TStringField;
+    SFADL: TStringField;
+    SFParois: TStringField;
+    QRLCompo: TQRLabel;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapMatElem: TFRapMatElem;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFMatiere, UFPrevRap;
+
+{$R *.dfm}
+
+{ TFRapMatElem }
+
+procedure TFRapMatElem.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Matiere_'] := FMatiere.CBMatiere.Text;
+    FieldValues['_TMS_'] := FMatiere.PBTMS.Text;
+    FieldValues['_TMM_'] := FMatiere.PBTMM.Text;
+    FieldValues['_TMO_'] := FMatiere.PBTMO.Text;
+    FieldValues['_TLip_'] := FMatiere.PBTLip.Text;
+    FieldValues['_TMAT_'] := FMatiere.PBTMAT.Text;
+    FieldValues['_TAmidon_'] := FMatiere.PBTAmidon.Text;
+    FieldValues['_TSucres_'] := FMatiere.PBTSucres.Text;
+    FieldValues['_dMO_C_'] := FMatiere.PBdMO_C.Text;
+    FieldValues['_dMO_T_'] := FMatiere.PBdMO_T.Text;
+    FieldValues['_dLip_C_'] := FMatiere.PBdLip_C.Text;
+    FieldValues['_dLip_T_'] := FMatiere.PBdLip_T.Text;
+    FieldValues['_dMAT_C_'] := FMatiere.PBdMAT_C.Text;
+    FieldValues['_dMAT_T_'] := FMatiere.PBdMAT_T.Text;
+    FieldValues['_dAmidon_'] := FMatiere.PBdAmidon_C.Text;
+    FieldValues['_dSucres_'] := FMatiere.PBdSucres_C.Text;
+    FieldValues['_EB_'] := FMatiere.PBEB_C.Text;
+    FieldValues['_ED_C_'] := FMatiere.PBED_C.Text;
+    FieldValues['_ED_T_'] := FMatiere.PBED_T.Text;
+    FieldValues['_EM_C_'] := FMatiere.PBEM_C.Text;
+    FieldValues['_EM_T_'] := FMatiere.PBEM_T.Text;
+    FieldValues['_EN_C_'] := FMatiere.PBEN_C.Text;
+    FieldValues['_EN_T_'] := FMatiere.PBEN_T.Text;
+    FieldValues['_CB_'] := FMatiere.PBCB.Text;
+    FieldValues['_NDF_'] := FMatiere.PBNDF.Text;
+    FieldValues['_ADF_'] := FMatiere.PBADF.Text;
+    FieldValues['_ADL_'] := FMatiere.PBADL.Text;
+    FieldValues['_Parois_'] := FMatiere.PBParois.Text;
+    Post;
+  end;
+  QRMMemo.Lines.Add(FMatiere.CBMatiere.Hint);
+  QRLCompo.Caption := FMatiere.Hint;
+  QRLTFecale.Caption := FMatiere.GBTFecale.Caption;
+  QRLdFecale.Caption := FMatiere.GBdFecale.Caption;
+  QRLTFibres.Caption := FMatiere.GBFibres.Caption;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFRapBesLactT.dfm
===================================================================
--- UFRapBesLactT.dfm	(révision 0)
+++ UFRapBesLactT.dfm	(révision 3)
@@ -0,0 +1,4536 @@
+object FRapBesLactT: TFRapBesLactT
+  Left = 0
+  Top = 80
+  Caption = 'Report of requirements during lactation (sow)'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Requirements of the sow during lactation'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QREAppAli: TQRExpr
+        Left = 255
+        Top = 296
+        Width = 265
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          674.687500000000000000
+          783.166666666666700000
+          701.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesAli_ - CDSRapport._DefAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAppEN: TQRExpr
+        Left = -190
+        Top = 296
+        Width = 590
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -502.708333333333300000
+          783.166666666666700000
+          1561.041666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._BesEMTot_ - CDSRapport._DefEM_) / CDSRapport._AppEM' +
+          '_ * CDSRapport._AppEN_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAppEM: TQRExpr
+        Left = -13
+        Top = 296
+        Width = 293
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -34.395833333333330000
+          783.166666666666700000
+          775.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMTot_ - CDSRapport._DefEM_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDefEN: TQRExpr
+        Left = -19
+        Top = 316
+        Width = 419
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -50.270833333333330000
+          836.083333333333300000
+          1108.604166666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._DefEM_ / CDSRapport._AppEM_ * CDSRapport._AppEN_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRShape1: TQRShape
+        Left = 32
+        Top = 268
+        Width = 654
+        Height = 24
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          63.500000000000000000
+          84.666666666666700000
+          709.083333333333000000
+          1730.375000000000000000)
+        Pen.Width = 4
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QREBesENTot: TQRExpr
+        Left = -41
+        Top = 272
+        Width = 441
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -108.479166666666700000
+          719.666666666666700000
+          1166.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMTot_ / CDSRapport._AppEM_ * CDSRapport._AppEN_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLBesENTot: TQRLabel
+        Left = 408
+        Top = 272
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          719.666666666666700000
+          105.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ NE'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctPort: TQRExpr
+        Left = 48
+        Top = 248
+        Width = 352
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          127.000000000000000000
+          656.166666666666700000
+          931.333333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMLait_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctEnt: TQRExpr
+        Left = 49
+        Top = 228
+        Width = 351
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          129.645833333333300000
+          603.250000000000000000
+          928.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMEnt_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText3: TQRDBText
+        Left = 210
+        Top = 100
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          555.625000000000000000
+          264.583333333333300000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GMQPort_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText2: TQRDBText
+        Left = 226
+        Top = 80
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          597.958333333333300000
+          211.666666666666700000
+          142.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Sevres_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText1: TQRDBText
+        Left = 227
+        Top = 40
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          600.604166666666700000
+          105.833333333333300000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Portee_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPoids: TQRLabel
+        Left = 40
+        Top = 144
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          381.000000000000000000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Body weight (kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCaract: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 116
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          21.166666666666670000
+          306.916666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Characteristics'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLMiseBas: TQRLabel
+        Left = 334
+        Top = 124
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          883.708333333333300000
+          328.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Farrowing'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP2: TQRLabel
+        Left = 40
+        Top = 164
+        Width = 146
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          433.916666666666700000
+          386.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Backfat thickness (mm)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAge: TQRLabel
+        Left = 40
+        Top = 60
+        Width = 150
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          158.750000000000000000
+          396.875000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Duration of lactation (d)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPortee: TQRLabel
+        Left = 40
+        Top = 40
+        Width = 87
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          105.833333333333300000
+          230.187500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Litter number'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSevres: TQRLabel
+        Left = 40
+        Top = 80
+        Width = 168
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          211.666666666666700000
+          444.500000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Number of piglets weaned'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPdsPt: TQRLabel
+        Left = 40
+        Top = 100
+        Width = 121
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          264.583333333333300000
+          320.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Litter growth (kg/d)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsMB: TQRDBText
+        Left = 342
+        Top = 144
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          381.000000000000000000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsMB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MB: TQRDBText
+        Left = 349
+        Top = 164
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          923.395833333333300000
+          433.916666666666700000
+          134.937500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeMB: TQRDBText
+        Left = 206
+        Top = 60
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          545.041666666666700000
+          158.750000000000000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJ: TQRLabel
+        Left = 40
+        Top = 196
+        Width = 235
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          518.583333333333300000
+          621.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Mean daily energy requirement'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLAA: TQRLabel
+        Left = 40
+        Top = 348
+        Width = 374
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          920.750000000000000000
+          989.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible amino acid requirement (standardized)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLNRJEnt: TQRLabel
+        Left = 40
+        Top = 228
+        Width = 83
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          603.250000000000000000
+          219.604166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Maintenance'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJPort: TQRLabel
+        Left = 40
+        Top = 248
+        Width = 27
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          656.166666666666700000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Milk'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJTot: TQRLabel
+        Left = 40
+        Top = 272
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          719.666666666666700000
+          87.312500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMEnt: TQRDBText
+        Left = 202
+        Top = 228
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          534.458333333333300000
+          603.250000000000000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMEnt_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMEnt: TQRLabel
+        Left = 288
+        Top = 228
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          603.250000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctEnt: TQRLabel
+        Left = 408
+        Top = 228
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          603.250000000000000000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMPort: TQRDBText
+        Left = 201
+        Top = 248
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          531.812500000000000000
+          656.166666666666700000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMLait_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMPort: TQRLabel
+        Left = 288
+        Top = 248
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          656.166666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctPort: TQRLabel
+        Left = 408
+        Top = 248
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          656.166666666666700000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTBesEMTot: TQRDBText
+        Left = 204
+        Top = 272
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          719.666666666666700000
+          201.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMTot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLBesEMTot: TQRLabel
+        Left = 288
+        Top = 272
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          719.666666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREArgPctLys: TQRExpr
+        Left = 292
+        Top = 612
+        Width = 268
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          772.583333333333300000
+          1619.250000000000000000
+          709.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Arg_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREHisPctLys: TQRExpr
+        Left = 293
+        Top = 592
+        Width = 267
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          775.229166666666700000
+          1566.333333333333000000
+          706.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._His_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREValPctLys: TQRExpr
+        Left = 293
+        Top = 572
+        Width = 267
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          775.229166666666700000
+          1513.416666666667000000
+          706.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Val_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREIlePctLys: TQRExpr
+        Left = 299
+        Top = 552
+        Width = 261
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          791.104166666666700000
+          1460.500000000000000000
+          690.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ile_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELeuPctLys: TQRExpr
+        Left = 291
+        Top = 532
+        Width = 269
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          769.937500000000000000
+          1407.583333333333000000
+          711.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Leu_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheTyrPctLys: TQRExpr
+        Left = 271
+        Top = 512
+        Width = 289
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          717.020833333333300000
+          1354.666666666667000000
+          764.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PheTyr_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPhePctLys: TQRExpr
+        Left = 289
+        Top = 492
+        Width = 271
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1301.750000000000000000
+          717.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Phe_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREThrPctLys: TQRExpr
+        Left = 294
+        Top = 472
+        Width = 266
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          777.875000000000000000
+          1248.833333333333000000
+          703.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Thr_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRETrpPctLys: TQRExpr
+        Left = 294
+        Top = 452
+        Width = 266
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          777.875000000000000000
+          1195.916666666667000000
+          703.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Trp_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetCysPctLys: TQRExpr
+        Left = 267
+        Top = 432
+        Width = 293
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          706.437500000000000000
+          1143.000000000000000000
+          775.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._MetCys_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetPctLys: TQRExpr
+        Left = 290
+        Top = 412
+        Width = 270
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          767.291666666666700000
+          1090.083333333333000000
+          714.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Met_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELysPctLys: TQRExpr
+        Left = 291
+        Top = 392
+        Width = 269
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          769.937500000000000000
+          1037.166666666667000000
+          711.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Lys_ / CDSRapport._Lys_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREArgAli: TQRExpr
+        Left = 45
+        Top = 612
+        Width = 395
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          119.062500000000000000
+          1619.250000000000000000
+          1045.104166666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Arg_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREHisAli: TQRExpr
+        Left = 46
+        Top = 592
+        Width = 394
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          121.708333333333300000
+          1566.333333333333000000
+          1042.458333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._His_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREValAli: TQRExpr
+        Left = 46
+        Top = 572
+        Width = 394
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          121.708333333333300000
+          1513.416666666667000000
+          1042.458333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Val_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREIleAli: TQRExpr
+        Left = 52
+        Top = 552
+        Width = 388
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          137.583333333333300000
+          1460.500000000000000000
+          1026.583333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ile_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELeuAli: TQRExpr
+        Left = 44
+        Top = 532
+        Width = 396
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          116.416666666666700000
+          1407.583333333333000000
+          1047.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Leu_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheTyrAli: TQRExpr
+        Left = 24
+        Top = 512
+        Width = 416
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          63.500000000000000000
+          1354.666666666667000000
+          1100.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._PheTyr_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_' +
+          ')'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheAli: TQRExpr
+        Left = 42
+        Top = 492
+        Width = 398
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          111.125000000000000000
+          1301.750000000000000000
+          1053.041666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Phe_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREThrAli: TQRExpr
+        Left = 47
+        Top = 472
+        Width = 393
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          124.354166666666700000
+          1248.833333333333000000
+          1039.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Thr_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRETrpAli: TQRExpr
+        Left = 47
+        Top = 452
+        Width = 393
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          124.354166666666700000
+          1195.916666666667000000
+          1039.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Trp_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetCysAli: TQRExpr
+        Left = 20
+        Top = 432
+        Width = 420
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          52.916666666666670000
+          1143.000000000000000000
+          1111.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._MetCys_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_' +
+          ')'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetAli: TQRExpr
+        Left = 43
+        Top = 412
+        Width = 397
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          113.770833333333300000
+          1090.083333333333000000
+          1050.395833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Met_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELysAli: TQRExpr
+        Left = 44
+        Top = 392
+        Width = 396
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          116.416666666666700000
+          1037.166666666667000000
+          1047.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Lys_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAATot: TQRLabel
+        Left = 299
+        Top = 372
+        Width = 21
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          791.104166666666700000
+          984.250000000000000000
+          55.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'g/d'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAAAli: TQRLabel
+        Left = 412
+        Top = 372
+        Width = 28
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1090.083333333333000000
+          984.250000000000000000
+          74.083333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'g/kg'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctLys: TQRLabel
+        Left = 524
+        Top = 372
+        Width = 36
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1386.416666666667000000
+          984.250000000000000000
+          95.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '% Lys'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLys: TQRLabel
+        Left = 40
+        Top = 392
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1037.166666666667000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lysine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMet: TQRLabel
+        Left = 40
+        Top = 412
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1090.083333333333000000
+          190.500000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMetCys: TQRLabel
+        Left = 40
+        Top = 432
+        Width = 134
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1143.000000000000000000
+          354.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine + Cystine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTrp: TQRLabel
+        Left = 40
+        Top = 452
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1195.916666666667000000
+          193.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Tryptophan'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLThr: TQRLabel
+        Left = 40
+        Top = 472
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1248.833333333333000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Threonine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPhe: TQRLabel
+        Left = 40
+        Top = 492
+        Width = 93
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1301.750000000000000000
+          246.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPheTyr: TQRLabel
+        Left = 40
+        Top = 512
+        Width = 163
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1354.666666666667000000
+          431.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine + Tyrosine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLeu: TQRLabel
+        Left = 40
+        Top = 532
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1407.583333333333000000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Leucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLIle: TQRLabel
+        Left = 40
+        Top = 552
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1460.500000000000000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Isoleucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLVal: TQRLabel
+        Left = 40
+        Top = 572
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1513.416666666667000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Valine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLHis: TQRLabel
+        Left = 40
+        Top = 592
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1566.333333333333000000
+          148.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Histidine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLArg: TQRLabel
+        Left = 40
+        Top = 612
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1619.250000000000000000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Arginine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLysTot: TQRDBText
+        Left = 284
+        Top = 392
+        Width = 36
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          751.416666666666700000
+          1037.166666666667000000
+          95.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Lys_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetTot: TQRDBText
+        Left = 283
+        Top = 412
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          748.770833333333300000
+          1090.083333333333000000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Met_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetCysTot: TQRDBText
+        Left = 260
+        Top = 432
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          687.916666666666700000
+          1143.000000000000000000
+          158.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_MetCys_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTrpTot: TQRDBText
+        Left = 287
+        Top = 452
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1195.916666666667000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Trp_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTThrTot: TQRDBText
+        Left = 287
+        Top = 472
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1248.833333333333000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Thr_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTot: TQRDBText
+        Left = 282
+        Top = 492
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          746.125000000000000000
+          1301.750000000000000000
+          100.541666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Phe_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTyrTot: TQRDBText
+        Left = 264
+        Top = 512
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          1354.666666666667000000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PheTyr_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLeuTot: TQRDBText
+        Left = 284
+        Top = 532
+        Width = 36
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          751.416666666666700000
+          1407.583333333333000000
+          95.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Leu_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTIleTot: TQRDBText
+        Left = 292
+        Top = 552
+        Width = 28
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          772.583333333333300000
+          1460.500000000000000000
+          74.083333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ile_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTValTot: TQRDBText
+        Left = 286
+        Top = 572
+        Width = 34
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          756.708333333333300000
+          1513.416666666667000000
+          89.958333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Val_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTHisTot: TQRDBText
+        Left = 286
+        Top = 592
+        Width = 34
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          756.708333333333300000
+          1566.333333333333000000
+          89.958333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_His_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTArgTot: TQRDBText
+        Left = 285
+        Top = 612
+        Width = 35
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          754.062500000000000000
+          1619.250000000000000000
+          92.604166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Arg_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLDeficit: TQRLabel
+        Left = 40
+        Top = 316
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          836.083333333333300000
+          177.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Deficiency'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTBesAli: TQRDBText
+        Left = 467
+        Top = 272
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1235.604166666667000000
+          719.666666666666700000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesAli_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLBesAli: TQRLabel
+        Left = 528
+        Top = 272
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1397.000000000000000000
+          719.666666666666700000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'kg feed'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLDefEN: TQRLabel
+        Left = 408
+        Top = 316
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          836.083333333333300000
+          105.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ NE'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTDefEM: TQRDBText
+        Left = 226
+        Top = 316
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          597.958333333333300000
+          836.083333333333300000
+          142.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DefEM_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLDefEM: TQRLabel
+        Left = 288
+        Top = 316
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          836.083333333333300000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTDefAli: TQRDBText
+        Left = 471
+        Top = 316
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1246.187500000000000000
+          836.083333333333300000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DefAli_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLDefAli: TQRLabel
+        Left = 528
+        Top = 316
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1397.000000000000000000
+          836.083333333333300000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'kg feed'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMin: TQRLabel
+        Left = 40
+        Top = 644
+        Width = 152
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          1703.916666666667000000
+          402.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Mineral requirement'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRECaAli: TQRExpr
+        Left = 49
+        Top = 708
+        Width = 391
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          129.645833333333000000
+          1873.250000000000000000
+          1034.520833333330000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ca_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPAli: TQRExpr
+        Left = 56
+        Top = 688
+        Width = 384
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          148.166666666667000000
+          1820.333333333330000000
+          1016.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._P_ / (CDSRapport._BesAli_ - CDSRapport._DefAli_)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel2: TQRLabel
+        Left = 299
+        Top = 668
+        Width = 21
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          791.104166666666700000
+          1767.416666666667000000
+          55.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'g/d'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel3: TQRLabel
+        Left = 412
+        Top = 668
+        Width = 28
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1090.083333333333000000
+          1767.416666666667000000
+          74.083333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'g/kg'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP: TQRLabel
+        Left = 40
+        Top = 688
+        Width = 135
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1820.333333333330000000
+          357.187500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible phosphorus'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCa: TQRLabel
+        Left = 40
+        Top = 708
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1873.250000000000000000
+          224.895833333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total calcium'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPTot: TQRDBText
+        Left = 296
+        Top = 688
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          783.166666666667000000
+          1820.333333333330000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCaTot: TQRDBText
+        Left = 289
+        Top = 708
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          764.645833333333000000
+          1873.250000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ca_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel1: TQRLabel
+        Left = 40
+        Top = 296
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          783.166666666666700000
+          201.083333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed intake'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel4: TQRLabel
+        Left = 288
+        Top = 296
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          783.166666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel5: TQRLabel
+        Left = 408
+        Top = 296
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          783.166666666666700000
+          105.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ NE'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel6: TQRLabel
+        Left = 528
+        Top = 296
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1397.000000000000000000
+          783.166666666666700000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'kg feed'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object IFPortee: TIntegerField
+      FieldName = '_Portee_'
+    end
+    object IFDureeLact: TIntegerField
+      FieldName = '_DureeLact_'
+    end
+    object FFPdsMB: TFloatField
+      FieldName = '_PdsMB_'
+    end
+    object FFP2MB: TFloatField
+      FieldName = '_P2MB_'
+    end
+    object FFSevres: TFloatField
+      FieldName = '_Sevres_'
+    end
+    object FFGMQPort: TFloatField
+      FieldName = '_GMQPort_'
+    end
+    object FFBesEMEnt: TFloatField
+      FieldName = '_BesEMEnt_'
+    end
+    object FFBesEMLait: TFloatField
+      FieldName = '_BesEMLait_'
+    end
+    object FFBesEMTot: TFloatField
+      FieldName = '_BesEMTot_'
+    end
+    object FFAppED: TFloatField
+      FieldName = '_AppED_'
+    end
+    object FFAppEM: TFloatField
+      FieldName = '_AppEM_'
+    end
+    object FFAppEN: TFloatField
+      FieldName = '_AppEN_'
+    end
+    object FFBesAli: TFloatField
+      FieldName = '_BesAli_'
+    end
+    object FFDefEM: TFloatField
+      FieldName = '_DefEM_'
+    end
+    object FFDefAli: TFloatField
+      FieldName = '_DefAli_'
+    end
+    object FFLys: TFloatField
+      FieldName = '_Lys_'
+    end
+    object FFMet: TFloatField
+      FieldName = '_Met_'
+    end
+    object FFMetCys: TFloatField
+      FieldName = '_MetCys_'
+    end
+    object FFTrp: TFloatField
+      FieldName = '_Trp_'
+    end
+    object FFThr: TFloatField
+      FieldName = '_Thr_'
+    end
+    object FFPhe: TFloatField
+      FieldName = '_Phe_'
+    end
+    object FFPheTyr: TFloatField
+      FieldName = '_PheTyr_'
+    end
+    object FFLeu: TFloatField
+      FieldName = '_Leu_'
+    end
+    object FFIle: TFloatField
+      FieldName = '_Ile_'
+    end
+    object FFVal: TFloatField
+      FieldName = '_Val_'
+    end
+    object FFHis: TFloatField
+      FieldName = '_His_'
+    end
+    object FFArg: TFloatField
+      FieldName = '_Arg_'
+    end
+    object FFP: TFloatField
+      FieldName = '_P_'
+    end
+    object FFCa: TFloatField
+      FieldName = '_Ca_'
+    end
+  end
+end
Index: UFRapBesGestE.dfm
===================================================================
--- UFRapBesGestE.dfm	(révision 0)
+++ UFRapBesGestE.dfm	(révision 3)
@@ -0,0 +1,6372 @@
+object FRapBesGestE: TFRapBesGestE
+  Left = 0
+  Top = 80
+  Caption = 'Report of requirements during gestation (herd)'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Requirements during gestation'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRLAAAli: TQRLabel
+        Left = 440
+        Top = 420
+        Width = 120
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1164.166666666670000000
+          1111.250000000000000000
+          317.500000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'g/kg'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAATot: TQRLabel
+        Left = 280
+        Top = 420
+        Width = 120
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          740.833333333333000000
+          1111.250000000000000000
+          317.500000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'g/d'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRShape1: TQRShape
+        Left = 32
+        Top = 352
+        Width = 654
+        Height = 24
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          63.500000000000000000
+          84.666666666666700000
+          931.333333333333000000
+          1730.375000000000000000)
+        Pen.Width = 4
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRShape2: TQRShape
+        Left = 280
+        Top = 436
+        Width = 120
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          740.833333333333000000
+          1153.583333333330000000
+          317.500000000000000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRShape3: TQRShape
+        Left = 440
+        Top = 436
+        Width = 120
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          1164.166666666670000000
+          1153.583333333330000000
+          317.500000000000000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QREArgPctLys: TQRExpr
+        Left = 344
+        Top = 688
+        Width = 296
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          910.166666666667000000
+          1820.333333333330000000
+          783.166666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Arg35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREHisPctLys: TQRExpr
+        Left = 345
+        Top = 668
+        Width = 295
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          1767.416666666667000000
+          780.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._His35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREValPctLys: TQRExpr
+        Left = 345
+        Top = 648
+        Width = 295
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          1714.500000000000000000
+          780.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Val35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREIlePctLys: TQRExpr
+        Left = 351
+        Top = 628
+        Width = 289
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          928.687500000000000000
+          1661.583333333333000000
+          764.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ile35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELeuPctLys: TQRExpr
+        Left = 343
+        Top = 608
+        Width = 297
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          907.520833333333300000
+          1608.666666666667000000
+          785.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Leu35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheTyrPctLys: TQRExpr
+        Left = 323
+        Top = 588
+        Width = 317
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          854.604166666666700000
+          1555.750000000000000000
+          838.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PheTyr35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPhePctLys: TQRExpr
+        Left = 341
+        Top = 568
+        Width = 299
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          902.229166666666700000
+          1502.833333333333000000
+          791.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Phe35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREThrPctLys: TQRExpr
+        Left = 346
+        Top = 548
+        Width = 294
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          915.458333333333300000
+          1449.916666666667000000
+          777.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Thr35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRETrpPctLys: TQRExpr
+        Left = 346
+        Top = 528
+        Width = 294
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          915.458333333333300000
+          1397.000000000000000000
+          777.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Trp35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetCysPctLys: TQRExpr
+        Left = 319
+        Top = 508
+        Width = 321
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          844.020833333333300000
+          1344.083333333333000000
+          849.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._MetCys35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetPctLys: TQRExpr
+        Left = 342
+        Top = 488
+        Width = 298
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          1291.166666666667000000
+          788.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Met35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELysPctLys: TQRExpr
+        Left = 343
+        Top = 468
+        Width = 297
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          907.520833333333300000
+          1238.250000000000000000
+          785.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Lys35_ / CDSRapport._Lys35_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREArgAli105: TQRExpr
+        Left = 288
+        Top = 688
+        Width = 272
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          762.000000000000000000
+          1820.333333333330000000
+          719.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Arg105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREHisAli105: TQRExpr
+        Left = 289
+        Top = 668
+        Width = 271
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1767.416666666667000000
+          717.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._His105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREValAli105: TQRExpr
+        Left = 289
+        Top = 648
+        Width = 271
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          1714.500000000000000000
+          717.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Val105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREIleAli105: TQRExpr
+        Left = 299
+        Top = 628
+        Width = 261
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          791.104166666666700000
+          1661.583333333333000000
+          690.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ile105_/ CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELeuAli105: TQRExpr
+        Left = 287
+        Top = 608
+        Width = 273
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1608.666666666667000000
+          722.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Leu105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheTyrAli105: TQRExpr
+        Left = 267
+        Top = 588
+        Width = 293
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          706.437500000000000000
+          1555.750000000000000000
+          775.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PheTyr105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheAli105: TQRExpr
+        Left = 285
+        Top = 568
+        Width = 275
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          754.062500000000000000
+          1502.833333333333000000
+          727.604166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Phe105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREThrAli105: TQRExpr
+        Left = 290
+        Top = 548
+        Width = 270
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          767.291666666666700000
+          1449.916666666667000000
+          714.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Thr105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRETrpAli105: TQRExpr
+        Left = 290
+        Top = 528
+        Width = 270
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          767.291666666666700000
+          1397.000000000000000000
+          714.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Trp105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetCysAli105: TQRExpr
+        Left = 263
+        Top = 508
+        Width = 297
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          695.854166666666700000
+          1344.083333333333000000
+          785.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._MetCys105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetAli105: TQRExpr
+        Left = 286
+        Top = 488
+        Width = 274
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          756.708333333333300000
+          1291.166666666667000000
+          724.958333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Met105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELysAli105: TQRExpr
+        Left = 287
+        Top = 468
+        Width = 273
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          1238.250000000000000000
+          722.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Lys105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREArgAli35: TQRExpr
+        Left = 215
+        Top = 688
+        Width = 265
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          568.854166666667000000
+          1820.333333333330000000
+          701.145833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Arg35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREHisAli35: TQRExpr
+        Left = 216
+        Top = 668
+        Width = 264
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          571.500000000000000000
+          1767.416666666667000000
+          698.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._His35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREValAli35: TQRExpr
+        Left = 216
+        Top = 648
+        Width = 264
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          571.500000000000000000
+          1714.500000000000000000
+          698.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Val35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREIleAli35: TQRExpr
+        Left = 222
+        Top = 628
+        Width = 258
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          587.375000000000000000
+          1661.583333333333000000
+          682.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ile35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELeuAli35: TQRExpr
+        Left = 214
+        Top = 608
+        Width = 266
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          566.208333333333300000
+          1608.666666666667000000
+          703.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Leu35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheTyrAli35: TQRExpr
+        Left = 194
+        Top = 588
+        Width = 286
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          513.291666666666700000
+          1555.750000000000000000
+          756.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PheTyr35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPheAli35: TQRExpr
+        Left = 212
+        Top = 568
+        Width = 268
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          560.916666666666700000
+          1502.833333333333000000
+          709.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Phe35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREThrAli35: TQRExpr
+        Left = 217
+        Top = 548
+        Width = 263
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          574.145833333333300000
+          1449.916666666667000000
+          695.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Thr35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRETrpAli35: TQRExpr
+        Left = 217
+        Top = 528
+        Width = 263
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          574.145833333333300000
+          1397.000000000000000000
+          695.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Trp35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetCysAli35: TQRExpr
+        Left = 190
+        Top = 508
+        Width = 290
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          502.708333333333300000
+          1344.083333333333000000
+          767.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._MetCys35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREMetAli35: TQRExpr
+        Left = 213
+        Top = 488
+        Width = 267
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          563.562500000000000000
+          1291.166666666667000000
+          706.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Met35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELysAli35: TQRExpr
+        Left = 214
+        Top = 468
+        Width = 266
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          566.208333333333300000
+          1238.250000000000000000
+          703.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Lys35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREENTot: TQRExpr
+        Left = -41
+        Top = 356
+        Width = 441
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -108.479166666666700000
+          941.916666666666700000
+          1166.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMTot_ / CDSRapport._AppEM_ * CDSRapport._AppEN_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLENTot: TQRLabel
+        Left = 408
+        Top = 356
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          941.916666666666700000
+          105.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ NE'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctRes: TQRExpr
+        Left = 46
+        Top = 332
+        Width = 354
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          121.708333333333300000
+          878.416666666666700000
+          936.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMRes_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctPort: TQRExpr
+        Left = 45
+        Top = 312
+        Width = 355
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          119.062500000000000000
+          825.500000000000000000
+          939.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMPort_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctThe: TQRExpr
+        Left = 48
+        Top = 292
+        Width = 352
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          127.000000000000000000
+          772.583333333333300000
+          931.333333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMThe_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctAct: TQRExpr
+        Left = 49
+        Top = 272
+        Width = 351
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          129.645833333333300000
+          719.666666666666700000
+          928.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMAct_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPctEnt: TQRExpr
+        Left = 49
+        Top = 252
+        Width = 351
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          129.645833333333300000
+          666.750000000000000000
+          928.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._BesEMEnt_ / CDSRapport._BesEMTot_ * 100'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText3: TQRDBText
+        Left = 218
+        Top = 104
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          576.791666666666700000
+          275.166666666666700000
+          164.041666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsPort_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBText2: TQRDBText
+        Left = 203
+        Top = 84
+        Width = 77
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          537.104166666666700000
+          222.250000000000000000
+          203.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NesTotaux_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAge: TQRExpr
+        Left = 239
+        Top = 188
+        Width = 281
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          632.354166666666700000
+          497.416666666666700000
+          743.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeMB_ - CDSRapport._AgeSail_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREP2: TQRExpr
+        Left = 253
+        Top = 168
+        Width = 267
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          669.395833333333300000
+          444.500000000000000000
+          706.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._P2MB_ - CDSRapport._P2Sail_'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPds: TQRExpr
+        Left = 239
+        Top = 148
+        Width = 281
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          632.354166666666700000
+          391.583333333333300000
+          743.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._PdsMB_ - CDSRapport._PdsSail_'
+        Mask = '0.0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSaillie: TQRLabel
+        Left = 231
+        Top = 128
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          611.187500000000000000
+          338.666666666666700000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Service'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPoids: TQRLabel
+        Left = 40
+        Top = 148
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          391.583333333333300000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Body weight (kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCaract: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 116
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          21.166666666666670000
+          306.916666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Characteristics'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLMiseBas: TQRLabel
+        Left = 334
+        Top = 128
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          883.708333333333300000
+          338.666666666666700000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Farrowing'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP2: TQRLabel
+        Left = 40
+        Top = 168
+        Width = 146
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          444.500000000000000000
+          386.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Backfat thickness (mm)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAge: TQRLabel
+        Left = 40
+        Top = 188
+        Width = 46
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          497.416666666666700000
+          121.708333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Age (d)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNesVifs: TQRLabel
+        Left = 40
+        Top = 84
+        Width = 146
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          222.250000000000000000
+          386.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Number of piglets born'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPdsPt: TQRLabel
+        Left = 40
+        Top = 104
+        Width = 108
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          275.166666666666700000
+          285.750000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Litter weight (kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLVariation: TQRLabel
+        Left = 461
+        Top = 128
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1219.729166666667000000
+          338.666666666666700000
+          156.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Variation'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsSail: TQRDBText
+        Left = 220
+        Top = 148
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          582.083333333333300000
+          391.583333333333300000
+          158.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSail_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsMB: TQRDBText
+        Left = 342
+        Top = 148
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          391.583333333333300000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsMB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2Sail: TQRDBText
+        Left = 227
+        Top = 168
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          600.604166666666700000
+          444.500000000000000000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2Sail_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MB: TQRDBText
+        Left = 349
+        Top = 168
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          923.395833333333300000
+          444.500000000000000000
+          134.937500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSail: TQRDBText
+        Left = 220
+        Top = 188
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          582.083333333333300000
+          497.416666666666700000
+          158.750000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeSail_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeMB: TQRDBText
+        Left = 342
+        Top = 188
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          497.416666666666700000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeMB_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJ: TQRLabel
+        Left = 40
+        Top = 220
+        Width = 235
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          582.083333333333300000
+          621.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Mean daily energy requirement'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLAA: TQRLabel
+        Left = 40
+        Top = 388
+        Width = 374
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          1026.583333333333000000
+          989.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible amino acid requirement (standardized)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLNRJEnt: TQRLabel
+        Left = 40
+        Top = 252
+        Width = 83
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          666.750000000000000000
+          219.604166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Maintenance'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJAct: TQRLabel
+        Left = 40
+        Top = 272
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          719.666666666666700000
+          124.354166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Activity'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJThe: TQRLabel
+        Left = 40
+        Top = 292
+        Width = 115
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          772.583333333333300000
+          304.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Thermoregulation'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJPort: TQRLabel
+        Left = 40
+        Top = 312
+        Width = 34
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          825.500000000000000000
+          89.958333333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Litter'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJRes: TQRLabel
+        Left = 40
+        Top = 332
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          878.416666666666700000
+          153.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Reserves'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNRJTot: TQRLabel
+        Left = 40
+        Top = 356
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          941.916666666666700000
+          87.312500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMEnt: TQRDBText
+        Left = 202
+        Top = 252
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          534.458333333333300000
+          666.750000000000000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMEnt_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMEnt: TQRLabel
+        Left = 288
+        Top = 252
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          666.750000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctEnt: TQRLabel
+        Left = 408
+        Top = 252
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          666.750000000000000000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMThe: TQRDBText
+        Left = 201
+        Top = 292
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          531.812500000000000000
+          772.583333333333300000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMThe_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMThe: TQRLabel
+        Left = 288
+        Top = 292
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          772.583333333333300000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctThe: TQRLabel
+        Left = 408
+        Top = 292
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          772.583333333333300000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMRes: TQRDBText
+        Left = 199
+        Top = 332
+        Width = 81
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          526.520833333333300000
+          878.416666666666700000
+          214.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMRes_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMRes: TQRLabel
+        Left = 288
+        Top = 332
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          878.416666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctRes: TQRLabel
+        Left = 408
+        Top = 332
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          878.416666666666700000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMAct: TQRDBText
+        Left = 202
+        Top = 272
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          534.458333333333300000
+          719.666666666666700000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMAct_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMAct: TQRLabel
+        Left = 288
+        Top = 272
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          719.666666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctAct: TQRLabel
+        Left = 408
+        Top = 272
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          719.666666666666700000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMPort: TQRDBText
+        Left = 198
+        Top = 312
+        Width = 82
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          523.875000000000000000
+          825.500000000000000000
+          216.958333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMPort_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMPort: TQRLabel
+        Left = 288
+        Top = 312
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          825.500000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctPort: TQRLabel
+        Left = 408
+        Top = 312
+        Width = 13
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          825.500000000000000000
+          34.395833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '%'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEMTot: TQRDBText
+        Left = 204
+        Top = 356
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          941.916666666666700000
+          201.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesEMTot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEMTot: TQRLabel
+        Left = 288
+        Top = 356
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          941.916666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'MJ ME'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAli: TQRLabel
+        Left = 528
+        Top = 356
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1397.000000000000000000
+          941.916666666666700000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'kg feed'
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAli: TQRDBText
+        Left = 467
+        Top = 356
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1235.604166666667000000
+          941.916666666666700000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_BesAli_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPctLys: TQRLabel
+        Left = 604
+        Top = 420
+        Width = 36
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1598.083333333333000000
+          1111.250000000000000000
+          95.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '% Lys'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAATot35: TQRLabel
+        Left = 283
+        Top = 444
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          748.770833333333300000
+          1174.750000000000000000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAATot105: TQRLabel
+        Left = 375
+        Top = 444
+        Width = 25
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          992.187500000000000000
+          1174.750000000000000000
+          66.145833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'End'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAAAli35: TQRLabel
+        Left = 443
+        Top = 444
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1172.104166666667000000
+          1174.750000000000000000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAAAli105: TQRLabel
+        Left = 535
+        Top = 444
+        Width = 25
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1415.520833333333000000
+          1174.750000000000000000
+          66.145833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'End'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLys: TQRLabel
+        Left = 40
+        Top = 468
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1238.250000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lysine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMet: TQRLabel
+        Left = 40
+        Top = 488
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1291.166666666667000000
+          190.500000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMetCys: TQRLabel
+        Left = 40
+        Top = 508
+        Width = 134
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1344.083333333333000000
+          354.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine + Cystine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTrp: TQRLabel
+        Left = 40
+        Top = 528
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1397.000000000000000000
+          193.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Tryptophan'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLThr: TQRLabel
+        Left = 40
+        Top = 548
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1449.916666666667000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Threonine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPhe: TQRLabel
+        Left = 40
+        Top = 568
+        Width = 93
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1502.833333333333000000
+          246.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPheTyr: TQRLabel
+        Left = 40
+        Top = 588
+        Width = 163
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1555.750000000000000000
+          431.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine + Tyrosine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLeu: TQRLabel
+        Left = 40
+        Top = 608
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1608.666666666667000000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Leucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLIle: TQRLabel
+        Left = 40
+        Top = 628
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1661.583333333333000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Isoleucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLVal: TQRLabel
+        Left = 40
+        Top = 648
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1714.500000000000000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Valine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLHis: TQRLabel
+        Left = 40
+        Top = 668
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1767.416666666667000000
+          148.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Histidine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLArg: TQRLabel
+        Left = 40
+        Top = 688
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          1820.333333333330000000
+          145.520833333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Arginine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLysTot35: TQRDBText
+        Left = 270
+        Top = 468
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          1238.250000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Lys35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetTot35: TQRDBText
+        Left = 269
+        Top = 488
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          711.729166666666700000
+          1291.166666666667000000
+          134.937500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Met35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetCysTot35: TQRDBText
+        Left = 246
+        Top = 508
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          650.875000000000000000
+          1344.083333333333000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_MetCys35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTrpTot35: TQRDBText
+        Left = 273
+        Top = 528
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          722.312500000000000000
+          1397.000000000000000000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Trp35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTThrTot35: TQRDBText
+        Left = 273
+        Top = 548
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          722.312500000000000000
+          1449.916666666667000000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Thr35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTot35: TQRDBText
+        Left = 268
+        Top = 568
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          709.083333333333300000
+          1502.833333333333000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Phe35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTyrTot35: TQRDBText
+        Left = 250
+        Top = 588
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          661.458333333333300000
+          1555.750000000000000000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PheTyr35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLeuTot35: TQRDBText
+        Left = 270
+        Top = 608
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          1608.666666666667000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Leu35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTIleTot35: TQRDBText
+        Left = 278
+        Top = 628
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          735.541666666666700000
+          1661.583333333333000000
+          111.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ile35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTValTot305: TQRDBText
+        Left = 272
+        Top = 648
+        Width = 48
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          719.666666666666700000
+          1714.500000000000000000
+          127.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Val35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTHisTot35: TQRDBText
+        Left = 272
+        Top = 668
+        Width = 48
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          719.666666666666700000
+          1767.416666666667000000
+          127.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_His35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTArgTot35: TQRDBText
+        Left = 271
+        Top = 688
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          717.020833333333000000
+          1820.333333333330000000
+          129.645833333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Arg35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLysTot105: TQRDBText
+        Left = 343
+        Top = 468
+        Width = 57
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          907.520833333333300000
+          1238.250000000000000000
+          150.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Lys105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetTot105: TQRDBText
+        Left = 342
+        Top = 488
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          1291.166666666667000000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Met105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTMetCysTot105: TQRDBText
+        Left = 319
+        Top = 508
+        Width = 81
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          844.020833333333300000
+          1344.083333333333000000
+          214.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_MetCys105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTrpTot105: TQRDBText
+        Left = 346
+        Top = 528
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          915.458333333333300000
+          1397.000000000000000000
+          142.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Trp105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTThrTot105: TQRDBText
+        Left = 346
+        Top = 548
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          915.458333333333300000
+          1449.916666666667000000
+          142.875000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Thr105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTot105: TQRDBText
+        Left = 341
+        Top = 568
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          902.229166666666700000
+          1502.833333333333000000
+          156.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Phe105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPheTyrTot105: TQRDBText
+        Left = 323
+        Top = 588
+        Width = 77
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          854.604166666666700000
+          1555.750000000000000000
+          203.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PheTyr105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLeuTot105: TQRDBText
+        Left = 343
+        Top = 608
+        Width = 57
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          907.520833333333300000
+          1608.666666666667000000
+          150.812500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Leu105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTIleTot105: TQRDBText
+        Left = 351
+        Top = 628
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          928.687500000000000000
+          1661.583333333333000000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ile105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTValTot105: TQRDBText
+        Left = 345
+        Top = 648
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          1714.500000000000000000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Val105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTHisTot105: TQRDBText
+        Left = 345
+        Top = 668
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          1767.416666666667000000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_His105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTArgTot105: TQRDBText
+        Left = 344
+        Top = 688
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          910.166666666667000000
+          1820.333333333330000000
+          148.166666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Arg105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMinAli: TQRLabel
+        Left = 440
+        Top = 744
+        Width = 120
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1164.166666666670000000
+          1968.500000000000000000
+          317.500000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'g/kg'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMinTot: TQRLabel
+        Left = 280
+        Top = 744
+        Width = 120
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          740.833333333333000000
+          1968.500000000000000000
+          317.500000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'g/d'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRShape4: TQRShape
+        Left = 280
+        Top = 760
+        Width = 120
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          740.833333333333000000
+          2010.833333333330000000
+          317.500000000000000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRShape5: TQRShape
+        Left = 440
+        Top = 760
+        Width = 120
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          1164.166666666670000000
+          2010.833333333330000000
+          317.500000000000000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLMin: TQRLabel
+        Left = 40
+        Top = 720
+        Width = 153
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666700000
+          105.833333333333000000
+          1905.000000000000000000
+          404.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Mineral requirement'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLMinTot35: TQRLabel
+        Left = 282
+        Top = 768
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          746.125000000000000000
+          2032.000000000000000000
+          100.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMinTot105: TQRLabel
+        Left = 379
+        Top = 768
+        Width = 21
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1002.770833333330000000
+          2032.000000000000000000
+          55.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'End'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMinAli35: TQRLabel
+        Left = 442
+        Top = 768
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1169.458333333330000000
+          2032.000000000000000000
+          100.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMinAli105: TQRLabel
+        Left = 539
+        Top = 768
+        Width = 21
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1426.104166666670000000
+          2032.000000000000000000
+          55.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'End'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPAli105: TQRExpr
+        Left = 299
+        Top = 792
+        Width = 261
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          791.104166666667000000
+          2095.500000000000000000
+          690.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._P105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPAli35: TQRExpr
+        Left = 226
+        Top = 792
+        Width = 254
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          597.958333333333000000
+          2095.500000000000000000
+          672.041666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._P35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel9: TQRLabel
+        Left = 40
+        Top = 792
+        Width = 135
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          2095.500000000000000000
+          357.187500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Digestible phosphorus'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP35Tot: TQRDBText
+        Left = 282
+        Top = 792
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          746.125000000000000000
+          2095.500000000000000000
+          100.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP105Tot: TQRDBText
+        Left = 355
+        Top = 792
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          939.270833333333000000
+          2095.500000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRECaAli105: TQRExpr
+        Left = 292
+        Top = 812
+        Width = 268
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          772.583333333333000000
+          2148.416666666670000000
+          709.083333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ca105_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRECaAli35: TQRExpr
+        Left = 219
+        Top = 812
+        Width = 261
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          579.437500000000000000
+          2148.416666666670000000
+          690.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._Ca35_ / CDSRapport._BesAli_'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel10: TQRLabel
+        Left = 40
+        Top = 812
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          105.833333333333000000
+          2148.416666666670000000
+          224.895833333333000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total calcium'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCa35Tot: TQRDBText
+        Left = 275
+        Top = 812
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          727.604166666667000000
+          2148.416666666670000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ca35_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTCa105Tot: TQRDBText
+        Left = 348
+        Top = 812
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          920.750000000000000000
+          2148.416666666670000000
+          137.583333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ca105_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLProfil: TQRLabel
+        Left = 40
+        Top = 40
+        Width = 91
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          105.833333333333300000
+          240.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Animal profile'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTProfil: TQRDBText
+        Left = 264
+        Top = 40
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          105.833333333333300000
+          116.416666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Profil_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLabel1: TQRLabel
+        Left = 40
+        Top = 60
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          158.750000000000000000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Housing'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLoge: TQRDBText
+        Left = 264
+        Top = 60
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          158.750000000000000000
+          113.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Loge_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRShape6: TQRShape
+        Left = 480
+        Top = 4
+        Width = 200
+        Height = 28
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          74.083333333333300000
+          1270.000000000000000000
+          10.583333333333300000
+          529.166666666667000000)
+        Pen.Width = 4
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRDBTCycle: TQRDBText
+        Left = 578
+        Top = 8
+        Width = 62
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1529.291666666667000000
+          21.166666666666670000
+          164.041666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Cycle_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLCycle: TQRLabel
+        Left = 520
+        Top = 8
+        Width = 58
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1375.833333333333000000
+          21.166666666666670000
+          153.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'LITTER'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object IFCycle: TIntegerField
+      FieldName = '_Cycle_'
+    end
+    object SFProfil: TStringField
+      FieldName = '_Profil_'
+      Size = 25
+    end
+    object SFLoge: TStringField
+      FieldName = '_Loge_'
+      Size = 25
+    end
+    object FFNesTotaux: TFloatField
+      FieldName = '_NesTotaux_'
+    end
+    object FFPdsPort: TFloatField
+      FieldName = '_PdsPort_'
+    end
+    object FFPdsSail: TFloatField
+      FieldName = '_PdsSail_'
+    end
+    object FFPdsMB: TFloatField
+      FieldName = '_PdsMB_'
+    end
+    object FFP2Sail: TFloatField
+      FieldName = '_P2Sail_'
+    end
+    object FFP2MB: TFloatField
+      FieldName = '_P2MB_'
+    end
+    object IFAgeSail: TIntegerField
+      FieldName = '_AgeSail_'
+    end
+    object IFAgeMB: TIntegerField
+      FieldName = '_AgeMB_'
+    end
+    object FFBesEMEnt: TFloatField
+      FieldName = '_BesEMEnt_'
+    end
+    object FFBesEMAct: TFloatField
+      FieldName = '_BesEMAct_'
+    end
+    object FFBesEMThe: TFloatField
+      FieldName = '_BesEMThe_'
+    end
+    object FFBesEMPort: TFloatField
+      FieldName = '_BesEMPort_'
+    end
+    object FFBesEMRes: TFloatField
+      FieldName = '_BesEMRes_'
+    end
+    object FFBesEMTot: TFloatField
+      FieldName = '_BesEMTot_'
+    end
+    object FFAppED: TFloatField
+      FieldName = '_AppED_'
+    end
+    object FFAppEM: TFloatField
+      FieldName = '_AppEM_'
+    end
+    object FFAppEN: TFloatField
+      FieldName = '_AppEN_'
+    end
+    object FFBesAli: TFloatField
+      FieldName = '_BesAli_'
+    end
+    object FFLys35: TFloatField
+      FieldName = '_Lys35_'
+    end
+    object FFMet35: TFloatField
+      FieldName = '_Met35_'
+    end
+    object FFMetCys35: TFloatField
+      FieldName = '_MetCys35_'
+    end
+    object FFTrp35: TFloatField
+      FieldName = '_Trp35_'
+    end
+    object FFThr35: TFloatField
+      FieldName = '_Thr35_'
+    end
+    object FFPhe35: TFloatField
+      FieldName = '_Phe35_'
+    end
+    object FFPheTyr35: TFloatField
+      FieldName = '_PheTyr35_'
+    end
+    object FFLeu35: TFloatField
+      FieldName = '_Leu35_'
+    end
+    object FFIle35: TFloatField
+      FieldName = '_Ile35_'
+    end
+    object FFVal35: TFloatField
+      FieldName = '_Val35_'
+    end
+    object FFHis35: TFloatField
+      FieldName = '_His35_'
+    end
+    object FFArg35: TFloatField
+      FieldName = '_Arg35_'
+    end
+    object FFLys105: TFloatField
+      FieldName = '_Lys105_'
+    end
+    object FFMet105: TFloatField
+      FieldName = '_Met105_'
+    end
+    object FFMetCys105: TFloatField
+      FieldName = '_MetCys105_'
+    end
+    object FFTrp105: TFloatField
+      FieldName = '_Trp105_'
+    end
+    object FFThr105: TFloatField
+      FieldName = '_Thr105_'
+    end
+    object FFPhe105: TFloatField
+      FieldName = '_Phe105_'
+    end
+    object FFPheTyr105: TFloatField
+      FieldName = '_PheTyr105_'
+    end
+    object FFLeu105: TFloatField
+      FieldName = '_Leu105_'
+    end
+    object FFIle105: TFloatField
+      FieldName = '_Ile105_'
+    end
+    object FFVal105: TFloatField
+      FieldName = '_Val105_'
+    end
+    object FFHis105: TFloatField
+      FieldName = '_His105_'
+    end
+    object FFArg105: TFloatField
+      FieldName = '_Arg105_'
+    end
+    object FFP35: TFloatField
+      FieldName = '_P35_'
+    end
+    object FFCa35: TFloatField
+      FieldName = '_Ca35_'
+    end
+    object FFP105: TFloatField
+      FieldName = '_P105_'
+    end
+    object FFCa105: TFloatField
+      FieldName = '_Ca105_'
+    end
+  end
+end
Index: UFRapSeqAliT.dfm
===================================================================
--- UFRapSeqAliT.dfm	(révision 0)
+++ UFRapSeqAliT.dfm	(révision 3)
@@ -0,0 +1,1379 @@
+object FRapSeqAliT: TFRapSeqAliT
+  Left = 0
+  Top = 80
+  Caption = 'Report of feed sequence plan for sows'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed sequence plan for sows'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 206
+      Width = 718
+      Height = 64
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        169.333333333333300000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRShape2: TQRShape
+        Left = 40
+        Top = 56
+        Width = 638
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          105.833333333333000000
+          148.166666666667000000
+          1688.041666666670000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLRegles: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 45
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          21.166666666666670000
+          119.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Rules'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLNo: TQRLabel
+        Left = 56
+        Top = 40
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          148.166666666666700000
+          105.833333333333300000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '#'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLModeFin: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 141
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          105.833333333333300000
+          373.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Termination condition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliment: TQRLabel
+        Left = 240
+        Top = 40
+        Width = 81
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          105.833333333333300000
+          214.312500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed(s) used'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEtat: TQRDBText
+        Left = 120
+        Top = 8
+        Width = 71
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          317.500000000000000000
+          21.166666666666670000
+          187.854166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_StrEtat_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 290
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 27
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          21.166666666666670000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 383
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          63.500000000000000000
+          1013.354166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          1711.854166666667000000
+          63.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+    object QRSDRegles: TQRSubDetail
+      Left = 38
+      Top = 270
+      Width = 718
+      Height = 20
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        52.916666666666670000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      Master = QRRapport
+      DataSet = CDSRegles
+      PrintBefore = False
+      PrintIfEmpty = True
+      object QRDBTAliment: TQRDBText
+        Left = 240
+        Top = 0
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          0.000000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_Aliment_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNo: TQRDBText
+        Left = 41
+        Top = 0
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          108.479166666666700000
+          0.000000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_No_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTModeFin: TQRDBText
+        Left = 80
+        Top = 0
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          0.000000000000000000
+          171.979166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRegles
+        DataField = '_ModeFin_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object TBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 88
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        232.833333333333300000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbTitle
+      object QRDBTSeqAli: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          140.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_SeqAli_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSeqAli: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    IndexFieldNames = '_SeqAli_ ; _Etat_'
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFSeqAli: TStringField
+      FieldName = '_SeqAli_'
+      Size = 25
+    end
+    object CDSRapport_Etat_: TIntegerField
+      FieldName = '_Etat_'
+    end
+    object SFStrEtat: TStringField
+      DisplayWidth = 16
+      FieldName = '_StrEtat_'
+      Size = 10
+    end
+  end
+  object DSRelation: TDataSource
+    DataSet = CDSRapport
+    Left = 40
+    Top = 8
+  end
+  object CDSRegles: TClientDataSet
+    Aggregates = <>
+    IndexFieldNames = '_SeqAli_ ; _Etat_ ; _No_'
+    MasterFields = '_SeqAli_ ; _Etat_'
+    MasterSource = DSRelation
+    PacketRecords = 0
+    Params = <>
+    Left = 72
+    Top = 8
+    object SFIndex: TStringField
+      FieldName = '_SeqAli_'
+      Size = 25
+    end
+    object IFEtat: TIntegerField
+      FieldName = '_Etat_'
+    end
+    object IFNo: TIntegerField
+      FieldName = '_No_'
+    end
+    object SFModeFin: TStringField
+      FieldName = '_ModeFin_'
+      Size = 30
+    end
+    object SFAliment: TStringField
+      FieldName = '_Aliment_'
+      Size = 120
+    end
+  end
+end
Index: UFTarif.dfm
===================================================================
--- UFTarif.dfm	(révision 0)
+++ UFTarif.dfm	(révision 3)
@@ -0,0 +1,64 @@
+object FTarif: TFTarif
+  Left = 165
+  Top = 200
+  HelpContext = 2800
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Costs of feeds'
+  ClientHeight = 328
+  ClientWidth = 304
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object LAliment: TLabel
+    Left = 16
+    Top = 8
+    Width = 24
+    Height = 13
+    Caption = 'Feed'
+  end
+  object LMonnaie: TLabel
+    Left = 232
+    Top = 8
+    Width = 56
+    Height = 13
+    Caption = '$ / 1000 kg'
+  end
+  object LBAliment: TListBox
+    Left = 8
+    Top = 24
+    Width = 288
+    Height = 264
+    Style = lbOwnerDrawFixed
+    ItemHeight = 13
+    Sorted = True
+    TabOrder = 0
+    OnClick = LBAlimentClick
+    OnDrawItem = LBAlimentDrawItem
+  end
+  object PBPrix: TPBNumEdit
+    Left = 230
+    Top = 296
+    Width = 48
+    Height = 21
+    Alignment = taRightJustify
+    Decimals = 2
+    NumberFormat = Standard
+    OnChange = PBPrixChange
+    OnKeyPress = PBPrixKeyPress
+    TabOrder = 1
+  end
+end
Index: numgrad.inc
===================================================================
--- numgrad.inc	(révision 0)
+++ numgrad.inc	(révision 3)
@@ -0,0 +1,42 @@
+{ ******************************************************************
+  Numerical gradient
+  ****************************************************************** }
+
+procedure Gradient(X, G : TVector);
+
+const
+  Eta = 1.0E-4;     { Relative increment }
+
+var
+  I     : Integer;  { Loop variable }
+  Temp  : Float;    { Temporary variable }
+  Delta : Float;    { Increment }
+  Xm    : Float;    { X - Delta }
+  Xp    : Float;    { X + Delta }
+  Fm    : Float;    { F(X - Delta) }
+  Fp    : Float;    { F(X + Delta) }
+
+begin
+  for I := 1 to Nvar do
+    begin
+      if X[I] <> 0.0 then
+        Delta := Eta * Abs(X[I])
+      else
+        Delta := Eta;
+
+      Xp := X[I] + Delta;
+       Xm := X[I] - Delta;
+
+      Temp := X[I];
+
+      X[I] := Xm;
+      Fm := Func(X);
+
+      X[I] := Xp;
+      Fp := Func(X);
+
+      G[I] := (Fp - Fm) / (2.0 * Delta);
+
+      X[I] := Temp
+    end;
+end;
Index: UFGraph3D.pas
===================================================================
--- UFGraph3D.pas	(révision 0)
+++ UFGraph3D.pas	(révision 3)
@@ -0,0 +1,667 @@
+unit UFGraph3D;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Messages, ComCtrls, StdCtrls, ExtCtrls,
+  Grids, Chart, Series, TeeProcs, TeEngine, TeePoin3, TeeSurfa, PBNumEdit,
+  PBSuperSpin, JvExControls, JvxSlider, UVariables;
+
+type
+  TFGraph3D = class(TForm)
+    Chart3D: TChart;
+    SeriesAdLib: TPoint3DSeries;
+    PanelData: TPanel;
+    GroupBoxX: TGroupBox;
+    GroupBoxY: TGroupBox;
+    GroupBoxZ: TGroupBox;
+    ComboBoxX: TComboBox;
+    ComboBoxY: TComboBox;
+    ComboBoxZ: TComboBox;
+    SliderRotation: TJvxSlider;
+    Panel3D: TPanel;
+    SliderElevation: TJvxSlider;
+    SliderPerspective: TJvxSlider;
+    SliderZoom: TJvxSlider;
+    GroupBoxAdLib: TGroupBox;
+    LabelA: TLabel;
+    LabelUnite: TLabel;
+    LabelEquation: TLabel;
+    LabelB: TLabel;
+    SuperSpinA: TPBSuperSpin;
+    SuperSpinB: TPBSuperSpin;
+    GroupBoxPotential: TGroupBox;
+    LabelEntretien: TLabel;
+    LabelPrecocite: TLabel;
+    LabelPDMoy: TLabel;
+    SuperSpinPDMoy: TPBSuperSpin;
+    SuperSpinPrecocite: TPBSuperSpin;
+    SuperSpinEntretien: TPBSuperSpin;
+    LabelPVPDmax: TLabel;
+    SuperSpinPVPDmax: TPBSuperSpin;
+    GroupBoxType: TGroupBox;
+    RadioButton2D: TRadioButton;
+    RadioButton3D: TRadioButton;
+    GroupBoxResult: TGroupBox;
+    StringGridResult: TStringGrid;
+    Panel2D: TPanel;
+    TrackBarJour: TTrackBar;
+    Chart2D: TChart;
+    SeriesCourbePD: TLineSeries;
+    SeriesLimitePD: TLineSeries;
+    SeriesPointPD: TLineSeries;
+    SeriesDroitePD: TLineSeries;
+    SeriesCourbeLD: TLineSeries;
+    SeriesPointLD: TLineSeries;
+    SeriesDroiteLD: TLineSeries;
+    LabelLimitPD2D: TLabel;
+    SeriesSurface: TSurfaceSeries;
+    SeriesRation: TPoint3DSeries;
+    EditUnit: TEdit;
+    EditEquation: TEdit;
+    LabelLimitPD3D: TLabel;
+    SeriesPointPDAdLib: TLineSeries;
+    SeriesPointLDAdLib: TLineSeries;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure ComboBoxXChange(Sender: TObject);
+    procedure ComboBoxYChange(Sender: TObject);
+    procedure ComboBoxZChange(Sender: TObject);
+    procedure SliderRotationChange(Sender: TObject);
+    procedure SliderElevationChange(Sender: TObject);
+    procedure SliderPerspectiveChange(Sender: TObject);
+    procedure SliderZoomChange(Sender: TObject);
+    procedure RadioButton2DClick(Sender: TObject);
+    procedure RadioButton3DClick(Sender: TObject);
+    procedure SuperSpinAChange(Sender: TObject);
+    procedure SuperSpinBChange(Sender: TObject);
+    procedure SuperSpinPDMoyChange(Sender: TObject);
+    procedure SuperSpinPrecociteChange(Sender: TObject);
+    procedure SuperSpinEntretienChange(Sender: TObject);
+    procedure SuperSpinPVPDmaxChange(Sender: TObject);
+    procedure StringGridResultDrawCell(Sender: TObject; ACol,
+      ARow: Integer; Rect: TRect; State: TGridDrawState);
+    procedure StringGridResultMouseMove(Sender: TObject;
+      Shift: TShiftState; X, Y: Integer);
+    procedure TrackBarJourChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+    Update : boolean ;
+    PResSimulP: PTabResSimulP;
+    procedure AfficheSimulation;
+    procedure AfficheResult;
+    procedure AfficheGraph2D;
+    procedure AfficheGraph3D;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FGraph3D: TFGraph3D;
+
+implementation
+
+uses
+  Graphics, Math, SysUtils, gnugettext, UCalcSimulP, UStrings, UFProfilP;
+
+{$R *.dfm}
+
+procedure TFGraph3D.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 184 + (Width - ClientWidth);
+  Width := 800;
+  Constraints.MinHeight := 528 + (Height - ClientHeight);
+  Height := 600;
+  ComboBoxX.ItemIndex := 0;
+  ComboBoxY.ItemIndex := 0;
+  ComboBoxZ.ItemIndex := 0;
+end;
+
+procedure TFGraph3D.FormShow(Sender: TObject);
+begin
+  Update := True;
+  EditUnit.Text := FProfilP.CBUnite.Text;
+  EditEquation.Text := FProfilP.CBEquation.Text;
+  SuperSpinA.Decimals := FProfilP.PBCoefA.Decimals;
+  SuperSpinA.Increment := FProfilP.PBCoefA.Increment;
+  SuperSpinA.AsFloat := FProfilP.PBCoefA.AsFloat;
+  SuperSpinB.Decimals := FProfilP.PBCoefB.Decimals;
+  SuperSpinB.Increment := FProfilP.PBCoefB.Increment;
+  SuperSpinB.AsFloat := FProfilP.PBCoefB.AsFloat;
+  SuperSpinPDMoy.AsFloat := FProfilP.PBPDMoy.AsFloat;
+  SuperSpinPrecocite.AsFloat := FProfilP.PBComport.AsFloat;
+  SuperSpinEntretien.AsFloat := FProfilP.PBEntretien.AsFloat;
+  SuperSpinPVPDmax.AsFloat := FProfilP.PBPVmr2.AsFloat;
+  Update := False;
+  SliderRotation.Value := Chart3D.View3DOptions.Rotation;
+  SliderElevation.Value := Chart3D.View3DOptions.Elevation;
+  SliderPerspective.Value := Chart3D.View3DOptions.Perspective;
+  SliderZoom.Value := Chart3D.View3DOptions.Zoom;
+  New(PResSimulP);
+  AfficheSimulation;
+end;
+
+procedure TFGraph3D.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  Dispose(PResSimulP);
+end;
+
+procedure TFGraph3D.SuperSpinAChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    PProfilP.a := SuperSpinA.AsFloat;
+    AfficheSimulation;
+  end;
+end;
+
+procedure TFGraph3D.SuperSpinBChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    PProfilP.b := SuperSpinB.AsFloat;
+    AfficheSimulation;
+  end;
+end;
+
+procedure TFGraph3D.SuperSpinPDMoyChange(Sender: TObject);
+begin
+  if not Update and (SuperSpinPDMoy.AsInteger >= SuperSpinPDMoy.MinValue)
+  then
+  begin
+    PProfilP.PDMoy := SuperSpinPDMoy.AsFloat;
+    AfficheSimulation;
+  end;
+end;
+
+procedure TFGraph3D.SuperSpinPrecociteChange(Sender: TObject);
+begin
+  if not Update and (SuperSpinPrecocite.AsFloat >= SuperSpinPrecocite.MinValue)
+  then
+  begin
+    PProfilP.BGompertz := SuperSpinPrecocite.AsFloat;
+    AfficheSimulation;
+  end;
+end;
+
+procedure TFGraph3D.SuperSpinEntretienChange(Sender: TObject);
+begin
+  if not Update and (SuperSpinEntretien.AsFloat >= SuperSpinEntretien.MinValue)
+  then
+  begin
+    PProfilP.Entretien := SuperSpinEntretien.AsFloat;
+    AfficheSimulation;
+  end;
+end;
+
+procedure TFGraph3D.SuperSpinPVPDmaxChange(Sender: TObject);
+begin
+  if not Update and (SuperSpinPVPDmax.AsFloat >= SuperSpinPVPDmax.MinValue)
+  then
+  begin
+    PProfilP.PVmr2 := SuperSpinPVPDmax.AsFloat;
+    AfficheSimulation;
+  end;
+end;
+
+procedure TFGraph3D.RadioButton2DClick(Sender: TObject);
+begin
+  GroupBoxX.Visible := False;
+  GroupBoxY.Visible := False;
+  GroupBoxZ.Visible := False;
+  Panel3D.Visible := False;
+  GroupBoxResult.Visible := True;
+  Panel2D.Visible := True;
+  AfficheResult;
+  AfficheGraph2D;
+end;
+
+procedure TFGraph3D.RadioButton3DClick(Sender: TObject);
+begin
+  GroupBoxResult.Visible := False;
+  Panel2D.Visible := False;
+  GroupBoxX.Visible := True;
+  GroupBoxY.Visible := True;
+  GroupBoxZ.Visible := True;
+  Panel3D.Visible := True;
+  AfficheGraph3D;
+end;
+
+procedure TFGraph3D.StringGridResultDrawCell(Sender: TObject; ACol,
+  ARow: Integer; Rect: TRect; State: TGridDrawState);
+begin
+  with (Sender as TStringGrid).Canvas do
+  begin
+    if ACol = 0
+    then // Titre
+      Brush.Color := clBtnFace
+    else // Donn�es
+      Brush.Color := clWhite;
+    // Fond
+    FillRect(Rect);
+    // Texte
+    Font.Color := clDefault;
+    SetTextAlign(Handle, TA_CENTER);
+    TextRect(Rect, Rect.Left + (Rect.Right - Rect.Left) div 2, Rect.Top + 2, (Sender as TStringGrid).Cells[ACol, ARow]);
+  end;
+end;
+
+procedure TFGraph3D.StringGridResultMouseMove(Sender: TObject;
+  Shift: TShiftState; X, Y: Integer);
+var
+  Col, Lig: integer;
+  Unite, s: String;
+begin
+  (Sender as TStringGrid).MouseToCell(X, Y, Col, Lig);
+  // Unit�
+  case Lig of
+    0: Unite := _('d');
+    1: Unite := _('kg');
+    3: Unite := Format('%s/%s', [_('kg'), _('d')]);
+    4, 6, 8: Unite := Format('%s/%s', [_('g'), _('d')]);
+    5, 7: Unite := Format('%s/%s %s', [_('g'), _('kg'), _('feed')]);
+    2, 9: Unite := Format('x %s', [_('maintenance')]);
+  else
+    Unite := '';
+  end;
+  // Hint
+  case Lig of
+    0: s := Format('%s (%s)', [_('Age'), Unite]);
+    1: s := Format('%s (%s)', [_('Body weight'), Unite]);
+    2: s := Format('%s (%s)', [_('Net energy intake'), Unite]);
+    3: s := Format('%s (%s)', [_('Feed intake'), Unite]);
+    4: s := Format('%s (%s)', [_('Protein deposition'), Unite]);
+    5: s := Format('%s (%s)', [_('Marginal protein deposition'), Unite]);
+    6: s := Format('%s (%s)', [_('Lipid deposition'), Unite]);
+    7: s := Format('%s (%s)', [_('Marginal lipid deposition'), Unite]);
+    8: s := Format('%s (%s)', [_('Protein deposition at the plateau'), Unite]);
+    9: s := Format('%s (%s)', [_('Feeding level required to attain the plateau'), Unite]);
+    10: s := _('Fraction of net energy deposited as protein');
+  else
+    s := '';
+  end ;
+  if (Sender as TStringGrid).Hint <> s
+  then // Changement de cellule
+  begin
+    (Sender as TStringGrid).Hint := s;
+    Application.ActivateHint(Mouse.CursorPos);
+  end ;
+end;
+
+procedure TFGraph3D.TrackBarJourChange(Sender: TObject);
+begin
+  TrackBarJour.SelEnd := TrackBarJour.Position;
+  AfficheResult;
+  AfficheGraph2D;
+end;
+
+procedure TFGraph3D.ComboBoxXChange(Sender: TObject);
+begin
+  AfficheGraph3D;
+end;
+
+procedure TFGraph3D.ComboBoxYChange(Sender: TObject);
+begin
+  AfficheGraph3D;
+end;
+
+procedure TFGraph3D.ComboBoxZChange(Sender: TObject);
+begin
+  AfficheGraph3D;
+end;
+
+procedure TFGraph3D.AfficheSimulation;
+begin
+//  CalcSimulP(-1, -1, -1, -1, -1, 1, {1,} PResSimulP);
+  CalcSimulP(-1, PProfilP.Num, PProfilP.SeqAli, PProfilP.Ration, -1, 1, PResSimulP);
+  TrackBarJour.Max := PResSimulP.NbJSim;
+  if RadioButton2D.Checked
+  then
+  begin
+    AfficheResult;
+    AfficheGraph2D;
+  end
+  else
+    AfficheGraph3D;
+end;
+
+procedure TFGraph3D.AfficheResult;
+var
+  j: Integer;
+  F, PDmaxE, a, b, px1, py1, PD, LD, NEmAL, NEcrois, PDLimit, PentePD, PenteLD, Correction: Double;
+begin
+  j := TrackBarJour.Position;
+  F := PResSimulP.TabResult[52, j];
+  PDmaxE := PResSimulP.TabResult[69, j];
+  a := PResSimulP.TabResult[74, j];
+  b := PResSimulP.TabResult[75, j];
+  px1 := PResSimulP.TabResult[76, j];
+  py1 := PResSimulP.TabResult[77, j];
+  PD := PResSimulP.TabResult[79, j];
+  LD := PResSimulP.TabResult[80, j];
+  NEmAL := PResSimulP.TabResult[71, j];
+  NEcrois := PResSimulP.TabResult[90, j] * 1000;
+  PDLimit := PResSimulP.TabResult[47, j];
+  if (px1 < F) and (PD < PDLimit)
+  then
+    PentePD := (a + 2 * b * (px1 - 1)) / GEProtJaap
+  else
+    PentePD := 0;
+  if px1 < F
+  then
+    Correction := LD / ((NEmAL * (px1 - 1) - (a * (px1 - 1) + b * Power (px1 - 1, 2)) * (1 + NEPD)) / ValEnergie[2, 2])
+  else
+    Correction := LD / ((NEmAL * (px1 - 1) - PDmaxE * (1 + NEPD)) / ValEnergie[2, 2]);
+  if px1 < F
+  then
+    PenteLD := Correction * ((NEmAL - (a + 2 * b * (px1 - 1)) * (1 + NEPD)) / ValEnergie[2, 2])
+  else
+    PenteLD := Correction * (NEmAL / ValEnergie[2, 2]);
+  // Titre
+  StringGridResult.Cells[0, 0] := StrAge;
+  StringGridResult.Cells[0, 1] := StrPV;
+  StringGridResult.Cells[0, 2] := StrEN;
+  StringGridResult.Cells[0, 3] := StrIngere;
+  StringGridResult.Cells[0, 4] := StrPD;
+  StringGridResult.Cells[0, 5] := StrPDMarginal;
+  StringGridResult.Cells[0, 6] := StrLD;
+  StringGridResult.Cells[0, 7] := StrLDMarginal;
+  StringGridResult.Cells[0, 8] := StrPDmax;
+  StringGridResult.Cells[0, 9] := StrF;
+  StringGridResult.Cells[0, 10] := StrX;
+  // Valeurs
+  StringGridResult.Cells[1, 0] := FloatToStrF(PResSimulP.TabResult[1, j], ffFixed, 15, 0);
+  StringGridResult.Cells[1, 1] := FloatToStrF(PResSimulP.TabResult[2, j], ffFixed, 15, 1);
+  StringGridResult.Cells[1, 2] := FloatToStrF(px1, ffFixed, 15, 2);
+  StringGridResult.Cells[1, 3] := FloatToStrF(px1 * (NEmAL / NEcrois), ffFixed, 15, 2);
+  StringGridResult.Cells[1, 4] := FloatToStrF(PD, ffFixed, 15, 1);
+  StringGridResult.Cells[1, 5] := FloatToStrF(PentePD / (NEmAL / NEcrois), ffFixed, 15, 1);
+  StringGridResult.Cells[1, 6] := FloatToStrF(LD, ffFixed, 15, 1);
+  StringGridResult.Cells[1, 7] := FloatToStrF(PenteLD / (NEmAL / NEcrois), ffFixed, 15, 1);
+  StringGridResult.Cells[1, 8] := FloatToStrF(PDmaxE / GEProtJaap, ffFixed, 15, 1);
+  StringGridResult.Cells[1, 9] := FloatToStrF(F, ffFixed, 15, 2);
+  StringGridResult.Cells[1, 10] := FloatToStrF((1 + NEPD) * py1 / ((px1 - 1) * NEmAL), ffFixed, 15, 2);
+end;
+
+procedure TFGraph3D.AfficheGraph2D;
+const
+  pas = 100;
+var
+  i, j: Integer;
+  F, PDmaxE, a, b, px1, PD, LD, NEmAL, NEcrois, PDLimit, x, y, PentePD, PenteLD, Correction, px1AL: Double;
+begin
+  j := TrackBarJour.Position;
+  F := PResSimulP.TabResult[52, j];
+  PDmaxE := PResSimulP.TabResult[69, j];
+  a := PResSimulP.TabResult[74, j];
+  b := PResSimulP.TabResult[75, j];
+  px1 := PResSimulP.TabResult[76, j];
+  PD := PResSimulP.TabResult[79, j];
+  LD := PResSimulP.TabResult[80, j];
+  NEmAL := PResSimulP.TabResult[71, j];
+  NEcrois := PResSimulP.TabResult[90, j] * 1000;
+  PDLimit := PResSimulP.TabResult[47, j];
+  px1AL := PResSimulP.TabResult[110, j];
+  //
+  // PD
+  //
+  // Courbe
+  SeriesCourbePD.Clear;
+  SeriesLimitePD.Clear;
+  for i := 1 * pas to 6 * pas do
+  begin
+    x := i / pas;
+    if x < F
+    then // curvilin�aire
+      y := (a * (x - 1) + b * Power(x - 1, 2)) / GEProtJaap
+    else // plateau
+      y := PDmaxE / GEProtJaap;
+    SeriesCourbePD.AddXY(x, y, '', clTeeColor);
+    if (PD = PDLimit) and (y > PD)
+    then // pointill�s
+      if i mod pas div 5 = 0 then SeriesLimitePD.AddXY(x, PD, '', clTeeColor);
+  end;
+  // Point
+  SeriesPointPD.Clear;
+  SeriesPointPD.AddXY(px1, PD, '', clTeeColor);
+  // Droite
+  SeriesDroitePD.Clear;
+  if (px1 < F) and (PD < PDLimit)
+  then
+    PentePD := (a + 2 * b * (px1 - 1)) / GEProtJaap
+  else
+    PentePD := 0;
+  SeriesDroitePD.AddXY(px1 - 1, PD - PentePD, '', clTeeColor);
+  SeriesDroitePD.AddXY(px1 + 1, PD + PentePD, '', clTeeColor);
+  // AdLib
+  SeriesPointPDAdLib.Clear;
+  if px1AL <> px1 then
+  begin
+    if px1AL < F
+    then // curvilin�aire
+      y := (a * (px1AL - 1) + b * Power(px1AL - 1, 2)) / GEProtJaap
+    else // plateau
+      y := PDmaxE / GEProtJaap;
+    SeriesPointPDAdLib.AddXY(px1AL, y, '', clTeeColor);
+  end;
+  //
+  // LD
+  //
+  if px1 < F
+  then
+    Correction := LD / ((NEmAL * (px1 - 1) - (a * (px1 - 1) + b * Power(px1 - 1, 2)) * (1 + NEPD)) / ValEnergie[2, 2])
+  else
+    Correction := LD / ((NEmAL * (px1 - 1) - PDmaxE * (1 + NEPD)) / ValEnergie[2, 2]);
+  // Courbe
+  SeriesCourbeLD.Clear;
+  for i := 1 * pas to 6 * pas do
+  begin
+    x := i / pas;
+    if x < F
+    then
+      y := Correction * ((NEmAL * (x - 1) - (a * (x - 1) + b * Power(x - 1, 2)) * (1 + NEPD)) / ValEnergie[2, 2])
+    else
+      y := Correction * ((NEmAL * (x - 1) - PDmaxE * (1 + NEPD)) / ValEnergie[2, 2]);
+    SeriesCourbeLD.AddXY(x, y, '', clTeeColor);
+  end ;
+  // Point
+  SeriesPointLD.Clear;
+  SeriesPointLD.AddXY(px1, LD, '', clTeeColor);
+  // Droite
+  SeriesDroiteLD.Clear;
+  if px1 < F
+  then
+    PenteLD := Correction * ((NEmAL - (a + 2 * b * (px1 - 1)) * (1 + NEPD)) / ValEnergie[2, 2])
+  else
+    PenteLD := Correction * (NEmAL / ValEnergie[2, 2]);
+  SeriesDroiteLD.AddXY(px1 - 1, LD - PenteLD, '', clTeeColor);
+  SeriesDroiteLD.AddXY(px1 + 1, LD + PenteLD, '', clTeeColor);
+  // AdLib
+  SeriesPointLDAdLib.Clear;
+  if px1AL <> px1 then
+  begin
+    if px1AL < F
+    then
+      y := Correction * ((NEmAL * (px1AL - 1) - (a * (px1AL - 1) + b * Power(px1AL - 1, 2)) * (1 + NEPD)) / ValEnergie[2, 2])
+    else
+      y := Correction * ((NEmAL * (px1AL - 1) - PDmaxE * (1 + NEPD)) / ValEnergie[2, 2]);
+    SeriesPointLDAdLib.AddXY(px1AL, y, '', clTeeColor);
+  end;
+  // Ajustement de la taille des axes
+  Chart2D.TopAxis.Minimum := 0;
+  Chart2D.TopAxis.Maximum := Chart2D.BottomAxis.Maximum * (NEmAL / NEcrois);
+  Chart2D.TopAxis.Minimum := Chart2D.BottomAxis.Minimum * (NEmAL / NEcrois);
+  LabelLimitPD2D.Visible := (PD = PDLimit);
+end;
+
+procedure TFGraph3D.AfficheGraph3D;
+const
+  pas = 10;
+var
+  i, j, debut, fin: Integer;
+  x, y, z, entretien, F, PDmaxE, a, b, px1, LD, NEmAL, NEcrois, Correction: Double;
+begin
+  SeriesSurface.Clear;
+  SeriesAdLib.Clear;
+  SeriesRation.Clear;
+  Chart3D.BottomAxis.Title.Caption := ComboBoxX.Text;
+  Chart3D.LeftAxis.Title.Caption := ComboBoxY.Text;
+  Chart3D.DepthAxis.Title.Caption := ComboBoxZ.Text;
+  if ComboBoxZ.ItemIndex = 1
+  then // x Entretien
+  begin
+    debut := 1 * pas;
+    fin := 4 * pas;
+  end
+  else // kg aliment
+  begin
+    debut := 0 * pas;
+    fin := 4 * pas;
+  end;
+  Chart3D.DepthAxis.Minimum := debut / pas;
+  Chart3D.DepthAxis.Maximum := fin / pas;
+  for j := 1 to PResSimulP.NbJSim do
+  begin
+    case ComboBoxX.ItemIndex of
+      1: // Age
+        x := PResSimulP.TabResult[1, j];
+      2: // Poids vif
+        x := PResSimulP.TabResult[2, j];
+      else // Dur�e
+        x := j;
+    end;
+    F := PResSimulP.TabResult[52, j];
+    PDmaxE := PResSimulP.TabResult[69, j];
+    a := PResSimulP.TabResult[74, j];
+    b := PResSimulP.TabResult[75, j];
+    px1 := PResSimulP.TabResult[76, j] ;
+    LD := PResSimulP.TabResult[80, j];
+    NEmAL := PResSimulP.TabResult[71, j];
+    NEcrois := PResSimulP.TabResult[90, j] * 1000;
+    if px1 < F
+    then
+      Correction := LD / ((NEmAL * (px1 - 1) - (a * (px1 - 1) + b * Power(px1 - 1, 2)) * (1 + NEPD)) / ValEnergie[2, 2])
+    else
+      Correction := LD / ((NEmAL * (px1 - 1) - PDmaxE * (1 + NEPD)) / ValEnergie[2, 2]) ;
+    // Surface
+    entretien := 1;
+    if ComboBoxZ.ItemIndex = 1
+    then // x Entretien
+      z := entretien
+    else // kg aliment
+      z := Trunc(pas * (NEmAL / NEcrois)) / pas;
+    SeriesSurface.AddXYZ(x, 0, z);
+    for i := debut to fin do
+    begin
+      if ComboBoxZ.ItemIndex = 1
+      then // x Entretien
+        entretien := i / pas
+      else // kg aliment
+        entretien := i / pas / (NEmAL / NEcrois);
+      if ComboBoxY.ItemIndex = 0
+      then // PD
+        if entretien < F
+        then // curvilin�aire
+          y := (a * (entretien - 1) + b * Power(entretien - 1, 2)) / GEProtJaap
+        else // plateau
+          y := PDmaxE / GEProtJaap
+      else // LD
+        if entretien < F
+        then
+          y := Correction * ((NEmAL * (entretien - 1) - (a * (entretien - 1) + b * Power(entretien - 1, 2)) * (1 + NEPD)) / ValEnergie[2, 2])
+        else
+          y := Correction * ((NEmAL * (entretien - 1) - PDmaxE * (1 + NEPD)) / ValEnergie[2, 2]);
+      z := i / pas;
+      if entretien > 1
+      then
+        SeriesSurface.AddXYZ(x, y, z);
+    end ;
+    // Ligne (ad libitum)
+    entretien := PResSimulP.TabResult[110, j]; // px1AL
+    if ComboBoxY.ItemIndex = 0
+    then // PD
+      if entretien < F
+      then // curvilin�aire
+        y := (a * (entretien - 1) + b * Power(entretien - 1, 2)) / GEProtJaap
+      else // plateau
+        y := PDmaxE / GEProtJaap
+    else // LD
+      if entretien < F
+      then
+        y := Correction * ((NEmAL * (entretien - 1) - (a * (entretien - 1) + b * Power(entretien - 1, 2)) * (1 + NEPD)) / ValEnergie[2, 2])
+      else
+        y := Correction * ((NEmAL * (entretien - 1) - PDmaxE * (1 + NEPD)) / ValEnergie[2, 2]);
+    if ComboBoxZ.ItemIndex = 1
+    then // x Entretien
+      z := entretien
+    else // kg aliment
+      z := entretien * (NEmAL / NEcrois);
+    SeriesAdLib.AddXYZ (x, y, z);
+    // Ligne (plan de rationnement)
+    entretien := px1;
+    if ComboBoxY.ItemIndex = 0
+    then // PD
+      if entretien < F
+      then // curvilin�aire
+        y := (a * (entretien - 1) + b * Power(entretien - 1, 2)) / GEProtJaap
+      else // plateau
+        y := PDmaxE / GEProtJaap
+    else // LD
+      if entretien < F
+      then
+        y := Correction * ((NEmAL * (entretien - 1) - (a * (entretien - 1) + b * Power(entretien - 1, 2)) * (1 + NEPD)) / ValEnergie[2, 2])
+      else
+        y := Correction * ((NEmAL * (entretien - 1) - PDmaxE * (1 + NEPD)) / ValEnergie[2, 2]);
+    if ComboBoxZ.ItemIndex = 1
+    then // x Entretien
+      z := entretien
+    else // kg aliment
+      z := entretien * (NEmAL / NEcrois);
+    SeriesRation.AddXYZ (x, y, z);
+  end;
+  i := 0;
+  for j := 1 to PResSimulP.NbJSim do
+    if PResSimulP.TabResult[79, j] = PResSimulP.TabResult[47, j]
+    then // PD = PDFirstLimit
+      Inc(i);
+  LabelLimitPD3D.Visible := (i > 0);
+end;
+
+procedure TFGraph3D.SliderRotationChange(Sender: TObject);
+begin
+  Chart3D.View3DOptions.Rotation := SliderRotation.Value;
+end;
+
+procedure TFGraph3D.SliderElevationChange(Sender: TObject);
+begin
+  Chart3D.View3DOptions.Elevation := SliderElevation.Value;
+end;
+
+procedure TFGraph3D.SliderPerspectiveChange(Sender: TObject);
+begin
+  Chart3D.View3DOptions.Perspective := SliderPerspective.Value;
+end;
+
+procedure TFGraph3D.SliderZoomChange(Sender: TObject);
+begin
+  Chart3D.View3DOptions.Zoom := SliderZoom.Value;
+end;
+
+procedure TFGraph3D.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFLoader.dfm
===================================================================
--- UFLoader.dfm	(révision 0)
+++ UFLoader.dfm	(révision 3)
@@ -0,0 +1,28 @@
+object FLoader: TFLoader
+  Left = 200
+  Top = 200
+  BorderStyle = bsNone
+  Caption = 'InraPorc'
+  ClientHeight = 32
+  ClientWidth = 400
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PBLoader: TProgressBar
+    Left = 0
+    Top = 0
+    Width = 400
+    Height = 32
+    Align = alClient
+    BorderWidth = 8
+    Step = 20
+    TabOrder = 0
+  end
+end
Index: UFResBesGestT.pas
===================================================================
--- UFResBesGestT.pas	(révision 0)
+++ UFResBesGestT.pas	(révision 3)
@@ -0,0 +1,965 @@
+unit UFResBesGestT;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, CheckLst, Menus, Printers, 
+  Math, Contnrs, PBNumEdit, PBSuperSpin, Grids, TeEngine, Series, TeeProcs, 
+  Chart, TeeEdit, UVariables, gnugettext;
+
+type
+  TFResBesGestT = class(TForm)
+    PC: TPageControl;
+    TabNRJ: TTabSheet;
+    TabAA: TTabSheet;
+    CBAA1: TComboBox;
+    CBAA3: TComboBox;
+    CBAA4: TComboBox;
+    CBAA2: TComboBox;
+    GBAAT: TGroupBox;
+    GBAAY: TGroupBox;
+    GBAAX: TGroupBox;
+    Graph: TChart;
+    GBNRJX: TGroupBox;
+    GBNRJY: TGroupBox;
+    CBNRJ3: TComboBox;
+    CBNRJ4: TComboBox;
+    GBNRJT: TGroupBox;
+    CBNRJ1: TComboBox;
+    CBNRJ2: TComboBox;
+    LBAA: TListBox;
+    LBNRJ: TListBox;
+    TSAli: TTabSheet;
+    GBAli1: TGroupBox;
+    GBAli2: TGroupBox;
+    GBAli3: TGroupBox;
+    GBAliMoy: TGroupBox;
+    PBDuree2: TPBNumEdit;
+    LAliDuree: TLabel;
+    LAliQuantite: TLabel;
+    PBQuantite2: TPBNumEdit;
+    PBDuree1: TPBSuperSpin;
+    PBQuantite1: TPBSuperSpin;
+    PBDureeMoy: TPBNumEdit;
+    PBQuantiteMoy: TPBNumEdit;
+    PBDuree3: TPBSuperSpin;
+    PBQuantite3: TPBSuperSpin;
+    GBAliX: TGroupBox;
+    CBAli2: TComboBox;
+    PM: TPopupMenu;
+    MI3D: TMenuItem;
+    MIPreview: TMenuItem;
+    MIPrint: TMenuItem;
+    PD: TPrintDialog;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormShow(Sender: TObject);
+    procedure PCChange(Sender: TObject);
+    procedure CBNRJ1Change(Sender: TObject);
+    procedure CBNRJ2Change(Sender: TObject);
+    procedure CBNRJ3Change(Sender: TObject);
+    procedure CBNRJ4Change(Sender: TObject);
+    procedure CBAA1Change(Sender: TObject);
+    procedure CBAA2Change(Sender: TObject);
+    procedure CBAA3Change(Sender: TObject);
+    procedure CBAA4Change(Sender: TObject);
+    procedure PBDuree1Change(Sender: TObject);
+    procedure PBDuree3Change(Sender: TObject);
+    procedure PBQuantite1Change(Sender: TObject);
+    procedure PBQuantite3Change(Sender: TObject);
+    procedure CBAli2Change(Sender: TObject);
+    procedure MI3DClick(Sender: TObject);
+    procedure MIPreviewClick(Sender: TObject);
+    procedure MIPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+    ListNRJ : TStrings ;
+    PieNRJ : TPieSeries ;
+    AreaNRJ : array of TAreaSeries ;
+    LineNRJ : TLineSeries ;
+    ListAA : TStrings ;
+    BarAA35 : THorizBarSeries ;
+    BarAA105 : THorizBarSeries ;
+    AreaAA : array of TAreaSeries ;
+    LineAA : TLineSeries ;
+    LineAli : array[1..2] of TLineSeries ;
+    procedure ResetGraph ;
+    procedure InitNRJ ;
+    procedure AffGraphNRJ ;
+    procedure InitAA ;
+    procedure AffGraphAA ;
+    procedure InitAli ;
+    procedure AffGraphAli ;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FResBesGestT: TFResBesGestT;
+
+implementation
+
+uses
+  UStrings, UFindRec, UUtil, UEchelle, UFBesGestT, UFPrevGraph, UFWarning;
+
+{$R *.dfm}
+
+{ TFResBesGestT }
+
+procedure TFResBesGestT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 544 + (Width - ClientWidth);
+  Width := 640;
+  Constraints.MinHeight := 400 + (Height - ClientHeight);
+  Height := 480;
+  CBAli2.ItemIndex := 0;
+  CBNRJ1.ItemIndex := 0;
+  CBNRJ2.ItemIndex := 0;
+  CBNRJ3.ItemIndex := 0;
+  CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
+  CBNRJ4.Items.Add('%');
+  CBNRJ4.ItemIndex := 0;
+  CBAA1.ItemIndex := 0;
+  CBAA2.ItemIndex := 0;
+  CBAA3.ItemIndex := 0;
+  CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+  CBAA4.Items.Add('%');
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrED]));
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrEM]));
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrEN]));
+  CBAA4.ItemIndex := 0;
+end;
+
+procedure TFResBesGestT.FormShow (Sender : TObject) ;
+begin
+  MIPrint.Enabled := IsComplete or IsEducation ;
+  // Aliment
+  InitAli ;
+  // Energie
+  InitNRJ ;
+  // Acides Amin�s
+  InitAA ;
+  // Initialisation des valeurs
+  PBDureeMoy.AsInteger := DureeGest ;
+  PBQuantiteMoy.AsFloat := FBesGestT.PBAliment.AsFloat ;
+  case TypeAliGest of
+    0 : // Une p�riode - Quantit� constante
+    begin
+      PBDuree2.AsInteger := PBDureeMoy.AsInteger ;
+      PBQuantite1.AsFloat := PBQuantiteMoy.AsFloat ;
+      PBQuantite3.AsFloat := PBQuantiteMoy.AsFloat ;
+    end ;
+    1 : // Deux p�riodes - Quantit� finale fix�e
+    begin
+      PBDuree3.AsInteger := Duree3 ;
+      PBQuantite1.AsFloat := PBQuantiteMoy.AsFloat ;
+      PBQuantite3.AsFloat := Quantite3 ;
+    end ;
+    2 : // Deux p�riodes - Augmentation fix�e
+    begin
+      PBDuree3.AsInteger := Duree3 ;
+      PBQuantite1.AsFloat := PBQuantiteMoy.AsFloat ;
+      PBQuantite3.AsFloat := (PBQuantiteMoy.AsFloat * PBDureeMoy.AsInteger
+          + Augment * PBDuree2.AsInteger)
+        / (PBDuree2.AsInteger + Duree3) ;
+    end ;
+    3 : // Trois p�riodes - Augmentation et quantit� finale fix�es
+    begin
+      PBDuree1.AsInteger := Duree1 ;
+      PBDuree3.AsInteger := Duree3 ;
+      PBQuantite3.AsFloat := Quantite3 ;
+      PBQuantite1.AsFloat := (PBQuantiteMoy.AsFloat * PBDureeMoy.AsInteger
+          - (Quantite3 - Augment) * PBDuree2.AsInteger
+          - Quantite3 * Duree3)
+        / Duree1 ;
+    end ;
+    4 : // Trois p�riodes - Quantit�s des p�riodes 2 et 3 fix�es
+    begin
+      PBDuree1.AsInteger := Duree1 ;
+      PBDuree3.AsInteger := Duree3 ;
+      PBQuantite3.AsFloat := Quantite3 ;
+      PBQuantite1.AsFloat := (PBQuantiteMoy.AsFloat * PBDureeMoy.AsInteger
+          - Quantite2 * PBDuree2.AsInteger
+          - Quantite3 * Duree3)
+        / Duree1 ;
+    end ;
+    5 : // Trois p�riodes - Augmentation et quantit� initiale fix�es
+    begin
+      PBDuree1.AsInteger := Duree1 ;
+      PBDuree3.AsInteger := Duree3 ;
+      PBQuantite1.AsFloat := Quantite1 ;
+      PBQuantite3.AsFloat := (PBQuantiteMoy.AsFloat * PBDureeMoy.AsInteger
+          - Quantite1 * Duree1
+          + Augment * PBDuree2.AsInteger)
+        / (Duree3 + PBDuree2.AsInteger) ;
+    end ;
+  end ;
+  // Affichage principal
+  PC.ActivePageIndex := 0 ;
+  PCChange (nil) ;
+end ;
+
+procedure TFResBesGestT.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+var
+  i : integer ;
+begin
+  // Aliment
+  for i := 1 to 2 do
+    LineAli[i].Free ;
+  // Energie
+  LineNRJ.Free ;
+  for i := 0 to ListNRJ.Count - 1 do
+    AreaNRJ[i].Free ;
+  SetLength (AreaNRJ, 0) ;
+  PieNRJ.Free ;
+  ListNRJ.Free ;
+  // Acides Amin�s
+  LineAA.Free ;
+  for i := 0 to ListAA.Count - 1 do
+    AreaAA[i].Free ;
+  SetLength (AreaAA, 0) ;
+  BarAA35.Free ;
+  BarAA105.Free ;
+  ListAA.Free ;
+end ;
+
+procedure TFResBesGestT.PCChange (Sender : TObject) ;
+begin
+  case PC.ActivePageIndex of
+    0 : // Aliment
+      AffGraphAli ;
+    1 : // Energie
+      AffGraphNRJ ;
+    2 : // Acides Amin�s
+      AffGraphAA ;
+  end ;
+end ;
+
+procedure TFResBesGestT.ResetGraph ;
+var
+  i : integer ;
+begin
+  Graph.UndoZoom ;
+  Graph.View3D := FALSE ;
+  Graph.Legend.Visible := TRUE ;
+  Graph.Legend.Inverted := TRUE ;
+  Graph.Title.Text.Clear ;
+  Graph.SubTitle.Text.Clear ;
+  Graph.LeftAxis.Automatic := FALSE ;
+  Graph.BottomAxis.MinimumOffset := 0;
+  Graph.BottomAxis.MaximumOffset := 0;
+  // Aliment
+  for i := 1 to 2 do
+    LineAli[i].Active := FALSE ;
+  // Energie
+  PieNRJ.Active := FALSE ;
+  for i := 0 to ListNRJ.Count - 1 do
+    AreaNRJ[i].Active := FALSE ;
+  LineNRJ.Active := FALSE ;
+  // Acides Amin�s
+  BarAA35.Active := FALSE ;
+  BarAA105.Active := FALSE ;
+  for i := 0 to ListAA.Count - 1 do
+    AreaAA[i].Active := FALSE ;
+  LineAA.Active := FALSE ;
+end ;
+
+procedure TFResBesGestT.MI3DClick (Sender : TObject) ;
+begin
+  Graph.View3D := not (Graph.View3D) ;
+end ;
+
+procedure TFResBesGestT.MIPreviewClick (Sender : TObject) ;
+begin
+  FPrevGraph := TFPrevGraph.Create (Self) ;
+  with FPrevGraph do
+  begin
+    TPPGraph.Panels.Add (Graph) ;
+    ShowModal ;
+    Release ;
+  end ;
+end ;
+
+procedure TFResBesGestT.MIPrintClick (Sender : TObject) ;
+begin
+  if PD.Execute
+  then
+  begin
+    Printer.Orientation := poLandscape ;
+    Graph.Print ;
+  end ;
+end ;
+
+/////////////////
+//   Aliment   //
+/////////////////
+procedure TFResBesGestT.InitAli ;
+const
+  TabColor : array[0..1] of TColor
+    = (clBlack, clRed) ;
+var
+  i : integer ;
+begin
+  // LineAli : s�ries (lignes) graphiques
+  for i := 1 to 2 do
+  begin
+    LineAli[i] := TLineSeries.Create (Graph) ;
+    LineAli[i].ParentChart := Graph ;
+    if i = 1
+    then // R�f�rence
+      LineAli[i].Title := StrReference
+    else // Besoin
+      LineAli[i].Title := StrBesoin ;
+    LineAli[i].SeriesColor := TabColor[i - 1] ;
+    LineAli[i].LinePen.Color := LineAli[i].SeriesColor ;
+    LineAli[i].LinePen.Width := 2 ;
+    Graph.AddSeries (LineAli[i]) ;
+  end ;
+end ;
+
+procedure TFResBesGestT.AffGraphAli ;
+var
+  i, j : integer ;
+
+  // Abscisse
+  function AliX : double ;
+  begin
+    case CBAli2.ItemIndex of
+      0 : // Age
+        result := FBesGestT.PBAgeSail.AsInteger + (j - 1) ;
+      1 : // Dur�e
+        result := j - 1 ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function AliY : double ;
+  begin
+
+    case i of
+      1 : // R�f�rence
+        result := FBesGestT.AppAli[j] ;
+      2 : // Besoin
+        if (j <= PBDuree1.AsInteger)
+        then
+          result := PBQuantite1.AsFloat
+        else
+          if (j > PBDureeMoy.AsInteger - PBDuree3.AsInteger)
+          then
+            result := PBQuantite3.AsFloat
+          else
+            result := PBQuantite2.AsFloat ;
+      else
+        result := 0 ;
+    end ;
+
+  end ;
+
+// AffGraphAli
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (TSAli.Caption) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s/%s)', [TSAli.Caption, StrKg, StrJ]) ;
+  Graph.BottomAxis.Title.Caption := CBAli2.Text ;
+  // Affichage des lignes
+  for i := 1 to 2 do
+    LineAli[i].Active := TRUE ;
+  for i := 1 to 2 do
+    LineAli[i].Clear ;
+  for i := 1 to 2 do
+    for j := 1 to DureeGest do
+      LineAli[i].AddXY (AliX, AliY, '', clTeeColor) ;
+  Graph.LeftAxis.Minimum := 0 ;
+  Graph.LeftAxis.Increment := 0.5 ;
+  Graph.LeftAxis.MinorTickCount := 4 ;
+  Graph.LeftAxis.Maximum := 4.5 ;
+  Graph.LeftAxis.Minimum := 1.5 ;
+  Graph.LeftAxis.AxisValuesFormat := '# ##0.0' ;
+end ;
+
+procedure TFResBesGestT.PBDuree1Change(Sender: TObject);
+begin
+  PBQuantite1.Visible := PBDuree1.AsInteger > 0 ;
+  if (PBDuree1.AsInteger >= PBDuree1.MinValue)
+    and (PBDuree1.AsInteger <= PBDuree1.MaxValue)
+  then
+  begin
+    PBDuree2.AsInteger := PBDureeMoy.AsInteger
+      - PBDuree1.AsInteger
+      - PBDuree3.AsInteger ;
+    PBQuantite2.AsFloat := (PBQuantiteMoy.AsFloat * PBDureeMoy.AsInteger
+        - PBQuantite1.AsFloat * PBDuree1.AsInteger
+        - PBQuantite3.AsFloat * PBDuree3.AsInteger)
+      / PBDuree2.AsInteger ;
+    AffGraphAli ;
+  end ;
+end;
+
+procedure TFResBesGestT.PBDuree3Change(Sender: TObject);
+begin
+  PBQuantite3.Visible := PBDuree3.AsInteger > 0 ;
+  if (PBDuree3.AsInteger >= PBDuree3.MinValue)
+    and (PBDuree3.AsInteger <= PBDuree3.MaxValue)
+  then
+  begin
+    PBDuree2.AsInteger := PBDureeMoy.AsInteger
+      - PBDuree1.AsInteger
+      - PBDuree3.AsInteger ;
+    PBQuantite2.AsFloat := (PBQuantiteMoy.AsFloat * PBDureeMoy.AsInteger
+        - PBQuantite1.AsFloat * PBDuree1.AsInteger
+        - PBQuantite3.AsFloat * PBDuree3.AsInteger)
+      / PBDuree2.AsInteger ;
+    AffGraphAli ;
+  end ;
+end;
+
+procedure TFResBesGestT.PBQuantite1Change(Sender: TObject);
+begin
+  PBQuantite2.AsFloat := (PBQuantiteMoy.AsFloat * PBDureeMoy.AsInteger
+      - PBQuantite1.AsFloat * PBDuree1.AsInteger
+      - PBQuantite3.AsFloat * PBDuree3.AsInteger)
+    / PBDuree2.AsInteger ;
+  AffGraphAli ;
+end;
+
+procedure TFResBesGestT.PBQuantite3Change(Sender: TObject);
+begin
+  PBQuantite2.AsFloat := (PBQuantiteMoy.AsFloat * PBDureeMoy.AsInteger
+      - PBQuantite1.AsFloat * PBDuree1.AsInteger
+      - PBQuantite3.AsFloat * PBDuree3.AsInteger)
+    / PBDuree2.AsInteger ;
+  AffGraphAli ;
+end;
+
+procedure TFResBesGestT.CBAli2Change(Sender: TObject);
+begin
+  AffGraphAli ;
+end;
+
+/////////////////
+//   Energie   //
+/////////////////
+procedure TFResBesGestT.InitNRJ ;
+const
+  TabColor : array[0..4] of TColor
+    = (clOlive, clGray, clAqua, clPurple, clNavy) ;
+var
+  i : integer ;
+begin
+  // ListNRJ : liste pour l'�nergie
+  ListNRJ := TStringList.Create ;
+  ListNRJ.Assign (LBNRJ.Items) ;
+  // PieNRJ : s�rie (camembert) graphique
+  PieNRJ := TPieSeries.Create (Graph) ;
+  PieNRJ.ParentChart := Graph ;
+  PieNRJ.Marks.ArrowLength := 24 ;
+  PieNRJ.Marks.Arrow.Color := clBlack ;
+  PieNRJ.Marks.Brush.Style := bsClear ;
+  PieNRJ.Marks.Frame.Visible := FALSE ;
+  PieNRJ.ValueFormat := Format ('# ##0.0 %s', [StrMJ]) ;
+  PieNRJ.PercentFormat := '##0.0 %' ;
+  Graph.AddSeries (PieNRJ) ;
+  // AreaNRJ : s�ries (aires) graphiques
+  SetLength (AreaNRJ, ListNRJ.Count) ;
+  for i := 0 to ListNRJ.Count - 1 do
+  begin
+    AreaNRJ[i] := TAreaSeries.Create (Graph) ;
+    AreaNRJ[i].ParentChart := Graph ;
+    AreaNRJ[i].Title := ListNRJ[i] ;
+    AreaNRJ[i].SeriesColor := TabColor[i] ;
+    AreaNRJ[i].AreaLinesPen.Visible := FALSE ;
+    Graph.AddSeries (AreaNRJ[i]) ;
+  end ;
+  // LineNRJ : s�rie (ligne) graphique
+  LineNRJ := TLineSeries.Create (Graph) ;
+  LineNRJ.ParentChart := Graph ;
+  LineNRJ.Title := StrReference ;
+  LineNRJ.SeriesColor := clBlack ;
+  LineNRJ.LinePen.Color := LineNRJ.SeriesColor ;
+  LineNRJ.LinePen.Width := 2 ;
+  Graph.AddSeries (LineNRJ) ;
+end ;
+
+procedure TFResBesGestT.AffGraphNRJ ;
+var
+  i, j : integer ;
+  y, m, t : double ;
+
+  // Abscisse
+  function NRJX : double ;
+  begin
+    case CBNRJ1.ItemIndex of
+      1 : // R�partition dynamique
+        case CBNRJ2.ItemIndex of
+          0 : // Age
+            result := FBesGestT.PBAgeSail.AsInteger + (j - 1) ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function NRJY : double ;
+  var
+    BesEM : double ;
+  begin
+    case CBNRJ1.ItemIndex of
+      0 : // R�partition globale
+        case i of
+          0 : // Entretien
+            result := FBesGestT.BesEMEntTot ;
+          1 : // Activit�
+            result := FBesGestT.BesEMActTot ;
+          2 : // Thermor�gulation
+            result := FBesGestT.BesEMTheTot ;
+          3 : // Port�e
+            result := FBesGestT.BesEMPortTot ;
+          4 : // R�serve
+            result := FBesGestT.BesEMResTot ;
+          else
+            result := 0 ;
+        end ;
+      1 : // R�partition dynamique
+        case i of
+          -1 : // Apport
+            result := FBesGestT.AppEM[j] ;
+          0 : // Entretien
+            result := FBesGestT.BesEMEnt[j] ;
+          1 : // Activit�
+            result := FBesGestT.BesEMAct[j] ;
+          2 : // Thermor�gulation
+            result := FBesGestT.BesEMThe[j] ;
+          3 : // Port�e
+            result := FBesGestT.BesEMPort[j] ;
+          4 : // R�serve
+          begin
+            if (j <= PBDuree1.AsInteger)
+            then
+              BesEM := PBQuantite1.AsFloat / FBesGestT.AppAliTot * FBesGestT.AppEMTot
+            else
+              if (j > PBDureeMoy.AsInteger - PBDuree3.AsInteger)
+              then
+                BesEM := PBQuantite3.AsFloat / FBesGestT.AppAliTot * FBesGestT.AppEMTot
+              else
+                BesEM := PBQuantite2.AsFloat / FBesGestT.AppAliTot * FBesGestT.AppEMTot ;
+            result := Max (BesEM - FBesGestT.BesEMEnt[j] - FBesGestT.BesEMAct[j] - FBesGestT.BesEMPort[j] - FBesGestT.BesEMThe[j], 0) ;
+          end ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphNRJ
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (Format ('%s : %s', [TabNRJ.Caption, CBNRJ1.Text])) ;
+  case CBNRJ3.ItemIndex of
+    0 : // Energie digestible
+      m := FBesGestT.AppEDTot / FBesGestT.AppEMTot ;
+    2 : // Energie nette
+      m := FBesGestT.AppENTot / FBesGestT.AppEMTot ;
+    else
+      m := 1 ;
+  end ;
+  case CBNRJ1.ItemIndex of
+    0 : // R�partition globale
+    begin
+      Graph.View3D := TRUE ;
+      Graph.Legend.Visible := FALSE ;
+      // Affichage du camembert
+      PieNRJ.Active := TRUE ;
+      PieNRJ.Clear ;
+      if (CBNRJ4.ItemIndex = 1)
+      then
+        PieNRJ.Marks.Style := smsLabelPercent
+      else
+        PieNRJ.Marks.Style := smsLabelValue ;
+      for i := 0 to ListNRJ.Count - 1 do
+      begin
+        y := NRJY * m ;
+        if (y > PICO)
+        then
+          PieNRJ.AddPie (y, ListNRJ[i], AreaNRJ[i].SeriesColor) ;
+      end ;
+      t := FBesGestT.BesEMTot * m ;
+      Graph.SubTitle.Text.Add (Format ('%s : %3.1f %s/%s', [StrTotal, t, StrMJ, StrJ])) ;
+    end ;
+    1 : // R�partition dynamique
+    begin
+      Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]) ;
+      Graph.BottomAxis.Title.Caption := CBNRJ2.Text ;
+      // Affichage des aires
+      for i := 0 to ListNRJ.Count - 1 do
+        AreaNRJ[i].Active := TRUE ;
+      for i := 0 to ListNRJ.Count - 1 do
+        AreaNRJ[i].Clear ;
+      if (CBNRJ4.ItemIndex = 1)
+      then
+        for i := 0 to ListNRJ.Count - 1 do
+          AreaNRJ[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListNRJ.Count - 1 do
+          AreaNRJ[i].MultiArea := maStacked ;
+      for i := 0 to ListNRJ.Count - 1 do
+        for j := 1 to DureeGest do
+          AreaNRJ[i].AddXY (NRJX, NRJY * m, '', clTeeColor) ;
+      // Affichage de la ligne
+      if CBNRJ4.ItemIndex <> 1
+      then
+      begin
+        i := -1 ;
+        LineNRJ.Active := TRUE ;
+        LineNRJ.Clear ;
+        for j := 1 to DureeGest do
+          LineNRJ.AddXY (NRJX, NRJY * m, '', clTeeColor) ;
+      end ;
+    end ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResBesGestT.CBNRJ1Change (Sender : TObject) ;
+begin
+  case CBNRJ1.ItemIndex of
+    0 : // R�partition globale
+      CBNRJ2.Visible := FALSE ;
+    1 : // R�partition dynamique
+      CBNRJ2.Visible := TRUE ;
+  end ;
+  AffGraphNRJ ;
+end ;
+
+procedure TFResBesGestT.CBNRJ2Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+procedure TFResBesGestT.CBNRJ3Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+procedure TFResBesGestT.CBNRJ4Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+///////////////////////
+//   Acides amin�s   //
+///////////////////////
+procedure TFResBesGestT.InitAA ;
+const
+  TabColor : array[0..3] of TColor
+    = (clOlive, clPurple, clNavy, clGreen) ;
+var
+  i : integer ;
+begin
+  // ListAA : liste pour les acides amin�s
+  ListAA := TStringList.Create ;
+  ListAA.Assign (LBAA.Items) ;
+  // BarAA35 et BarAA105 : s�ries (barres) graphiques
+  BarAA35 := THorizBarSeries.Create (Graph) ;
+  BarAA35.ParentChart := Graph ;
+  BarAA35.Title := Str35j ;
+  BarAA35.SeriesColor := clGreen ;
+  BarAA35.BarPen.Color := BarAA35.SeriesColor ;
+  BarAA35.Marks.Visible := FALSE ;
+  BarAA35.MultiBar := mbSide ;
+  Graph.AddSeries (BarAA35) ;
+  BarAA105 := THorizBarSeries.Create (Graph) ;
+  BarAA105.ParentChart := Graph ;
+  BarAA105.Title := Str105j ;
+  BarAA105.SeriesColor := clNavy ;
+  BarAA105.BarPen.Color := BarAA105.SeriesColor ;
+  BarAA105.Marks.Visible := FALSE ;
+  BarAA105.MultiBar := mbSide ;
+  Graph.AddSeries (BarAA105) ;
+  // AreaAA : s�ries (aires) graphiques
+  SetLength (AreaAA, ListAA.Count) ;
+  for i := 0 to ListAA.Count - 1 do
+  begin
+    AreaAA[i] := TAreaSeries.Create (Graph) ;
+    AreaAA[i].ParentChart := Graph ;
+    AreaAA[i].Title := ListAA[i] ;
+    AreaAA[i].SeriesColor := TabColor[i] ;
+    AreaAA[i].AreaLinesPen.Visible := FALSE ;
+    Graph.AddSeries (AreaAA[i]) ;
+  end ;
+  // LineAA : s�rie (ligne) graphique
+  LineAA := TLineSeries.Create (Graph) ;
+  LineAA.ParentChart := Graph ;
+  LineAA.Title := StrReference ;
+  LineAA.SeriesColor := clBlack ;
+  LineAA.LinePen.Color := LineAA.SeriesColor ;
+  LineAA.LinePen.Width := 2 ;
+  Graph.AddSeries (LineAA) ;
+end ;
+
+procedure TFResBesGestT.AffGraphAA ;
+var
+  h, i, j : integer ;
+  s : string ;
+
+  // Abscisse
+  function AAX : double ;
+  begin
+    case CBAA1.ItemIndex of
+      0 : // R�partition dynamique
+        case CBAA2.ItemIndex of
+          0 : // Age
+            result := FBesGestT.PBAgeSail.AsInteger + (j - 1) ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function AAY : double ;
+  var
+    a : integer ;
+    d, BesAA, BesEM : double ;
+  begin
+    case h of
+      3 : // met+cys
+        a := 13 ;
+      7 : // phe+tyr
+        a := 14 ;
+      else
+        a := h ;
+    end ;
+    case CBAA1.ItemIndex of
+      0 : // R�partition dynamique
+      begin
+        // Diviseur
+        if i = -1
+        then // Apport
+          BesEM := 0
+        else
+          if j <= PBDuree1.AsInteger
+          then
+            BesEM := PBQuantite1.AsFloat / FBesGestT.AppAliTot * FBesGestT.AppEMTot
+          else
+            if j > PBDureeMoy.AsInteger - PBDuree3.AsInteger
+            then
+              BesEM := PBQuantite3.AsFloat / FBesGestT.AppAliTot * FBesGestT.AppEMTot
+            else
+              BesEM := PBQuantite2.AsFloat / FBesGestT.AppAliTot * FBesGestT.AppEMTot ;
+        case CBAA4.ItemIndex of
+          2 : // Aliment
+            if i = -1
+            then // Apport
+              d := FBesGestT.AppAli[j]
+            else // Besoin
+              d := BesEM * FBesGestT.AppAliTot / FBesGestT.AppEMTot ;
+          3 : // ED
+            if i = -1
+            then // Apport
+              d := FBesGestT.AppED[j]
+            else // Besoin
+              d := BesEM * FBesGestT.AppEDTot / FBesGestT.AppEMTot ;
+          4 : // EM
+            if i = -1
+            then // Apport
+              d := FBesGestT.AppEM[j]
+            else // Besoin
+              d := BesEM ;
+          5 : // EN
+            if i = -1
+            then // Apport
+              d := FBesGestT.AppEN[j]
+            else // Besoin
+              d := BesEM * FBesGestT.AppENTot / FBesGestT.AppEMTot ;
+          else
+            d := 1 ;
+        end ;
+        case i of
+          -1 : // Apport
+            result := FBesGestT.AppAA[a, j] / d ;
+          0 : // Entretien
+            result := FBesGestT.BesAAEnt[a, j] / d ;
+          1 : // Port�e
+            result := FBesGestT.BesAAPort[a, j] / d ;
+          2 : // R�serve
+            result := FBesGestT.BesAARes[a, j] / d ;
+          3 : // Exc�s
+          begin
+            if j <= PBDuree1.AsInteger
+            then
+              BesAA := PBQuantite1.AsFloat / FBesGestT.PBAliment.AsFloat * FBesGestT.BesAA[a, 105]
+            else
+              if j > PBDureeMoy.AsInteger - PBDuree3.AsInteger
+              then
+                BesAA := PBQuantite3.AsFloat / FBesGestT.PBAliment.AsFloat * FBesGestT.BesAA[a, 105]
+              else
+                BesAA := PBQuantite2.AsFloat / FBesGestT.PBAliment.AsFloat * FBesGestT.BesAA[a, 105] ;
+            result := Max (BesAA - FBesGestT.BesAAEnt[a, j] - FBesGestT.BesAAPort[a, j] - FBesGestT.BesAARes[a, j], 0) / d ;
+          end ;
+          else
+            result := 0 ;
+        end ;
+      end ;
+      1 : // Besoin
+      begin
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1 : // Lysine
+            d := FBesGestT.BesAA[1, j] / 100 ;
+          else
+            d := 1 ;
+        end ;
+        result := FBesGestT.BesAA[a, j] / d ;
+      end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphAA
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (CBAA1.Text) ;
+  Graph.SubTitle.Text.Add(StrDigestStd);
+  case CBAA1.ItemIndex of
+    0 : // R�partition dynamique
+    begin
+      Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBAA3.Text, CBAA4.Text]) ;
+      Graph.BottomAxis.Title.Caption := CBAA2.Text ;
+      h := CBAA3.ItemIndex + 1 ;
+      // Affichage des aires
+      for i := 0 to ListAA.Count - 1 do
+        AreaAA[i].Active := TRUE ;
+      for i := 0 to ListAA.Count - 1 do
+        AreaAA[i].Clear ;
+      if (CBAA4.ItemIndex = 1)
+      then
+        for i := 0 to ListAA.Count - 1 do
+          AreaAA[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListAA.Count - 1 do
+          AreaAA[i].MultiArea := maStacked ;
+      for i := 0 to ListAA.Count - 1 do
+        for j := 1 to DureeGest do
+          AreaAA[i].AddXY (AAX, AAY, '', clTeeColor) ;
+      // Affichage de la ligne
+      if CBAA4.ItemIndex <> 1
+      then
+      begin
+        i := -1 ;
+        LineAA.Active := TRUE ;
+        LineAA.Clear ;
+        for j := 1 to DureeGest do
+          LineAA.AddXY (AAX, AAY, '', clTeeColor) ;
+      end ;
+      AjustEchelle (Graph) ;
+    end ;
+    1 : // Besoin
+    begin
+      Graph.Legend.Inverted := FALSE ;
+      Graph.LeftAxis.Automatic := TRUE ;
+      Graph.LeftAxis.Title.Caption := TabAA.Caption ;
+      Graph.BottomAxis.Title.Caption :=  Format ('%s (%s)', [StrBesoin, CBAA4.Text]) ;
+      // Affichage des barres
+      BarAA35.Active := TRUE ;
+      BarAA105.Active := TRUE ;
+      BarAA35.Clear ;
+      BarAA105.Clear ;
+      for h := CBAA3.Items.Count downto 1 do
+      begin
+        s := CBAA3.Items[h - 1] ;
+        j := 35 ;
+        BarAA35.AddBar (AAY, s, clTeeColor) ;
+        j := 105 ;
+        BarAA105.AddBar (AAY, s, clTeeColor) ;
+      end ;
+    end ;
+  end ;
+end ;
+
+procedure TFResBesGestT.CBAA1Change (Sender : TObject) ;
+begin
+  CBAA4.Items.Clear ;
+  case CBAA1.ItemIndex of
+    0 : // R�partition dynamique
+    begin
+      CBAA2.Visible := TRUE ;
+      CBAA3.Visible := TRUE ;
+      // Unit�s
+      CBAA4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBAA4.Items.Add ('%') ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrED])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrEM])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrEN])) ;
+    end ;
+    1 : // Besoin
+    begin
+      if AffBesoin
+      then
+      begin
+        FWarning := TFWarning.Create (Self) ;
+        with FWarning do
+        begin
+          Msg := 'Besoin';
+          ShowModal ;
+          Release ;
+          AffBesoin := FALSE ;
+        end ;
+      end ;
+      CBAA2.Visible := FALSE ;
+      CBAA3.Visible := FALSE ;
+      // Unit�s
+      CBAA4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBAA4.Items.Add (Format ('%% %s', [StrLys])) ;
+    end ;
+  end ;
+  CBAA4.ItemIndex := 0 ;
+  AffGraphAA ;
+end ;
+
+procedure TFResBesGestT.CBAA2Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFResBesGestT.CBAA3Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFResBesGestT.CBAA4Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFResBesGestT.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UCalcul.pas
===================================================================
--- UCalcul.pas	(révision 0)
+++ UCalcul.pas	(révision 3)
@@ -0,0 +1,362 @@
+unit UCalcul;
+
+interface
+
+// Conversion PV en PVV
+function CalcPVV(PV: double): double;
+// Conversion PVV en PV
+function CalcPV(PVV: double): double;
+// Calcul du poids de prot�ines en fonction du poids vif
+function CalcProt(PV: double): double;
+// Calcul du poids de lipides en fonction du poids vif et du poids de prot�ines
+function CalcLipProt(PV, p: double): double;
+// Calcul du poids de prot�ines en fonction du poids vif et du poids de lipides
+function CalcProtLip(PV, l: double): double;
+// Calcul du rendement carcasse standardis� (t�te, pieds et queue)
+function CalcRCStd(PVFin, RCFin: double): double;
+// Calcul du rendement carcasse
+function CalcRC(PVFin, RCStd, PV: double): double;
+// Calcul de l'�paisseur de lard (P2)
+function CalcP2(l: double): double;
+// Calcul de l'�paisseur de lard (�quation utilisateur)
+function CalcUserFat(PVV, p, l: double): double;
+{
+// Calcul du pourcentage de muscle
+function CalcMuscle(PVV, l: double): double;
+// Calcul de la teneur en viande maigre (TVM)
+function CalcTVM(PVV, l: double): double;
+}
+// Calcul du taux de muscle des pi�ces (TMP)
+function CalcTMP(PVV, p, l: double): double;
+// Calcul du maigre (�quation utilisateur)
+function CalcUserLean(PVV, p, l: double): double;
+// Valeur de courbe curvilin�aire
+function CLvaleur(Initial, Moyenne: double; Jour, Duree: integer): double;
+// Valeur de courbe lin�aire-plateau
+function LPvaleur(Initial, Additionnel, Moyenne: double; Jour, Duree: integer): double;
+// Calcul des coefficients a et b en fonction de l'ing�r� � 50 et 100kg
+procedure CalcCoef(Equation, Unite: integer; Ing50, Ing100: double; var a, b: double);
+// Calcul de l'ing�r� en fonction du poids vif et des coeeficients a et b
+function CalcIngere(Equation, Unite: integer; a, b, PV: double): double;
+
+implementation
+
+uses
+  Math, UVariables;
+
+// Conversion PV en PVV
+function CalcPVV(PV: double): double;
+begin
+  Result := aPVV * Power(PV, bPVV);
+end;
+
+// Conversion PVV en PV
+function CalcPV(PVV: double): double;
+begin
+  Result := Power(PVV / aPVV, 1 / bPVV);
+end;
+
+// Calcul du poids de prot�ines en fonction du poids vif
+function CalcProt(PV: double): double;
+begin
+  Result := CalcPVV(PV) * 0.16;
+end;
+
+// Calcul du poids de lipides en fonction du poids vif et du poids de prot�ines
+function CalcLipProt(PV, p: double): double;
+var
+  x: double;
+begin
+  if p > 0 then
+  begin
+    x := (1000 * CalcPVV(PV) - Pallom * Exp(Ballom * Ln(1000 * p))) / Lallom;
+    if x > 0 then
+      Result := Exp(-(-Ln(x) + Ballom * Ln(1000)) / Ballom)
+    else
+      Result := 0;
+  end
+  else
+    Result := 0;
+end;
+
+// Calcul du poids de prot�ines en fonction du poids vif et du poids de lipides
+function CalcProtLip(PV, l: double): double;
+var
+  x: double;
+begin
+  if l > 0 then
+  begin
+    x := (1000 * CalcPVV(PV) - Lallom * Exp(Ballom * Ln(1000 * l))) / Pallom;
+    if x > 0 then
+      Result := Exp(-(-Ln(x) + Ballom * Ln(1000)) / Ballom)
+    else
+      Result := 0;
+  end
+  else
+    Result := 0;
+end;
+
+// Calcul du rendement carcasse standardis� (t�te, pieds et queue)
+function CalcRCStd(PVFin, RCFin: double): double;
+var
+  PC: double;
+begin
+  // Poids de la carcasse selon param�trage
+  PC := RCFin * PVFin;
+  // Conversion en poids de carcasse standardis�
+  if not CarTete then
+    PC := PC + TeteTPQ * aTPQ * Power(PVFin, bTPQ)
+  else if not CarQueue then
+    PC := PC + aLangue * PVFin;
+  if not CarPieds then
+    PC := PC + PiedsTPQ * aTPQ * Power(PVFin, bTPQ);
+  if not CarQueue then
+    PC := PC + QueueTPQ * aTPQ * Power(PVFin, bTPQ);
+  if CarHampe then
+    PC := PC - aHampe * Power(PVFin, bHampe);
+  if CarPanne then
+    PC := PC - aPanne * Power(PVFin, bPanne);
+  // Calcul du rendement
+  Result := PC / PVFin;
+end;
+
+// Calcul du rendement carcasse
+function CalcRC(PVFin, RCStd, PV: double): double;
+var
+  PC: double;
+begin
+  // Poids de carcasse standardis�
+  PC := RCStd * Power(PVFin, 1 - bCarcasse) * Power(PV, bCarcasse);
+  // Conversion en poids de carcasse selon param�trage
+  if not CarTete then
+    PC := PC - TeteTPQ * aTPQ * Power(PV, bTPQ)
+  else if not CarQueue then
+    PC := PC - aLangue * PV;
+  if not CarPieds then
+    PC := PC - PiedsTPQ * aTPQ * Power(PV, bTPQ);
+  if not CarQueue then
+    PC := PC - QueueTPQ * aTPQ * Power(PV, bTPQ);
+  if CarHampe then
+    PC := PC + aHampe * Power(PV, bHampe);
+  if CarPanne then
+    PC := PC + aPanne * Power(PV, bPanne);
+  // Calcul du rendement
+  Result := PC / PV;
+end;
+
+// Calcul de l'�paisseur de lard (P2)
+function CalcP2(l: double): double;
+begin
+  Result := 6.96 + 0.375 * l;
+end;
+
+// Calcul de l'�paisseur de lard (�quation utilisateur)
+function CalcUserFat(PVV, p, l: double): double;
+begin
+  if UserFatPVV then
+    if PVV > 0 then
+      Result := UserFatA + UserFatB * p / PVV + UserFatC * l / PVV
+    else
+      Result := 0
+  else
+    Result := UserFatA + UserFatB * p + UserFatC * l;
+end;
+
+{
+// Calcul du pourcentage de muscle
+function CalcMuscle(PVV, l: double): double;
+begin
+  if PVV > 0
+  then
+    result := 74.61054295 - 82.63784389 * l / PVV
+  else
+    result := 0;
+end;
+
+// Calcul de la teneur en viande maigre (TVM)
+function CalcTVM(PVV, l: double): double;
+begin
+  if PVV > 0
+  then
+    result := 72.57799266 - 43.48869610 * l / PVV
+  else
+    result := 0;
+end;
+}
+
+// Calcul du taux de muscle des pi�ces (TMP)
+function CalcTMP(PVV, p, l: double): double;
+begin
+  if PVV > 0 then
+    Result := 57.43 + 95.68 * p / PVV - 62.68 * l / PVV
+  else
+    Result := 0;
+end;
+
+// Calcul du maigre (�quation utilisateur)
+function CalcUserLean(PVV, p, l: double): double;
+begin
+  if UserLeanPVV then
+    if PVV > 0 then
+      Result := UserLeanA + UserLeanB * p / PVV + UserLeanC * l / PVV
+    else
+      Result := 0
+  else
+    Result := UserLeanA + UserLeanB * p + UserLeanC * l;
+end;
+
+// Valeur de courbe curvilin�aire
+function CLvaleur(Initial, Moyenne: double; Jour, Duree: integer): double;
+const
+  CLmax = 7.75610189567227;
+  CLpas = 10;
+  CLa = 0.0873409939712299;
+  CLb = 1.32485469132323;
+var
+  i, j: integer;
+  CLe, CLtyp, CLtot, CLcor: double;
+begin
+  if Duree > 0 then
+  begin
+    CLe := 0;
+    CLcor := 0;
+    i := 0;
+    while (i <= Int((Moyenne * 3) * CLpas)) and
+      (CLmax * (1 - Exp(-CLa * Power(1 + CLe, CLb))) * CLcor < Initial) do
+    begin
+      CLtot := 0;
+      for j := 1 to Duree do
+        CLtot := CLtot + CLmax * (1 - Exp(-CLa * Power(j + i / CLpas, CLb)));
+      CLcor := (Moyenne * Duree) / CLtot;
+      CLe := i / CLpas;
+      Inc(i);
+    end;
+    if Jour < Duree then
+      CLtyp := CLmax * (1 - Exp(-CLa * Power(Jour + CLe, CLb)))
+    else
+      CLtyp := CLmax * (1 - Exp(-CLa * Power(Duree + CLe, CLb)));
+    Result := CLtyp * CLcor;
+  end
+  else
+    Result := 0;
+end;
+
+// Valeur de courbe lin�aire-plateau
+function LPvaleur(Initial, Additionnel, Moyenne: double; Jour, Duree: integer): double;
+var
+  i: integer;
+  LPtyp, LPmax, LPtot, LPcum: double;
+begin
+  LPtot := Moyenne * Duree;
+  LPmax := 0;
+  LPtyp := Initial;
+  LPcum := LPtyp;
+  i := 1;
+  while (i < Duree) and (LPtyp < (LPtot - LPcum) / (Duree - i)) do
+  begin
+    LPmax := (LPtot - LPcum) / (Duree - i);
+    LPtyp := Initial + Additionnel * i;
+    LPcum := LPcum + LPtyp;
+    Inc(i);
+  end;
+  LPtyp := Initial + Additionnel * (Jour - 1);
+  if LPtyp < LPmax then
+    Result := LPtyp
+  else
+    Result := LPmax;
+end;
+
+// Calcul des coefficients a et b en fonction de l'ing�r� � 50 et 100kg
+procedure CalcCoef(Equation, Unite: integer; Ing50, Ing100: double; var a, b: double);
+var
+  c, d: double;
+begin
+  try
+    case Equation of
+      0: // Mod�le lin�aire
+      begin
+        a := 2 * Ing50 - Ing100;
+        b := 1 / 50 * Ing100 - 1 / 50 * Ing50;
+      end;
+      1: // Mod�le puissance
+      begin
+        a := Ing100 / Exp(Ln(100) * Ln(Ing100 / Ing50) / Ln(2));
+        b := Ln(Ing100 / Ing50) / Ln(2);
+      end;
+      2: // Mod�le exponentiel
+      begin
+        a := -Power(Ing50, 2) / (Ing100 - 2 * Ing50);
+        b := -1 / 50 * Ln((Ing100 - Ing50) / Ing50);
+      end;
+      3: // Mod�le Gamma
+      begin
+        case Unite of
+          0: // Quantit� (kg/j)
+            c := cGammaFrais;
+          1: // ED (MJ/j)
+            c := cGammaED;
+          2: // EM (MJ/j)
+            c := cGammaEM;
+          3: // EN (MJ/j)
+            c := cGammaEN;
+          4: // MS (kg/j)
+            c := cGammaMS;
+          else
+            c := 0;
+        end;
+        d := dGamma;
+        a := -2 * Power((Ing50 - c * Exp(Ln(50) * d)), 2) * Exp(-d * Ln(25)) /
+          (c * (-Ln(-1 / 2 * (-Ing100 + c * Exp(Ln(100) * d)) / (Ing50 - c * Exp(Ln(50) * d))) +
+          d * Ln(2)) * (-Ing100 + c * Exp(Ln(100) * d)));
+        b := -1 / 50 * Ln(-1 / 2 * (-Ing100 + c * Exp(Ln(100) * d)) /
+          (Ing50 - c * Exp(Ln(50) * d))) + 1 / 50 * d * Ln(2);
+      end;
+      else
+      begin
+        a := 0;
+        b := 0;
+      end;
+    end;
+  except
+    a := 0;
+    b := 0;
+  end;
+end;
+
+// Calcul de l'ing�r� en fonction du poids vif et des coeeficients a et b
+function CalcIngere(Equation, Unite: integer; a, b, PV: double): double;
+var
+  c, d: double;
+begin
+  case Equation of
+    0: // Mod�le lin�aire
+      Result := a + b * PV;
+    1: // Mod�le puissance
+      Result := a * Power(PV, b);
+    2: // Mod�le exponentiel
+      Result := a * (1 - Exp(-b * PV));
+    3: // Mod�le Gamma
+    begin
+      case Unite of
+        0: // Quantit� (kg/j)
+          c := cGammaFrais;
+        1: // ED (MJ/j)
+          c := cGammaED;
+        2: // EM (MJ/j)
+          c := cGammaEM;
+        3: // EN (MJ/j)
+          c := cGammaEN;
+        4: // MS (kg/j)
+          c := cGammaMS;
+        else
+          c := 0;
+      end;
+      d := dGamma;
+      Result := (a * (b * PV * Exp(-b * PV)) + 1) * c * Power(PV, d);
+    end;
+    else
+      Result := 0;
+  end;
+end;
+
+end.
Index: UFResBesGestE.dfm
===================================================================
--- UFResBesGestE.dfm	(révision 0)
+++ UFResBesGestE.dfm	(révision 3)
@@ -0,0 +1,264 @@
+object FResBesGestE: TFResBesGestE
+  Left = 200
+  Top = 200
+  HelpContext = 4860
+  Caption = 'Requirements during gestation (herd)'
+  ClientHeight = 400
+  ClientWidth = 544
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PC: TPageControl
+    Left = 0
+    Top = 0
+    Width = 544
+    Height = 94
+    ActivePage = TSAli
+    Align = alTop
+    HotTrack = True
+    MultiLine = True
+    TabOrder = 0
+    TabStop = False
+    OnChange = PCChange
+    object TSAli: TTabSheet
+      Caption = 'Feed'
+      ImageIndex = 2
+    end
+    object TabNRJ: TTabSheet
+      Caption = 'Energy'
+      ImageIndex = -1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object GBNRJY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 0
+        object CBNRJ3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 1
+          TabOrder = 0
+          Text = 'Metabolizable energy'
+          OnChange = CBNRJ3Change
+          Items.Strings = (
+            'Digestible energy'
+            'Metabolizable energy'
+            'Net energy')
+        end
+        object CBNRJ4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBNRJ4Change
+        end
+      end
+    end
+    object TabAA: TTabSheet
+      Caption = 'Amino acids'
+      ImageIndex = 8
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object GBAAY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 0
+        object CBAA3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Lysine'
+          OnChange = CBAA3Change
+          Items.Strings = (
+            'Lysine'
+            'Methionine'
+            'Methionine + Cystine'
+            'Tryptophan'
+            'Threonine'
+            'Phenylalanine'
+            'Phenylalanine + Tyrosine'
+            'Leucine'
+            'Isoleucine'
+            'Valine'
+            'Histidine'
+            'Arginine')
+        end
+        object CBAA4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBAA4Change
+        end
+      end
+    end
+    object TSMin: TTabSheet
+      Caption = 'Minerals'
+      ImageIndex = 3
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object GBMinY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 0
+        object CBMin3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Digestible phosphorus'
+          OnChange = CBMin3Change
+          Items.Strings = (
+            'Digestible phosphorus'
+            'Total calcium')
+        end
+        object CBMin4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBMin4Change
+        end
+      end
+    end
+  end
+  object Graph: TChart
+    Left = 0
+    Top = 94
+    Width = 544
+    Height = 306
+    Foot.Alignment = taLeftJustify
+    Foot.Font.Color = clBlack
+    Foot.Font.Style = []
+    Foot.Text.Strings = (
+      'Simulation')
+    Legend.Inverted = True
+    Legend.LegendStyle = lsSeries
+    MarginBottom = 1
+    MarginLeft = 1
+    MarginRight = 1
+    MarginTop = 1
+    PrintProportional = False
+    SubTitle.Font.Color = clBlack
+    SubTitle.Text.Strings = (
+      'Total')
+    Title.Font.Height = -16
+    Title.Font.Style = [fsBold]
+    Title.Text.Strings = (
+      'Title')
+    BottomAxis.Grid.Visible = False
+    BottomAxis.Title.Caption = 'X'
+    BottomAxis.Title.Font.Style = [fsBold]
+    LeftAxis.Automatic = False
+    LeftAxis.AutomaticMaximum = False
+    LeftAxis.AutomaticMinimum = False
+    LeftAxis.Title.Caption = 'Y'
+    LeftAxis.Title.Font.Style = [fsBold]
+    View3D = False
+    Align = alClient
+    BevelOuter = bvNone
+    PopupMenu = PM
+    TabOrder = 1
+    PrintMargins = (
+      5
+      5
+      5
+      5)
+  end
+  object LBAA: TListBox
+    Left = 160
+    Top = 176
+    Width = 120
+    Height = 56
+    ItemHeight = 13
+    Items.Strings = (
+      'Maintenance'
+      'Litter'
+      'Reserves'
+      'Excess')
+    TabOrder = 2
+    Visible = False
+  end
+  object LBNRJ: TListBox
+    Left = 32
+    Top = 176
+    Width = 120
+    Height = 69
+    ItemHeight = 13
+    Items.Strings = (
+      'Maintenance'
+      'Activity'
+      'Thermoregulation'
+      'Litter'
+      'Reserves')
+    TabOrder = 3
+    Visible = False
+  end
+  object PM: TPopupMenu
+    Top = 96
+    object MI3D: TMenuItem
+      Caption = '2D / 3D'
+      OnClick = MI3DClick
+    end
+    object MIPreview: TMenuItem
+      Caption = 'Print preview'
+      OnClick = MIPreviewClick
+    end
+    object MIPrint: TMenuItem
+      Caption = 'Print...'
+      OnClick = MIPrintClick
+    end
+  end
+  object PD: TPrintDialog
+    Left = 32
+    Top = 96
+  end
+end
Index: UFResBesLactT.dfm
===================================================================
--- UFResBesLactT.dfm	(révision 0)
+++ UFResBesLactT.dfm	(révision 3)
@@ -0,0 +1,325 @@
+object FResBesLactT: TFResBesLactT
+  Left = 200
+  Top = 200
+  HelpContext = 4910
+  Caption = 'Requirements during lactation (sow)'
+  ClientHeight = 400
+  ClientWidth = 544
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PC: TPageControl
+    Left = 0
+    Top = 0
+    Width = 544
+    Height = 94
+    ActivePage = TSAli
+    Align = alTop
+    HotTrack = True
+    MultiLine = True
+    TabOrder = 0
+    TabStop = False
+    OnChange = PCChange
+    object TSAli: TTabSheet
+      Caption = 'Feed'
+      ImageIndex = 2
+      object GBAliX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 0
+        object CBAli2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 13
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Duration (d)'
+          OnChange = CBAli2Change
+          Items.Strings = (
+            'Duration (d)')
+        end
+      end
+    end
+    object TabNRJ: TTabSheet
+      Caption = 'Energy'
+      ImageIndex = -1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object GBNRJX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBNRJ2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Duration (d)'
+          Visible = False
+          OnChange = CBNRJ2Change
+          Items.Strings = (
+            'Duration (d)')
+        end
+      end
+      object GBNRJY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBNRJ3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 1
+          TabOrder = 0
+          Text = 'Metabolizable energy'
+          OnChange = CBNRJ3Change
+          Items.Strings = (
+            'Digestible energy'
+            'Metabolizable energy'
+            'Net energy')
+        end
+        object CBNRJ4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBNRJ4Change
+        end
+      end
+      object GBNRJT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBNRJ1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Global partitioning'
+          OnChange = CBNRJ1Change
+          Items.Strings = (
+            'Global partitioning'
+            'Dynamic partitioning')
+        end
+      end
+    end
+    object TabAA: TTabSheet
+      Caption = 'Amino acids'
+      ImageIndex = 8
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object GBAAX: TGroupBox
+        Left = 360
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'X-axis'
+        TabOrder = 2
+        object CBAA2: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Duration (d)'
+          OnChange = CBAA2Change
+          Items.Strings = (
+            'Duration (d)')
+        end
+      end
+      object GBAAT: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Graph type'
+        TabOrder = 0
+        object CBAA1: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Dynamic partitioning'
+          OnChange = CBAA1Change
+          Items.Strings = (
+            'Dynamic partitioning'
+            'Requirement')
+        end
+      end
+      object GBAAY: TGroupBox
+        Left = 180
+        Top = 0
+        Width = 176
+        Height = 66
+        Caption = 'Y-axis'
+        TabOrder = 1
+        object CBAA3: TComboBox
+          Left = 16
+          Top = 16
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          ItemIndex = 0
+          TabOrder = 0
+          Text = 'Lysine'
+          OnChange = CBAA3Change
+          Items.Strings = (
+            'Lysine'
+            'Methionine'
+            'Methionine + Cystine'
+            'Tryptophan'
+            'Threonine'
+            'Phenylalanine'
+            'Phenylalanine + Tyrosine'
+            'Leucine'
+            'Isoleucine'
+            'Valine'
+            'Histidine'
+            'Arginine')
+        end
+        object CBAA4: TComboBox
+          Left = 16
+          Top = 40
+          Width = 144
+          Height = 21
+          Style = csDropDownList
+          ItemHeight = 0
+          TabOrder = 1
+          OnChange = CBAA4Change
+        end
+      end
+    end
+  end
+  object Graph: TChart
+    Left = 0
+    Top = 94
+    Width = 544
+    Height = 306
+    Foot.Alignment = taLeftJustify
+    Foot.Font.Color = clBlack
+    Foot.Font.Style = []
+    Legend.Inverted = True
+    Legend.LegendStyle = lsSeries
+    MarginBottom = 1
+    MarginLeft = 1
+    MarginRight = 1
+    MarginTop = 1
+    SubTitle.Font.Color = clBlack
+    Title.Font.Height = -16
+    Title.Font.Style = [fsBold]
+    Title.Text.Strings = (
+      'Title')
+    BottomAxis.Title.Caption = 'X'
+    BottomAxis.Title.Font.Style = [fsBold]
+    LeftAxis.Automatic = False
+    LeftAxis.AutomaticMaximum = False
+    LeftAxis.AutomaticMinimum = False
+    LeftAxis.Title.Caption = 'Y'
+    LeftAxis.Title.Font.Style = [fsBold]
+    View3D = False
+    Align = alClient
+    BevelOuter = bvNone
+    PopupMenu = PM
+    TabOrder = 1
+    PrintMargins = (
+      5
+      5
+      5
+      5)
+  end
+  object LBAA: TListBox
+    Left = 168
+    Top = 176
+    Width = 120
+    Height = 30
+    ItemHeight = 13
+    Items.Strings = (
+      'Maintenance'
+      'Milk')
+    TabOrder = 2
+    Visible = False
+  end
+  object LBNRJ: TListBox
+    Left = 40
+    Top = 176
+    Width = 120
+    Height = 30
+    ItemHeight = 13
+    Items.Strings = (
+      'Maintenance'
+      'Milk')
+    TabOrder = 3
+    Visible = False
+  end
+  object PM: TPopupMenu
+    Top = 96
+    object MI3D: TMenuItem
+      Caption = '2D / 3D'
+      OnClick = MI3DClick
+    end
+    object MIPreview: TMenuItem
+      Caption = 'Print preview'
+      OnClick = MIPreviewClick
+    end
+    object MIPrint: TMenuItem
+      Caption = 'Print...'
+      OnClick = MIPrintClick
+    end
+  end
+  object PD: TPrintDialog
+    Left = 32
+    Top = 96
+  end
+end
Index: UFRapProfilP.dfm
===================================================================
--- UFRapProfilP.dfm	(révision 0)
+++ UFRapProfilP.dfm	(révision 3)
@@ -0,0 +1,1987 @@
+object FRapProfilP: TFRapProfilP
+  Left = 0
+  Top = 80
+  Caption = 'Report of growing pig profil'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Growing pig profile'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRLConso: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 125
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          254.000000000000000000
+          330.729166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Farm conditions'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLPerf: TQRLabel
+        Left = 40
+        Top = 324
+        Width = 313
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          857.250000000000000000
+          828.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed intake and performance parameters'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLProfil: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTProfil: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          116.416666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Profil_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRLInit: TQRLabel
+        Left = 40
+        Top = 148
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          391.583333333333300000
+          187.854166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial state'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPVInit: TQRLabel
+        Left = 80
+        Top = 188
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          497.416666666666700000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Body weight (kg)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAgeInit: TQRLabel
+        Left = 80
+        Top = 168
+        Width = 46
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          444.500000000000000000
+          121.708333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Age (d)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLProtInit: TQRLabel
+        Left = 80
+        Top = 208
+        Width = 121
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          550.333333333333300000
+          320.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Protein weight (kg)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLipInit: TQRLabel
+        Left = 80
+        Top = 228
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          603.250000000000000000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lipid weight (kg)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLFin: TQRLabel
+        Left = 48
+        Top = 248
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          127.000000000000000000
+          656.166666666666700000
+          177.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Final state'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLValFin: TQRLabel
+        Left = 80
+        Top = 268
+        Width = 9
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          709.083333333333300000
+          23.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '?'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAdLib: TQRLabel
+        Left = 40
+        Top = 356
+        Width = 109
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          941.916666666666700000
+          288.395833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Ad libitum intake'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPrecocite: TQRLabel
+        Left = 40
+        Top = 396
+        Width = 84
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1047.750000000000000000
+          222.250000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Precocity (/d)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPVmr2: TQRLabel
+        Left = 40
+        Top = 436
+        Width = 100
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1153.583333333333000000
+          264.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'BW PDmax (kg)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPDMoy: TQRLabel
+        Left = 40
+        Top = 376
+        Width = 90
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          994.833333333333300000
+          238.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Mean PD (g/d)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLEntretien: TQRLabel
+        Left = 40
+        Top = 416
+        Width = 83
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1100.666666666667000000
+          219.604166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Maintenance'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAdLib: TQRDBText
+        Left = 264
+        Top = 356
+        Width = 48
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          941.916666666666700000
+          127.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AdLib_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeInit: TQRDBText
+        Left = 345
+        Top = 168
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          444.500000000000000000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeInit_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTProtInit: TQRDBText
+        Left = 344
+        Top = 208
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          910.166666666666700000
+          550.333333333333300000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ProtInit_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVInit: TQRDBText
+        Left = 350
+        Top = 188
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          926.041666666666700000
+          497.416666666666700000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVInit_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLipInit: TQRDBText
+        Left = 351
+        Top = 228
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          928.687500000000000000
+          603.250000000000000000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_LipInit_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTValFin: TQRDBText
+        Left = 348
+        Top = 268
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          920.750000000000000000
+          709.083333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_ValFin_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPDMoy: TQRDBText
+        Left = 342
+        Top = 376
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          994.833333333333300000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PDMoy_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTEntretien: TQRDBText
+        Left = 333
+        Top = 416
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          881.062500000000000000
+          1100.666666666667000000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Entretien_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.00'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPrecocite: TQRDBText
+        Left = 330
+        Top = 396
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          873.125000000000000000
+          1047.750000000000000000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Precocite_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVmr2: TQRDBText
+        Left = 345
+        Top = 436
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          1153.583333333333000000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVmr2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLRC: TQRLabel
+        Left = 80
+        Top = 288
+        Width = 131
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          762.000000000000000000
+          346.604166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Dressing percentage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC: TQRDBText
+        Left = 367
+        Top = 288
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          971.020833333333300000
+          762.000000000000000000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSexe: TQRLabel
+        Left = 40
+        Top = 128
+        Width = 48
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          338.666666666666700000
+          127.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Gender'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSexe: TQRDBText
+        Left = 264
+        Top = 128
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          338.666666666666700000
+          119.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Sexe_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFProfil: TStringField
+      FieldName = '_Profil_'
+      Size = 25
+    end
+    object SFSexe: TStringField
+      FieldName = '_Sexe_'
+      Size = 24
+    end
+    object IFAgeInit: TIntegerField
+      FieldName = '_AgeInit_'
+    end
+    object FFPVInit: TFloatField
+      FieldName = '_PVInit_'
+    end
+    object FFProtInit: TFloatField
+      FieldName = '_ProtInit_'
+    end
+    object FFLipInit: TFloatField
+      FieldName = '_LipInit_'
+    end
+    object FFValFin: TFloatField
+      FieldName = '_ValFin_'
+    end
+    object FFRC: TFloatField
+      FieldName = '_RC_'
+    end
+    object SFAdLib: TStringField
+      FieldName = '_AdLib_'
+      Size = 80
+    end
+    object FFPDMoy: TFloatField
+      FieldName = '_PDMoy_'
+    end
+    object FFPrecocite: TFloatField
+      FieldName = '_Precocite_'
+    end
+    object FFEntretien: TFloatField
+      FieldName = '_Entretien_'
+    end
+    object FFPVmr2: TFloatField
+      FieldName = '_PVmr2_'
+    end
+  end
+end
Index: UFComment.pas
===================================================================
--- UFComment.pas	(révision 0)
+++ UFComment.pas	(révision 3)
@@ -0,0 +1,47 @@
+unit UFComment;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons;
+
+type
+  TFComment = class(TForm)
+    Memo: TMemo;
+    BBOk: TBitBtn;
+    BBCancel: TBitBtn;
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FComment: TFComment;
+
+implementation
+
+uses
+  gnugettext;
+
+{$R *.dfm}
+
+{ TFComment }
+
+procedure TFComment.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+end;
+
+procedure TFComment.FormShow(Sender: TObject);
+begin
+  Memo.SelectAll;
+  ActiveControl := Memo;
+end;
+
+end.
Index: UFCommentMat.pas
===================================================================
--- UFCommentMat.pas	(révision 0)
+++ UFCommentMat.pas	(révision 3)
@@ -0,0 +1,50 @@
+unit UFCommentMat;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons;
+
+type
+  TFCommentMat = class(TForm)
+    Memo: TMemo;
+    BBOk: TBitBtn;
+    BBCancel: TBitBtn;
+    CBType: TComboBox;
+    LType: TLabel;
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FCommentMat: TFCommentMat;
+
+implementation
+
+uses
+  gnugettext;
+
+{$R *.dfm}
+
+{ TFCommentMat }
+
+procedure TFCommentMat.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  CBType.ItemIndex := 0;
+end;
+
+procedure TFCommentMat.FormShow(Sender: TObject);
+begin
+  Memo.SelectAll;
+  ActiveControl := Memo;
+end;
+
+end.
Index: UFRapProfilT.dfm
===================================================================
--- UFRapProfilT.dfm	(révision 0)
+++ UFRapProfilT.dfm	(révision 3)
@@ -0,0 +1,8123 @@
+object FRapProfilT: TFRapProfilT
+  Left = 0
+  Top = 80
+  Caption = 'Report of sow profile'
+  ClientHeight = 1002
+  ClientWidth = 792
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Sow profile'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRLProfil: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTProfil: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          116.416666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Profil_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRLTruie: TQRLabel
+        Left = 40
+        Top = 120
+        Width = 44
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          317.500000000000000000
+          116.416666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Sows'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLEffectif: TQRLabel
+        Left = 40
+        Top = 144
+        Width = 112
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          381.000000000000000000
+          296.333333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Herd composition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPct: TQRLabel
+        Left = 80
+        Top = 184
+        Width = 95
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          486.833333333333300000
+          251.354166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Distribution (%)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNbr: TQRLabel
+        Left = 80
+        Top = 164
+        Width = 51
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          433.916666666666700000
+          134.937500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Number'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbrTot: TQRDBText
+        Left = 627
+        Top = 164
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1658.937500000000000000
+          433.916666666666700000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbrTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPctTot: TQRDBText
+        Left = 627
+        Top = 184
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1658.937500000000000000
+          486.833333333333300000
+          140.229166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PctTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPt1: TQRLabel
+        Left = 312
+        Top = 96
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          825.500000000000000000
+          254.000000000000000000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '1'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPt2: TQRLabel
+        Left = 352
+        Top = 96
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          931.333333333333300000
+          254.000000000000000000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '2'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPt3: TQRLabel
+        Left = 392
+        Top = 96
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1037.166666666667000000
+          254.000000000000000000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '3'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPt4: TQRLabel
+        Left = 432
+        Top = 96
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1143.000000000000000000
+          254.000000000000000000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '4'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPt5: TQRLabel
+        Left = 472
+        Top = 96
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1248.833333333333000000
+          254.000000000000000000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '5'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPt6: TQRLabel
+        Left = 512
+        Top = 96
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1354.666666666667000000
+          254.000000000000000000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '6'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPt7: TQRLabel
+        Left = 552
+        Top = 96
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1460.500000000000000000
+          254.000000000000000000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '7'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPt8: TQRLabel
+        Left = 592
+        Top = 96
+        Width = 8
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1566.333333333333000000
+          254.000000000000000000
+          21.166666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '8'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTot: TQRLabel
+        Left = 649
+        Top = 96
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1717.145833333333000000
+          254.000000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Herd'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPt: TQRLabel
+        Left = 240
+        Top = 96
+        Width = 34
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          254.000000000000000000
+          89.958333333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Litter'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSaillie: TQRLabel
+        Left = 40
+        Top = 204
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          539.750000000000000000
+          129.645833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Service'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPdsSail: TQRLabel
+        Left = 80
+        Top = 244
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          645.583333333333300000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Body weight (kg)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAgeSail: TQRLabel
+        Left = 80
+        Top = 224
+        Width = 46
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          592.666666666666700000
+          121.708333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Age (d)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSailTot: TQRDBText
+        Left = 602
+        Top = 224
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1592.791666666667000000
+          592.666666666666700000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeSailTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsSailTot: TQRDBText
+        Left = 602
+        Top = 244
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1592.791666666667000000
+          645.583333333333300000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSailTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMiseBas: TQRLabel
+        Left = 40
+        Top = 284
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          751.416666666666700000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Farrowing'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPdsApMB: TQRLabel
+        Left = 80
+        Top = 324
+        Width = 106
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          857.250000000000000000
+          280.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Weight after (kg)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPdsAvMB: TQRLabel
+        Left = 80
+        Top = 304
+        Width = 118
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          804.333333333333300000
+          312.208333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Weight before (kg)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsAvMBTot: TQRDBText
+        Left = 590
+        Top = 304
+        Width = 90
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1561.041666666667000000
+          804.333333333333300000
+          238.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsAvMBTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsApMBTot: TQRDBText
+        Left = 588
+        Top = 324
+        Width = 92
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1555.750000000000000000
+          857.250000000000000000
+          243.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsApMBTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP2Sail: TQRLabel
+        Left = 80
+        Top = 264
+        Width = 146
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          698.500000000000000000
+          386.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Backfat thickness (mm)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2SailTot: TQRDBText
+        Left = 609
+        Top = 264
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1611.312500000000000000
+          698.500000000000000000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2SailTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP2MB: TQRLabel
+        Left = 80
+        Top = 344
+        Width = 146
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          910.166666666666700000
+          386.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Backfat thickness (mm)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MBTot: TQRDBText
+        Left = 611
+        Top = 344
+        Width = 69
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1616.604166666667000000
+          910.166666666666700000
+          182.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MBTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPortee: TQRLabel
+        Left = 40
+        Top = 376
+        Width = 53
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          994.833333333333300000
+          140.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Piglets'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLNaissance: TQRLabel
+        Left = 40
+        Top = 400
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1058.333333333333000000
+          82.020833333333330000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Birth'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNbVif: TQRLabel
+        Left = 80
+        Top = 440
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1164.166666666667000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Born alive'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNbTot: TQRLabel
+        Left = 80
+        Top = 420
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1111.250000000000000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total born'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbTotTot: TQRDBText
+        Left = 613
+        Top = 420
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1621.895833333333000000
+          1111.250000000000000000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbTotTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbVifTot: TQRDBText
+        Left = 616
+        Top = 440
+        Width = 64
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1629.833333333333000000
+          1164.166666666667000000
+          169.333333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbVifTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSevrage: TQRLabel
+        Left = 40
+        Top = 480
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1270.000000000000000000
+          153.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Weaning'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAgeSev: TQRLabel
+        Left = 80
+        Top = 520
+        Width = 46
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1375.833333333333000000
+          121.708333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Age (d)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNbSev: TQRLabel
+        Left = 80
+        Top = 500
+        Width = 54
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1322.916666666667000000
+          142.875000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Weaned'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbSevTot: TQRDBText
+        Left = 610
+        Top = 500
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1613.958333333333000000
+          1322.916666666667000000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbSevTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSevTot: TQRDBText
+        Left = 606
+        Top = 520
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1603.375000000000000000
+          1375.833333333333000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLGMQ: TQRLabel
+        Left = 40
+        Top = 560
+        Width = 101
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1481.666666666667000000
+          267.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'ADG litter (kg/d)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPVNais: TQRLabel
+        Left = 80
+        Top = 460
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1217.083333333333000000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Body weight (kg)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLNaisSev: TQRLabel
+        Left = 80
+        Top = 580
+        Width = 98
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1534.583333333333000000
+          259.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Birth - weaning'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTGMQTot: TQRDBText
+        Left = 616
+        Top = 580
+        Width = 64
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1629.833333333333000000
+          1534.583333333333000000
+          169.333333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GMQTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVNaisTot: TQRDBText
+        Left = 603
+        Top = 460
+        Width = 77
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1595.437500000000000000
+          1217.083333333333000000
+          203.729166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVNaisTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPVSev: TQRLabel
+        Left = 80
+        Top = 540
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1428.750000000000000000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Body weight (kg)'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVSevTot: TQRDBText
+        Left = 608
+        Top = 540
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1608.666666666667000000
+          1428.750000000000000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVSevTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAlim: TQRLabel
+        Left = 40
+        Top = 612
+        Width = 63
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          1619.250000000000000000
+          166.687500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feeding'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLRation: TQRLabel
+        Left = 40
+        Top = 656
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1735.666666666667000000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Reference ration'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliGest: TQRLabel
+        Left = 80
+        Top = 676
+        Width = 61
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1788.583333333333000000
+          161.395833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Gestation'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliGestTot: TQRDBText
+        Left = 604
+        Top = 676
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1598.083333333333000000
+          1788.583333333333000000
+          201.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliGestTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliLact: TQRLabel
+        Left = 80
+        Top = 696
+        Width = 60
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          211.666666666666700000
+          1841.500000000000000000
+          158.750000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lactation'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliLactTot: TQRDBText
+        Left = 607
+        Top = 696
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1606.020833333333000000
+          1841.500000000000000000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliLactTot_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSeqAli: TQRLabel
+        Left = 40
+        Top = 636
+        Width = 130
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1682.750000000000000000
+          343.958333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed sequence plan'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSeqAli: TQRDBText
+        Left = 200
+        Top = 636
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          529.166666666666700000
+          1682.750000000000000000
+          140.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_SeqAli_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTUnite: TQRDBText
+        Left = 200
+        Top = 656
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          529.166666666666700000
+          1735.666666666667000000
+          119.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Unite_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbrPt8: TQRDBText
+        Left = 545
+        Top = 164
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1441.979166666667000000
+          433.916666666666700000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbrPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPctPt8: TQRDBText
+        Left = 545
+        Top = 184
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1441.979166666667000000
+          486.833333333333300000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PctPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSailPt8: TQRDBText
+        Left = 520
+        Top = 224
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1375.833333333333000000
+          592.666666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeSailPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsSailPt8: TQRDBText
+        Left = 520
+        Top = 244
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1375.833333333333000000
+          645.583333333333300000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSailPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsAvMBPt8: TQRDBText
+        Left = 508
+        Top = 304
+        Width = 92
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1344.083333333333000000
+          804.333333333333300000
+          243.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsAvMBPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsApMBPt8: TQRDBText
+        Left = 506
+        Top = 324
+        Width = 94
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1338.791666666667000000
+          857.250000000000000000
+          248.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsApMBPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2SailPt8: TQRDBText
+        Left = 527
+        Top = 264
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1394.354166666667000000
+          698.500000000000000000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2SailPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MBPt8: TQRDBText
+        Left = 529
+        Top = 344
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1399.645833333333000000
+          910.166666666666700000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MBPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbTotPt8: TQRDBText
+        Left = 531
+        Top = 420
+        Width = 69
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1404.937500000000000000
+          1111.250000000000000000
+          182.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbTotPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbVifPt8: TQRDBText
+        Left = 534
+        Top = 440
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1412.875000000000000000
+          1164.166666666667000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbVifPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbSevPt8: TQRDBText
+        Left = 528
+        Top = 500
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1397.000000000000000000
+          1322.916666666667000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbSevPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSevPt8: TQRDBText
+        Left = 526
+        Top = 520
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1391.708333333333000000
+          1375.833333333333000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTGMQPt8: TQRDBText
+        Left = 534
+        Top = 580
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1412.875000000000000000
+          1534.583333333333000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GMQPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVNaisPt8: TQRDBText
+        Left = 521
+        Top = 460
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1378.479166666667000000
+          1217.083333333333000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVNaisPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVSevPt8: TQRDBText
+        Left = 526
+        Top = 540
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1391.708333333333000000
+          1428.750000000000000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVSevPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliGestPt8: TQRDBText
+        Left = 522
+        Top = 676
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1381.125000000000000000
+          1788.583333333333000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliGestPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliLactPt8: TQRDBText
+        Left = 525
+        Top = 696
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1389.062500000000000000
+          1841.500000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliLactPt8_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbrPt7: TQRDBText
+        Left = 505
+        Top = 164
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1336.145833333333000000
+          433.916666666666700000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbrPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPctPt7: TQRDBText
+        Left = 505
+        Top = 184
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1336.145833333333000000
+          486.833333333333300000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PctPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSailPt7: TQRDBText
+        Left = 480
+        Top = 224
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1270.000000000000000000
+          592.666666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeSailPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsSailPt7: TQRDBText
+        Left = 480
+        Top = 244
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1270.000000000000000000
+          645.583333333333300000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSailPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsAvMBPt7: TQRDBText
+        Left = 468
+        Top = 304
+        Width = 92
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1238.250000000000000000
+          804.333333333333300000
+          243.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsAvMBPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsApMBPt7: TQRDBText
+        Left = 466
+        Top = 324
+        Width = 94
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1232.958333333333000000
+          857.250000000000000000
+          248.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsApMBPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2SailPt7: TQRDBText
+        Left = 487
+        Top = 264
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1288.520833333333000000
+          698.500000000000000000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2SailPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MBPt7: TQRDBText
+        Left = 489
+        Top = 344
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1293.812500000000000000
+          910.166666666666700000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MBPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbTotPt7: TQRDBText
+        Left = 491
+        Top = 420
+        Width = 69
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1299.104166666667000000
+          1111.250000000000000000
+          182.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbTotPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbVifPt7: TQRDBText
+        Left = 494
+        Top = 440
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1307.041666666667000000
+          1164.166666666667000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbVifPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbSevPt7: TQRDBText
+        Left = 488
+        Top = 500
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1291.166666666667000000
+          1322.916666666667000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbSevPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSevPt7: TQRDBText
+        Left = 486
+        Top = 520
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1285.875000000000000000
+          1375.833333333333000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTGMQPt7: TQRDBText
+        Left = 494
+        Top = 580
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1307.041666666667000000
+          1534.583333333333000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GMQPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVNaisPt7: TQRDBText
+        Left = 481
+        Top = 460
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1272.645833333333000000
+          1217.083333333333000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVNaisPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVSevPt7: TQRDBText
+        Left = 486
+        Top = 540
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1285.875000000000000000
+          1428.750000000000000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVSevPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliGestPt7: TQRDBText
+        Left = 482
+        Top = 676
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1275.291666666667000000
+          1788.583333333333000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliGestPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliLactPt7: TQRDBText
+        Left = 485
+        Top = 696
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1283.229166666667000000
+          1841.500000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliLactPt7_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbrPt6: TQRDBText
+        Left = 465
+        Top = 164
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1230.312500000000000000
+          433.916666666666700000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbrPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPctPt6: TQRDBText
+        Left = 465
+        Top = 184
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1230.312500000000000000
+          486.833333333333300000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PctPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSailPt6: TQRDBText
+        Left = 440
+        Top = 224
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1164.166666666667000000
+          592.666666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeSailPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsSailPt6: TQRDBText
+        Left = 440
+        Top = 244
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1164.166666666667000000
+          645.583333333333300000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSailPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsAvMBPt6: TQRDBText
+        Left = 428
+        Top = 304
+        Width = 92
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1132.416666666667000000
+          804.333333333333300000
+          243.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsAvMBPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsApMBPt6: TQRDBText
+        Left = 426
+        Top = 324
+        Width = 94
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1127.125000000000000000
+          857.250000000000000000
+          248.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsApMBPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2SailPt6: TQRDBText
+        Left = 447
+        Top = 264
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1182.687500000000000000
+          698.500000000000000000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2SailPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MBPt6: TQRDBText
+        Left = 449
+        Top = 344
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1187.979166666667000000
+          910.166666666666700000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MBPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbTotPt6: TQRDBText
+        Left = 451
+        Top = 420
+        Width = 69
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1193.270833333333000000
+          1111.250000000000000000
+          182.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbTotPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbVifPt6: TQRDBText
+        Left = 454
+        Top = 440
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1201.208333333333000000
+          1164.166666666667000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbVifPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbSevPt6: TQRDBText
+        Left = 448
+        Top = 500
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1185.333333333333000000
+          1322.916666666667000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbSevPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSevPt6: TQRDBText
+        Left = 446
+        Top = 520
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1180.041666666667000000
+          1375.833333333333000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTGMQPt6: TQRDBText
+        Left = 454
+        Top = 580
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1201.208333333333000000
+          1534.583333333333000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GMQPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVNaisPt6: TQRDBText
+        Left = 441
+        Top = 460
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1166.812500000000000000
+          1217.083333333333000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVNaisPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVSevPt6: TQRDBText
+        Left = 446
+        Top = 540
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1180.041666666667000000
+          1428.750000000000000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVSevPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliGestPt6: TQRDBText
+        Left = 442
+        Top = 676
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1169.458333333333000000
+          1788.583333333333000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliGestPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliLactPt6: TQRDBText
+        Left = 445
+        Top = 696
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1177.395833333333000000
+          1841.500000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliLactPt6_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbrPt5: TQRDBText
+        Left = 425
+        Top = 164
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1124.479166666667000000
+          433.916666666666700000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbrPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPctPt5: TQRDBText
+        Left = 425
+        Top = 184
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1124.479166666667000000
+          486.833333333333300000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PctPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSailPt5: TQRDBText
+        Left = 400
+        Top = 224
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1058.333333333333000000
+          592.666666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeSailPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsSailPt5: TQRDBText
+        Left = 400
+        Top = 244
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1058.333333333333000000
+          645.583333333333300000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSailPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsAvMBPt5: TQRDBText
+        Left = 388
+        Top = 304
+        Width = 92
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1026.583333333333000000
+          804.333333333333300000
+          243.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsAvMBPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsApMBPt5: TQRDBText
+        Left = 386
+        Top = 324
+        Width = 94
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1021.291666666667000000
+          857.250000000000000000
+          248.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsApMBPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2SailPt5: TQRDBText
+        Left = 407
+        Top = 264
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1076.854166666667000000
+          698.500000000000000000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2SailPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MBPt5: TQRDBText
+        Left = 409
+        Top = 344
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1082.145833333333000000
+          910.166666666666700000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MBPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbTotPt5: TQRDBText
+        Left = 411
+        Top = 420
+        Width = 69
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1087.437500000000000000
+          1111.250000000000000000
+          182.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbTotPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbVifPt5: TQRDBText
+        Left = 414
+        Top = 440
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1095.375000000000000000
+          1164.166666666667000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbVifPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbSevPt5: TQRDBText
+        Left = 408
+        Top = 500
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          1322.916666666667000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbSevPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSevPt5: TQRDBText
+        Left = 406
+        Top = 520
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1074.208333333333000000
+          1375.833333333333000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTGMQPt5: TQRDBText
+        Left = 414
+        Top = 580
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1095.375000000000000000
+          1534.583333333333000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GMQPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVNaisPt5: TQRDBText
+        Left = 401
+        Top = 460
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1060.979166666667000000
+          1217.083333333333000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVNaisPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVSevPt5: TQRDBText
+        Left = 406
+        Top = 540
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1074.208333333333000000
+          1428.750000000000000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVSevPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliGestPt5: TQRDBText
+        Left = 402
+        Top = 676
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1063.625000000000000000
+          1788.583333333333000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliGestPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliLactPt5: TQRDBText
+        Left = 405
+        Top = 696
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1071.562500000000000000
+          1841.500000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliLactPt5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbrPt4: TQRDBText
+        Left = 385
+        Top = 164
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1018.645833333333000000
+          433.916666666666700000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbrPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPctPt4: TQRDBText
+        Left = 385
+        Top = 184
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1018.645833333333000000
+          486.833333333333300000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PctPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSailPt4: TQRDBText
+        Left = 360
+        Top = 224
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          952.500000000000000000
+          592.666666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeSailPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsSailPt4: TQRDBText
+        Left = 360
+        Top = 244
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          952.500000000000000000
+          645.583333333333300000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSailPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsAvMBPt4: TQRDBText
+        Left = 348
+        Top = 304
+        Width = 92
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          920.750000000000000000
+          804.333333333333300000
+          243.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsAvMBPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsApMBPt4: TQRDBText
+        Left = 346
+        Top = 324
+        Width = 94
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          915.458333333333300000
+          857.250000000000000000
+          248.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsApMBPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2SailPt4: TQRDBText
+        Left = 367
+        Top = 264
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          971.020833333333300000
+          698.500000000000000000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2SailPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MBPt4: TQRDBText
+        Left = 369
+        Top = 344
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          976.312500000000000000
+          910.166666666666700000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MBPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbTotPt4: TQRDBText
+        Left = 371
+        Top = 420
+        Width = 69
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          981.604166666666700000
+          1111.250000000000000000
+          182.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbTotPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbVifPt4: TQRDBText
+        Left = 374
+        Top = 440
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          989.541666666666700000
+          1164.166666666667000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbVifPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbSevPt4: TQRDBText
+        Left = 368
+        Top = 500
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          973.666666666666700000
+          1322.916666666667000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbSevPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSevPt4: TQRDBText
+        Left = 366
+        Top = 520
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          968.375000000000000000
+          1375.833333333333000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTGMQPt4: TQRDBText
+        Left = 374
+        Top = 580
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          989.541666666666700000
+          1534.583333333333000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GMQPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVNaisPt4: TQRDBText
+        Left = 361
+        Top = 460
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          955.145833333333300000
+          1217.083333333333000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVNaisPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVSevPt4: TQRDBText
+        Left = 366
+        Top = 540
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          968.375000000000000000
+          1428.750000000000000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVSevPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliGestPt4: TQRDBText
+        Left = 362
+        Top = 676
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          957.791666666666700000
+          1788.583333333333000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliGestPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliLactPt4: TQRDBText
+        Left = 365
+        Top = 696
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          965.729166666666700000
+          1841.500000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliLactPt4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbrPt3: TQRDBText
+        Left = 345
+        Top = 164
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          433.916666666666700000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbrPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPctPt3: TQRDBText
+        Left = 345
+        Top = 184
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          912.812500000000000000
+          486.833333333333300000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PctPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSailPt3: TQRDBText
+        Left = 320
+        Top = 224
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          846.666666666666700000
+          592.666666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeSailPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsSailPt3: TQRDBText
+        Left = 320
+        Top = 244
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          846.666666666666700000
+          645.583333333333300000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSailPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsAvMBPt3: TQRDBText
+        Left = 308
+        Top = 304
+        Width = 92
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          814.916666666666700000
+          804.333333333333300000
+          243.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsAvMBPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsApMBPt3: TQRDBText
+        Left = 306
+        Top = 324
+        Width = 94
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          809.625000000000000000
+          857.250000000000000000
+          248.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsApMBPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2SailPt3: TQRDBText
+        Left = 327
+        Top = 264
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          865.187500000000000000
+          698.500000000000000000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2SailPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MBPt3: TQRDBText
+        Left = 329
+        Top = 344
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          870.479166666666700000
+          910.166666666666700000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MBPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbTotPt3: TQRDBText
+        Left = 331
+        Top = 420
+        Width = 69
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          875.770833333333300000
+          1111.250000000000000000
+          182.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbTotPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbVifPt3: TQRDBText
+        Left = 334
+        Top = 440
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          883.708333333333300000
+          1164.166666666667000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbVifPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbSevPt3: TQRDBText
+        Left = 328
+        Top = 500
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          867.833333333333300000
+          1322.916666666667000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbSevPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSevPt3: TQRDBText
+        Left = 326
+        Top = 520
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          862.541666666666700000
+          1375.833333333333000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTGMQPt3: TQRDBText
+        Left = 334
+        Top = 580
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          883.708333333333300000
+          1534.583333333333000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GMQPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVNaisPt3: TQRDBText
+        Left = 321
+        Top = 460
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          849.312500000000000000
+          1217.083333333333000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVNaisPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVSevPt3: TQRDBText
+        Left = 326
+        Top = 540
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          862.541666666666700000
+          1428.750000000000000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVSevPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliGestPt3: TQRDBText
+        Left = 322
+        Top = 676
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          851.958333333333300000
+          1788.583333333333000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliGestPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliLactPt3: TQRDBText
+        Left = 325
+        Top = 696
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          859.895833333333300000
+          1841.500000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliLactPt3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbrPt2: TQRDBText
+        Left = 305
+        Top = 164
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          806.979166666666700000
+          433.916666666666700000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbrPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPctPt2: TQRDBText
+        Left = 305
+        Top = 184
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          806.979166666666700000
+          486.833333333333300000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PctPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSailPt2: TQRDBText
+        Left = 280
+        Top = 224
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          740.833333333333300000
+          592.666666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeSailPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsSailPt2: TQRDBText
+        Left = 280
+        Top = 244
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          740.833333333333300000
+          645.583333333333300000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSailPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsAvMBPt2: TQRDBText
+        Left = 268
+        Top = 304
+        Width = 92
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          709.083333333333300000
+          804.333333333333300000
+          243.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsAvMBPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsApMBPt2: TQRDBText
+        Left = 266
+        Top = 324
+        Width = 94
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          703.791666666666700000
+          857.250000000000000000
+          248.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsApMBPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2SailPt2: TQRDBText
+        Left = 287
+        Top = 264
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          759.354166666666700000
+          698.500000000000000000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2SailPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MBPt2: TQRDBText
+        Left = 289
+        Top = 344
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          764.645833333333300000
+          910.166666666666700000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MBPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbTotPt2: TQRDBText
+        Left = 291
+        Top = 420
+        Width = 69
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          769.937500000000000000
+          1111.250000000000000000
+          182.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbTotPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbVifPt2: TQRDBText
+        Left = 294
+        Top = 440
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          777.875000000000000000
+          1164.166666666667000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbVifPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbSevPt2: TQRDBText
+        Left = 288
+        Top = 500
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          1322.916666666667000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbSevPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSevPt2: TQRDBText
+        Left = 286
+        Top = 520
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          756.708333333333300000
+          1375.833333333333000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTGMQPt2: TQRDBText
+        Left = 294
+        Top = 580
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          777.875000000000000000
+          1534.583333333333000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GMQPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVNaisPt2: TQRDBText
+        Left = 281
+        Top = 460
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          743.479166666666700000
+          1217.083333333333000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVNaisPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVSevPt2: TQRDBText
+        Left = 286
+        Top = 540
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          756.708333333333300000
+          1428.750000000000000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVSevPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliGestPt2: TQRDBText
+        Left = 282
+        Top = 676
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          746.125000000000000000
+          1788.583333333333000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliGestPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliLactPt2: TQRDBText
+        Left = 285
+        Top = 696
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          754.062500000000000000
+          1841.500000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliLactPt2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbrPt1: TQRDBText
+        Left = 265
+        Top = 164
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          701.145833333333300000
+          433.916666666666700000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbrPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPctPt1: TQRDBText
+        Left = 265
+        Top = 184
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          701.145833333333300000
+          486.833333333333300000
+          145.520833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PctPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSailPt1: TQRDBText
+        Left = 240
+        Top = 224
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          592.666666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeSailPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsSailPt1: TQRDBText
+        Left = 240
+        Top = 244
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          635.000000000000000000
+          645.583333333333300000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsSailPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsAvMBPt1: TQRDBText
+        Left = 228
+        Top = 304
+        Width = 92
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          603.250000000000000000
+          804.333333333333300000
+          243.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsAvMBPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPdsApMBPt1: TQRDBText
+        Left = 226
+        Top = 324
+        Width = 94
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          597.958333333333300000
+          857.250000000000000000
+          248.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PdsApMBPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2SailPt1: TQRDBText
+        Left = 247
+        Top = 264
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          653.520833333333300000
+          698.500000000000000000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2SailPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2MBPt1: TQRDBText
+        Left = 249
+        Top = 344
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          658.812500000000000000
+          910.166666666666700000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2MBPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbTotPt1: TQRDBText
+        Left = 251
+        Top = 420
+        Width = 69
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          664.104166666666700000
+          1111.250000000000000000
+          182.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbTotPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbVifPt1: TQRDBText
+        Left = 254
+        Top = 440
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          672.041666666666700000
+          1164.166666666667000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbVifPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTNbSevPt1: TQRDBText
+        Left = 248
+        Top = 500
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          656.166666666666700000
+          1322.916666666667000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_NbSevPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeSevPt1: TQRDBText
+        Left = 246
+        Top = 520
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          650.875000000000000000
+          1375.833333333333000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_DureeLact_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTGMQPt1: TQRDBText
+        Left = 254
+        Top = 580
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          672.041666666666700000
+          1534.583333333333000000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_GMQPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVNaisPt1: TQRDBText
+        Left = 241
+        Top = 460
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          637.645833333333300000
+          1217.083333333333000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVNaisPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPVSevPt1: TQRDBText
+        Left = 246
+        Top = 540
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          650.875000000000000000
+          1428.750000000000000000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PVSevPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliGestPt1: TQRDBText
+        Left = 242
+        Top = 676
+        Width = 78
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          640.291666666666700000
+          1788.583333333333000000
+          206.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliGestPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliLactPt1: TQRDBText
+        Left = 245
+        Top = 696
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          648.229166666666700000
+          1841.500000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AliLactPt1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.000'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 27
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          21.166666666666670000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 383
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          63.500000000000000000
+          1013.354166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1711.854166666667000000
+          63.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFProfil: TStringField
+      FieldName = '_Profil_'
+      Size = 25
+    end
+    object IFNbrPt1: TIntegerField
+      FieldName = '_NbrPt1_'
+    end
+    object IFNbrPt2: TIntegerField
+      FieldName = '_NbrPt2_'
+    end
+    object IFNbrPt3: TIntegerField
+      FieldName = '_NbrPt3_'
+    end
+    object IFNbrPt4: TIntegerField
+      FieldName = '_NbrPt4_'
+    end
+    object IFNbrPt5: TIntegerField
+      FieldName = '_NbrPt5_'
+    end
+    object IFNbrPt6: TIntegerField
+      FieldName = '_NbrPt6_'
+    end
+    object IFNbrPt7: TIntegerField
+      FieldName = '_NbrPt7_'
+    end
+    object IFNbrPt8: TIntegerField
+      FieldName = '_NbrPt8_'
+    end
+    object IFNbrTot: TIntegerField
+      FieldName = '_NbrTot_'
+    end
+    object FFPctPt1: TFloatField
+      FieldName = '_PctPt1_'
+    end
+    object FFPctPt2: TFloatField
+      FieldName = '_PctPt2_'
+    end
+    object FFPctPt3: TFloatField
+      FieldName = '_PctPt3_'
+    end
+    object FFPctPt4: TFloatField
+      FieldName = '_PctPt4_'
+    end
+    object FFPctPt5: TFloatField
+      FieldName = '_PctPt5_'
+    end
+    object FFPctPt6: TFloatField
+      FieldName = '_PctPt6_'
+    end
+    object FFPctPt7: TFloatField
+      FieldName = '_PctPt7_'
+    end
+    object FFPctPt8: TFloatField
+      FieldName = '_PctPt8_'
+    end
+    object FFPctTot: TFloatField
+      FieldName = '_PctTot_'
+    end
+    object IFAgeSailPt1: TIntegerField
+      FieldName = '_AgeSailPt1_'
+    end
+    object IFAgeSailPt2: TIntegerField
+      FieldName = '_AgeSailPt2_'
+    end
+    object IFAgeSailPt3: TIntegerField
+      FieldName = '_AgeSailPt3_'
+    end
+    object IFAgeSailPt4: TIntegerField
+      FieldName = '_AgeSailPt4_'
+    end
+    object IFAgeSailPt5: TIntegerField
+      FieldName = '_AgeSailPt5_'
+    end
+    object IFAgeSailPt6: TIntegerField
+      FieldName = '_AgeSailPt6_'
+    end
+    object IFAgeSailPt7: TIntegerField
+      FieldName = '_AgeSailPt7_'
+    end
+    object IFAgeSailPt8: TIntegerField
+      FieldName = '_AgeSailPt8_'
+    end
+    object IFAgeSailTot: TIntegerField
+      FieldName = '_AgeSailTot_'
+    end
+    object FFPdsSailPt1: TFloatField
+      FieldName = '_PdsSailPt1_'
+    end
+    object FFPdsSailPt2: TFloatField
+      FieldName = '_PdsSailPt2_'
+    end
+    object FFPdsSailPt3: TFloatField
+      FieldName = '_PdsSailPt3_'
+    end
+    object FFPdsSailPt4: TFloatField
+      FieldName = '_PdsSailPt4_'
+    end
+    object FFPdsSailPt5: TFloatField
+      FieldName = '_PdsSailPt5_'
+    end
+    object FFPdsSailPt6: TFloatField
+      FieldName = '_PdsSailPt6_'
+    end
+    object FFPdsSailPt7: TFloatField
+      FieldName = '_PdsSailPt7_'
+    end
+    object FFPdsSailPt8: TFloatField
+      FieldName = '_PdsSailPt8_'
+    end
+    object FFPdsSailTot: TFloatField
+      FieldName = '_PdsSailTot_'
+    end
+    object FFP2SailPt1: TFloatField
+      FieldName = '_P2SailPt1_'
+    end
+    object FFP2SailPt2: TFloatField
+      FieldName = '_P2SailPt2_'
+    end
+    object FFP2SailPt3: TFloatField
+      FieldName = '_P2SailPt3_'
+    end
+    object FFP2SailPt4: TFloatField
+      FieldName = '_P2SailPt4_'
+    end
+    object FFP2SailPt5: TFloatField
+      FieldName = '_P2SailPt5_'
+    end
+    object FFP2SailPt6: TFloatField
+      FieldName = '_P2SailPt6_'
+    end
+    object FFP2SailPt7: TFloatField
+      FieldName = '_P2SailPt7_'
+    end
+    object FFP2SailPt8: TFloatField
+      FieldName = '_P2SailPt8_'
+    end
+    object FFP2SailTot: TFloatField
+      FieldName = '_P2SailTot_'
+    end
+    object FFPdsAvMBPt1: TFloatField
+      FieldName = '_PdsAvMBPt1_'
+    end
+    object FFPdsAvMBPt2: TFloatField
+      FieldName = '_PdsAvMBPt2_'
+    end
+    object FFPdsAvMBPt3: TFloatField
+      FieldName = '_PdsAvMBPt3_'
+    end
+    object FFPdsAvMBPt4: TFloatField
+      FieldName = '_PdsAvMBPt4_'
+    end
+    object FFPdsAvMBPt5: TFloatField
+      FieldName = '_PdsAvMBPt5_'
+    end
+    object FFPdsAvMBPt6: TFloatField
+      FieldName = '_PdsAvMBPt6_'
+    end
+    object FFPdsAvMBPt7: TFloatField
+      FieldName = '_PdsAvMBPt7_'
+    end
+    object FFPdsAvMBPt8: TFloatField
+      FieldName = '_PdsAvMBPt8_'
+    end
+    object FFPdsAvMBTot: TFloatField
+      FieldName = '_PdsAvMBTot_'
+    end
+    object FFPdsApMBPt1: TFloatField
+      FieldName = '_PdsApMBPt1_'
+    end
+    object FFPdsApMBPt2: TFloatField
+      FieldName = '_PdsApMBPt2_'
+    end
+    object FFPdsApMBPt3: TFloatField
+      FieldName = '_PdsApMBPt3_'
+    end
+    object FFPdsApMBPt4: TFloatField
+      FieldName = '_PdsApMBPt4_'
+    end
+    object FFPdsApMBPt5: TFloatField
+      FieldName = '_PdsApMBPt5_'
+    end
+    object FFPdsApMBPt6: TFloatField
+      FieldName = '_PdsApMBPt6_'
+    end
+    object FFPdsApMBPt7: TFloatField
+      FieldName = '_PdsApMBPt7_'
+    end
+    object FFPdsApMBPt8: TFloatField
+      FieldName = '_PdsApMBPt8_'
+    end
+    object FFPdsApMBTot: TFloatField
+      FieldName = '_PdsApMBTot_'
+    end
+    object FFP2MBPt1: TFloatField
+      FieldName = '_P2MBPt1_'
+    end
+    object FFP2MBPt2: TFloatField
+      FieldName = '_P2MBPt2_'
+    end
+    object FFP2MBPt3: TFloatField
+      FieldName = '_P2MBPt3_'
+    end
+    object FFP2MBPt4: TFloatField
+      FieldName = '_P2MBPt4_'
+    end
+    object FFP2MBPt5: TFloatField
+      FieldName = '_P2MBPt5_'
+    end
+    object FFP2MBPt6: TFloatField
+      FieldName = '_P2MBPt6_'
+    end
+    object FFP2MBPt7: TFloatField
+      FieldName = '_P2MBPt7_'
+    end
+    object FFP2MBPt8: TFloatField
+      FieldName = '_P2MBPt8_'
+    end
+    object FFP2MBTot: TFloatField
+      FieldName = '_P2MBTot_'
+    end
+    object FFNbTotPt1: TFloatField
+      FieldName = '_NbTotPt1_'
+    end
+    object FFNbTotPt2: TFloatField
+      FieldName = '_NbTotPt2_'
+    end
+    object FFNbTotPt3: TFloatField
+      FieldName = '_NbTotPt3_'
+    end
+    object FFNbTotPt4: TFloatField
+      FieldName = '_NbTotPt4_'
+    end
+    object FFNbTotPt5: TFloatField
+      FieldName = '_NbTotPt5_'
+    end
+    object FFNbTotPt6: TFloatField
+      FieldName = '_NbTotPt6_'
+    end
+    object FFNbTotPt7: TFloatField
+      FieldName = '_NbTotPt7_'
+    end
+    object FFNbTotPt8: TFloatField
+      FieldName = '_NbTotPt8_'
+    end
+    object FFNbTotTot: TFloatField
+      FieldName = '_NbTotTot_'
+    end
+    object FFNbVifPt1: TFloatField
+      FieldName = '_NbVifPt1_'
+    end
+    object FFNbVifPt2: TFloatField
+      FieldName = '_NbVifPt2_'
+    end
+    object FFNbVifPt3: TFloatField
+      FieldName = '_NbVifPt3_'
+    end
+    object FFNbVifPt4: TFloatField
+      FieldName = '_NbVifPt4_'
+    end
+    object FFNbVifPt5: TFloatField
+      FieldName = '_NbVifPt5_'
+    end
+    object FFNbVifPt6: TFloatField
+      FieldName = '_NbVifPt6_'
+    end
+    object FFNbVifPt7: TFloatField
+      FieldName = '_NbVifPt7_'
+    end
+    object FFNbVifPt8: TFloatField
+      FieldName = '_NbVifPt8_'
+    end
+    object FFNbVifTot: TFloatField
+      FieldName = '_NbVifTot_'
+    end
+    object FFPVNaisPt1: TFloatField
+      FieldName = '_PVNaisPt1_'
+    end
+    object FFPVNaisPt2: TFloatField
+      FieldName = '_PVNaisPt2_'
+    end
+    object FFPVNaisPt3: TFloatField
+      FieldName = '_PVNaisPt3_'
+    end
+    object FFPVNaisPt4: TFloatField
+      FieldName = '_PVNaisPt4_'
+    end
+    object FFPVNaisPt5: TFloatField
+      FieldName = '_PVNaisPt5_'
+    end
+    object FFPVNaisPt6: TFloatField
+      FieldName = '_PVNaisPt6_'
+    end
+    object FFPVNaisPt7: TFloatField
+      FieldName = '_PVNaisPt7_'
+    end
+    object FFPVNaisPt8: TFloatField
+      FieldName = '_PVNaisPt8_'
+    end
+    object FFPVNaisTot: TFloatField
+      FieldName = '_PVNaisTot_'
+    end
+    object FFNbSevPt1: TFloatField
+      FieldName = '_NbSevPt1_'
+    end
+    object FFNbSevPt2: TFloatField
+      FieldName = '_NbSevPt2_'
+    end
+    object FFNbSevPt3: TFloatField
+      FieldName = '_NbSevPt3_'
+    end
+    object FFNbSevPt4: TFloatField
+      FieldName = '_NbSevPt4_'
+    end
+    object FFNbSevPt5: TFloatField
+      FieldName = '_NbSevPt5_'
+    end
+    object FFNbSevPt6: TFloatField
+      FieldName = '_NbSevPt6_'
+    end
+    object FFNbSevPt7: TFloatField
+      FieldName = '_NbSevPt7_'
+    end
+    object FFNbSevPt8: TFloatField
+      FieldName = '_NbSevPt8_'
+    end
+    object FFNbSevTot_: TFloatField
+      FieldName = '_NbSevTot_'
+    end
+    object IFDureeLact: TIntegerField
+      FieldName = '_DureeLact_'
+    end
+    object FFPVSevPt1: TFloatField
+      FieldName = '_PVSevPt1_'
+    end
+    object FFPVSevPt2: TFloatField
+      FieldName = '_PVSevPt2_'
+    end
+    object FFPVSevPt3: TFloatField
+      FieldName = '_PVSevPt3_'
+    end
+    object FFPVSevPt4: TFloatField
+      FieldName = '_PVSevPt4_'
+    end
+    object FFPVSevPt5: TFloatField
+      FieldName = '_PVSevPt5_'
+    end
+    object FFPVSevPt6: TFloatField
+      FieldName = '_PVSevPt6_'
+    end
+    object FFPVSevPt7: TFloatField
+      FieldName = '_PVSevPt7_'
+    end
+    object FFPVSevPt8: TFloatField
+      FieldName = '_PVSevPt8_'
+    end
+    object FFPVSevTot: TFloatField
+      FieldName = '_PVSevTot_'
+    end
+    object FFGMQPt1: TFloatField
+      FieldName = '_GMQPt1_'
+    end
+    object FFGMQPt2: TFloatField
+      FieldName = '_GMQPt2_'
+    end
+    object FFGMQPt3: TFloatField
+      FieldName = '_GMQPt3_'
+    end
+    object FFGMQPt4: TFloatField
+      FieldName = '_GMQPt4_'
+    end
+    object FFGMQPt5: TFloatField
+      FieldName = '_GMQPt5_'
+    end
+    object FFGMQPt6: TFloatField
+      FieldName = '_GMQPt6_'
+    end
+    object FFGMQPt7: TFloatField
+      FieldName = '_GMQPt7_'
+    end
+    object FFGMQPt8: TFloatField
+      FieldName = '_GMQPt8_'
+    end
+    object FFGMQTot: TFloatField
+      FieldName = '_GMQTot_'
+    end
+    object SFSeqAli: TStringField
+      FieldName = '_SeqAli_'
+      Size = 25
+    end
+    object SFUnite: TStringField
+      DisplayWidth = 20
+      FieldName = '_Unite_'
+    end
+    object FFAliGestPt1: TFloatField
+      FieldName = '_AliGestPt1_'
+    end
+    object FFAliGestPt2: TFloatField
+      FieldName = '_AliGestPt2_'
+    end
+    object FFAliGestPt3: TFloatField
+      FieldName = '_AliGestPt3_'
+    end
+    object FFAliGestPt4: TFloatField
+      FieldName = '_AliGestPt4_'
+    end
+    object FFAliGestPt5: TFloatField
+      FieldName = '_AliGestPt5_'
+    end
+    object FFAliGestPt6: TFloatField
+      FieldName = '_AliGestPt6_'
+    end
+    object FFAliGestPt7: TFloatField
+      FieldName = '_AliGestPt7_'
+    end
+    object FFAliGestPt8: TFloatField
+      FieldName = '_AliGestPt8_'
+    end
+    object FFAliGestTot: TFloatField
+      FieldName = '_AliGestTot_'
+    end
+    object FFAliLactPt1: TFloatField
+      FieldName = '_AliLactPt1_'
+    end
+    object FFAliLactPt2: TFloatField
+      FieldName = '_AliLactPt2_'
+    end
+    object FFAliLactPt3: TFloatField
+      FieldName = '_AliLactPt3_'
+    end
+    object FFAliLactPt4: TFloatField
+      FieldName = '_AliLactPt4_'
+    end
+    object FFAliLactPt5: TFloatField
+      FieldName = '_AliLactPt5_'
+    end
+    object FFAliLactPt6: TFloatField
+      FieldName = '_AliLactPt6_'
+    end
+    object FFAliLactPt7: TFloatField
+      FieldName = '_AliLactPt7_'
+    end
+    object FFAliLactPt8: TFloatField
+      FieldName = '_AliLactPt8_'
+    end
+    object FFAliLactTot: TFloatField
+      FieldName = '_AliLactTot_'
+    end
+  end
+end
Index: UFRapAliMat.pas
===================================================================
--- UFRapAliMat.pas	(révision 0)
+++ UFRapAliMat.pas	(révision 3)
@@ -0,0 +1,116 @@
+unit UFRapAliMat ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapAliMat = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLAliment: TQRLabel;
+    CDSRapport: TClientDataSet;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    SFAliment: TStringField;
+    QRDBAliment: TQRDBText;
+    QRLMat: TQRLabel;
+    QRDBTMat: TQRDBText;
+    QRLTQte: TQRLabel;
+    QRDBTQte: TQRDBText;
+    QRLMS: TQRLabel;
+    QRDBTMS: TQRDBText;
+    DSRelation: TDataSource;
+    CDSMatieres: TClientDataSet;
+    SFMatiere: TStringField;
+    QRSDRegles: TQRSubDetail;
+    SFAlimentKey: TStringField;
+    IFNo: TIntegerField;
+    FFQte: TFloatField;
+    FFMS: TFloatField;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapAliMat: TFRapAliMat;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFindRec, UFAliment, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapAliMat }
+
+procedure TFRapAliMat.FormCreate(Sender: TObject);
+var
+  i : integer;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Aliment_'] := FAliment.CBAliment.Text;
+    Post;
+  end ;
+  QRMMemo.Lines.Add(FAliment.CBAliment.Hint);
+  with CDSMatieres do
+  begin
+    CreateDataSet;
+    if PAliment.MP.NbMat > 0
+    then
+      for i := 0 to PAliment.MP.NbMat - 1 do
+      begin
+        Append;
+        FieldValues['_Aliment_']:= FAliment.CBAliment.Text;
+        FieldValues['_No_']:= i;
+        FieldValues['_Matiere_']:= FindNomMatiere(PAliment.MP.NumMat[i]);
+        FieldValues['_Qte_']:= PAliment.MP.Qte[i];
+        FieldValues['_MS_']:= PAliment.MP.MS[i];
+        Post;
+      end ;
+  end;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFCalibrProfilP.dfm
===================================================================
--- UFCalibrProfilP.dfm	(révision 0)
+++ UFCalibrProfilP.dfm	(révision 3)
@@ -0,0 +1,1309 @@
+object FCalibrProfilP: TFCalibrProfilP
+  Left = 0
+  Top = 0
+  HelpContext = 5340
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Calibration'
+  ClientHeight = 592
+  ClientWidth = 784
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBResults: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 784
+    Height = 360
+    Align = alClient
+    Caption = 'Simulation results'
+    TabOrder = 0
+    object PLeft: TPanel
+      Left = 2
+      Top = 15
+      Width = 206
+      Height = 343
+      Align = alLeft
+      BevelOuter = bvNone
+      TabOrder = 0
+      object LMethod: TLabel
+        Left = 16
+        Top = 236
+        Width = 36
+        Height = 13
+        Caption = 'Method'
+      end
+      object SBCalibrage: TSpeedButton
+        Left = 40
+        Top = 296
+        Width = 120
+        Height = 32
+        Hint = 'Calibrate model parameters'
+        Caption = 'Calibration'
+        Glyph.Data = {
+          76010000424D7601000000000000760000002800000020000000100000000100
+          04000000000000010000C40E0000C40E00001000000000000000000000000000
+          800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DD7000000000
+          7DDDDDD777777777DFDDDD08888888880DDDDD7FDFDFDFFF7FDDDD0808089998
+          0DDDDD7F7D7D777D7FDDDD08888888880DDDDD7FDFDFDFDF7FDDDD0808080808
+          0DDDDD7F7D7D7D7D7FDDDD08888888880DDDDD7FDFDFDFDF7FDDDD0808080808
+          0DDDDD7F7D7D7D7D7FDDDD08888888880DDDDD7FDFDFDFDF7FDDDD0808080808
+          0DDDDD7F7D7D7D7D7FDDDD08888888880DDDDD7FDFFFFFFF7FDDDD0800000008
+          0DDDDD7F7777777F7FDDDD08000E0E080DDDDD7F7FFFFF7F7FDDDD0800000008
+          0DDDDD7F7777777D7FDDDD08888888880DDDDD7FDDDDDDDD7FDDDD0888888888
+          0DDDDD7DFFFFFFFF7DDDDD70000000007DDDDDD777777777DDDD}
+        NumGlyphs = 2
+        ParentShowHint = False
+        ShowHint = True
+        OnClick = SBCalibrageClick
+      end
+      object GBParameters: TGroupBox
+        Left = 6
+        Top = 1
+        Width = 200
+        Height = 168
+        Caption = 'Model parameters'
+        TabOrder = 0
+        object LEntretien: TLabel
+          Left = 8
+          Top = 140
+          Width = 62
+          Height = 13
+          Hint = 'Maintenance correction factor'
+          Caption = 'Maintenance'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LComport: TLabel
+          Left = 8
+          Top = 116
+          Width = 64
+          Height = 13
+          Hint = 
+            'Maturation coefficient (shape parameter of the Gompertz function' +
+            ')'
+          Caption = 'Precocity (/d)'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LPDMoy: TLabel
+          Left = 8
+          Top = 92
+          Width = 71
+          Height = 13
+          Hint = 'Average protein deposition (g/d)'
+          Caption = 'Mean PD (g/d)'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LIng100: TLabel
+          Left = 8
+          Top = 68
+          Width = 27
+          Height = 13
+          Hint = 'Feed intake at 100 kg of body weight'
+          Caption = 'FI100'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LIng50: TLabel
+          Left = 8
+          Top = 44
+          Width = 21
+          Height = 13
+          Hint = 'Feed intake at 50 kg of body weight'
+          Caption = 'FI50'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object LPVInit: TLabel
+          Left = 8
+          Top = 20
+          Width = 105
+          Height = 13
+          Caption = 'Initial body weight (kg)'
+          ParentShowHint = False
+          ShowHint = True
+        end
+        object PBIng50: TPBSuperSpin
+          Left = 128
+          Top = 40
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 'Feed intake at 50 kg of body weight'
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBIng50Change
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBIng100: TPBSuperSpin
+          Left = 128
+          Top = 64
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 'Feed intake at 100 kg of body weight'
+          Alignment = taRightJustify
+          Decimals = 0
+          NumberFormat = Standard
+          OnChange = PBIng100Change
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          Increment = 1.000000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBMaintenance: TPBSuperSpin
+          Left = 128
+          Top = 136
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 'Maintenance correction factor'
+          Alignment = taRightJustify
+          Decimals = 3
+          MaxValue = 1.300000000000000000
+          MinValue = 0.700000000000000000
+          NumberFormat = Standard
+          OnChange = PBMaintenanceChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 5
+          Increment = 0.010000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBMeanPD: TPBSuperSpin
+          Left = 128
+          Top = 88
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 'Average protein deposition (g/d)'
+          Alignment = taRightJustify
+          Decimals = 2
+          MaxValue = 260.000000000000000000
+          MinValue = 50.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBMeanPDChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 3
+          Increment = 0.100000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBPrecocity: TPBSuperSpin
+          Left = 128
+          Top = 112
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Hint = 
+            'Maturation coefficient (shape parameter of the Gompertz function' +
+            ')'
+          Alignment = taRightJustify
+          Decimals = 5
+          MaxValue = 0.040000000000000000
+          MinValue = 0.001000000000000000
+          NumberFormat = Standard
+          OnChange = PBPrecocityChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 4
+          Increment = 0.000100000000000000
+          RoundValues = False
+          Wrap = False
+        end
+        object PBPVInit: TPBSuperSpin
+          Left = 128
+          Top = 16
+          Width = 64
+          Height = 22
+          Cursor = crDefault
+          Alignment = taRightJustify
+          Decimals = 1
+          MaxValue = 100.000000000000000000
+          MinValue = 15.000000000000000000
+          NumberFormat = Standard
+          OnChange = PBPVInitChange
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          Increment = 0.100000000000000000
+          RoundValues = False
+          Wrap = False
+        end
+      end
+      object CBMethod: TComboBox
+        Left = 78
+        Top = 232
+        Width = 120
+        Height = 21
+        Hint = 'Calibration method'
+        Style = csDropDownList
+        Enabled = False
+        ItemHeight = 13
+        ItemIndex = 1
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+        Text = 'Marquardt'
+        Items.Strings = (
+          'Newton'
+          'Marquardt'
+          'BFGS')
+      end
+      object RBStandard: TRadioButton
+        Left = 40
+        Top = 178
+        Width = 120
+        Height = 17
+        Caption = 'Standard mode'
+        Checked = True
+        TabOrder = 1
+        TabStop = True
+        OnClick = RBStandardClick
+      end
+      object RBExpert: TRadioButton
+        Left = 40
+        Top = 202
+        Width = 120
+        Height = 17
+        Caption = 'Expert mode'
+        TabOrder = 2
+        OnClick = RBExpertClick
+      end
+      object CBAALimit: TCheckBox
+        Left = 16
+        Top = 266
+        Width = 184
+        Height = 17
+        Hint = 'Amino acids can limit performance'
+        Caption = 'Limiting amino acids'
+        Checked = True
+        Enabled = False
+        ParentShowHint = False
+        ShowHint = True
+        State = cbChecked
+        TabOrder = 4
+      end
+    end
+    object PRight: TPanel
+      Left = 208
+      Top = 15
+      Width = 574
+      Height = 343
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 1
+      object PGraphTop: TPanel
+        Left = 0
+        Top = 0
+        Width = 574
+        Height = 49
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        DesignSize = (
+          574
+          49)
+        object GBGraphRight: TGroupBox
+          Left = 392
+          Top = 1
+          Width = 176
+          Height = 48
+          Anchors = [akTop, akRight]
+          Caption = 'Right axis'
+          TabOrder = 1
+          object CBGraphRight: TComboBox
+            Left = 8
+            Top = 16
+            Width = 160
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 13
+            ItemIndex = 1
+            TabOrder = 0
+            Text = 'Body weight (kg)'
+            OnChange = CBGraphRightChange
+            Items.Strings = (
+              'Cumulative feed usage (kg)'
+              'Body weight (kg)'
+              'Backfat thickness (mm)'
+              'Lean meat (%)')
+          end
+        end
+        object GBGraphLeft: TGroupBox
+          Left = 8
+          Top = 1
+          Width = 176
+          Height = 48
+          Caption = 'Left axis'
+          TabOrder = 0
+          object CBGraphLeft: TComboBox
+            Left = 8
+            Top = 16
+            Width = 160
+            Height = 21
+            Style = csDropDownList
+            ItemHeight = 13
+            ItemIndex = 0
+            TabOrder = 0
+            Text = 'Cumulative feed usage (kg)'
+            OnChange = CBGraphLeftChange
+            Items.Strings = (
+              'Cumulative feed usage (kg)'
+              'Body weight (kg)'
+              'Backfat thickness (mm)'
+              'Lean meat (%)')
+          end
+        end
+      end
+      object Graph: TChart
+        Left = 0
+        Top = 49
+        Width = 574
+        Height = 294
+        Legend.Visible = False
+        Title.Text.Strings = (
+          'TChart')
+        Title.Visible = False
+        BottomAxis.Grid.Visible = False
+        DepthAxis.Grid.Visible = False
+        DepthTopAxis.Grid.Visible = False
+        LeftAxis.Automatic = False
+        LeftAxis.AutomaticMaximum = False
+        LeftAxis.AutomaticMinimum = False
+        LeftAxis.Grid.Visible = False
+        LeftAxis.Maximum = 1067.500000000000000000
+        LeftAxis.Title.Font.Color = clRed
+        LeftAxis.Title.Font.Style = [fsBold]
+        RightAxis.Automatic = False
+        RightAxis.AutomaticMaximum = False
+        RightAxis.AutomaticMinimum = False
+        RightAxis.Grid.Visible = False
+        RightAxis.Maximum = 956.856250000000000000
+        RightAxis.Title.Font.Color = clGreen
+        RightAxis.Title.Font.Style = [fsBold]
+        TopAxis.Grid.Visible = False
+        TopAxis.Title.Font.Style = [fsBold]
+        View3D = False
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 1
+        object LineLeft: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          Title = 'LineLeft'
+          LinePen.Width = 2
+          Pointer.InflateMargins = True
+          Pointer.Style = psRectangle
+          Pointer.Visible = False
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+        object LineRight: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          Title = 'LineRight'
+          VertAxis = aRightAxis
+          LinePen.Width = 2
+          Pointer.InflateMargins = True
+          Pointer.Style = psRectangle
+          Pointer.Visible = False
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+        object PointLeft: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          Title = 'PointLeft'
+          LinePen.Visible = False
+          Pointer.Brush.Color = clWhite
+          Pointer.Brush.Style = bsClear
+          Pointer.HorizSize = 3
+          Pointer.InflateMargins = True
+          Pointer.Pen.Color = clRed
+          Pointer.Pen.Width = 2
+          Pointer.Style = psCircle
+          Pointer.VertSize = 3
+          Pointer.Visible = True
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+        object PointRight: TLineSeries
+          Marks.Arrow.Visible = True
+          Marks.Callout.Brush.Color = clBlack
+          Marks.Callout.Arrow.Visible = True
+          Marks.Visible = False
+          Title = 'PointRight'
+          VertAxis = aRightAxis
+          LinePen.Visible = False
+          Pointer.Brush.Color = clWhite
+          Pointer.Brush.Style = bsClear
+          Pointer.HorizSize = 3
+          Pointer.InflateMargins = True
+          Pointer.Pen.Color = clGreen
+          Pointer.Pen.Width = 2
+          Pointer.Style = psCircle
+          Pointer.VertSize = 3
+          Pointer.Visible = True
+          XValues.Name = 'X'
+          XValues.Order = loAscending
+          YValues.Name = 'Y'
+          YValues.Order = loNone
+        end
+      end
+    end
+  end
+  object PButtons: TPanel
+    Left = 0
+    Top = 552
+    Width = 784
+    Height = 40
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 2
+    DesignSize = (
+      784
+      40)
+    object JvEnterAsTab1: TJvEnterAsTab
+      Left = 8
+      Top = 8
+      Width = 28
+      Height = 28
+    end
+    object BBCancel: TBitBtn
+      Left = 698
+      Top = 8
+      Width = 80
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      NumGlyphs = 2
+      TabOrder = 2
+    end
+    object BBOk: TBitBtn
+      Left = 610
+      Top = 8
+      Width = 80
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Caption = 'OK'
+      Default = True
+      Enabled = False
+      ModalResult = 1
+      NumGlyphs = 2
+      TabOrder = 1
+    end
+    object BBReset: TBitBtn
+      Left = 522
+      Top = 8
+      Width = 80
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Caption = 'Reset'
+      NumGlyphs = 2
+      TabOrder = 0
+      OnClick = BBResetClick
+    end
+  end
+  object PSummary: TPanel
+    Left = 0
+    Top = 360
+    Width = 784
+    Height = 192
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    DesignSize = (
+      784
+      192)
+    object LTime: TLabel
+      Left = 8
+      Top = 148
+      Width = 93
+      Height = 13
+      Anchors = [akTop, akRight]
+      Caption = 'CPU time (seconds)'
+    end
+    object LInfo: TLabel
+      Left = 8
+      Top = 172
+      Width = 48
+      Height = 13
+      Anchors = [akLeft, akBottom]
+      Caption = 'Warning'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clRed
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      Visible = False
+    end
+    object GBParam: TGroupBox
+      Left = 448
+      Top = 0
+      Width = 336
+      Height = 184
+      Caption = 'Estimated parameters'
+      TabOrder = 2
+      object LY50: TLabel
+        Left = 8
+        Top = 60
+        Width = 21
+        Height = 13
+        Caption = 'FI50'
+      end
+      object LY100: TLabel
+        Left = 8
+        Top = 84
+        Width = 27
+        Height = 13
+        Caption = 'FI100'
+      end
+      object LFinal: TLabel
+        Left = 176
+        Top = 16
+        Width = 80
+        Height = 13
+        Alignment = taCenter
+        AutoSize = False
+        Caption = 'Final value'
+      end
+      object LInitial: TLabel
+        Left = 96
+        Top = 16
+        Width = 80
+        Height = 13
+        Alignment = taCenter
+        AutoSize = False
+        Caption = 'Initial value'
+      end
+      object LMeanPD: TLabel
+        Left = 8
+        Top = 108
+        Width = 45
+        Height = 13
+        Caption = 'Mean PD'
+      end
+      object LSD: TLabel
+        Left = 264
+        Top = 16
+        Width = 64
+        Height = 13
+        Hint = 'Standard deviation'
+        Alignment = taCenter
+        AutoSize = False
+        Caption = 'SD'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object LPrecocity: TLabel
+        Left = 8
+        Top = 132
+        Width = 44
+        Height = 13
+        Caption = 'Precocity'
+      end
+      object LMaintenance: TLabel
+        Left = 8
+        Top = 156
+        Width = 62
+        Height = 13
+        Caption = 'Maintenance'
+      end
+      object LInitBW: TLabel
+        Left = 8
+        Top = 36
+        Width = 45
+        Height = 13
+        Caption = 'Initial BW'
+      end
+      object EY50Final: TEdit
+        Left = 184
+        Top = 56
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        ReadOnly = True
+        TabOrder = 6
+      end
+      object ESDY50: TEdit
+        Left = 264
+        Top = 56
+        Width = 64
+        Height = 21
+        Hint = 'Standard deviation'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 7
+      end
+      object EY100Final: TEdit
+        Left = 184
+        Top = 80
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        ReadOnly = True
+        TabOrder = 10
+      end
+      object ESDY100: TEdit
+        Left = 264
+        Top = 80
+        Width = 64
+        Height = 21
+        Hint = 'Standard deviation'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 11
+      end
+      object EMeanPDFinal: TEdit
+        Left = 184
+        Top = 104
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        ReadOnly = True
+        TabOrder = 14
+      end
+      object ESDMeanPD: TEdit
+        Left = 264
+        Top = 104
+        Width = 64
+        Height = 21
+        Hint = 'Standard deviation'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 15
+      end
+      object EPrecocityFinal: TEdit
+        Left = 184
+        Top = 128
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        ReadOnly = True
+        TabOrder = 18
+      end
+      object ESDPrecocity: TEdit
+        Left = 264
+        Top = 128
+        Width = 64
+        Height = 21
+        Hint = 'Standard deviation'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 19
+      end
+      object EMaintenanceFinal: TEdit
+        Left = 184
+        Top = 152
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        Enabled = False
+        ReadOnly = True
+        TabOrder = 22
+      end
+      object ESDMaintenance: TEdit
+        Left = 264
+        Top = 152
+        Width = 64
+        Height = 21
+        Hint = 'Standard deviation'
+        TabStop = False
+        Color = clBtnFace
+        Enabled = False
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 23
+      end
+      object EY50Initial: TEdit
+        Left = 104
+        Top = 56
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        ReadOnly = True
+        TabOrder = 5
+      end
+      object EY100Initial: TEdit
+        Left = 104
+        Top = 80
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        ReadOnly = True
+        TabOrder = 9
+      end
+      object EMeanPDInitial: TEdit
+        Left = 104
+        Top = 104
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        ReadOnly = True
+        TabOrder = 13
+      end
+      object EPrecocityInitial: TEdit
+        Left = 104
+        Top = 128
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        ReadOnly = True
+        TabOrder = 17
+      end
+      object EMaintenanceInitial: TEdit
+        Left = 104
+        Top = 152
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        Enabled = False
+        ReadOnly = True
+        TabOrder = 21
+      end
+      object CheckBox6: TCheckBox
+        Left = 88
+        Top = 58
+        Width = 16
+        Height = 17
+        Checked = True
+        State = cbChecked
+        TabOrder = 4
+        Visible = False
+      end
+      object CheckBox7: TCheckBox
+        Left = 88
+        Top = 82
+        Width = 16
+        Height = 17
+        Checked = True
+        State = cbChecked
+        TabOrder = 8
+        Visible = False
+      end
+      object CheckBox8: TCheckBox
+        Left = 88
+        Top = 106
+        Width = 16
+        Height = 17
+        Checked = True
+        State = cbChecked
+        TabOrder = 12
+        Visible = False
+      end
+      object CheckBox9: TCheckBox
+        Left = 88
+        Top = 130
+        Width = 16
+        Height = 17
+        Checked = True
+        State = cbChecked
+        TabOrder = 16
+        Visible = False
+      end
+      object CheckBox10: TCheckBox
+        Left = 88
+        Top = 154
+        Width = 16
+        Height = 17
+        TabOrder = 20
+        Visible = False
+      end
+      object EInitBWFinal: TEdit
+        Left = 184
+        Top = 32
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        Enabled = False
+        ReadOnly = True
+        TabOrder = 2
+      end
+      object ESDInitBW: TEdit
+        Left = 264
+        Top = 32
+        Width = 64
+        Height = 21
+        Hint = 'Standard deviation'
+        TabStop = False
+        Color = clBtnFace
+        Enabled = False
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 3
+      end
+      object EInitBWInitial: TEdit
+        Left = 104
+        Top = 32
+        Width = 64
+        Height = 21
+        TabStop = False
+        Color = clBtnFace
+        Enabled = False
+        ReadOnly = True
+        TabOrder = 1
+      end
+      object CheckBox5: TCheckBox
+        Left = 88
+        Top = 34
+        Width = 16
+        Height = 17
+        Checked = True
+        State = cbChecked
+        TabOrder = 0
+        Visible = False
+      end
+    end
+    object GBVariables: TGroupBox
+      Left = 0
+      Top = 0
+      Width = 440
+      Height = 136
+      Caption = 'Dependent variables'
+      TabOrder = 1
+      object LBackfat: TLabel
+        Left = 8
+        Top = 84
+        Width = 85
+        Height = 13
+        Caption = 'Backfat thickness'
+      end
+      object LWeight: TLabel
+        Left = 8
+        Top = 60
+        Width = 58
+        Height = 13
+        Caption = 'Body weight'
+      end
+      object LR2: TLabel
+        Left = 296
+        Top = 16
+        Width = 64
+        Height = 13
+        Hint = 'Percentage of variation explained'
+        Alignment = taCenter
+        AutoSize = False
+        Caption = 'R'#178
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object LRSD: TLabel
+        Left = 224
+        Top = 16
+        Width = 64
+        Height = 13
+        Hint = 'Residual standard deviation'
+        Alignment = taCenter
+        AutoSize = False
+        Caption = 'RSD'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object LVar: TLabel
+        Left = 368
+        Top = 16
+        Width = 64
+        Height = 13
+        Hint = 'Percentage of the weighted residual sum of squares'
+        Alignment = taCenter
+        AutoSize = False
+        Caption = 'wRSS'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object Lw: TLabel
+        Left = 144
+        Top = 16
+        Width = 80
+        Height = 13
+        Hint = 'Statistical weight'
+        Alignment = taCenter
+        AutoSize = False
+        Caption = 'Stat. weight'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object LFeed: TLabel
+        Left = 8
+        Top = 36
+        Width = 108
+        Height = 13
+        Caption = 'Cumulative feed usage'
+      end
+      object LLean: TLabel
+        Left = 8
+        Top = 108
+        Width = 50
+        Height = 13
+        Caption = 'Lean meat'
+      end
+      object ERSDBackfat: TEdit
+        Left = 224
+        Top = 80
+        Width = 64
+        Height = 21
+        Hint = 'Residual standard deviation'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 15
+      end
+      object ERSDWeight: TEdit
+        Left = 224
+        Top = 56
+        Width = 64
+        Height = 21
+        Hint = 'Residual standard deviation'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 9
+      end
+      object ER2Weight: TEdit
+        Left = 296
+        Top = 56
+        Width = 64
+        Height = 21
+        Hint = 'Percentage of variation explained'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 10
+      end
+      object ER2Backfat: TEdit
+        Left = 296
+        Top = 80
+        Width = 64
+        Height = 21
+        Hint = 'Percentage of variation explained'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 16
+      end
+      object EwRSSWeight: TEdit
+        Left = 368
+        Top = 56
+        Width = 64
+        Height = 21
+        Hint = 'Percentage of the weighted residual sum of squares'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 11
+      end
+      object EwRSSBackfat: TEdit
+        Left = 368
+        Top = 80
+        Width = 64
+        Height = 21
+        Hint = 'Percentage of the weighted residual sum of squares'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 17
+      end
+      object EwBackfat: TEdit
+        Left = 152
+        Top = 80
+        Width = 64
+        Height = 21
+        Hint = 'Statistical weight'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 14
+      end
+      object EwWeight: TEdit
+        Left = 152
+        Top = 56
+        Width = 64
+        Height = 21
+        Hint = 'Statistical weight'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 8
+      end
+      object ERSDFeed: TEdit
+        Left = 226
+        Top = 29
+        Width = 64
+        Height = 21
+        Hint = 'Residual standard deviation'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 3
+      end
+      object ERSDLean: TEdit
+        Left = 224
+        Top = 104
+        Width = 64
+        Height = 21
+        Hint = 'Residual standard deviation'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 21
+      end
+      object ER2Lean: TEdit
+        Left = 296
+        Top = 104
+        Width = 64
+        Height = 21
+        Hint = 'Percentage of variation explained'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 22
+      end
+      object ER2Feed: TEdit
+        Left = 296
+        Top = 32
+        Width = 64
+        Height = 21
+        Hint = 'Percentage of variation explained'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 4
+      end
+      object EwRSSLean: TEdit
+        Left = 368
+        Top = 104
+        Width = 64
+        Height = 21
+        Hint = 'Percentage of the weighted residual sum of squares'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 23
+      end
+      object EwRSSFeed: TEdit
+        Left = 368
+        Top = 32
+        Width = 64
+        Height = 21
+        Hint = 'Percentage of the weighted residual sum of squares'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 5
+      end
+      object EwFeed: TEdit
+        Left = 152
+        Top = 32
+        Width = 64
+        Height = 21
+        Hint = 'Statistical weight'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 2
+      end
+      object EwLean: TEdit
+        Left = 152
+        Top = 104
+        Width = 64
+        Height = 21
+        Hint = 'Statistical weight'
+        TabStop = False
+        Color = clBtnFace
+        ParentShowHint = False
+        ReadOnly = True
+        ShowHint = True
+        TabOrder = 20
+      end
+      object PBwFeed: TPBNumEdit
+        Left = 152
+        Top = 32
+        Width = 64
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 5
+        NumberFormat = Standard
+        OnChange = PBwFeedChange
+        TabOrder = 1
+        Visible = False
+      end
+      object PBwWeight: TPBNumEdit
+        Left = 152
+        Top = 56
+        Width = 64
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 5
+        NumberFormat = Standard
+        OnChange = PBwWeightChange
+        TabOrder = 7
+        Visible = False
+      end
+      object PBwBackfat: TPBNumEdit
+        Left = 152
+        Top = 80
+        Width = 64
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 5
+        NumberFormat = Standard
+        OnChange = PBwBackfatChange
+        TabOrder = 13
+        Visible = False
+      end
+      object PBwLean: TPBNumEdit
+        Left = 152
+        Top = 104
+        Width = 64
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 5
+        NumberFormat = Standard
+        OnChange = PBwLeanChange
+        TabOrder = 19
+        Visible = False
+      end
+      object CheckBox1: TCheckBox
+        Left = 136
+        Top = 34
+        Width = 16
+        Height = 17
+        Checked = True
+        State = cbChecked
+        TabOrder = 0
+        Visible = False
+      end
+      object CheckBox2: TCheckBox
+        Left = 136
+        Top = 58
+        Width = 16
+        Height = 17
+        Checked = True
+        State = cbChecked
+        TabOrder = 6
+        Visible = False
+      end
+      object CheckBox3: TCheckBox
+        Left = 136
+        Top = 82
+        Width = 16
+        Height = 17
+        TabOrder = 12
+        Visible = False
+      end
+      object CheckBox4: TCheckBox
+        Left = 136
+        Top = 106
+        Width = 16
+        Height = 17
+        TabOrder = 18
+        Visible = False
+      end
+    end
+    object ETime: TEdit
+      Left = 136
+      Top = 144
+      Width = 64
+      Height = 21
+      Anchors = [akTop, akRight]
+      Color = clBtnFace
+      ReadOnly = True
+      TabOrder = 0
+    end
+  end
+end
Index: UFRapAliMin.pas
===================================================================
--- UFRapAliMin.pas	(révision 0)
+++ UFRapAliMin.pas	(révision 3)
@@ -0,0 +1,179 @@
+unit UFRapAliMin ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapAliMin = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLAliment: TQRLabel;
+    CDSRapport: TClientDataSet;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    SFAliment: TStringField;
+    QRDBAliment: TQRDBText;
+    QRLTMacro: TQRLabel;
+    QRLCa: TQRLabel;
+    QRDBTCa: TQRDBText;
+    QRLMacro: TQRLabel;
+    QRLCompo: TQRLabel;
+    QRLNa: TQRLabel;
+    QRDBTNa: TQRDBText;
+    QRLMg: TQRLabel;
+    QRDBTMg: TQRDBText;
+    QRLS: TQRLabel;
+    QRDBTS: TQRDBText;
+    QRLP: TQRLabel;
+    QRDBTP: TQRDBText;
+    QRLK: TQRLabel;
+    QRDBTK: TQRDBText;
+    QRLCl: TQRLabel;
+    QRDBTCl: TQRDBText;
+    QRLTOligo: TQRLabel;
+    QRLCu: TQRLabel;
+    QRDBTCu: TQRDBText;
+    QRLOligo: TQRLabel;
+    QRLMn: TQRLabel;
+    QRDBTMn: TQRDBText;
+    QRLSe: TQRLabel;
+    QRDBTSe: TQRDBText;
+    QRLMb: TQRLabel;
+    QRDBTMb: TQRDBText;
+    QRLZn: TQRLabel;
+    QRDBTZn: TQRDBText;
+    QRLFe: TQRLabel;
+    QRDBTFe: TQRDBText;
+    QRLCo: TQRLabel;
+    QRDBTCo: TQRDBText;
+    QRLI: TQRLabel;
+    QRDBTI: TQRDBText;
+    QRLPhosphore: TQRLabel;
+    QRLPTot: TQRLabel;
+    QRDBTPTot: TQRDBText;
+    QRLPDigG: TQRLabel;
+    QRDBTPDigG: TQRDBText;
+    QRLPhytase: TQRLabel;
+    QRDBTPhytase: TQRDBText;
+    QRLActPhytE: TQRLabel;
+    QRDBTActPhytE: TQRDBText;
+    QRLPDig: TQRLabel;
+    QRLPDigF: TQRLabel;
+    QRDBTPDigF: TQRDBText;
+    QRLActPhyt: TQRLabel;
+    QRLActPhytM: TQRLabel;
+    QRDBTActPhytM: TQRDBText;
+    SFP: TStringField;
+    SFNa: TStringField;
+    SFK: TStringField;
+    SFMg: TStringField;
+    SFCl: TStringField;
+    SFS: TStringField;
+    SFCa: TStringField;
+    SFZn: TStringField;
+    SFPDigF: TStringField;
+    SFMn: TStringField;
+    SFFe: TStringField;
+    SFSe: TStringField;
+    SFCo: TStringField;
+    SFMb: TStringField;
+    SFI: TStringField;
+    SFCu: TStringField;
+    SFPhytase: TStringField;
+    SFPDigG: TStringField;
+    SFActPhytM: TStringField;
+    SFPTot: TStringField;
+    SFActPhytE: TStringField;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapAliMin: TFRapAliMin;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFAliment, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapAliMin }
+
+procedure TFRapAliMin.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Aliment_'] := FAliment.CBAliment.Text;
+    FieldValues['_Ca_'] := FAliment.PBCa.Text;
+    FieldValues['_P_'] := FAliment.PBP.Text;
+    FieldValues['_Na_'] := FAliment.PBNa.Text;
+    FieldValues['_K_'] := FAliment.PBK.Text;
+    FieldValues['_Mg_'] := FAliment.PBMg.Text;
+    FieldValues['_Cl_'] := FAliment.PBCl.Text;
+    FieldValues['_S_'] := FAliment.PBS.Text;
+    FieldValues['_Cu_'] := FAliment.PBCu.Text;
+    FieldValues['_Zn_'] := FAliment.PBZn.Text;
+    FieldValues['_Mn_'] := FAliment.PBMn.Text;
+    FieldValues['_Fe_'] := FAliment.PBFe.Text;
+    FieldValues['_Se_'] := FAliment.PBSe.Text;
+    FieldValues['_Co_'] := FAliment.PBCo.Text;
+    FieldValues['_Mb_'] := FAliment.PBMb.Text;
+    FieldValues['_I_'] := FAliment.PBI.Text;
+    FieldValues['_PTot_'] := FAliment.PBPtot.Text;
+    FieldValues['_PDigG_'] := FAliment.PBPdigG.Text;
+    FieldValues['_PDigF_'] := FAliment.PBPdigF.Text;
+    FieldValues['_Phytase_'] := FAliment.PBPhytase.Text;
+    FieldValues['_ActPhytE_'] := FAliment.PBActPhytE.Text;
+    FieldValues['_ActPhytM_'] := FAliment.PBActPhytM.Text;
+    Post;
+  end ;
+  QRMMemo.Lines.Add(FAliment.CBAliment.Hint);
+  QRLCompo.Caption:= FAliment.Hint;
+  QRLTMacro.Caption:= FAliment.GBTMacro.Caption;
+  QRLTOligo.Caption:= FAliment.GBTOligo.Caption;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFIntro.dfm
===================================================================
--- UFIntro.dfm	(révision 0)
+++ UFIntro.dfm	(révision 3)
@@ -0,0 +1,84 @@
+object FIntro: TFIntro
+  Left = 160
+  Top = 160
+  Caption = 'Conditions of use'
+  ClientHeight = 566
+  ClientWidth = 592
+  Color = clBtnFace
+  Constraints.MinHeight = 200
+  Constraints.MinWidth = 400
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PBoutons: TPanel
+    Left = 0
+    Top = 526
+    Width = 592
+    Height = 40
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 0
+    DesignSize = (
+      592
+      40)
+    object BBOk: TBitBtn
+      Left = 416
+      Top = 8
+      Width = 80
+      Height = 25
+      Anchors = [akTop, akRight]
+      Caption = 'Accept'
+      ModalResult = 1
+      NumGlyphs = 2
+      TabOrder = 1
+    end
+    object BBCancel: TBitBtn
+      Left = 504
+      Top = 8
+      Width = 80
+      Height = 25
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Refuse'
+      ModalResult = 2
+      NumGlyphs = 2
+      TabOrder = 0
+    end
+    object BBClose: TBitBtn
+      Left = 504
+      Top = 8
+      Width = 80
+      Height = 25
+      Anchors = [akTop, akRight]
+      Caption = 'Close'
+      ModalResult = 2
+      NumGlyphs = 2
+      TabOrder = 2
+      Visible = False
+    end
+  end
+  object REText: TRichEdit
+    Left = 0
+    Top = 0
+    Width = 592
+    Height = 526
+    Align = alClient
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    ReadOnly = True
+    ScrollBars = ssBoth
+    TabOrder = 1
+  end
+end
Index: UFPrevRap.pas
===================================================================
--- UFPrevRap.pas	(révision 0)
+++ UFPrevRap.pas	(révision 3)
@@ -0,0 +1,151 @@
+unit UFPrevRap;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Messages, Dialogs, StdCtrls, Buttons,
+  ExtCtrls, QuickRpt, QRPrntr;
+
+type
+  TQRPrevRapInterface = class(TQRPreviewInterface)
+  public
+    function Show(AQRPrinter: TQRPrinter): TWinControl; override;
+    function ShowModal(AQRPrinter: TQRPrinter): TWinControl; override;
+  end;
+  TFPrevRap = class(TForm)
+    QRPRapport: TQRPreview;
+    LBas: TPanel;
+    BBPrint: TBitBtn;
+    LPrinter: TLabel;
+    CBPrinter: TComboBox;
+    LPage: TLabel;
+    SBPrev: TSpeedButton;
+    SBNext: TSpeedButton;
+    PPage: TPanel;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure BBPrintClick(Sender: TObject);
+    procedure CBPrinterChange(Sender: TObject);
+    procedure SBPrevClick(Sender: TObject);
+    procedure SBNextClick(Sender: TObject);
+    procedure QRPRapportPageAvailable(Sender: TObject; PageNum: Integer);
+    procedure FormCreate(Sender: TObject);
+    procedure WMSysCommand(var Mess: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+    constructor CreatePreview(AOwner: TComponent; AQRPrinter: TQRPrinter); virtual;
+  end;
+
+var
+  FPrevRap: TFPrevRap;
+
+implementation
+
+uses
+  Printers, SysUtils, gnugettext, UStrings, UUtil;
+
+{$R *.dfm}
+
+{TQRPrevRapInterface}
+
+function TQRPrevRapInterface.Show(AQRPrinter: TQRPrinter): TWinControl;
+begin
+  Result := TFPrevRap.CreatePreview(Self, AQRPrinter);
+  TFPrevRap(Result).Show;
+end;
+
+function TQRPrevRapInterface.ShowModal(AQRPrinter: TQRPrinter): TWinControl;
+begin
+  Result := TFPrevRap.CreatePreview(Self, AQRPrinter);
+  TFPrevRap(Result).ShowModal;
+end;
+
+{TFPrevRap}
+
+constructor TFPrevRap.CreatePreview(AOwner: TComponent; AQRPrinter: TQRPrinter);
+begin
+  inherited Create(AOwner);
+  QRPRapport.QRPrinter := AQRPrinter;
+end;
+
+procedure TFPrevRap.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+end;
+
+procedure TFPrevRap.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  QRPRapport.QRPrinter.ClosePreview(Self);
+  Application.ProcessMessages;
+  Action := caFree;
+end;
+
+
+procedure TFPrevRap.FormShow(Sender: TObject);
+begin
+  BBPrint.Enabled := IsComplete or IsEducation ;
+  CBPrinter.Items.Assign(Printer.Printers);
+  CBPrinter.ItemIndex := Printer.PrinterIndex;
+end;
+
+procedure TFPrevRap.QRPRapportPageAvailable(Sender: TObject;
+  PageNum: Integer);
+begin
+  with QRPRapport do
+    LPage.Caption := Format(StrPage, [PageNumber, PageNum]);
+end;
+
+procedure TFPrevRap.BBPrintClick(Sender: TObject);
+var
+  oldQRPrinter: TQRPrinter;
+begin
+  oldQRPrinter := QRPRapport.QRPrinter;
+  TQuickRep(QRPRapport.QRPrinter.ParentReport).Print;
+  QRPRapport.QRPrinter := oldQRPrinter;
+end;
+
+procedure TFPrevRap.CBPrinterChange(Sender: TObject);
+begin
+  Printer.PrinterIndex := CBPrinter.ItemIndex;
+  TCustomQuickRep(QRPRapport.QRPrinter.ParentReport).PrinterSettings.PrinterIndex := Printer.PrinterIndex;
+end;
+
+procedure TFPrevRap.SBPrevClick(Sender: TObject);
+begin
+  with QRPRapport do
+    if PageNumber > 1
+    then
+      PageNumber := PageNumber - 1
+    else
+      Beep;
+  with QRPRapport do
+    LPage.Caption := Format('Page %d / %d', [PageNumber, QRPrinter.PageCount]);
+end;
+
+procedure TFPrevRap.SBNextClick(Sender: TObject);
+begin
+  with QRPRapport do
+    if PageNumber < QRPrinter.PageCount
+    then
+      PageNumber := PageNumber + 1
+    else
+      Beep;
+  with QRPRapport do
+    LPage.Caption := Format('Page %d / %d', [PageNumber, QRPrinter.PageCount]);
+end;
+
+procedure TFPrevRap.WMSysCommand(var Mess: TWMSysCommand);
+begin
+  if Mess.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFResSimulP.pas
===================================================================
--- UFResSimulP.pas	(révision 0)
+++ UFResSimulP.pas	(révision 3)
@@ -0,0 +1,5827 @@
+unit UFResSimulP;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Contnrs, CheckLst, Menus, 
+  Printers, Math, PBNumEdit, Grids, TeEngine, Series, TeeProcs, Chart, 
+  UVariables, gnugettext;
+
+type
+  TFResSimulP = class(TForm)
+    PC: TPageControl;
+    TabAli: TTabSheet;
+    CBAli1: TComboBox;
+    TabNRJ: TTabSheet;
+    TabPD: TTabSheet;
+    CBPD2: TComboBox;
+    LBPD: TListBox;
+    TabPerf: TTabSheet;
+    TabAA: TTabSheet;
+    CBAA1: TComboBox;
+    CBAA3: TComboBox;
+    CBAA4: TComboBox;
+    CBPerf1: TComboBox;
+    CBPerf2D: TComboBox;
+    CBPerf3D: TComboBox;
+    CBPerf4: TComboBox;
+    CBAA2D: TComboBox;
+    CBAli2D: TComboBox;
+    CBAli4: TComboBox;
+    CBNRJ1: TComboBox;
+    CBNRJ2D: TComboBox;
+    CBNRJ3: TComboBox;
+    CBNRJ4: TComboBox;
+    TabRej: TTabSheet;
+    CBRej1: TComboBox;
+    CBRej2D: TComboBox;
+    CBRej3: TComboBox;
+    CBRej4: TComboBox;
+    CBAA5: TComboBox;
+    GBPerfT: TGroupBox;
+    GBPerfY: TGroupBox;
+    GBPerfX: TGroupBox;
+    GBPDF: TGroupBox;
+    GBAliT: TGroupBox;
+    GBAliY: TGroupBox;
+    GBAliX: TGroupBox;
+    GBPDT: TGroupBox;
+    GBPDY: TGroupBox;
+    GBPDX: TGroupBox;
+    GBAAT: TGroupBox;
+    GBAAY: TGroupBox;
+    GBAAX: TGroupBox;
+    GBNRJT: TGroupBox;
+    GBNRJY: TGroupBox;
+    GBNRJX: TGroupBox;
+    GBRejT: TGroupBox;
+    GBRejY: TGroupBox;
+    GBRejX: TGroupBox;
+    CBPerfAL: TCheckBox;
+    Graph: TChart;
+    LBNRJ: TListBox;
+    LBRej: TListBox;
+    LBAA: TListBox;
+    CBAli2P: TComboBox;
+    CBAA2P: TComboBox;
+    CBNRJ2P: TComboBox;
+    CBRej2P: TComboBox;
+    CBPerf2P: TComboBox;
+    CBPerf3P: TComboBox;
+    CBNRJ3R: TComboBox;
+    CBNRJ3V: TComboBox;
+    CBAli3: TComboBox;
+    TabMin: TTabSheet;
+    LBMin: TListBox;
+    GBMinX: TGroupBox;
+    CBMin2D: TComboBox;
+    CBMin2P: TComboBox;
+    GBMinY: TGroupBox;
+    CBMin3: TComboBox;
+    CBMin4: TComboBox;
+    GBMinT: TGroupBox;
+    CBMin1: TComboBox;
+    PM: TPopupMenu;
+    MI3D: TMenuItem;
+    MIPreview: TMenuItem;
+    MIPrint: TMenuItem;
+    PD: TPrintDialog;
+    CBMin5: TComboBox;
+    MIExport: TMenuItem;
+    MExport: TMemo;
+    SD: TSaveDialog;
+    CBAli5: TComboBox;
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure MI3DClick(Sender: TObject);
+    procedure MIPreviewClick(Sender: TObject);
+    procedure MIPrintClick(Sender: TObject);
+    procedure PCChange(Sender: TObject);
+    procedure CBPerf1Change(Sender: TObject);
+    procedure CBPerf2Change(Sender: TObject);
+    procedure CBPerf3Change(Sender: TObject);
+    procedure CBPerf4Change(Sender: TObject);
+    procedure CBPerfALClick(Sender: TObject);
+    procedure CBAli1Change(Sender: TObject);
+    procedure CBAli2Change(Sender: TObject);
+    procedure CBAli3Change(Sender: TObject);
+    procedure CBAli4Change(Sender: TObject);
+    procedure CBPD2Change(Sender: TObject);
+    procedure LBPDClick(Sender: TObject);
+    procedure LBPDDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure CBAA1Change(Sender: TObject);
+    procedure CBAA2Change(Sender: TObject);
+    procedure CBAA3Change(Sender: TObject);
+    procedure CBAA4Change(Sender: TObject);
+    procedure CBAA5Change(Sender: TObject);
+    procedure CBNRJ1Change(Sender: TObject);
+    procedure CBNRJ2Change(Sender: TObject);
+    procedure CBNRJ3Change(Sender: TObject);
+    procedure CBNRJ4Change(Sender: TObject);
+    procedure CBMin2Change(Sender: TObject);
+    procedure CBMin1Change(Sender: TObject);
+    procedure CBMin3Change(Sender: TObject);
+    procedure CBMin4Change(Sender: TObject);
+    procedure CBRej1Change(Sender: TObject);
+    procedure CBRej2Change(Sender: TObject);
+    procedure CBRej4Change(Sender: TObject);
+    procedure CBRej3Change(Sender: TObject);
+    procedure CBMin5Change(Sender: TObject);
+    procedure MIExportClick(Sender: TObject);
+    procedure CBAli5Change(Sender: TObject);
+    procedure WMSysCommand(var Mess: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+    LinePerf: TLineSeries;
+    LinePerfAL: TLineSeries;
+    BarPerf: TBarSeries;
+    ListAli, ListMat: TStrings;
+    CompositionComplete: boolean;
+    PieAli: TPieSeries;
+    AreaAli: array of TAreaSeries;
+    BarAli: array of TBarSeries;
+    NbLimit: integer;
+    ListPD: TStrings;
+    LinePD: array of TLineSeries;
+    ListAA: TStrings;
+    PieAA: TPieSeries;
+    AreaAA: array of TAreaSeries;
+    BarAA: array of TBarSeries;
+    LineAA: array[1..3] of TLineSeries;
+    ListNRJ: TStrings;
+    PieNRJ: TPieSeries;
+    AreaNRJ: array of TAreaSeries;
+    BarNRJ: array of TBarSeries;
+    LineNRJ: array[1..2] of TLineSeries;
+    ListMin: TStrings;
+    PieMin: TPieSeries;
+    AreaMin: array of TAreaSeries;
+    BarMin: array of TBarSeries;
+    LineMin: array[1..2] of TLineSeries;
+    ListRej: TStrings;
+    PieRej: TPieSeries;
+    AreaRej: array of TAreaSeries;
+    BarRej: array of TBarSeries;
+    procedure ResetGraph;
+    procedure InitAli;
+    procedure AffGraphAli;
+    procedure InitNRJ;
+    procedure AffGraphNRJ;
+    procedure InitPD;
+    procedure AffGraphPD;
+    procedure InitPerf;
+    procedure AffGraphPerf;
+    procedure InitAA;
+    procedure AffGraphAA;
+    procedure InitMin;
+    procedure AffGraphMin;
+    procedure InitRej;
+    procedure AffGraphRej;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FResSimulP: TFResSimulP;
+
+implementation
+
+uses
+  UStrings, UFindRec, UUtil, UEchelle, UCalcul, UFSimulP, UFPrevGraph,
+  UFWarning;
+
+{$R *.dfm}
+
+{ TFResSimulP }
+
+procedure TFResSimulP.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 544 + (Width - ClientWidth);
+  Width := 640;
+  Constraints.MinHeight := 360 + (Height - ClientHeight);
+  Height := 480;
+  CBPerf1.ItemIndex := 0;
+  CBPerf2D.ItemIndex := 0;
+  CBPerf2P.ItemIndex := 0;
+  CBPerf3D.ItemIndex := 0;
+  CBPerf3P.ItemIndex := 0;
+  CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Weight gain'), _('g'), _('d')]));
+  CBPerf4.Items.Add(Format('%s (%s)', [_('Body weight'), _('kg')]));
+  CBPerf4.ItemIndex := 0;
+  CBAli1.ItemIndex := 0;
+  CBAli2D.ItemIndex := 0;
+  CBAli2P.ItemIndex := 0;
+  CBAli3.ItemIndex := 0;
+  CBAli4.Items.Add(StrKg);
+  CBAli4.Items.Add('%');
+  CBAli4.ItemIndex := 0;
+  CBAli5.ItemIndex := 0;
+  CBPD2.ItemIndex := 0;
+  CBAA1.ItemIndex := 0;
+  CBAA2D.ItemIndex := 0;
+  CBAA2P.ItemIndex := 0;
+  CBAA3.ItemIndex := 1;
+  CBAA4.Items.Add(StrG);
+  CBAA4.Items.Add('%');
+  CBAA4.ItemIndex := 0;
+  CBAA5.ItemIndex := 0;
+  CBNRJ1.ItemIndex := 0;
+  CBNRJ2D.ItemIndex := 0;
+  CBNRJ2P.ItemIndex := 0;
+  CBNRJ3.ItemIndex := 0;
+  CBNRJ3R.ItemIndex := 0;
+  CBNRJ3V.ItemIndex := 0;
+  CBNRJ4.Items.Add(StrMJ);
+  CBNRJ4.Items.Add('%');
+  CBNRJ4.ItemIndex := 0;
+  CBMin1.ItemIndex := 0;
+  CBMin2D.ItemIndex := 0;
+  CBMin2P.ItemIndex := 0;
+  CBMin3.ItemIndex := 0;
+  CBMin4.Items.Add(StrG);
+  CBMin4.Items.Add('%');
+  CBMin4.ItemIndex := 0;
+  CBMin5.ItemIndex := 0;
+  CBRej1.ItemIndex := 0;
+  CBRej2D.ItemIndex := 0;
+  CBRej2P.ItemIndex := 0;
+  CBRej3.ItemIndex := 0;
+  CBRej4.Items.Add(StrG);
+  CBRej4.Items.Add('%');
+  CBRej4.ItemIndex := 0;
+end;
+
+procedure TFResSimulP.FormShow(Sender: TObject);
+begin
+  MIPrint.Enabled := IsComplete or IsEducation;
+  MIExport.Enabled := MIPrint.Enabled;
+  // Bas de page du graphique
+  Graph.Foot.Text.Clear;
+  Graph.Foot.Text.Add(Format(StrSimul, [FSimulP.CBSimul.Text, FSimulP.CBProfil.Text, FSimulP.CBSeqAli.Text, FSimulP.CBRation.Text]));
+  // Aliments
+  InitAli;
+  // Performances
+  InitPerf;
+  // D�p�t de prot�ines
+  InitPD;
+  // Acides Amin�s
+  InitAA;
+  // Energie
+  InitNRJ;
+  // Min�raux
+  InitMin;
+  // Rejets
+  InitRej;
+  // Abscisses par d�faut
+  CBPerf2D.ItemIndex := XCrois;
+  CBAli2D.ItemIndex := XCrois;
+  CBPD2.ItemIndex := XCrois;
+  CBAA2D.ItemIndex := XCrois;
+  CBNRJ2D.ItemIndex := XCrois;
+  CBMin2D.ItemIndex := XCrois;
+  CBRej2D.ItemIndex := XCrois;
+  // Affichage principal
+  PC.ActivePageIndex := 0;
+  PCChange(nil);
+end;
+
+procedure TFResSimulP.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  i: integer;
+begin
+  // Performances
+  BarPerf.Free;
+  LinePerfAL.Free;
+  LinePerf.Free;
+  // Aliments
+  for i := 0 to ListAli.Count - 1 do
+    BarAli[i].Free;
+  SetLength(BarAli, 0);
+  for i := 0 to ListAli.Count - 1 do
+    AreaAli[i].Free;
+  SetLength(AreaAli, 0);
+  PieAli.Free;
+  ListMat.Free;
+  ListAli.Free;
+  // D�p�t de prot�ines
+  for i := 0 to ListPD.Count do
+    LinePD[i].Free;
+  SetLength(LinePD, 0);
+  ListPD.Free;
+  // Acides Amin�s
+  for i := 1 to 3 do
+    LineAA[i].Free;
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Free;
+  SetLength(BarAA, 0);
+  for i := 0 to ListAA.Count - 1 do
+    AreaAA[i].Free;
+  SetLength(AreaAA, 0);
+  PieAA.Free;
+  ListAA.Free;
+  // Energie
+  for i := 1 to 2 do
+    LineNRJ[i].Free;
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Free;
+  SetLength(BarNRJ, 0);
+  for i := 0 to ListNRJ.Count - 1 do
+    AreaNRJ[i].Free;
+  SetLength(AreaNRJ, 0);
+  PieNRJ.Free;
+  ListNRJ.Free;
+  // Min�raux
+  for i := 1 to 2 do
+    LineMin[i].Free;
+  for i := 0 to ListMin.Count - 1 do
+    BarMin[i].Free;
+  SetLength(BarMin, 0);
+  for i := 0 to ListMin.Count - 1 do
+    AreaMin[i].Free;
+  SetLength(AreaMin, 0);
+  PieMin.Free;
+  ListMin.Free;
+  // Rejets
+  for i := 0 to ListRej.Count - 1 do
+    BarRej[i].Free;
+  SetLength(BarRej, 0);
+  for i := 0 to ListRej.Count - 1 do
+    AreaRej[i].Free;
+  SetLength(AreaRej, 0);
+  PieRej.Free;
+  ListRej.Free;
+end;
+
+procedure TFResSimulP.PCChange(Sender: TObject);
+begin
+  GBPDF.Visible := (PC.ActivePageIndex = 2);
+  case PC.ActivePageIndex of
+    0: // Performances
+      AffGraphPerf;
+    1: // Aliments
+      AffGraphAli;
+    2: // D�p�t de prot�ines
+      AffGraphPD;
+    3: // Acides Amin�s
+      AffGraphAA;
+    4: // Energie
+      AffGraphNRJ;
+    5: // Min�raux
+      AffGraphMin;
+    6: // Rejets
+      AffGraphRej;
+  end;
+end;
+
+procedure TFResSimulP.ResetGraph;
+var
+  i: integer;
+begin
+  Graph.UndoZoom;
+//  Graph.View3D := FALSE;
+  Graph.Legend.Visible := TRUE;
+  Graph.Legend.Alignment := laRight;
+  Graph.Title.Text.Clear;
+  Graph.SubTitle.Text.Clear;
+  Graph.BottomAxis.MinimumOffset := 0;
+  Graph.BottomAxis.MaximumOffset := 0;
+  // Performances
+  LinePerf.Active := FALSE;
+  LinePerfAL.Active := FALSE;
+  BarPerf.Active := FALSE;
+  // Aliments
+  PieAli.Active := FALSE;
+  for i := 0 to ListAli.Count - 1 do
+    AreaAli[i].Active := FALSE;
+  for i := 0 to ListAli.Count - 1 do
+    BarAli[i].Active := FALSE;
+  // D�p�t de prot�ines
+  for i := 0 to ListPD.Count do
+    LinePD[i].Active := FALSE;
+  // Acides Amin�s
+  PieAA.Active := FALSE;
+  for i := 0 to ListAA.Count - 1 do
+    AreaAA[i].Active := FALSE;
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Active := FALSE;
+  for i := 1 to 3 do
+    LineAA[i].Active := FALSE;
+  // Energie
+  PieNRJ.Active := FALSE;
+  for i := 0 to ListNRJ.Count - 1 do
+    AreaNRJ[i].Active := FALSE;
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Active := FALSE;
+  for i := 1 to 2 do
+    LineNRJ[i].Active := FALSE;
+  // Min�raux
+  PieMin.Active := FALSE;
+  for i := 0 to ListMin.Count - 1 do
+    AreaMin[i].Active := FALSE;
+  for i := 0 to ListMin.Count - 1 do
+    BarMin[i].Active := FALSE;
+  for i := 1 to 2 do
+    LineMin[i].Active := FALSE;
+  // Rejets
+  PieRej.Active := FALSE;
+  for i := 0 to ListRej.Count - 1 do
+    AreaRej[i].Active := FALSE;
+  for i := 0 to ListRej.Count - 1 do
+    BarRej[i].Active := FALSE;
+  // Export
+  MExport.Clear;
+end;
+
+procedure TFResSimulP.MI3DClick(Sender: TObject);
+begin
+  Graph.View3D := not (Graph.View3D);
+end;
+
+procedure TFResSimulP.MIPreviewClick(Sender: TObject);
+begin
+  FPrevGraph := TFPrevGraph.Create(Self);
+  with FPrevGraph do
+  begin
+    TPPGraph.Panels.Add(Graph);
+    ShowModal;
+    Release;
+  end;
+end;
+
+procedure TFResSimulP.MIPrintClick(Sender: TObject);
+begin
+  if PD.Execute
+  then
+  begin
+    Printer.Orientation := poLandscape;
+    Graph.Print;
+  end;
+end;
+
+procedure TFResSimulP.MIExportClick(Sender: TObject);
+begin
+  SD.InitialDir := GetCurrentDir;
+  if SD.Execute
+  then
+    MExport.Lines.SaveToFile(SD.FileName);
+end;
+
+//////////////////////
+//   Performances   //
+//////////////////////
+procedure TFResSimulP.InitPerf;
+begin
+  // LinePerf : s�rie (ligne) graphique
+  LinePerf := TLineSeries.Create(Graph);
+  LinePerf.ParentChart := Graph;
+//  LinePerf.Title := ' ';
+  LinePerf.SeriesColor := clTeal;
+  LinePerf.LinePen.Color := LinePerf.SeriesColor;
+  LinePerf.LinePen.Width := 2;
+  Graph.AddSeries(LinePerf);
+  // LinePerfAL : s�rie (ligne) graphique
+  LinePerfAL := TLineSeries.Create(Graph);
+  LinePerfAL.ParentChart := Graph;
+//  LinePerfAL.Title := ' ';
+  LinePerfAL.SeriesColor := clRed;
+  Graph.AddSeries(LinePerfAL);
+  // BarPerf : s�rie (barre) graphique
+  BarPerf := TBarSeries.Create(Graph);
+  BarPerf.ParentChart := Graph;
+//  BarPerf.Title := ' ';
+  BarPerf.SeriesColor := clTeal;
+  BarPerf.BarPen.Color := BarPerf.SeriesColor;
+  //BarPerf.Marks.Visible := FALSE;
+  BarPerf.Marks.ArrowLength := -16;
+  BarPerf.Marks.Arrow.Visible := FALSE;
+  BarPerf.Marks.Brush.Style := bsClear;
+  BarPerf.Marks.Frame.Visible := FALSE;
+  BarPerf.Marks.Style := smsValue;
+  //BarPerf.AutoMarkPosition := FALSE;
+  Graph.AddSeries(BarPerf);
+end;
+
+procedure TFResSimulP.AffGraphPerf;
+var
+  j, k: integer;
+  x, p, cumul: double;
+  s, csv: string;
+
+  // Abscisse
+  function PerfX: double;
+  begin
+    case CBPerf1.ItemIndex of
+      0: // Affichage dynamique
+        case CBPerf2D.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      1: // Affichage par p�riode
+        case CBPerf2P.ItemIndex of
+          0: // Semaine
+            result := (j - 1) div 7 + 1;
+          1: // R�gle qualit�
+            result := PResSimulP.TabResult[3, j];
+          2: // R�gle quantit�
+            result := PResSimulP.TabResult[5, j];
+          else
+            result := 0;
+          end;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e
+  function PerfY: double;
+  var
+    h: integer;
+    v, conso, ingere, gain: double;
+  begin
+    case CBPerf1.ItemIndex of
+      0: // Affichage dynamique
+        case CBPerf3D.ItemIndex of
+          0: // Body weight
+            case CBPerf4.ItemIndex of
+              0: // Weight gain (g/d)
+                result := PResSimulP.TabResult[84, j] * 1000;
+              1: // Body weight (kg)
+                result := PResSimulP.TabResult[2, j];
+              else
+                result := 0;
+            end;
+          1: // Time
+            case CBPerf4.ItemIndex of
+              0: // Age (d)
+                result := PResSimulP.TabResult[1, j];
+              else
+                result := 0;
+            end;
+          2: // Feed usage
+            case CBPerf4.ItemIndex of
+              0: // Feed usage (kg/d)
+                result := PResSimulP.TabResult[113, j];
+              1: // Feed usage (kg DM/d)
+                result := PResSimulP.TabResult[106, j] * PResSimulP.TabResult[113, j];
+              2: // Feed usage (MJ DE/d)
+                result := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[113, j];
+              3: // Feed usage (MJ ME/d)
+                result := PResSimulP.TabResult[89, j] * PResSimulP.TabResult[113, j];
+              4: // Feed usage (MJ NE/d)
+                result := PResSimulP.TabResult[90, j] * PResSimulP.TabResult[113, j];
+              5: // Total feed usage (kg)
+              begin
+                cumul := cumul + PResSimulP.TabResult[113, j];
+                result := cumul;
+              end;
+              6: // Total feed usage (kg DM)
+              begin
+                cumul := cumul + PResSimulP.TabResult[106, j] * PResSimulP.TabResult[113, j];
+                result := cumul;
+              end;
+              7: // Total feed usage (MJ DE)
+              begin
+                cumul := cumul + PResSimulP.TabResult[109, j] * PResSimulP.TabResult[113, j];
+                result := cumul;
+              end;
+              8: // Total feed usage (MJ ME)
+              begin
+                cumul := cumul + PResSimulP.TabResult[89, j] * PResSimulP.TabResult[113, j];
+                result := cumul;
+              end;
+              9: // Total feed usage (MJ NE)
+              begin
+                cumul := cumul + PResSimulP.TabResult[90, j] * PResSimulP.TabResult[113, j];
+                result := cumul;
+              end;
+              else
+                result := 0;
+            end;
+          3: // Feed wastage
+            case CBPerf4.ItemIndex of
+              0: // Feed wastage (%)
+                result := PResSimulP.TabResult[112, j] * 100;
+              1: // Total feed wastage (kg)
+              begin
+                cumul := cumul + PResSimulP.TabResult[113, j] - PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              else
+                result := 0;
+            end;
+          4: // Feed intake
+            case CBPerf4.ItemIndex of
+              0: // Feed intake (kg/d)
+                result := PResSimulP.TabResult[11, j];
+              1: // Feed intake (kg DM/d)
+                result := PResSimulP.TabResult[106, j] * PResSimulP.TabResult[11, j];
+              2: // Feed intake (MJ DE/d)
+                result := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[11, j];
+              3: // Feed intake (MJ ME/d)
+                result := PResSimulP.TabResult[89, j] * PResSimulP.TabResult[11, j];
+              4: // Feed intake (MJ NE/d)
+                result := PResSimulP.TabResult[90, j] * PResSimulP.TabResult[11, j];
+              5: // Total feed intake (kg)
+              begin
+                cumul := cumul + PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              6: // Total feed intake (kg DM)
+              begin
+                cumul := cumul + PResSimulP.TabResult[106, j] * PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              7: // Total feed intake (MJ DE)
+              begin
+                cumul := cumul + PResSimulP.TabResult[109, j] * PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              8: // Total feed intake (MJ ME)
+              begin
+                cumul := cumul + PResSimulP.TabResult[89, j] * PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              9: // Total feed intake (MJ NE)
+              begin
+                cumul := cumul + PResSimulP.TabResult[90, j] * PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              else
+                result := 0;
+            end;
+          5: // Feed:Gain
+            if PResSimulP.TabResult[84, j] <> 0
+            then
+              case CBPerf4.ItemIndex of
+                0: // Feed:Gain (kg/kg)
+                  result := PResSimulP.TabResult[113, j] / PResSimulP.TabResult[84, j];
+                1: // Feed:Gain (kg DM/kg)
+                  result := (PResSimulP.TabResult[106, j] * PResSimulP.TabResult[113, j]) / PResSimulP.TabResult[84, j];
+                2: // Feed:Gain (MJ DE/kg)
+                  result := (PResSimulP.TabResult[109, j] * PResSimulP.TabResult[113, j]) / PResSimulP.TabResult[84, j];
+                3: // Feed:Gain (MJ ME/kg)
+                  result := (PResSimulP.TabResult[89, j] * PResSimulP.TabResult[113, j]) / PResSimulP.TabResult[84, j];
+                4: // Feed:Gain (MJ NE/kg)
+                  result := (PResSimulP.TabResult[90, j] * PResSimulP.TabResult[113, j]) / PResSimulP.TabResult[84, j];
+                else
+                  result := 0;
+              end
+            else
+              result := 0;
+          6: // Gain:Feed
+            case CBPerf4.ItemIndex of
+              0: // Gain:Feed (kg/kg)
+                if PResSimulP.TabResult[113, j] <> 0
+                then
+                  result := PResSimulP.TabResult[84, j] / PResSimulP.TabResult[113, j]
+                else
+                  result := 0;
+              1: // Gain:Feed (kg/kg DM)
+                if (PResSimulP.TabResult[113, j] <> 0) and (PResSimulP.TabResult[106, j] <> 0)
+                then
+                  result := PResSimulP.TabResult[84, j] / (PResSimulP.TabResult[106, j] * PResSimulP.TabResult[113, j])
+                else
+                  result := 0;
+              2: // Gain:Feed (kg/MJ DE)
+                if (PResSimulP.TabResult[113, j] <> 0) and (PResSimulP.TabResult[109, j] <> 0)
+                then
+                  result := PResSimulP.TabResult[84, j] / (PResSimulP.TabResult[109, j] * PResSimulP.TabResult[113, j])
+                else
+                  result := 0;
+              3: // Gain:Feed (kg/MJ ME)
+                if (PResSimulP.TabResult[113, j] <> 0) and (PResSimulP.TabResult[89, j] <> 0)
+                then
+                  result := PResSimulP.TabResult[84, j] / (PResSimulP.TabResult[89, j] * PResSimulP.TabResult[113, j])
+                else
+                  result := 0;
+              4: // Gain:Feed (kg/MJ NE)
+                if (PResSimulP.TabResult[113, j] <> 0) and (PResSimulP.TabResult[90, j] <> 0)
+                then
+                  result := PResSimulP.TabResult[84, j] / (PResSimulP.TabResult[90, j] * PResSimulP.TabResult[113, j])
+                else
+                  result := 0;
+              else
+                result := 0;
+            end;
+          7: // Protein
+            case CBPerf4.ItemIndex of
+              0: // Protein deposition (g/d)
+                result := PResSimulP.TabResult[79, j];
+              1: // Protein mass (kg)
+                result := PResSimulP.TabResult[49, j];
+              2: // Protein content (% of BW gain)
+                if PResSimulP.TabResult[84, j] <> 0
+                then
+                  result := (PResSimulP.TabResult[79, j] / 1000) / PResSimulP.TabResult[84, j] * 100
+                else
+                  result := 0;
+              3: // Protein content (% in BW)
+                if PResSimulP.TabResult[2, j] <> 0
+                then
+                  result := PResSimulP.TabResult[49, j] / PResSimulP.TabResult[2, j] * 100
+                else
+                  result := 0;
+              else
+                result := 0;
+            end;
+          8: // Lipid
+            case CBPerf4.ItemIndex of
+              0: // Lipid deposition (g/d)
+                result := PResSimulP.TabResult[80, j];
+              1: // Lipid mass (kg)
+                result := PResSimulP.TabResult[50, j];
+              2: // Lipid content (% of BW gain)
+                if PResSimulP.TabResult[84, j] <> 0
+                then
+                  result := (PResSimulP.TabResult[80, j] / 1000) / PResSimulP.TabResult[84, j] * 100
+                else
+                  result := 0;
+              3: // Lipid content (% in BW)
+                if PResSimulP.TabResult[2, j] <> 0
+                then
+                  result := PResSimulP.TabResult[50, j] / PResSimulP.TabResult[2, j] * 100
+                else
+                  result := 0;
+              else
+                result := 0;
+            end;
+          9: // Carcass
+            case CBPerf4.ItemIndex of
+              0: // Dressing percentage
+                result := CalcRC(PResSimulP.TabResult[2, PResSimulP.NbJSim], CalcRCStd(PProfilP.PVFin, PProfilP.Carcasse), PResSimulP.TabResult[2, j]) * 100;
+              1: // Backfat thickness
+                if FatInfo = 0
+                then // P2
+                  result := CalcP2(PResSimulP.TabResult[50, j])
+                else // User defined
+                  result := CalcUserFat(PResSimulP.TabResult[48, j], PResSimulP.TabResult[49, j], PResSimulP.TabResult[50, j]);
+              2: // Lean meat percentage
+                if LeanInfo = 0
+                then // TMP
+                  result := CalcTMP(PResSimulP.TabResult[48, j], PResSimulP.TabResult[49, j], PResSimulP.TabResult[50, j])
+                else // User defined
+                  result := CalcUserLean(PResSimulP.TabResult[48, j], PResSimulP.TabResult[49, j], PResSimulP.TabResult[50, j]);
+              else
+                result := 0;
+            end;
+          else
+            result := 0;
+        end;
+      1: // Affichage par p�riode
+      begin
+        v := 0;
+        case CBPerf3P.ItemIndex of
+          0: // Body weight
+            case CBPerf4.ItemIndex of
+              0: // Weight gain (g/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[84, h] * 1000 / (j - k);
+              1: // Weight gain (kg)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[84, h];
+            end;
+          1: // Time
+            case CBPerf4.ItemIndex of
+              0: // Duration (d)
+                v := j - k;
+            end;
+          2: // Feed usage
+            case CBPerf4.ItemIndex of
+              0: // Feed usage (kg/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[113, h] / (j - k);
+              1: // Feed usage (kg DM/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[113, h] / (j - k);
+              2: // Feed usage (MJ DE/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[113, h] / (j - k);
+              3: // Feed usage (MJ ME/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[113, h] / (j - k);
+              4: // Feed usage (MJ NE/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[113, h] / (j - k);
+              5: // Total feed usage (kg)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[113, h];
+              6: // Total feed usage (kg DM)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[113, h];
+              7: // Total feed usage (MJ DE)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[113, h];
+              8: // Total feed usage (MJ ME)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[113, h];
+              9: // Total feed usage (MJ NE)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[113, h];
+            end;
+          3: // Feed wastage
+            case CBPerf4.ItemIndex of
+              0: // Feed wastage (%)
+              begin
+                conso := 0;
+                for h := k to j - 1 do
+                  conso := conso + PResSimulP.TabResult[113, h];
+                ingere := 0;
+                for h := k to j - 1 do
+                  ingere := ingere + PResSimulP.TabResult[11, h];
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[112, h] * 100 / (j - k);
+                if conso <> 0
+                then
+                  v := (1 - ingere / conso) * 100;
+              end;
+              1: // Total feed wastage (kg)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[113, h] - PResSimulP.TabResult[11, h];
+            end;
+          4: // Feed intake
+            case CBPerf4.ItemIndex of
+              0: // Feed intake (kg/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[11, h] / (j - k);
+              1: // Feed intake (kg DM/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[11, h] / (j - k);
+              2: // Feed intake (MJ DE/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[11, h] / (j - k);
+              3: // Feed intake (MJ ME/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[11, h] / (j - k);
+              4: // Feed intake (MJ NE/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[11, h] / (j - k);
+              5: // Total feed intake (kg)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[11, h];
+              6: // Total feed intake (kg DM)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[11, h];
+              7: // Total feed intake (MJ DE)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[11, h];
+              8: // Total feed intake (MJ ME)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[11, h];
+              9: // Total feed intake (MJ NE)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[11, h];
+            end;
+          5: // Feed:Gain
+          begin
+            conso := 0;
+            for h := k to j - 1 do
+              case CBPerf4.ItemIndex of
+                0: // Feed:Gain (kg/kg)
+                  conso := conso + PResSimulP.TabResult[113, h];
+                1: // Feed:Gain (kg DM/kg)
+                  conso := conso + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[113, h];
+                2: // Feed:Gain (MJ DE/kg)
+                  conso := conso + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[113, h];
+                3: // Feed:Gain (MJ ME/kg)
+                  conso := conso + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[113, h];
+                4: // Feed:Gain (MJ NE/kg)
+                  conso := conso + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[113, h];
+              end;
+            gain := 0;
+            for h := k to j - 1 do
+              gain := gain + PResSimulP.TabResult[84, h];
+            if gain <> 0
+            then
+              v := conso / gain;
+          end;
+          6: // Gain:Feed
+          begin
+            gain := 0;
+            for h := k to j - 1 do
+              gain := gain + PResSimulP.TabResult[84, h];
+            conso := 0;
+            for h := k to j - 1 do
+              case CBPerf4.ItemIndex of
+                0: // Gain:Feed (kg/kg)
+                  conso := conso + PResSimulP.TabResult[113, h];
+                1: // Gain:Feed (kg/kg DM)
+                  conso := conso + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[113, h];
+                2: // Gain:Feed (kg/MJ DE)
+                  conso := conso + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[113, h];
+                3: // Gain:Feed (kg/MJ ME)
+                  conso := conso + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[113, h];
+                4: // Gain:Feed (kg/MJ NE)
+                  conso := conso + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[113, h];
+              end;
+            if conso <> 0
+            then
+              v := gain / conso;
+          end;
+          7: // Protein
+            case CBPerf4.ItemIndex of
+              0: // Protein deposition (g/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[79, h] / (j - k);
+              1: // Protein deposition (kg)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[79, h] / 1000;
+            end;
+          8: // Lipid
+            case CBPerf4.ItemIndex of
+              0: // Lipid deposition (g/d)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[80, h] / (j - k);
+              1: // Lipid deposition (kg)
+                for h := k to j - 1 do
+                  v := v + PResSimulP.TabResult[80, h] / 1000;
+            end;
+        end;
+        result := v;
+      end;
+      else
+        result := 0;
+    end;
+  end;
+
+// AffGraphPerf
+begin
+  ResetGraph;
+  Graph.Legend.Visible := FALSE;
+  Graph.Title.Text.Add(Format('%s (%s)', [TabPerf.Caption, CBPerf1.Text]));
+  case CBPerf1.ItemIndex of
+    0: // Affichage dynamique
+    begin
+      Graph.LeftAxis.Title.Caption := CBPerf4.Text;
+      Graph.BottomAxis.Title.Caption := CBPerf2D.Text;
+      csv := CBPerf2D.Text;
+      if (CBPerf3D.ItemIndex = 3) and CBPerfAL.Checked
+      then // Ing�r� AdLib
+        csv := csv + ';' + Format('%s (%s)', [CBPerfAL.Caption, CBPerf4.Text]);
+      csv := csv + ';' + Format('%s (%s)', [CBPerf3D.Text, CBPerf4.Text]);
+      MExport.Lines.Append(csv);
+      if (CBPerf3D.ItemIndex = 3) and CBPerfAL.Checked
+      then // Ing�r� AdLib
+      begin
+        LinePerfAL.Active := TRUE;
+        LinePerfAL.Clear;
+        for j := 1 to PResSimulP.NbJSim do
+          LinePerfAL.AddXY(PerfX, PResSimulP.TabResult[78, j] * PerfY / PResSimulP.TabResult[113, j]);
+      end;
+      // Affichage de la ligne
+      LinePerf.Active := TRUE;
+      LinePerf.Clear;
+      cumul := 0;
+      for j := 1 to PResSimulP.NbJSim do
+        LinePerf.AddXY(PerfX, PerfY, '', clTeeColor);
+      if CBPerf2D.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+      // Export
+      cumul := 0;
+      for j := 1 to PResSimulP.NbJSim do
+      begin
+        csv := FloatToStrF(PerfX, ffFixed, 15, 15);
+        if (CBPerf3D.ItemIndex = 3) and CBPerfAL.Checked
+        then // Ing�r� AdLib
+          csv := csv + ';' + FloatToStrF(PResSimulP.TabResult[78, j] * PerfY / PResSimulP.TabResult[113, j], ffFixed, 15, 15);
+        csv := csv + ';' + FloatToStrF(PerfY, ffFixed, 15, 15);
+        MExport.Lines.Append(csv);
+      end;
+    end;
+    1: // Affichage par p�riode
+    begin
+      Graph.LeftAxis.Title.Caption := CBPerf4.Text;
+      Graph.BottomAxis.Title.Caption := CBPerf2P.Text;
+      csv := CBPerf2P.Text;
+      csv := csv + ';' + Format('%s (%s)', [CBPerf3P.Text, CBPerf4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage de la barre
+      BarPerf.Active := TRUE;
+      BarPerf.Clear;
+      j := 1;
+      x := PerfX;
+      k := 1;
+      if PResSimulP.NbJSim > 1
+      then
+        for j := 2 to PResSimulP.NbJSim do
+        begin
+          p := PerfX;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            s := Format('%1.0f', [x]);
+            BarPerf.AddBar(PerfY, s, clTeeColor);
+            csv := s;
+            csv := csv + ';' + FloatToStrF(PerfY, ffFixed, 15, 15);
+            MExport.Lines.Append(csv);
+            x := p;
+            k := j;
+          end;
+        end;
+      j := PResSimulP.NbJSim + 1;
+      if j > k
+      then
+      begin
+        if CBPerf2P.ItemIndex = 3
+        then // Globale
+          s := ' '
+        else
+          s := Format('%1.0f', [x]);
+        BarPerf.AddBar(PerfY, s, clTeeColor);
+        csv := s;
+        csv := csv + ';' + FloatToStrF(PerfY, ffFixed, 15, 15);
+        MExport.Lines.Append(csv);
+      end;
+      BarPerf.ValueFormat := AjustFormat(AjustPas(Graph.MaxYValue(Graph.LeftAxis) - Graph.MinYValue(Graph.LeftAxis)));
+    end;
+  end;
+  Graph.View3DOptions.Orthogonal := TRUE;
+  Graph.View3DOptions.Elevation := 345;
+  Graph.View3DOptions.Rotation := 345;
+  Graph.View3DOptions.Perspective := 15;
+  AjustEchelle(Graph);
+end;
+
+procedure TFResSimulP.CBPerf1Change(Sender: TObject);
+begin
+  CBPerf2D.Visible := CBPerf1.ItemIndex = 0;
+  CBPerf3D.Visible := CBPerf1.ItemIndex = 0;
+  CBPerf2P.Visible := CBPerf1.ItemIndex = 1;
+  CBPerf3P.Visible := CBPerf1.ItemIndex = 1;
+  CBPerf3Change(nil);
+end;
+
+procedure TFResSimulP.CBPerf2Change(Sender: TObject);
+begin
+  AffGraphPerf;
+end;
+
+procedure TFResSimulP.CBPerf3Change(Sender: TObject);
+begin
+  CBPerf4.Items.Clear;
+  case CBPerf1.ItemIndex of
+    0: // Affichage dynamique
+      case CBPerf3D.ItemIndex of
+        0: // Body weight
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Weight gain'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Body weight'), _('kg')]));
+        end;
+        1: // Time
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Age'), _('d')]));
+        2: // Feed usage
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg DM'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ DE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ ME'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ NE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ NE')]));
+        end;
+        3: // Feed wastage
+        begin
+          CBPerf4.Items.Add(Format('%s (%%)', [_('Feed wastage')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed wastage'), _('kg')]));
+        end;
+        4: // Feed intake
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg DM'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ DE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ ME'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ NE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ NE')]));
+        end;
+        5: // Feed:Gain
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg DM'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ DE'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ ME'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ NE'), _('kg')]));
+        end;
+        6: // Gain:Feed
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ NE')]));
+        end;
+        7: // Protein
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Protein deposition'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Protein mass'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Protein content'), _('% BW gain')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Protein content'), _('% BW')]));
+        end;
+        8: // Lipid
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Lipid deposition'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Lipid mass'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Lipid content'), _('% BW gain')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Lipid content'), _('% BW')]));
+        end;
+        9: // Carcass
+        begin
+          CBPerf4.Items.Add(_('Dressing percentage'));
+          if FatInfo = 0
+          then // P2
+            CBPerf4.Items.Add(Format('%s (%s)', [_('Backfat thickness'), _('mm')]))
+          else // User defined
+            if Length(UserFatLongName) = 0
+            then
+              CBPerf4.Items.Add(Format('%s (%s)', [_('User-defined backfat thickness'), _('mm')]))
+            else
+              CBPerf4.Items.Add(Format('%s (%s)', [UserFatLongName, _('mm')]));
+          if LeanInfo = 0
+          then // TMP
+            CBPerf4.Items.Add(Format('%s (%%)', [_('Lean meat')]))
+          else // User defined
+            if Length(UserLeanLongName) = 0
+            then
+              CBPerf4.Items.Add(Format('%s (%%)', [_('User-defined lean meat')]))
+            else
+              CBPerf4.Items.Add(Format('%s (%%)', [UserLeanLongName]));
+        end;
+      end;
+    1: // Affichage par p�riode
+      case CBPerf3P.ItemIndex of
+        0: // Body weight
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Weight gain'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Weight gain'), _('kg')]));
+        end;
+        1: // Time
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Duration'), _('d')]));
+        2: // Feed usage
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg DM'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ DE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ ME'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ NE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ NE')]));
+        end;
+        3: // Feed wastage
+        begin
+          CBPerf4.Items.Add(Format('%s (%%)', [_('Feed wastage')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed wastage'), _('kg')]));
+        end;
+        4: // Feed intake
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg DM'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ DE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ ME'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ NE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ NE')]));
+        end;
+        5: // Feed:Gain
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg DM'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ DE'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ ME'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ NE'), _('kg')]));
+        end;
+        6: // Gain:Feed
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ NE')]));
+        end;
+        7: // Protein
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Protein deposition'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Protein deposition'), _('kg')]));
+        end;
+        8: // Lipid
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Lipid deposition'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Lipid deposition'), _('kg')]));
+        end;
+      end;
+  end;
+  CBPerf4.ItemIndex := 0;
+  CBPerfAL.Visible := (CBPerf1.ItemIndex = 0) and (CBPerf3D.ItemIndex = 3);
+  AffGraphPerf;
+end;
+
+procedure TFResSimulP.CBPerf4Change(Sender: TObject);
+begin
+  AffGraphPerf;
+end;
+
+procedure TFResSimulP.CBPerfALClick(Sender: TObject);
+begin
+  AffGraphPerf;
+end;
+
+//////////////////
+//   Aliments   //
+//////////////////
+procedure TFResSimulP.InitAli;
+var
+  i, j: integer;
+  nom: string;
+begin
+  // ListAli : liste des aliments utilis�s
+  ListAli := TStringList.Create;
+  for i := 1 to 2 do // 2 aliments
+    for j := 1 to PResSimulP.NbJSim do
+      if PResSimulP.TabResult[8 + i, j] > 0
+      then
+      begin
+        nom := FindNomAliment(Trunc(PResSimulP.TabResult[6 + i, j]));
+        if ListAli.IndexOf(nom) = -1
+        then
+          ListAli.Add(nom);
+      end;
+  // ListMat : liste des mati�res premi�res utilis�es
+  CompositionComplete := TRUE;
+  ListMat := TStringList.Create;
+  for i := 0 to ListAli.Count - 1 do
+  begin
+    PAliment := ListAliment[FindIdxAliment(ListAli[i])];
+    if PAliment.MP.NbMat > 0
+    then
+      for j := 0 to PAliment.MP.NbMat - 1 do
+      begin
+        nom := FindNomMatiere(PAliment.MP.NumMat[j]);
+        if ListMat.IndexOf(nom) = -1
+        then
+          ListMat.Add(nom);
+      end
+    else
+      CompositionComplete := FALSE;
+  end;
+  CBAli5.Visible := ConfAffMP and CompositionComplete;
+  // PieAli : s�rie (camembert) graphique
+  PieAli := TPieSeries.Create(Graph);
+  PieAli.ParentChart := Graph;
+  PieAli.SeriesColor := clBlack;
+  PieAli.Circled := TRUE;
+  PieAli.Marks.ArrowLength := 24;
+  PieAli.Marks.Arrow.Color := clBlack;
+  PieAli.Marks.Brush.Style := bsClear;
+  PieAli.Marks.Frame.Visible := FALSE;
+  PieAli.OtherSlice.Style := poBelowPercent;
+  PieAli.OtherSlice.Value := 1;
+  PieAli.OtherSlice.Text := StrAutres;
+  Graph.AddSeries(PieAli);
+  // AreaAli : s�ries (aires) graphiques
+  SetLength(AreaAli, ListAli.Count);
+  for i := 0 to ListAli.Count - 1 do
+  begin
+    AreaAli[i] := TAreaSeries.Create(Graph);
+    AreaAli[i].ParentChart := Graph;
+    AreaAli[i].Title := ListAli[i];
+    AreaAli[i].AreaLinesPen.Visible := FALSE;
+    Graph.AddSeries(AreaAli[i]);
+  end;
+  // BarAli : s�ries (barres) graphiques
+  SetLength(BarAli, ListAli.Count);
+  for i := 0 to ListAli.Count - 1 do
+  begin
+    BarAli[i] := TBarSeries.Create(Graph);
+    BarAli[i].ParentChart := Graph;
+    BarAli[i].Title := ListAli[i];
+    BarAli[i].SeriesColor := AreaAli[i].SeriesColor;
+    BarAli[i].BarPen.Color := BarAli[i].SeriesColor;
+    BarAli[i].Marks.Visible := FALSE;
+    Graph.AddSeries(BarAli[i]);
+  end;
+end;
+
+procedure TFResSimulP.AffGraphAli;
+var
+  i, j, k: integer;
+  x, y, t, p: double;
+  s, csv: string;
+
+  // Abscisse
+  function AliX: double;
+  begin
+    case CBAli1.ItemIndex of
+      1: // R�partition dynamique
+        case CBAli2D.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      2: // R�partition par p�riode
+        case CBAli2P.ItemIndex of
+          0: // Semaine
+            result := (j - 1) div 7 + 1;
+          1: // R�gle qualit�
+            result := PResSimulP.TabResult[3, j];
+          2: // R�gle quantit�
+            result := PResSimulP.TabResult[5, j];
+          else
+            result := 0;
+          end;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e (Aliments)
+  function AliY: double;
+  var
+    h: integer;
+    v, d: double;
+  begin
+    case CBAli1.ItemIndex of
+      0: // R�partition globale
+      begin
+        v := 0;
+        for h := 1 to PResSimulP.NbJSim do
+        begin
+          if (PResSimulP.TabResult[7, h] <> -1) and (FindNomAliment (Trunc (PResSimulP.TabResult[7, h])) = ListAli[i])
+          then // Aliment 1
+            v := v + (PResSimulP.TabResult[113, h] * PResSimulP.TabResult[9, h] / 100);
+          if (PResSimulP.TabResult[8, h] <> -1) and (FindNomAliment (Trunc (PResSimulP.TabResult[8, h])) = ListAli[i])
+          then // Aliment 2
+            v := v + (PResSimulP.TabResult[113, h] * PResSimulP.TabResult[10, h] / 100);
+        end;
+        if CBAli3.ItemIndex = 1
+        then // Co�t
+        begin
+          PAliment := ListAliment[FindIdxAliment (ListAli[i])];
+          v := v * PAliment.Prix / 1000;
+        end;
+        result := v;
+      end;
+      1: // R�partition dynamique
+      begin
+        // Diviseur
+        case CBAli3.ItemIndex of
+          1: // Co�t
+            case CBAli4.ItemIndex of
+              1: // GMQ
+                d := PResSimulP.TabResult[84, j];
+              2: // Aliment
+                d := PResSimulP.TabResult[113, j];
+              else
+                d := 1;
+            end;
+          else
+            d := 1;
+        end;
+        v := 0;
+        if (PResSimulP.TabResult[7, j] <> -1) and (FindNomAliment (Trunc (PResSimulP.TabResult[7, j])) = ListAli[i])
+        then // Aliment 1
+          v := v + (PResSimulP.TabResult[113, j] * PResSimulP.TabResult[9, j] / 100);
+        if (PResSimulP.TabResult[8, j] <> -1) and (FindNomAliment (Trunc (PResSimulP.TabResult[8, j])) = ListAli[i])
+        then // Aliment 2
+          v := v + (PResSimulP.TabResult[113, j] * PResSimulP.TabResult[10, j] / 100);
+        if CBAli3.ItemIndex = 1
+        then // Co�t
+        begin
+          PAliment := ListAliment[FindIdxAliment (ListAli[i])];
+          v := v * PAliment.Prix / 1000;
+        end;
+        result := v / d;
+      end;
+      2: // R�partition par p�riode
+      begin
+        // Diviseur
+        case CBAli3.ItemIndex of
+          0: // Quantit�
+            case CBAli4.ItemIndex of
+              1: // Dur�e
+                d := j - k;
+              else
+                d := 1;
+            end;
+          1: // Co�t
+            case CBAli4.ItemIndex of
+              1: // Dur�e
+                d := j - k;
+              2: // GMQ
+              begin
+                d := 0;
+                for h := k to j - 1 do
+                  d := d + PResSimulP.TabResult[84, h];
+              end;
+              3: // Aliment
+              begin
+                d := 0;
+                for h := k to j - 1 do
+                  d := d + PResSimulP.TabResult[113, h];
+              end;
+              else
+                d := 1;
+            end;
+          else
+            d := 1;
+        end;
+        v := 0;
+        for h := k to j - 1 do
+        begin
+          if (PResSimulP.TabResult[7, h] <> -1) and (FindNomAliment (Trunc (PResSimulP.TabResult[7, h])) = ListAli[i])
+          then // Aliment 1
+            v := v + (PResSimulP.TabResult[113, h] * PResSimulP.TabResult[9, h] / 100);
+          if (PResSimulP.TabResult[8, h] <> -1) and (FindNomAliment (Trunc (PResSimulP.TabResult[8, h])) = ListAli[i])
+          then // Aliment 2
+            v := v + (PResSimulP.TabResult[113, h] * PResSimulP.TabResult[10, h] / 100);
+        end;
+        if CBAli3.ItemIndex = 1
+        then // Co�t
+        begin
+          PAliment := ListAliment[FindIdxAliment (ListAli[i])];
+          v := v * PAliment.Prix / 1000;
+        end;
+        result := v / d;
+      end;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�es (Mati�res premi�res)
+  function MatY: double;
+  var
+    g, h: integer;
+    v: double;
+  begin
+    v := 0;
+    for h := 1 to PResSimulP.NbJSim do
+    begin
+      if PResSimulP.TabResult[7, h] <> -1
+      then // Aliment 1
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Trunc (PResSimulP.TabResult[7, h])))];
+        for g := 0 to PAliment.MP.NbMat - 1 do
+          if FindNomMatiere (PAliment.MP.NumMat[g]) = ListMat[i]
+          then
+            v := v + (PAliment.MP.Qte[g] * PResSimulP.TabResult[113, h] * PResSimulP.TabResult[9, h] / 100);
+      end;
+      if PResSimulP.TabResult[8, h] <> -1
+      then // Aliment 2
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Trunc (PResSimulP.TabResult[8, h])))];
+        for g := 0 to PAliment.MP.NbMat - 1 do
+          if FindNomMatiere (PAliment.MP.NumMat[g]) = ListMat[i]
+          then
+            v := v + (PAliment.MP.Qte[g] * PResSimulP.TabResult[113, h] * PResSimulP.TabResult[10, h] / 100);
+      end;
+    end;
+    result := v / 1000; // Conversion g -> kg
+  end;
+
+// AffGraphAli
+begin
+  ResetGraph;
+  Graph.Title.Text.Add(Format('%s (%s)', [CBAli5.Text, CBAli1.Text]));
+  Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBAli3.Text, CBAli4.Text]);
+  case CBAli1.ItemIndex of
+    0: // R�partition globale
+    begin
+//      Graph.View3D := TRUE;
+      Graph.Legend.Visible := FALSE;
+      csv := '';
+      for i := 0 to ListAli.Count - 1 do
+        csv := csv + Format('%s (%s)', [ListAli[i], CBAli4.Text]) + ';';
+      MExport.Lines.Append(csv);
+      // Affichage du camembert
+      PieAli.Active := TRUE;
+      PieAli.Clear;
+      if CBAli4.ItemIndex = 1
+      then
+        PieAli.Marks.Style := smsLabelPercent
+      else
+        PieAli.Marks.Style := smsLabelValue;
+      t := 0;
+      csv := '';
+      if CBAli5.ItemIndex = 1
+      then // Mati�res premi�res
+        for i := 0 to ListMat.Count - 1 do
+        begin
+          y := MatY;
+          PieAli.AddPie(y, ListMat[i], clTeeColor);
+          t := t + y;
+          csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+        end
+      else // Aliments
+        for i := 0 to ListAli.Count - 1 do
+        begin
+          y := AliY;
+          PieAli.AddPie(y, ListAli[i], AreaAli[i].SeriesColor);
+          t := t + y;
+          csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+        end;
+      Graph.SubTitle.Text.Add(Format('%s = %1.0f %s', [StrTotal, t, CBAli4.Items[0]]));
+      MExport.Lines.Append(csv);
+      PieAli.PercentFormat := Format('%s %s', [AjustFormat(1), CBAli4.Text]);
+      PieAli.ValueFormat := Format('%s %s', [AjustFormat(1), CBAli4.Text]);
+    end;
+    1: // R�partition dynamique
+    begin
+      Graph.BottomAxis.Title.Caption := CBAli2D.Text;
+      csv := CBAli2D.Text;
+      for i := 0 to ListAli.Count - 1 do
+        csv := csv + ';' + Format('%s (%s)', [ListAli[i], CBAli4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des aires
+      for i := 0 to ListAli.Count - 1 do
+        AreaAli[i].Active := TRUE;
+      for i := 0 to ListAli.Count - 1 do
+        AreaAli[i].Clear;
+      if (CBAli4.ItemIndex = 1) and (CBAli3.ItemIndex = 0)
+      then
+        for i := 0 to ListAli.Count - 1 do
+          AreaAli[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListAli.Count - 1 do
+          AreaAli[i].MultiArea := maStacked;
+      for j := 1 to PResSimulP.NbJSim do
+      begin
+        csv := FloatToStrF(AliX, ffFixed, 15, 15);
+        for i := 0 to ListAli.Count - 1 do
+        begin
+          AreaAli[i].AddXY(AliX, AliY, '', clTeeColor);
+          csv := csv + ';' + FloatToStrF(AliY, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+      if CBAli2D.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+    2: // R�partition par p�riode
+    begin
+      Graph.BottomAxis.Title.Caption := CBAli2P.Text;
+      csv := CBAli2P.Text;
+      for i := 0 to ListAli.Count - 1 do
+        csv := csv + ';' + Format('%s (%s)', [ListAli[i], CBAli4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des barres
+      for i := 0 to ListAli.Count - 1 do
+        BarAli[i].Active := TRUE;
+      for i := 0 to ListAli.Count - 1 do
+        BarAli[i].Clear;
+      if (CBAli4.ItemIndex = 2) and (CBAli3.ItemIndex = 0)
+      then
+        for i := 0 to ListAli.Count - 1 do
+          BarAli[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListAli.Count - 1 do
+          BarAli[i].MultiBar := mbStacked;
+      j := 1;
+      x := AliX;
+      k := 1;
+      if PResSimulP.NbJSim > 1
+      then
+        for j := 2 to PResSimulP.NbJSim do
+        begin
+          p := AliX;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            s := Format('%1.0f', [x]);
+            csv := s;
+            for i := 0 to ListAli.Count - 1 do
+            begin
+              y := AliY;
+              if y > 0
+              then
+                BarAli[i].AddBar(y, s, clTeeColor)
+              else
+                BarAli[i].AddNull (s);
+              csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+            end;
+            MExport.Lines.Append(csv);
+            x := p;
+            k := j;
+          end;
+        end;
+      j := PResSimulP.NbJSim + 1;
+      if j > k
+      then
+      begin
+        if CBAli2P.ItemIndex = 3
+        then // Globale
+          s := ' '
+        else
+          s := Format('%1.0f', [x]);
+        csv := s;
+        for i := 0 to ListAli.Count - 1 do
+        begin
+          y := AliY;
+          if y > 0
+          then
+            BarAli[i].AddBar(y, s, clTeeColor)
+          else
+            BarAli[i].AddNull (s);
+          csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+    end;
+  end;
+  if PieAli.Active
+  then
+  begin
+    Graph.View3DOptions.Orthogonal := FALSE;
+    Graph.View3DOptions.Elevation := 315;
+    Graph.View3DOptions.Rotation := 360;
+    Graph.View3DOptions.Perspective := 0;
+  end
+  else
+  begin
+    Graph.View3DOptions.Orthogonal := TRUE;
+    Graph.View3DOptions.Elevation := 345;
+    Graph.View3DOptions.Rotation := 345;
+    Graph.View3DOptions.Perspective := 15;
+  end;
+  AjustEchelle (Graph);
+end;
+
+procedure TFResSimulP.CBAli1Change(Sender: TObject);
+begin
+  case CBAli1.ItemIndex of
+    0: // R�partition globale
+    begin
+      CBAli2D.Visible := FALSE;
+      CBAli2P.Visible := FALSE;
+      CBAli5.Visible := ConfAffMP and CompositionComplete;
+    end;
+    1: // R�partition dynamique
+    begin
+      CBAli2D.Visible := TRUE;
+      CBAli2P.Visible := FALSE;
+      CBAli3.Enabled := TRUE;
+      CBAli5.ItemIndex := 0; // Aliments
+      CBAli5.Visible := FALSE;
+    end;
+    2: // R�partition par p�riode
+    begin
+      CBAli2D.Visible := FALSE;
+      CBAli2P.Visible := TRUE;
+      CBAli3.Enabled := TRUE;
+      CBAli5.ItemIndex := 0; // Aliments
+      CBAli5.Visible := FALSE;
+    end;
+  end;
+  CBAli3Change(nil);
+end;
+
+procedure TFResSimulP.CBAli2Change(Sender: TObject);
+begin
+  AffGraphAli;
+end;
+
+procedure TFResSimulP.CBAli3Change(Sender: TObject);
+begin
+  CBAli4.Items.Clear;
+  case CBAli1.ItemIndex of
+    0: // R�partition globale
+      case CBAli3.ItemIndex of
+        0: // Quantit�
+        begin
+          CBAli4.Items.Add(StrKg);
+          CBAli4.Items.Add('%');
+        end;
+        1: // Co�t
+        begin
+          CBAli4.Items.Add(CurrencySign);
+          CBAli4.Items.Add('%');
+        end;
+      end;
+    1: // R�partition dynamique
+      case CBAli3.ItemIndex of
+        0: // Quantit�
+        begin
+          CBAli4.Items.Add(Format('%s/%s', [StrKg, StrJ]));
+          CBAli4.Items.Add('%');
+        end;
+        1: // Co�t
+        begin
+          CBAli4.Items.Add(Format('%s/%s', [CurrencySign, StrJ]));
+          CBAli4.Items.Add(Format('%s/%s %s', [CurrencySign, StrKg, StrGMQUnit]));
+          CBAli4.Items.Add(Format('%s/%s %s', [CurrencySign, StrKg, StrAlimentUnit]));
+        end;
+      end;
+    2: // R�partition par p�riode
+      case CBAli3.ItemIndex of
+        0: // Quantit�
+        begin
+          CBAli4.Items.Add(StrKg);
+          CBAli4.Items.Add(Format('%s/%s', [StrKg, StrJ]));
+          CBAli4.Items.Add('%');
+        end;
+        1: // Co�t
+        begin
+          CBAli4.Items.Add(CurrencySign);
+          CBAli4.Items.Add(Format('%s/%s', [CurrencySign, StrJ]));
+          CBAli4.Items.Add(Format('%s/%s %s', [CurrencySign, StrKg, StrGMQUnit]));
+          CBAli4.Items.Add(Format('%s/%s %s', [CurrencySign, StrKg, StrAlimentUnit]));
+        end;
+      end;
+  end;
+  CBAli4.ItemIndex := 0;
+  AffGraphAli;
+end;
+
+procedure TFResSimulP.CBAli4Change(Sender: TObject);
+begin
+  AffGraphAli;
+end;
+
+procedure TFResSimulP.CBAli5Change(Sender: TObject);
+begin
+  CBAli3.Enabled := CBAli5.ItemIndex = 0; // Aliments
+  if (CBAli5.ItemIndex = 1) and (CBAli3.ItemIndex <> 0)
+  then // Mati�res premi�res => Quantit�
+  begin
+    CBAli3.ItemIndex := 0;
+    CBAli4.Items.Clear;
+    CBAli4.Items.Add(StrKg);
+    CBAli4.Items.Add('%');
+    CBAli4.ItemIndex := 0;
+  end;
+  AffGraphAli;
+end;
+
+////////////////////////////
+//   D�p�t de prot�ines   //
+////////////////////////////
+procedure TFResSimulP.InitPD;
+const
+  TabColor: array[0..14] of TColor = (clRed, clGreen, clYellow, clBlue,
+    clFuchsia, clTeal, clNavy, clLime, clMaroon, clOlive, clPurple, clAqua,
+    clMoneyGreen, clSkyBlue, clCream);
+type
+  TRecTriPD = record
+    Idx: integer;
+    Min: double;
+    Moy: double;
+  end;
+var
+  i, j: integer;
+  TabTriPD: array of TRecTriPD;
+  TabTemp: array of double;
+  RecTemp: TRecTriPD;
+begin
+  // ListPD : liste pour le d�p�t de prot�ines
+  ListPD := TStringList.Create;
+  ListPD.Assign(LBPD.Items);
+  // Initialisation du tableau
+  SetLength(TabTriPD, ListPD.Count);
+  SetLength(TabTemp, PResSimulP.NbJSim);
+  for i := 0 to ListPD.Count - 1 do
+  begin
+    TabTriPD[i].Idx := i;
+    case i of
+      0: // Energie
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[77, j] / GEProtJaap
+            / PResSimulP.TabResult[79, j];
+      1: // PDmax
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[69, j] / GEProtJaap
+            / PResSimulP.TabResult[79, j];
+      2: // Lysine
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[33, j]
+            / PResSimulP.TabResult[79, j];
+      3: // Thr�onine
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[37, j]
+            / PResSimulP.TabResult[79, j];
+      4: // Tryptophane
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[36, j]
+            / PResSimulP.TabResult[79, j];
+      5: // M�thionine
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[34, j]
+            / PResSimulP.TabResult[79, j];
+      6: // M�thionine+Cystine
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[45, j]
+            / PResSimulP.TabResult[79, j];
+      7: // Valine
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[42, j]
+            / PResSimulP.TabResult[79, j];
+      8: // Isoleucine
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[41, j]
+            / PResSimulP.TabResult[79, j];
+      9: // Leucine
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[40, j]
+            / PResSimulP.TabResult[79, j];
+      10: // Ph�nylalanine
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[38, j]
+            / PResSimulP.TabResult[79, j];
+      11: // Ph�nylalanine+Tyrosine
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[46, j]
+            / PResSimulP.TabResult[79, j];
+      12: // Arginine
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[44, j]
+            / PResSimulP.TabResult[79, j];
+      13: // Histidine
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[43, j]
+            / PResSimulP.TabResult[79, j];
+      14: // MAT
+        for j := 1 to PResSimulP.NbJSim do
+          TabTemp[j - 1] := PResSimulP.TabResult[32, j]
+            / PResSimulP.TabResult[79, j];
+    end;
+    TabTriPD[i].Min := MinValue(TabTemp);
+    TabTriPD[i].Moy := Mean(TabTemp);
+  end;
+  // D�termination du nombre de facteurs limitants
+  NbLimit := 0;
+  for i := 0 to ListPD.Count - 1 do
+    if TabTriPD[i].Min - 1 < PICO then Inc(NbLimit);
+  // Tri du tableau (tri � bulle) sur Min et Moy
+  for i := ListPD.Count - 1 downto 1 do
+    for j := 0 to i - 1 do
+      if (TabTriPD[j].Min > TabTriPD[j + 1].Min)
+//        or ((TabTriPD[j].Min = TabTriPD[j + 1].Min)
+        or ((Abs (TabTriPD[j].Min - TabTriPD[j + 1].Min) < PICO)
+          and (TabTriPD[j].Moy > TabTriPD[j + 1].Moy))
+      then
+      begin
+        RecTemp.Idx := TabTriPD[j].Idx;
+        RecTemp.Min := TabTriPD[j].Min;
+        RecTemp.Moy := TabTriPD[j].Moy;
+        TabTriPD[j].Idx := TabTriPD[j + 1].Idx;
+        TabTriPD[j].Min := TabTriPD[j + 1].Min;
+        TabTriPD[j].Moy := TabTriPD[j + 1].Moy;
+        TabTriPD[j + 1].Idx := RecTemp.Idx;
+        TabTriPD[j + 1].Min := RecTemp.Min;
+        TabTriPD[j + 1].Moy := RecTemp.Moy;
+      end;
+  // Construction de la liste tri�e
+  LBPD.Items.Clear;
+  for i := 0 to ListPD.Count - 1 do
+    LBPD.Items.Add(ListPD[TabTriPD[i].Idx]);
+  // LinePD : s�ries (lignes) graphiques
+  SetLength(LinePD, ListPD.Count + 1);
+  // D�p�t de prot�ines
+  LinePD[ListPD.Count] := TLineSeries.Create(Graph);
+  LinePD[ListPD.Count].ParentChart := Graph;
+  LinePD[ListPD.Count].Title := StrMinimum;
+  LinePD[ListPD.Count].SeriesColor := clBlack;
+  LinePD[ListPD.Count].LinePen.Color := LinePD[ListPD.Count].SeriesColor;
+  LinePD[ListPD.Count].LinePen.Width := 2;
+  Graph.AddSeries(LinePD[ListPD.Count]);
+  // Facteurs potentiellement limitants
+  for i := 0 to ListPD.Count - 1 do
+  begin
+    LinePD[i] := TLineSeries.Create(Graph);
+    LinePD[i].ParentChart := Graph;
+    LinePD[i].Title := ListPD[i];
+    LinePD[i].SeriesColor := TabColor[LBPD.Items.IndexOf (ListPD[i])];
+    LinePD[i].LinePen.Color := LinePD[i].SeriesColor;
+    LinePD[i].LinePen.Width := 2;
+    Graph.AddSeries(LinePD[i]);
+  end;
+  // S�lection des facteurs effectivement limitants
+  for i := 0 to NbLimit - 1 do
+    LBPD.Selected[i] := TRUE;
+end;
+
+procedure TFResSimulP.AffGraphPD;
+var
+  i, j: integer;
+  csv: string;
+
+  // Abscisse
+  function PDX: double;
+  begin
+    case CBPD2.ItemIndex of
+      0: // Poids vif
+        result := PResSimulP.TabResult[2, j];
+      1: // Age
+        result := PResSimulP.TabResult[1, j];
+      2: // Jours
+        result := j;
+      3: // Semaines
+        result := j / 7;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e
+  function PDY: double;
+  begin
+    case i of
+      0: // Energie
+        result := PResSimulP.TabResult[77, j] / GEProtJaap;
+      1: // PDmax
+        result := PResSimulP.TabResult[69, j] / GEProtJaap;
+      2: // Lysine
+        result := PResSimulP.TabResult[33, j];
+      3: // Thr�onine
+        result := PResSimulP.TabResult[37, j];
+      4: // Tryptophane
+        result := PResSimulP.TabResult[36, j];
+      5: // M�thionine
+        result := PResSimulP.TabResult[34, j];
+      6: // M�thionine+Cystine
+        result := PResSimulP.TabResult[45, j];
+      7: // Valine
+        result := PResSimulP.TabResult[42, j];
+      8: // Isoleucine
+        result := PResSimulP.TabResult[41, j];
+      9: // Leucine
+        result := PResSimulP.TabResult[40, j];
+      10: // Ph�nylalanine
+        result := PResSimulP.TabResult[38, j];
+      11: // Ph�nylalanine+Tyrosine
+        result := PResSimulP.TabResult[46, j];
+      12: // Arginine
+        result := PResSimulP.TabResult[44, j];
+      13: // Histidine
+        result := PResSimulP.TabResult[43, j];
+      14: // MAT
+        result := PResSimulP.TabResult[32, j];
+      15: // D�p�t de prot�ines
+        result := PResSimulP.TabResult[79, j];
+      else
+        result := 0;
+    end;
+  end;
+
+// AffGraphPD
+begin
+  ResetGraph;
+  Graph.Legend.Visible := FALSE;
+  Graph.Title.Text.Add(TabPD.Caption);
+  Graph.LeftAxis.Title.Caption := Format('%s (%s/%s)', [TabPD.Caption, StrG, StrJ]);
+  Graph.BottomAxis.Title.Caption := CBPD2.Text;
+  csv := CBPD2.Text;
+  for i := 0 to ListPD.Count - 1 do
+    csv := csv + ';' + Format('%s (%s %s/%s)', [ListPD[i], StrG, StrPD, StrJ]);
+  csv := csv + ';' + StrMinimum;
+  MExport.Lines.Append(csv);
+  // Affichage des lignes
+  for i := 0 to ListPD.Count do
+    LinePD[i].Active := TRUE;
+  for i := 0 to ListPD.Count do
+    LinePD[i].Clear;
+  for j := 1 to PResSimulP.NbJSim do
+  begin
+    csv := FloatToStrF(PDX, ffFixed, 15, 15);
+    for i := 0 to ListPD.Count - 1 do
+    begin
+      if LBPD.Selected[LBPD.Items.IndexOf(ListPD[i])]
+      then
+        LinePD[i].AddXY(PDX, PDY);
+      csv := csv + ';' + FloatToStrF(PDY, ffFixed, 15, 15);
+    end;
+    i := ListPD.Count;
+    LinePD[i].AddXY(PDX, PDY);
+    csv := csv + ';' + FloatToStrF(PDY, ffFixed, 15, 15);
+    MExport.Lines.Append(csv);
+  end;
+  if CBPD2.ItemIndex = 3
+  then // Dur�e (semaine)
+    Graph.BottomAxis.Increment := 1
+  else
+    Graph.BottomAxis.Increment := 10;
+  Graph.View3DOptions.Orthogonal := TRUE;
+  Graph.View3DOptions.Elevation := 345;
+  Graph.View3DOptions.Rotation := 345;
+  Graph.View3DOptions.Perspective := 15;
+  AjustEchelle(Graph);
+end;
+
+procedure TFResSimulP.CBPD2Change(Sender: TObject);
+begin
+  AffGraphPD;
+end;
+
+procedure TFResSimulP.LBPDClick(Sender: TObject);
+begin
+  AffGraphPD;
+end;
+
+procedure TFResSimulP.LBPDDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
+begin
+  with (Control as TListBox).Canvas do
+  begin
+    // Cadre principal
+    FillRect(Rect);
+    // Etoile
+    SetTextAlign(Handle, TA_RIGHT);
+    if Index < NbLimit
+    then // Facteur limitant
+      TextRect(Rect, Rect.Right - 4, Rect.Top, '*');
+    Rect.Right := Rect.Right - 16;
+    // Texte
+    SetTextAlign (Handle, TA_LEFT);
+    TextRect(Rect, Rect.Left + 32, Rect.Top, LBPD.Items[Index]);
+    Rect.Right := 32;
+    // Num�ro
+    SetTextAlign (Handle, TA_RIGHT);
+    TextRect(Rect, Rect.Right - 8, Rect.Top, Format('%d', [Index + 1]));
+    // Couleur
+    if odSelected in State
+    then
+    begin
+      // Cadre noir
+      Brush.Color := clBlack;
+      Rect.Top := Rect.Top + 2;
+      Rect.Bottom := Rect.Bottom - 2;
+      Rect.Left := Rect.Left + 2;
+      Rect.Right := Rect.Left + (Rect.Bottom - Rect.Top);
+      FillRect(Rect);
+      // Carr� de couleur
+      Brush.Color := LinePD[ListPD.IndexOf(LBPD.Items[Index])].SeriesColor;
+      Rect.Top := Rect.Top + 1;
+      Rect.Bottom := Rect.Bottom - 1;
+      Rect.Left := Rect.Left + 1;
+      Rect.Right := Rect.Right - 1;
+      FillRect(Rect);
+    end;
+  end;
+end;
+
+///////////////////////
+//   Acides amin�s   //
+///////////////////////
+procedure TFResSimulP.InitAA;
+const
+  TabColor1: array[0..8] of TColor
+    = (clBlack, clTeal, clAqua, clOlive, clSilver, clPink, clGray, clRed, clGreen);
+  TabColor2: array[1..3] of TColor
+    = (clGreen, clRed, clRed);
+var
+  i: integer;
+begin
+  // ListAA : liste pour les acides amin�s
+  ListAA := TStringList.Create;
+  ListAA.Assign(LBAA.Items);
+  // PieAA : s�rie (camembert) graphique
+  PieAA := TPieSeries.Create(Graph);
+  PieAA.ParentChart := Graph;
+  PieAA.Circled := TRUE;
+  PieAA.Marks.ArrowLength := 24;
+  PieAA.Marks.Arrow.Color := clBlack;
+  PieAA.Marks.Brush.Style := bsClear;
+  PieAA.Marks.Frame.Visible := FALSE;
+  PieAA.ValueFormat := Format('# ##0 %s', [StrG]);
+  PieAA.PercentFormat := '##0 %';
+  Graph.AddSeries(PieAA);
+  // AreaAA : s�ries (aires) graphiques
+  SetLength(AreaAA, ListAA.Count);
+  for i := 0 to ListAA.Count - 1 do
+  begin
+    AreaAA[i] := TAreaSeries.Create(Graph);
+    AreaAA[i].ParentChart := Graph;
+    AreaAA[i].Title := ListAA[i];
+    AreaAA[i].SeriesColor := TabColor1[i];
+    AreaAA[i].AreaLinesPen.Visible := FALSE;
+    Graph.AddSeries(AreaAA[i]);
+  end;
+  // BarAA : s�ries (barres) graphiques
+  SetLength(BarAA, ListAA.Count);
+  for i := 0 to ListAA.Count - 1 do
+  begin
+    BarAA[i] := TBarSeries.Create(Graph);
+    BarAA[i].ParentChart := Graph;
+    BarAA[i].Title := ListAA[i];
+    BarAA[i].SeriesColor := TabColor1[i];
+    BarAA[i].BarPen.Color := BarAA[i].SeriesColor;
+    BarAA[i].Marks.Visible := FALSE;
+    Graph.AddSeries(BarAA[i]);
+  end;
+  // LineAA : s�ries (lignes) graphiques
+  for i := 1 to 3 do
+  begin
+    LineAA[i] := TLineSeries.Create(Graph);
+    LineAA[i].ParentChart := Graph;
+    case i of
+      2: // Besoin (population)
+        LineAA[i].Title := StrBesoinPopulation;
+      3: // Besoin (animal moyen)
+        LineAA[i].Title := StrBesoinMoyen;
+      else // Apport
+        LineAA[i].Title := StrApport;
+    end;
+    LineAA[i].SeriesColor := TabColor2[i];
+    if i <> 2
+    then // Ligne
+    begin
+      LineAA[i].LinePen.Color := LineAA[i].SeriesColor;
+      LineAA[i].LinePen.Width := 2;
+    end
+    else // Pointill�s
+    begin
+      LineAA[i].LinePen.Style := psClear;
+      LineAA[i].Pointer.Visible := TRUE;
+      LineAA[i].Pointer.HorizSize := 2;
+      LineAA[i].Pointer.VertSize := 1;
+      LineAA[i].Pointer.Frame.Visible := FALSE;
+    end;
+    Graph.AddSeries(LineAA[i]);
+  end;
+end;
+
+procedure TFResSimulP.AffGraphAA;
+const
+  TriAA: array[0..8] of integer = (2, 3, 4, 6, 7, 8, 5, 0, 1);
+var
+  i, j, k: integer;
+  x, y, t, p, PD, py1: double;
+  s, csv: string;
+
+  // Abscisse
+  function AAX: double;
+  begin
+    case CBAA1.ItemIndex of
+      1: // R�partition dynamique
+        case CBAA2D.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      2: // R�partition par p�riode
+        case CBAA2P.ItemIndex of
+          0: // Semaine
+            result := (j - 1) div 7 + 1;
+          1: // R�gle qualit�
+            result := PResSimulP.TabResult[3, j];
+          2: // R�gle quantit�
+            result := PResSimulP.TabResult[5, j];
+          else
+            result := 0;
+          end;
+      3: // Besoin et apport
+        case CBAA2D.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e
+  function AAY: double;
+  var
+    h: integer;
+    v, d, endogeneAA, m75AA, AAk, bodyAA, AAingere, AAdigestible, PDAA,
+      IngereSec, PV, AAPD, AAAA, AAenergie, PD3, PDapport, Gaspillage: double;
+  begin
+    case CBAA1.ItemIndex of
+      0: // R�partition globale
+      begin
+        v := 0;
+        case i of
+          0: // Gaspillage
+            if CBAA5.ItemIndex = 2
+            then // Total
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                AAingere := PResSimulP.TabResult[93 + CBAA3.ItemIndex, h];
+                Gaspillage := PResSimulP.TabResult[112, h];
+                v := v + AAingere / (1 - Gaspillage) - AAingere;
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  AAingere := PResSimulP.TabResult[92 + CBAA3.ItemIndex, h];
+                  v := v + AAingere / (1 - Gaspillage) - AAingere;
+                end;
+              end;
+          1: // Indigestible
+            if CBAA5.ItemIndex = 2
+            then // Total
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                AAingere := PResSimulP.TabResult[93 + CBAA3.ItemIndex, h];
+                AAdigestible := PResSimulP.TabResult[19 + CBAA3.ItemIndex, h];
+                v := v + (AAingere - AAdigestible);
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  AAingere := PResSimulP.TabResult[92 + CBAA3.ItemIndex, h];
+                  AAdigestible := PResSimulP.TabResult[18 + CBAA3.ItemIndex, h];
+                  v := v + (AAingere - AAdigestible);
+                end;
+              end;
+          2: // Endog�ne basal
+            if CBAA5.ItemIndex <> 1
+            then // Total ou Digestible standardis�
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                IngereSec := PResSimulP.TabResult[106, h] * PResSimulP.TabResult[11, h];
+                endogeneAA := AAendogene[CBAA3.ItemIndex];
+                v := v + (IngereSec * endogeneAA);
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  endogeneAA := AAendogene[CBAA3.ItemIndex - 1];
+                  v := v + (IngereSec * endogeneAA);
+                end;
+              end;
+          3: // Entretien
+            for h := 1 to PResSimulP.NbJSim do
+            begin
+              PV := PResSimulP.TabResult[2, h];
+              m75AA := AAm75[CBAA3.ItemIndex];
+              v := v + (m75AA * Power (PV, 0.75));
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                m75AA := AAm75[CBAA3.ItemIndex - 1];
+                v := v + (m75AA * Power (PV, 0.75));
+              end;
+            end;
+          4: // Oxydation minimale
+            for h := 1 to PResSimulP.NbJSim do
+            begin
+              PD := PResSimulP.TabResult[79, h];
+              bodyAA := AAbody[CBAA3.ItemIndex];
+              AAk := kAA[CBAA3.ItemIndex];
+              if AAk <= 1
+              then
+                v := v + (PD * bodyAA / AAk * (1 - AAk));
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                AAk := kAA[CBAA3.ItemIndex - 1];
+                if AAk <= 1
+                then
+                  v := v + (PD * bodyAA / AAk * (1 - AAk));
+              end;
+            end;
+          5: // D�pot
+            for h := 1 to PResSimulP.NbJSim do
+            begin
+              PD := PResSimulP.TabResult[79, h];
+              bodyAA := AAbody[CBAA3.ItemIndex];
+              v := v + (PD * bodyAA);
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                v := v + (PD * bodyAA);
+              end;
+            end;
+          6: // D�s�quilibre
+            if CBAA3.ItemIndex = 12
+            then // Arginine
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                PD := PResSimulP.TabResult[79, h];
+                py1 := PResSimulP.TabResult[77, h];
+                PD3 := py1 / GEProtJaap;
+                PDAA := PResSimulP.TabResult[44, h];
+                AAk := kAA[12];
+                PDapport := PDAA / AAk;
+                bodyAA := AAbody[12];
+                if (PD < PD3) and (PD < PDAA)
+                then
+                  if (PDapport > PD3) or (PD3 < PDAA)
+                  then
+                    v := v + ((PD3 - PD) * bodyAA)
+                  else
+                    v := v + ((PDAA - PD) * bodyAA);
+              end
+            else
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                PDAA := PResSimulP.TabResult[32 + CBAA3.ItemIndex, h];
+                bodyAA := AAbody[CBAA3.ItemIndex];
+                AAk := kAA[CBAA3.ItemIndex];
+                AAAA := PDAA * bodyAA / AAk;
+                PD := PResSimulP.TabResult[79, h];
+                AAPD := PD * bodyAA / AAk;
+                py1 := PResSimulP.TabResult[77, h];
+                AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  PDAA := PResSimulP.TabResult[31 + CBAA3.ItemIndex, h];
+                  bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                  AAk := kAA[CBAA3.ItemIndex - 1];
+                  AAAA := AAAA + (PDAA * bodyAA / AAk);
+                  AAPD := AAPD + (PD * bodyAA / AAk);
+                  AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+                end;
+                if AAPD < AAAA
+                then
+                  if AAAA < AAenergie
+                  then
+                    v := v + (AAAA - AAPD)
+                  else
+                    v := v + (AAenergie - AAPD);
+              end;
+          7: // D�ficit
+            if CBAA3.ItemIndex = 12
+            then // Arginine
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                py1 := PResSimulP.TabResult[77, h];
+                PD3 := py1 / GEProtJaap;
+                PDAA := PResSimulP.TabResult[44, h];
+                bodyAA := AAbody[12];
+                if PDAA < PD3
+                then
+                  v := v + ((PD3 - PDAA) * bodyAA);
+              end
+            else
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                PDAA := PResSimulP.TabResult[32 + CBAA3.ItemIndex, h];
+                bodyAA := AAbody[CBAA3.ItemIndex];
+                AAk := kAA[CBAA3.ItemIndex];
+                AAAA := PDAA * bodyAA / AAk;
+                py1 := PResSimulP.TabResult[77, h];
+                AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  PDAA := PResSimulP.TabResult[31 + CBAA3.ItemIndex, h];
+                  bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                  AAk := kAA[CBAA3.ItemIndex - 1];
+                  AAAA := AAAA + (PDAA * bodyAA / AAk);
+                  AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+                end;
+                if AAAA < AAenergie
+                then
+                  v := v + (AAenergie - AAAA);
+              end;
+          8: // Exc�s
+            if CBAA3.ItemIndex = 12
+            then // Arginine
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                py1 := PResSimulP.TabResult[77, h];
+                PD3 := py1 / GEProtJaap;
+                PDAA := PResSimulP.TabResult[44, h];
+                AAk := kAA[12];
+                PDapport := PDAA / AAk;
+                bodyAA := AAbody[12];
+                if PD3 < PDapport
+                then
+                  v := v + ((PDapport - PD3) * bodyAA);
+              end
+            else
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                PDAA := PResSimulP.TabResult[32 + CBAA3.ItemIndex, h];
+                bodyAA := AAbody[CBAA3.ItemIndex];
+                AAk := kAA[CBAA3.ItemIndex];
+                AAAA := PDAA * bodyAA / AAk;
+                py1 := PResSimulP.TabResult[77, h];
+                AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  PDAA := PResSimulP.TabResult[31 + CBAA3.ItemIndex, h];
+                  bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                  AAk := kAA[CBAA3.ItemIndex - 1];
+                  AAAA := AAAA + (PDAA * bodyAA / AAk);
+                  AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+                end;
+                if AAenergie < AAAA
+                then
+                  v := v + (AAAA - AAenergie);
+              end;
+        end;
+        result := v;
+      end;
+      1: // R�partition dynamique
+      begin
+        // Diviseur
+        if CBAA4.ItemIndex = 1
+        then // Aliment ing�r�
+          d := PResSimulP.TabResult[113, j]
+        else
+          d := 1;
+        case i of
+          0: // Gaspillage
+            if CBAA5.ItemIndex = 2
+            then // Total
+            begin
+              AAingere := PResSimulP.TabResult[93 + CBAA3.ItemIndex, j];
+              Gaspillage := PResSimulP.TabResult[112, j];
+              v := AAingere / (1 - Gaspillage) - AAingere;
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                AAingere := PResSimulP.TabResult[92 + CBAA3.ItemIndex, j];
+                v := v + AAingere / (1 - Gaspillage) - AAingere;
+              end;
+            end
+            else
+              v := 0;
+          1: // Indigestible
+            if CBAA5.ItemIndex = 2
+            then // Total
+            begin
+              AAingere := PResSimulP.TabResult[93 + CBAA3.ItemIndex, j];
+              AAdigestible := PResSimulP.TabResult[19 + CBAA3.ItemIndex, j];
+              v := AAingere - AAdigestible;
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                AAingere := PResSimulP.TabResult[92 + CBAA3.ItemIndex, j];
+                AAdigestible := PResSimulP.TabResult[18 + CBAA3.ItemIndex, j];
+                v := v + (AAingere - AAdigestible);
+              end;
+            end
+            else
+              v := 0;
+          2: // Endog�ne basal
+            if CBAA5.ItemIndex <> 1
+            then // Total ou Digestible standardis�
+            begin
+              IngereSec := PResSimulP.TabResult[106, j] * PResSimulP.TabResult[11, j];
+              endogeneAA := AAendogene[CBAA3.ItemIndex];
+              v := IngereSec * endogeneAA;
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                endogeneAA := AAendogene[CBAA3.ItemIndex - 1];
+                v := v + (IngereSec * endogeneAA);
+              end;
+            end
+            else
+              v := 0;
+          3: // Entretien
+          begin
+            PV := PResSimulP.TabResult[2, j];
+            m75AA := AAm75[CBAA3.ItemIndex];
+            v := m75AA * Power (PV, 0.75);
+            if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+            then // met + cys, phe + tyr
+            begin
+              m75AA := AAm75[CBAA3.ItemIndex - 1];
+              v := v + (m75AA * Power (PV, 0.75));
+            end;
+          end;
+          4: // Oxydation minimale
+          begin
+            PD := PResSimulP.TabResult[79, j];
+            bodyAA := AAbody[CBAA3.ItemIndex];
+            AAk := kAA[CBAA3.ItemIndex];
+            if AAk <= 1
+            then
+              v := PD * bodyAA / AAk * (1 - AAk)
+            else
+              v := 0;
+            if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+            then // met + cys, phe + tyr
+            begin
+              bodyAA := AAbody[CBAA3.ItemIndex - 1];
+              AAk := kAA[CBAA3.ItemIndex - 1];
+              if AAk <= 1
+              then
+                v := v + (PD * bodyAA / AAk * (1 - AAk));
+            end;
+          end;
+          5: // D�pot
+          begin
+            PD := PResSimulP.TabResult[79, j];
+            bodyAA := AAbody[CBAA3.ItemIndex];
+            v := PD * bodyAA;
+            if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+            then // met + cys, phe + tyr
+            begin
+              bodyAA := AAbody[CBAA3.ItemIndex - 1];
+              v := v + (PD * bodyAA);
+            end;
+          end;
+          6: // D�s�quilibre
+            if CBAA3.ItemIndex = 12
+            then // Arginine
+            begin
+              PD := PResSimulP.TabResult[79, j];
+              py1 := PResSimulP.TabResult[77, j];
+              PD3 := py1 / GEProtJaap;
+              PDAA := PResSimulP.TabResult[44, j];
+              AAk := kAA[12];
+              PDapport := PDAA / AAk;
+              bodyAA := AAbody[12];
+              if (PD < PD3) and (PD < PDAA)
+              then
+                if (PDapport > PD3) or (PD3 < PDAA)
+                then
+                  v := (PD3 - PD) * bodyAA
+                else
+                  v := (PDAA - PD) * bodyAA
+              else
+                v := 0;
+            end
+            else
+            begin
+              PDAA := PResSimulP.TabResult[32 + CBAA3.ItemIndex, j];
+              bodyAA := AAbody[CBAA3.ItemIndex];
+              AAk := kAA[CBAA3.ItemIndex];
+              AAAA := PDAA * bodyAA / AAk;
+              PD := PResSimulP.TabResult[79, j];
+              py1 := PResSimulP.TabResult[77, j];
+              AAPD := PD * bodyAA / AAk;
+              AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                PDAA := PResSimulP.TabResult[31 + CBAA3.ItemIndex, j];
+                bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                AAk := kAA[CBAA3.ItemIndex - 1];
+                AAAA := AAAA + (PDAA * bodyAA / AAk);
+                AAPD := AAPD + (PD * bodyAA / AAk);
+                AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+              end;
+              if AAPD < AAAA
+              then
+                if AAAA < AAenergie
+                then
+                  v := AAAA - AAPD
+                else
+                  v := Max (AAenergie - AAPD, 0)
+              else
+                v := 0;
+            end;
+          7: // D�ficit
+            if CBAA3.ItemIndex = 12
+            then // Arginine
+            begin
+              py1 := PResSimulP.TabResult[77, j];
+              PD3 := py1 / GEProtJaap;
+              PDAA := PResSimulP.TabResult[44, j];
+              bodyAA := AAbody[12];
+              if PDAA < PD3
+              then
+                v := (PD3 - PDAA) * bodyAA
+              else
+                v := 0;
+            end
+            else
+            begin
+              PDAA := PResSimulP.TabResult[32 + CBAA3.ItemIndex, j];
+              bodyAA := AAbody[CBAA3.ItemIndex];
+              AAk := kAA[CBAA3.ItemIndex];
+              AAAA := PDAA * bodyAA / AAk;
+              py1 := PResSimulP.TabResult[77, j];
+              AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                PDAA := PResSimulP.TabResult[31 + CBAA3.ItemIndex, j];
+                bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                AAk := kAA[CBAA3.ItemIndex - 1];
+                AAAA := AAAA + (PDAA * bodyAA / AAk);
+                AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+              end;
+              if AAAA < AAenergie
+              then
+                v := AAenergie - AAAA
+              else
+                v := 0;
+            end;
+          8: // Exc�s
+            if CBAA3.ItemIndex = 12
+            then // Arginine
+            begin
+              py1 := PResSimulP.TabResult[77, j];
+              PD3 := py1 / GEProtJaap;
+              PDAA := PResSimulP.TabResult[44, j];
+              AAk := kAA[12];
+              PDapport := PDAA / AAk;
+              bodyAA := AAbody[12];
+              if PD3 < PDapport
+              then
+                v := (PDapport - PD3) * bodyAA
+              else
+                v := 0;
+            end
+            else
+            begin
+              PDAA := PResSimulP.TabResult[32 + CBAA3.ItemIndex, j];
+              bodyAA := AAbody[CBAA3.ItemIndex];
+              AAk := kAA[CBAA3.ItemIndex];
+              AAAA := PDAA * bodyAA / AAk;
+              py1 := PResSimulP.TabResult[77, j];
+              AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                PDAA := PResSimulP.TabResult[31 + CBAA3.ItemIndex, j];
+                bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                AAk := kAA[CBAA3.ItemIndex - 1];
+                AAAA := AAAA + (PDAA * bodyAA / AAk);
+                AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+              end;
+              if AAenergie < AAAA
+              then
+                v := AAAA - AAenergie
+              else
+                v := 0;
+            end;
+          else
+            v := 0;
+        end;
+        result := v / d;
+      end;
+      2: // R�partition par p�riode
+      begin
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1: // Dur�e
+            d := j - k;
+          2: // Aliment ing�r�
+          begin
+            d := 0;
+            for h := k to j - 1 do
+              d := d + PResSimulP.TabResult[113, h];
+          end;
+          else
+            d := 1;
+        end;
+        v := 0;
+        case i of
+          0: // Gaspillage
+            if CBAA5.ItemIndex = 2
+            then // Total
+              for h := k to j - 1 do
+              begin
+                AAingere := PResSimulP.TabResult[93 + CBAA3.ItemIndex, h];
+                Gaspillage := PResSimulP.TabResult[112, h];
+                v := v + AAingere / (1 - Gaspillage) - AAingere;
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  AAingere := PResSimulP.TabResult[92 + CBAA3.ItemIndex, h];
+                  v := v + AAingere / (1 - Gaspillage) - AAingere;
+                end;
+              end;
+          1: // Indigestible
+            if CBAA5.ItemIndex = 2
+            then // Total
+              for h := k to j - 1 do
+              begin
+                AAingere := PResSimulP.TabResult[93 + CBAA3.ItemIndex, h];
+                AAdigestible := PResSimulP.TabResult[19 + CBAA3.ItemIndex, h];
+                v := v + (AAingere - AAdigestible);
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  AAingere := PResSimulP.TabResult[92 + CBAA3.ItemIndex, h];
+                  AAdigestible := PResSimulP.TabResult[18 + CBAA3.ItemIndex, h];
+                  v := v + (AAingere - AAdigestible);
+                end;
+              end;
+          2: // Endog�ne basal
+            if CBAA5.ItemIndex <> 1
+            then // Total ou Digestible standardis�
+              for h := k to j - 1 do
+              begin
+                IngereSec := PResSimulP.TabResult[106, h] * PResSimulP.TabResult[11, h];
+                endogeneAA := AAendogene[CBAA3.ItemIndex];
+                v := v + (IngereSec * endogeneAA);
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  endogeneAA := AAendogene[CBAA3.ItemIndex - 1];
+                  v := v + (IngereSec * endogeneAA);
+                end;
+              end;
+          3: // Entretien
+            for h := k to j - 1 do
+            begin
+              PV := PResSimulP.TabResult[2, h];
+              m75AA := AAm75[CBAA3.ItemIndex];
+              v := v + (m75AA * Power (PV, 0.75));
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                m75AA := AAm75[CBAA3.ItemIndex - 1];
+                v := v + (m75AA * Power (PV, 0.75));
+              end;
+            end;
+          4: // Oxydation minimale
+            for h := k to j - 1 do
+            begin
+              PD := PResSimulP.TabResult[79, h];
+              bodyAA := AAbody[CBAA3.ItemIndex];
+              AAk := kAA[CBAA3.ItemIndex];
+              if AAk <= 1
+              then
+                v := v + (PD * bodyAA / AAk * (1 - AAk));
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                AAk := kAA[CBAA3.ItemIndex - 1];
+                if AAk <= 1
+                then
+                  v := v + (PD * bodyAA / AAk * (1 - AAk));
+              end;
+            end;
+          5: // D�pot
+            for h := k to j - 1 do
+            begin
+              PD := PResSimulP.TabResult[79, h];
+              bodyAA := AAbody[CBAA3.ItemIndex];
+              v := v + (PD * bodyAA);
+              if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+              then // met + cys, phe + tyr
+              begin
+                bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                v := v + (PD * bodyAA);
+              end;
+            end;
+          6: // D�s�quilibre
+            if CBAA3.ItemIndex = 12
+            then // Arginine
+              for h := k to j - 1 do
+              begin
+                PD := PResSimulP.TabResult[79, h];
+                py1 := PResSimulP.TabResult[77, h];
+                PD3 := py1 / GEProtJaap;
+                PDAA := PResSimulP.TabResult[44, h];
+                AAk := kAA[12];
+                PDapport := PDAA / AAk;
+                bodyAA := AAbody[12];
+                if (PD < PD3) and (PD < PDAA)
+                then
+                  if (PDapport > PD3) or (PD3 < PDAA)
+                  then
+                    v := v + ((PD3 - PD) * bodyAA)
+                  else
+                    v := v + ((PDAA - PD) * bodyAA);
+              end
+            else
+              for h := k to j - 1 do
+              begin
+                PDAA := PResSimulP.TabResult[32 + CBAA3.ItemIndex, h];
+                bodyAA := AAbody[CBAA3.ItemIndex];
+                AAk := kAA[CBAA3.ItemIndex];
+                AAAA := PDAA * bodyAA / AAk;
+                PD := PResSimulP.TabResult[79, h];
+                py1 := PResSimulP.TabResult[77, h];
+                AAPD := PD * bodyAA / AAk;
+                AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  PDAA := PResSimulP.TabResult[31 + CBAA3.ItemIndex, h];
+                  bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                  AAk := kAA[CBAA3.ItemIndex - 1];
+                  AAAA := AAAA + (PDAA * bodyAA / AAk);
+                  AAPD := AAPD + (PD * bodyAA / AAk);
+                  AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+                end;
+                if AAPD < AAAA
+                then
+                  if AAAA < AAenergie
+                  then
+                    v := v + (AAAA - AAPD)
+                  else
+                    v := v + (AAenergie - AAPD);
+              end;
+          7: // D�ficit
+            if CBAA3.ItemIndex = 12
+            then // Arginine
+              for h := k to j - 1 do
+              begin
+                py1 := PResSimulP.TabResult[77, h];
+                PD3 := py1 / GEProtJaap;
+                PDAA := PResSimulP.TabResult[44, h];
+                bodyAA := AAbody[12];
+                if PDAA < PD3
+                then
+                  v := v + ((PD3 - PDAA) * bodyAA);
+              end
+            else
+              for h := k to j - 1 do
+              begin
+                PDAA := PResSimulP.TabResult[32 + CBAA3.ItemIndex, h];
+                bodyAA := AAbody[CBAA3.ItemIndex];
+                AAk := kAA[CBAA3.ItemIndex];
+                AAAA := PDAA * bodyAA / AAk;
+                py1 := PResSimulP.TabResult[77, h];
+                AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  PDAA := PResSimulP.TabResult[31 + CBAA3.ItemIndex, h];
+                  bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                  AAk := kAA[CBAA3.ItemIndex - 1];
+                  AAAA := AAAA + (PDAA * bodyAA / AAk);
+                  AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+                end;
+                if AAAA < AAenergie
+                then
+                  v := v + (AAenergie - AAAA);
+              end;
+          8: // Exc�s
+            if CBAA3.ItemIndex = 12
+            then // Arginine
+              for h := k to j - 1 do
+              begin
+                py1 := PResSimulP.TabResult[77, h];
+                PD3 := py1 / GEProtJaap;
+                PDAA := PResSimulP.TabResult[44, h];
+                AAk := kAA[12];
+                PDapport := PDAA / AAk;
+                bodyAA := AAbody[12];
+                if PD3 < PDapport
+                then
+                  v := v + ((PDapport - PD3) * bodyAA);
+              end
+            else
+              for h := k to j - 1 do
+              begin
+                PDAA := PResSimulP.TabResult[32 + CBAA3.ItemIndex, h];
+                bodyAA := AAbody[CBAA3.ItemIndex];
+                AAk := kAA[CBAA3.ItemIndex];
+                AAAA := PDAA * bodyAA / AAk;
+                py1 := PResSimulP.TabResult[77, h];
+                AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  PDAA := PResSimulP.TabResult[31 + CBAA3.ItemIndex, h];
+                  bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                  AAk := kAA[CBAA3.ItemIndex - 1];
+                  AAAA := AAAA + (PDAA * bodyAA / AAk);
+                  AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+                end;
+                if AAenergie < AAAA
+                then
+                  v := v + (AAAA - AAenergie);
+              end;
+        end;
+        result := v / d;
+      end;
+      3: // Besoin et apport
+      begin
+        IngereSec := PResSimulP.TabResult[106, j] * PResSimulP.TabResult[11, j];
+        PV := PResSimulP.TabResult[2, j];
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1: // Lysine
+          begin
+            case i of
+              1: // Apport
+              begin
+                AAdigestible := PResSimulP.TabResult[20, j];
+                case CBAA5.ItemIndex of
+                  0: // Standardis�
+                    d := AAdigestible;
+                  1: // Apparent
+                  begin
+                    endogeneAA := AAendogene[1];
+                    d := AAdigestible
+                      - IngereSec * endogeneAA; // Basal
+                  end;
+                  2: // Total
+                  begin
+                    AAingere := PResSimulP.TabResult[94, j];
+                    d := AAingere;
+                  end;
+                  else
+                    d := 1;
+                end;
+              end;
+              2: // Besoin
+              begin
+                AAk := kAA[1];
+                bodyAA := AAbody[1];
+                m75AA := AAm75[1];
+                py1 := PResSimulP.TabResult[77, j];
+                AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+                case CBAA5.ItemIndex of
+                  0: // Standardis�
+                  begin
+                    endogeneAA := AAendogene[1];
+                    d := AAenergie
+                      + m75AA * Power (PV, 0.75) // Entretien
+                      + IngereSec * endogeneAA; // Basal
+                  end;
+                  1: // Apparent
+                    d := AAenergie
+                      + m75AA * Power (PV, 0.75); // Entretien
+                  else
+                    d := 1;
+                end;
+              end;
+              else
+                d := 1;
+            end;
+            d := d / 100;
+          end;
+          2: // GMQ
+            d := PResSimulP.TabResult[84, j];
+          3: // ED (DEcrois * Ing�r�)
+            d := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[11, j];
+          4: // EM (MEcrois * Ing�r�)
+            d := PResSimulP.TabResult[89, j] * PResSimulP.TabResult[11, j];
+          5: // EN (NEcrois * Ing�r�)
+            d := PResSimulP.TabResult[90, j] * PResSimulP.TabResult[11, j];
+          6: // Aliment ing�r�
+            d := PResSimulP.TabResult[11, j];
+          else
+            d := 1;
+        end;
+        case i of
+          1: // Apport
+          begin
+            AAdigestible := PResSimulP.TabResult[19 + CBAA3.ItemIndex, j];
+            case CBAA5.ItemIndex of
+              0: // Standardis�
+                v := AAdigestible;
+              1: // Apparent
+              begin
+                endogeneAA := AAendogene[CBAA3.ItemIndex];
+                v := AAdigestible
+                  - IngereSec * endogeneAA; // Basal
+              end;
+              2: // Total
+              begin
+                AAingere := PResSimulP.TabResult[93 + CBAA3.ItemIndex, j];
+                v := AAingere;
+              end;
+              else
+                v := 0;
+            end;
+            if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+            then // met + cys, phe + tyr
+            begin
+              AAdigestible := PResSimulP.TabResult[18 + CBAA3.ItemIndex, j];
+              case CBAA5.ItemIndex of
+                0: // Standardis�
+                  v := v + AAdigestible;
+                1: // Apparent
+                begin
+                  endogeneAA := AAendogene[CBAA3.ItemIndex - 1];
+                  v := v + AAdigestible
+                    - IngereSec * endogeneAA; // Basal
+                end;
+                2: // Total
+                begin
+                  AAingere := PResSimulP.TabResult[92 + CBAA3.ItemIndex, j];
+                  v := v + AAingere;
+                end;
+              end;
+            end;
+          end;
+          2: // Besoin
+          begin
+            bodyAA := AAbody[CBAA3.ItemIndex];
+            AAk := kAA[CBAA3.ItemIndex];
+            py1 := PResSimulP.TabResult[77, j];
+            AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+            m75AA := AAm75[CBAA3.ItemIndex];
+            case CBAA5.ItemIndex of
+              0: // Standardis�
+              begin
+                endogeneAA := AAendogene[CBAA3.ItemIndex];
+                v := AAenergie
+                  + m75AA * Power (PV, 0.75) // Entretien
+                  + IngereSec * endogeneAA; // Basal
+              end;
+              1: // Apparent
+                v := AAenergie
+                  + m75AA * Power (PV, 0.75); // Entretien
+              else
+                v := 0;
+            end;
+            if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+            then // met + cys, phe + tyr
+            begin
+              bodyAA := AAbody[CBAA3.ItemIndex - 1];
+              AAk := kAA[CBAA3.ItemIndex - 1];
+              AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+              m75AA := AAm75[CBAA3.ItemIndex - 1];
+              case CBAA5.ItemIndex of
+                0: // Standardis�
+                begin
+                  endogeneAA := AAendogene[CBAA3.ItemIndex - 1];
+                  v := v + AAenergie
+                    + m75AA * Power (PV, 0.75) // Entretien
+                    + IngereSec * endogeneAA; // Basal
+                end;
+                1: // Apparent
+                  v := v + AAenergie
+                    + m75AA * Power (PV, 0.75); // Entretien
+              end;
+            end;
+          end;
+          else
+            v := 0;
+        end;
+        result := v / d;
+      end;
+      else
+        result := 0;
+    end;
+  end;
+
+// AffGraphAA
+begin
+  ResetGraph;
+  Graph.Title.Text.Add(Format('%s (%s)', [CBAA3.Text, CBAA1.Text]));
+  Graph.SubTitle.Text.Add(CBAA5.Text);
+  Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBAA3.Text, CBAA4.Text]);
+  case CBAA1.ItemIndex of
+    0: // R�partition globale
+    begin
+//      Graph.View3D := TRUE;
+      Graph.Legend.Visible := FALSE;
+      csv := '';
+      for i := 0 to ListAA.Count - 1 do
+        csv := csv + Format('%s (%s)', [ListAA[i], CBAA4.Text]) + ';';
+      MExport.Lines.Append(csv);
+      // Affichage du camembert
+      PieAA.Active := TRUE;
+      PieAA.Clear;
+      if CBAA4.ItemIndex = 1
+      then
+        PieAA.Marks.Style := smsLabelPercent
+      else
+        PieAA.Marks.Style := smsLabelValue;
+      t := 0;
+      csv := '';
+      for k := 0 to ListAA.Count - 1 do
+      begin
+        i := TriAA[k];
+        y := AAY;
+        if y > PICO
+        then
+          PieAA.AddPie(y, ListAA[i], AreaAA[i].SeriesColor);
+        t := t + y;
+        csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+      end;
+      Graph.SubTitle.Text.Add(Format('%s = %1.0f %s', [StrTotal, t, StrG]));
+      MExport.Lines.Append(csv);
+    end;
+    1: // R�partition dynamique
+    begin
+      Graph.BottomAxis.Title.Caption := CBAA2D.Text;
+      csv := CBAA2D.Text;
+      for i := 0 to ListAA.Count - 1 do
+        csv := csv + ';' + Format('%s (%s)', [ListAA[i], CBAA4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des aires
+      for i := 0 to ListAA.Count - 1 do
+        AreaAA[i].Active := TRUE;
+      for i := 0 to ListAA.Count - 1 do
+        AreaAA[i].Clear;
+      if CBAA4.ItemIndex = 2
+      then
+        for i := 0 to ListAA.Count - 1 do
+          AreaAA[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListAA.Count - 1 do
+          AreaAA[i].MultiArea := maStacked;
+      for j := 1 to PResSimulP.NbJSim do
+      begin
+        csv := FloatToStrF(AAX, ffFixed, 15, 15);
+        for i := 0 to ListAA.Count - 1 do
+        begin
+          AreaAA[i].AddXY(AAX, AAY, '', clTeeColor);
+          csv := csv + ';' + FloatToStrF(AAY, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+      if CBAA2D.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+    2: // R�partition par p�riode
+    begin
+      Graph.BottomAxis.Title.Caption := CBAA2P.Text;
+      csv := CBAA2P.Text;
+      for i := 0 to ListAA.Count - 1 do
+        csv := csv + ';' + Format('%s (%s)', [ListAA[i], CBAA4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des barres
+      for i := 0 to ListAA.Count - 1 do
+        BarAA[i].Active := TRUE;
+      for i := 0 to ListAA.Count - 1 do
+        BarAA[i].Clear;
+      if CBAA4.ItemIndex = 3
+      then
+        for i := 0 to ListAA.Count - 1 do
+          BarAA[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListAA.Count - 1 do
+          BarAA[i].MultiBar := mbStacked;
+      j := 1;
+      x := AAX;
+      k := 1;
+      if PResSimulP.NbJSim > 1
+      then
+        for j := 2 to PResSimulP.NbJSim do
+        begin
+          p := AAX;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            s := Format('%1.0f', [x]);
+            csv := s;
+            for i := 0 to ListAA.Count - 1 do
+            begin
+              y := AAY;
+              if y > PICO
+              then
+                BarAA[i].AddBar(y, s, clTeeColor)
+              else
+                BarAA[i].AddNull(s);
+              csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+            end;
+            MExport.Lines.Append(csv);
+            x := p;
+            k := j;
+          end;
+        end;
+      j := PResSimulP.NbJSim + 1;
+      if j > k
+      then
+      begin
+        if CBAA2P.ItemIndex = 3
+        then // Globale
+          s := ' '
+        else
+          s := Format('%1.0f', [x]);
+        csv := s;
+        for i := 0 to ListAA.Count - 1 do
+        begin
+          y := AAY;
+          if y > PICO
+          then
+            BarAA[i].AddBar(y, s, clTeeColor)
+          else
+            BarAA[i].AddNull(s);
+          csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+    end;
+    3: // Besoin et apport
+    begin
+      Graph.BottomAxis.Title.Caption := CBAA2D.Text;
+      Graph.Legend.Alignment := laTop;
+      csv := CBAA2D.Text;
+      if CBAA5.ItemIndex = 2
+      then // En digestibilit� totale, seul l'apport est affich�
+        csv := csv + ';' + Format('%s (%s)', [LineAA[1].Title, CBAA4.Text])
+      else
+        for i := 1 to 3 do
+          csv := csv + ';' + Format('%s (%s)', [LineAA[i].Title, CBAA4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des lignes
+      LineAA[1].Active := TRUE;
+      if CBAA5.ItemIndex <> 2
+      then // En digestibilit� totale, le besoin n'a pas de sens
+      begin
+        LineAA[3].Active := TRUE;
+        if (CBAA4.ItemIndex <> 1) and (CBAA4.ItemIndex <> 2)
+        then // Besoin de la population
+          LineAA[2].Active := TRUE;
+      end;
+      for i := 1 to 3 do
+        LineAA[i].Clear;
+      for j := 1 to PResSimulP.NbJSim do
+      begin
+        x := AAX;
+        csv := FloatToStrF(x, ffFixed, 15, 15);
+        // Apport
+        i := 1;
+        y := AAY;
+        LineAA[1].AddXY (x, y, '', clTeeColor);
+        csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+        // Besoin
+        i := 2;
+        if CBAA5.ItemIndex <> 2
+        then // En digestibilit� totale, le besoin n'a pas de sens
+        begin
+          y := AAY;
+          if CBAA4.ItemIndex = 2
+          then // Cas particulier : Besoin / GMQ
+          begin
+            PD := PResSimulP.TabResult[79, j];
+            py1 := PResSimulP.TabResult[77, j];
+            if PD < py1 / GEProtJaap - PICO
+            then // Cas limitant -> non affich�
+              LineAA[3].AddNullXY(x, y, '')
+            else // Cas non limitant -> affich�
+              LineAA[3].AddXY(x, y, '', clTeeColor);
+          end
+          else
+            LineAA[3].AddXY(x, y, '', clTeeColor);
+          if (CBAA4.ItemIndex <> 1) and (CBAA4.ItemIndex <> 2)
+          then // Besoin de la population (+10%)
+            LineAA[2].AddXY(x, y * 1.1, '', clTeeColor);
+          csv := csv + ';' + FloatToStrF(y * 1.1, ffFixed, 15, 15);
+          csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+      if CBAA2D.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+  end;
+  if PieAA.Active
+  then
+  begin
+    Graph.View3DOptions.Orthogonal := FALSE;
+    Graph.View3DOptions.Elevation := 315;
+    Graph.View3DOptions.Rotation := 360;
+    Graph.View3DOptions.Perspective := 0;
+  end
+  else
+  begin
+    Graph.View3DOptions.Orthogonal := TRUE;
+    Graph.View3DOptions.Elevation := 345;
+    Graph.View3DOptions.Rotation := 345;
+    Graph.View3DOptions.Perspective := 15;
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFResSimulP.CBAA1Change(Sender: TObject);
+begin
+  CBAA4.Items.Clear;
+  case CBAA1.ItemIndex of
+    0: // R�partition globale
+    begin
+      CBAA2D.Visible := FALSE;
+      CBAA2P.Visible := FALSE;
+      // Unit�s
+      CBAA4.Items.Add(StrG);
+      CBAA4.Items.Add('%');
+    end;
+    1: // R�partition dynamique
+    begin
+      CBAA2D.Visible := TRUE;
+      CBAA2P.Visible := FALSE;
+      // Unit�s
+      CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+      CBAA4.Items.Add('%');
+    end;
+    2: // R�partition par p�riode
+    begin
+      CBAA2D.Visible := FALSE;
+      CBAA2P.Visible := TRUE;
+      // Unit�s
+      CBAA4.Items.Add(StrG);
+      CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+      CBAA4.Items.Add('%');
+    end;
+    3: // Besoin et apport
+    begin
+      if AffBesoin
+      then
+      begin
+        FWarning := TFWarning.Create (Self);
+        with FWarning do
+        begin
+          Msg := 'Besoin';
+          ShowModal;
+          Release;
+          AffBesoin := FALSE;
+        end;
+      end;
+      CBAA2D.Visible := TRUE;
+      CBAA2P.Visible := FALSE;
+      // Unit�s
+      CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+      CBAA4.Items.Add(Format('%% %s', [StrLys]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrGMQUnit]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrED]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrEM]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrEN]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+    end;
+  end;
+  CBAA4.ItemIndex := 0;
+  AffGraphAA;
+end;
+
+procedure TFResSimulP.CBAA2Change(Sender: TObject);
+begin
+  AffGraphAA;
+end;
+
+procedure TFResSimulP.CBAA3Change(Sender: TObject);
+begin
+  AffGraphAA;
+end;
+
+procedure TFResSimulP.CBAA4Change(Sender: TObject);
+begin
+  AffGraphAA;
+end;
+
+procedure TFResSimulP.CBAA5Change(Sender: TObject);
+begin
+  AffGraphAA;
+end;
+
+/////////////////
+//   Energie   //
+/////////////////
+procedure TFResSimulP.InitNRJ;
+const
+  TabColor1: array[0..7] of TColor
+    = (clBlack, clTeal, clYellow, clOlive, clGray, clFuchsia, clBlue, clLime);
+  TabColor2: array[1..2] of TColor
+    = (clGreen, clRed);
+var
+  i: integer;
+begin
+  // ListNRJ : liste pour l'�nergie
+  ListNRJ := TStringList.Create;
+  ListNRJ.Assign(LBNRJ.Items);
+  // PieNRJ : s�rie (camembert) graphique
+  PieNRJ := TPieSeries.Create(Graph);
+  PieNRJ.ParentChart := Graph;
+  PieNRJ.Circled := TRUE;
+  PieNRJ.Marks.ArrowLength := 24;
+  PieNRJ.Marks.Arrow.Color := clBlack;
+  PieNRJ.Marks.Brush.Style := bsClear;
+  PieNRJ.Marks.Frame.Visible := FALSE;
+  PieNRJ.ValueFormat := Format('# ##0 %s', [StrMJ]);
+  PieNRJ.PercentFormat := '##0 %';
+  Graph.AddSeries(PieNRJ);
+  // AreaNRJ : s�ries (aires) graphiques
+  SetLength(AreaNRJ, ListNRJ.Count);
+  for i := 0 to ListNRJ.Count - 1 do
+  begin
+    AreaNRJ[i] := TAreaSeries.Create(Graph);
+    AreaNRJ[i].ParentChart := Graph;
+    AreaNRJ[i].Title := ListNRJ[i];
+    AreaNRJ[i].SeriesColor := TabColor1[i];
+    AreaNRJ[i].AreaLinesPen.Visible := FALSE;
+    Graph.AddSeries(AreaNRJ[i]);
+  end;
+  // BarNRJ : s�ries (barres) graphiques
+  SetLength(BarNRJ, ListNRJ.Count);
+  for i := 0 to ListNRJ.Count - 1 do
+  begin
+    BarNRJ[i] := TBarSeries.Create(Graph);
+    BarNRJ[i].ParentChart := Graph;
+    BarNRJ[i].Title := ListNRJ[i];
+    BarNRJ[i].SeriesColor := TabColor1[i];
+    BarNRJ[i].BarPen.Color := BarNRJ[i].SeriesColor;
+    BarNRJ[i].Marks.Visible := FALSE;
+    Graph.AddSeries(BarNRJ[i]);
+  end;
+  // LineNRJ : s�ries (lignes) graphiques
+  for i := 1 to 2 do
+  begin
+    LineNRJ[i] := TLineSeries.Create(Graph);
+    LineNRJ[i].ParentChart := Graph;
+//    LineNRJ[i].Title := ' ';
+    LineNRJ[i].SeriesColor := TabColor2[i];
+    LineNRJ[i].LinePen.Color := LineNRJ[i].SeriesColor;
+    LineNRJ[i].LinePen.Width := 3 - i;
+    Graph.AddSeries(LineNRJ[i]);
+  end;
+end;
+
+procedure TFResSimulP.AffGraphNRJ;
+var
+  i, j, k: integer;
+  x, y, t, p: double;
+  s, csv: string;
+
+  // Abscisse
+  function NRJX: double;
+  begin
+    case CBNRJ1.ItemIndex of
+      1: // R�partition dynamique
+        case CBNRJ2D.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      2: // R�partition par p�riode
+        case CBNRJ2P.ItemIndex of
+          0: // Semaine
+            result := (j - 1) div 7 + 1;
+          1: // R�gle qualit�
+            result := PResSimulP.TabResult[3, j];
+          2: // R�gle quantit�
+            result := PResSimulP.TabResult[5, j];
+          else
+            result := 0;
+          end;
+      3: // Energie retenue
+        case CBNRJ2D.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      4: // Valeurs �nerg�tiques
+        case CBNRJ2D.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e
+  function NRJY: double;
+  var
+    h: integer;
+    v, d, PV, EBing, EDing, {MAD, MGD, CBD, Amidon, Sucre, ResiduD,} MEintake,
+      PDfreeNEintake, PDfreeNEreq, FHP60, kdiet, Standing, Entretien, Activite,
+      energyPD, energyLD, px1, py1, F, a, b, PD, LD, p, l, NEcrois, NEmAL, NEm,
+      dietNE, mrPDen, mrPDen2, mrLD, mrLD2, MEcrois, NEintake, Gaspillage: double;
+  begin
+    case CBNRJ1.ItemIndex of
+      0: // R�partition globale
+      begin
+        v := 0;
+        case i of
+          0: // Gaspillage
+            if CBNRJ3.ItemIndex = 0
+            then // EB
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                EBing := PResSimulP.TabResult[12, h];
+                Gaspillage := PResSimulP.TabResult[112, h];
+                v := v + EBing / (1 - Gaspillage) - EBing;
+              end;
+          1: // Indigestible
+            if CBNRJ3.ItemIndex = 0
+            then // EB
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                EBing := PResSimulP.TabResult[12, h];
+                EDing := PResSimulP.TabResult[109, h] * PResSimulP.TabResult[11, h];
+                v := v + (EBing - EDing);
+              end;
+          2: // M�thane et urines
+            if CBNRJ3.ItemIndex <= 1
+            then // EB ou ED
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                EDing := PResSimulP.TabResult[109, h] * PResSimulP.TabResult[11, h];
+                MEintake := PResSimulP.TabResult[86, h] / 1000;
+                v := v + (EDing - MEintake);
+              end;
+          3: // Entretien
+            for h := 1 to PResSimulP.NbJSim do
+            begin
+              FHP60 := PResSimulP.TabResult[91, h] / 1000;
+              PV := PResSimulP.TabResult[2, h];
+              if CBNRJ3.ItemIndex = 3
+              then // EN
+                Entretien := PProfilP.Entretien * kBR * FHP60 * Power (PV, 0.6)
+              else // EB, ED ou EM
+              begin
+                PDfreeNEintake := PResSimulP.TabResult[65, h] / 1000;
+                MEintake := PResSimulP.TabResult[86, h] / 1000;
+                energyPD := PResSimulP.TabResult[66, h] / 1000;
+                kdiet := PDfreeNEintake / (MEintake - energyPD);
+                Entretien := PProfilP.Entretien * kBR * FHP60 * Power (PV, 0.6) / kdiet;
+              end;
+              v := v + Entretien;
+            end;
+          4: // Activit�
+            for h := 1 to PResSimulP.NbJSim do
+            begin
+              Standing := PResSimulP.TabResult[70, h];
+              PV := PResSimulP.TabResult[2, h];
+              if CBNRJ3.ItemIndex = 3
+              then // EN
+                Activite := Standing * (NEact60h / 1000) * Power (PV, 0.6)
+              else // EB, ED ou EM
+              begin
+                PDfreeNEintake := PResSimulP.TabResult[65, h] / 1000;
+                MEintake := PResSimulP.TabResult[86, h] / 1000;
+                energyPD := PResSimulP.TabResult[66, h] / 1000;
+                kdiet := PDfreeNEintake / (MEintake - energyPD);
+                Activite := Standing * (NEact60h / 1000) * Power (PV, 0.6) / kdiet;
+              end;
+              v := v + Activite;
+            end;
+          5: // Extrachaleur
+            if CBNRJ3.ItemIndex <= 2
+            then // EB ou ED ou EM
+              for h := 1 to PResSimulP.NbJSim do
+              begin
+                MEintake := PResSimulP.TabResult[86, h] / 1000;
+                energyPD := PResSimulP.TabResult[66, h] / 1000;
+                PDfreeNEintake := PResSimulP.TabResult[65, h] / 1000;
+                PDfreeNEreq := PResSimulP.TabResult[73, h] / 1000;
+                energyLD := PDfreeNEintake - PDfreeNEreq;
+                FHP60 := PResSimulP.TabResult[91, h] / 1000;
+                PV := PResSimulP.TabResult[2, h];
+                kdiet := PDfreeNEintake / (MEintake - energyPD);
+                Entretien := PProfilP.Entretien * kBR * FHP60 * Power (PV, 0.6) / kdiet;
+                Standing := PResSimulP.TabResult[70, h];
+                Activite := Standing * (NEact60h / 1000) * Power (PV, 0.6) / kdiet;
+                v := v + (MEintake - (energyPD + energyLD + Entretien + Activite));
+              end;
+          6: // Prot�ines
+            for h := 1 to PResSimulP.NbJSim do
+            begin
+              energyPD := PResSimulP.TabResult[66, h] / 1000;
+              v := v + energyPD;
+            end;
+          7: // Lipides
+            for h := 1 to PResSimulP.NbJSim do
+            begin
+              PDfreeNEintake := PResSimulP.TabResult[65, h] / 1000;
+              PDfreeNEreq := PResSimulP.TabResult[73, h] / 1000;
+              energyLD := PDfreeNEintake - PDfreeNEreq;
+              v := v + energyLD;
+            end;
+        end;
+        result := v;
+      end;
+      1: // R�partition dynamique
+      begin
+        // Diviseur
+        case CBNRJ4.ItemIndex of
+          1: // PV^0.60
+            d := Power (PResSimulP.TabResult[2, j], 0.60);
+          2: // PV^0.75
+            d := Power (PResSimulP.TabResult[2, j], 0.75);
+          3: // Aliment
+            d := PResSimulP.TabResult[113, j];
+          else
+            d := 1;
+        end;
+        case i of
+          0: // Gaspillage
+            if CBNRJ3.ItemIndex = 0
+            then // EB
+            begin
+              EBing := PResSimulP.TabResult[12, j];
+              Gaspillage := PResSimulP.TabResult[112, j];
+              v := EBing / (1 - Gaspillage) - EBing;
+            end
+            else
+              v := 0;
+          1: // Indigestible
+            if CBNRJ3.ItemIndex = 0
+            then // EB
+            begin
+              EBing := PResSimulP.TabResult[12, j];
+              EDing := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[11, j];
+              v := EBing - EDing;
+            end
+            else
+              v := 0;
+          2: // M�thane et urines
+            if CBNRJ3.ItemIndex <= 1
+            then // EB ou ED
+            begin
+              EDing := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[11, j];
+              MEintake := PResSimulP.TabResult[86, j] / 1000;
+              v := EDing - MEintake;
+            end
+            else
+              v := 0;
+          3: // Entretien
+          begin
+            FHP60 := PResSimulP.TabResult[91, j] / 1000;
+            PV := PResSimulP.TabResult[2, j];
+            if CBNRJ3.ItemIndex = 3
+            then // EN
+              Entretien := PProfilP.Entretien * kBR * FHP60 * Power (PV, 0.6)
+            else // EB, ED ou EM
+            begin
+              PDfreeNEintake := PResSimulP.TabResult[65, j] / 1000;
+              MEintake := PResSimulP.TabResult[86, j] / 1000;
+              energyPD := PResSimulP.TabResult[66, j] / 1000;
+              kdiet := PDfreeNEintake / (MEintake - energyPD);
+              Entretien := PProfilP.Entretien * kBR * FHP60 * Power (PV, 0.6) / kdiet;
+            end;
+            v := Entretien;
+          end;
+          4: // Activit�
+          begin
+            Standing := PResSimulP.TabResult[70, j];
+            PV := PResSimulP.TabResult[2, j];
+            if CBNRJ3.ItemIndex = 3
+            then // EN
+              Activite := Standing * (NEact60h / 1000) * Power (PV, 0.6)
+            else // EB, ED ou EM
+            begin
+              PDfreeNEintake := PResSimulP.TabResult[65, j] / 1000;
+              MEintake := PResSimulP.TabResult[86, j] / 1000;
+              energyPD := PResSimulP.TabResult[66, j] / 1000;
+              kdiet := PDfreeNEintake / (MEintake - energyPD);
+              Activite := Standing * (NEact60h / 1000) * Power (PV, 0.6) / kdiet;
+            end;
+            v := Activite;
+          end;
+          5: // Extrachaleur
+            if CBNRJ3.ItemIndex <= 2
+            then // EB ou ED ou EM
+            begin
+              MEintake := PResSimulP.TabResult[86, j] / 1000;
+              energyPD := PResSimulP.TabResult[66, j] / 1000;
+              PDfreeNEintake := PResSimulP.TabResult[65, j] / 1000;
+              PDfreeNEreq := PResSimulP.TabResult[73, j] / 1000;
+              energyLD := PDfreeNEintake - PDfreeNEreq;
+              FHP60 := PResSimulP.TabResult[91, j] / 1000;
+              PV := PResSimulP.TabResult[2, j];
+              kdiet := PDfreeNEintake / (MEintake - energyPD);
+              Entretien := PProfilP.Entretien * kBR * FHP60 * Power (PV, 0.6) / kdiet;
+              Standing := PResSimulP.TabResult[70, j];
+              Activite := Standing * (NEact60h / 1000) * Power (PV, 0.6) / kdiet;
+              v := MEintake - (energyPD + energyLD + Entretien + Activite);
+            end
+            else
+              v := 0;
+          6: // Prot�ines
+          begin
+            energyPD := PResSimulP.TabResult[66, j] / 1000;
+            v := energyPD;
+          end;
+          7: // Lipides
+          begin
+            PDfreeNEintake := PResSimulP.TabResult[65, j] / 1000;
+            PDfreeNEreq := PResSimulP.TabResult[73, j] / 1000;
+            energyLD := PDfreeNEintake - PDfreeNEreq;
+            v := energyLD;
+          end;
+          else
+            v := 0;
+        end;
+        result := v / d;
+      end;
+      2: // R�partition par p�riode
+      begin
+        // Diviseur
+        case CBNRJ4.ItemIndex of
+          1: // Dur�e
+            d := j - k;
+          2: // Aliment
+          begin
+            d := 0;
+            for h := k to j - 1 do
+              d := d + PResSimulP.TabResult[113, h];
+          end;
+          else
+            d := 1;
+        end;
+        v := 0;
+        case i of
+          0: // Gaspillage
+            if CBNRJ3.ItemIndex = 0
+            then // EB
+              for h := k to j - 1 do
+              begin
+                EBing := PResSimulP.TabResult[12, h];
+                Gaspillage := PResSimulP.TabResult[112, h];
+                v := v + EBing / (1 - Gaspillage) - EBing;
+              end;
+          1: // Indigestible
+            if CBNRJ3.ItemIndex = 0
+            then // EB
+              for h := k to j - 1 do
+              begin
+                EBing := PResSimulP.TabResult[12, h];
+                EDing := PResSimulP.TabResult[109, h] * PResSimulP.TabResult[11, h];
+                v := v + (EBing - EDing);
+              end;
+          2: // M�thane et urines
+            if CBNRJ3.ItemIndex <= 1
+            then // EB ou ED
+              for h := k to j - 1 do
+              begin
+                EDing := PResSimulP.TabResult[109, h] * PResSimulP.TabResult[11, h];
+                MEintake := PResSimulP.TabResult[86, h] / 1000;
+                v := v + (EDing - MEintake);
+              end;
+          3: // Entretien
+            for h := k to j - 1 do
+            begin
+              FHP60 := PResSimulP.TabResult[91, h] / 1000;
+              PV := PResSimulP.TabResult[2, h];
+              if CBNRJ3.ItemIndex = 3
+              then // EN
+                Entretien := PProfilP.Entretien * kBR * FHP60 * Power (PV, 0.6)
+              else // EB, ED ou EM
+              begin
+                PDfreeNEintake := PResSimulP.TabResult[65, h] / 1000;
+                MEintake := PResSimulP.TabResult[86, h] / 1000;
+                energyPD := PResSimulP.TabResult[66, h] / 1000;
+                kdiet := PDfreeNEintake / (MEintake - energyPD);
+                Entretien := PProfilP.Entretien * kBR * FHP60 * Power (PV, 0.6) / kdiet;
+              end;
+              v := v + Entretien;
+            end;
+          4: // Activit�
+            for h := k to j - 1 do
+            begin
+              Standing := PResSimulP.TabResult[70, h];
+              PV := PResSimulP.TabResult[2, h];
+              if CBNRJ3.ItemIndex = 3
+              then // EN
+                Activite := Standing * (NEact60h / 1000) * Power (PV, 0.6)
+              else // EB, ED ou EM
+              begin
+                PDfreeNEintake := PResSimulP.TabResult[65, h] / 1000;
+                MEintake := PResSimulP.TabResult[86, h] / 1000;
+                energyPD := PResSimulP.TabResult[66, h] / 1000;
+                kdiet := PDfreeNEintake / (MEintake - energyPD);
+                Activite := Standing * (NEact60h / 1000) * Power (PV, 0.6) / kdiet;
+              end;
+              v := v + Activite;
+            end;
+          5: // Extrachaleur
+            if CBNRJ3.ItemIndex <= 2
+            then // EB ou ED ou EM
+              for h := k to j - 1 do
+              begin
+                MEintake := PResSimulP.TabResult[86, h] / 1000;
+                energyPD := PResSimulP.TabResult[66, h] / 1000;
+                PDfreeNEintake := PResSimulP.TabResult[65, h] / 1000;
+                PDfreeNEreq := PResSimulP.TabResult[73, h] / 1000;
+                energyLD := PDfreeNEintake - PDfreeNEreq;
+                FHP60 := PResSimulP.TabResult[91, h] / 1000;
+                PV := PResSimulP.TabResult[2, h];
+                kdiet := PDfreeNEintake / (MEintake - energyPD);
+                Entretien := PProfilP.Entretien * kBR * FHP60 * Power (PV, 0.6) / kdiet;
+                Standing := PResSimulP.TabResult[70, h];
+                Activite := Standing * (NEact60h / 1000) * Power (PV, 0.6) / kdiet;
+                v := v + (MEintake - (energyPD + energyLD + Entretien + Activite));
+              end;
+          6: // Prot�ines
+            for h := k to j - 1 do
+            begin
+              energyPD := PResSimulP.TabResult[66, h] / 1000;
+              v := v + energyPD;
+            end;
+          7: // Lipides
+            for h := k to j - 1 do
+            begin
+              PDfreeNEintake := PResSimulP.TabResult[65, h] / 1000;
+              PDfreeNEreq := PResSimulP.TabResult[73, h] / 1000;
+              energyLD := PDfreeNEintake - PDfreeNEreq;
+              v := v + energyLD;
+            end;
+        end;
+        result := v / d;
+      end;
+      3: // Energie retenue
+        case CBNRJ3R.ItemIndex of
+          0: // PD marginal
+            case i of
+              1: // Acides amin�s non limitants
+              begin
+                px1 := PResSimulP.TabResult[76, j];
+                F := PResSimulP.TabResult[52, j];
+                if px1 < F
+                then
+                begin
+                  a := PResSimulP.TabResult[74, j];
+                  b := PResSimulP.TabResult[75, j];
+                  NEcrois := PResSimulP.TabResult[90, j];
+                  NEmAL := PResSimulP.TabResult[71, j];
+                  mrPDen := (a + 2 * b * (px1 - 1)) * (NEcrois * 1000) / NEmAL;
+                end
+                else
+                  mrPDen := 0;
+                result := mrPDen / GEProtJaap;
+              end;
+              2: // Acides amin�s potentiellement limitants
+              begin
+                PD := PResSimulP.TabResult[79, j];
+                py1 := PResSimulP.TabResult[77, j];
+                if (py1 / GEProtJaap - PICO < PD)
+                  and (PD < py1 / GEProtJaap + PICO)
+                then
+                begin
+                  px1 := PResSimulP.TabResult[76, j];
+                  F := PResSimulP.TabResult[52, j];
+                  if px1 < F
+                  then
+                  begin
+                    a := PResSimulP.TabResult[74, j];
+                    b := PResSimulP.TabResult[75, j];
+                    NEcrois := PResSimulP.TabResult[90, j];
+                    NEmAL := PResSimulP.TabResult[71, j];
+                    mrPDen := (a + 2 * b * (px1 - 1)) * (NEcrois * 1000) / NEmAL;
+                  end
+                  else
+                    mrPDen := 0;
+                  mrPDen2 := mrPDen
+                end
+                else
+                  mrPDen2 := 0;
+                result := mrPDen2 / GEProtJaap;
+              end;
+              else
+                result := 0;
+            end;
+          1: // X
+            case i of
+              1: // Acides amin�s non limitants
+              begin
+                px1 := PResSimulP.TabResult[76, j];
+                py1 := PResSimulP.TabResult[77, j];
+                NEmAL := PResSimulP.TabResult[71, j];
+                result := (1 + NEPD) * py1 / ((px1 - 1) * NEmAL);
+              end;
+              2: // Acides amin�s potentiellement limitants
+              begin
+                px1 := PResSimulP.TabResult[76, j];
+                PD := PResSimulP.TabResult[79, j];
+                NEmAL := PResSimulP.TabResult[71, j];
+                result := (1 + NEPD) * (PD * GEProtJaap) / ((px1 - 1) * NEmAL);
+              end;
+              else
+                result := 0;
+            end;
+          2: // LD / PD
+            case i of
+              1: // Acides amin�s non limitants
+              begin
+                LD := PResSimulP.TabResult[80, j];
+                PD := PResSimulP.TabResult[79, j];
+                result := LD / PD;
+              end;
+              2: // Acides amin�s potentiellement limitants
+              begin
+                PDfreeNEintake := PResSimulP.TabResult[65, j];
+                NEm := PResSimulP.TabResult[72, j];
+                py1 := PResSimulP.TabResult[77, j];
+                result := (((PDfreeNEintake - NEm) - py1 * NEPD)
+                  / ValEnergie[2, 2]) / (py1 / GEProtJaap);
+              end;
+              else
+                result := 0;
+            end;
+          3: // (PD / LD) marginal
+            case i of
+              1: // Acides amin�s non limitants
+              begin
+                px1 := PResSimulP.TabResult[76, j];
+                F := PResSimulP.TabResult[52, j];
+                if px1 < F
+                then
+                begin
+                  a := PResSimulP.TabResult[74, j];
+                  b := PResSimulP.TabResult[75, j];
+                  NEcrois := PResSimulP.TabResult[90, j];
+                  NEmAL := PResSimulP.TabResult[71, j];
+                  mrPDen := (a + 2 * b * (px1 - 1)) * (NEcrois * 1000) / NEmAL;
+                end
+                else
+                  mrPDen := 0;
+                dietNE := PResSimulP.TabResult[88, j];
+                mrLD := (dietNE * 1000 - mrPDen * (1 + NEPD)) / ValEnergie[2, 2];
+                result := (mrPDen / GEProtJaap) / mrLD;
+              end;
+              2: // Acides amin�s potentiellement limitants
+              begin
+                PD := PResSimulP.TabResult[79, j];
+                py1 := PResSimulP.TabResult[77, j];
+                if (py1 / GEProtJaap - PICO < PD)
+                  and (PD < py1 / GEProtJaap + PICO)
+                then
+                begin
+                  px1 := PResSimulP.TabResult[76, j];
+                  F := PResSimulP.TabResult[52, j];
+                  if px1 < F
+                  then
+                  begin
+                    a := PResSimulP.TabResult[74, j];
+                    b := PResSimulP.TabResult[75, j];
+                    NEcrois := PResSimulP.TabResult[90, j];
+                    NEmAL := PResSimulP.TabResult[71, j];
+                    mrPDen := (a + 2 * b * (px1 - 1)) * (NEcrois * 1000) / NEmAL;
+                  end
+                  else
+                    mrPDen := 0;
+                  mrPDen2 := mrPDen
+                end
+                else
+                  mrPDen2 := 0;
+                dietNE := PResSimulP.TabResult[88, j];
+                mrLD2 := (dietNE * 1000 - mrPDen2 * (1 + NEPD))
+                  / ValEnergie[2, 2];
+                result := (mrPDen2 / GEProtJaap) / mrLD2;
+              end;
+              else
+                result := 0;
+            end;
+          4: // l / p
+            case i of
+              1: // Acides amin�s non limitants
+                result := 0;
+              2: // Acides amin�s potentiellement limitants
+              begin
+                l := PResSimulP.TabResult[82, j];
+                p := PResSimulP.TabResult[81, j];
+                result := l / p;
+              end;
+              else
+                result := 0;
+            end;
+          else
+            result := 0;
+        end;
+      4: // Valeurs �nerg�tiques
+      begin
+        // Diviseur
+        case CBNRJ4.ItemIndex of
+          1: // PV^0.60
+            d := Power (PResSimulP.TabResult[2, j], 0.60);
+          2: // PV^0.75
+            d := Power (PResSimulP.TabResult[2, j], 0.75);
+          3: // Aliment ing�r�
+            d := PResSimulP.TabResult[11, j];
+          4: // GMQ
+            d := PResSimulP.TabResult[84, j];
+          else
+            d := 1;
+        end;
+        case CBNRJ3V.ItemIndex of
+          0: // Energie digestible
+          begin
+            EDing := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[11, j];
+            v := EDing;
+          end;
+          1: // Energie m�tabolisable
+            case i of
+              1: // Valeur calcul�e
+              begin
+                MEcrois := PResSimulP.TabResult[89, j];
+                v := MEcrois * PResSimulP.TabResult[11, j];
+              end;
+              2: // Valeur simul�e
+              begin
+                MEintake := PResSimulP.TabResult[86, j] / 1000;
+                v := MEintake;
+              end;
+              else
+                v := 0;
+            end;
+          2: // Energie nette
+            case i of
+              1: // Valeur calcul�e
+              begin
+                NEcrois := PResSimulP.TabResult[90, j];
+                v := NEcrois * PResSimulP.TabResult[11, j];
+              end;
+              2: // Valeur simul�e
+              begin
+                NEintake := PResSimulP.TabResult[67, j];
+                PD := PResSimulP.TabResult[79, j];
+                v := (NEintake - PD * GEProtJaap * NEPD) / 1000;
+              end;
+              else
+                v := 0;
+            end;
+          else
+            v := 0;
+        end;
+        result := v / d;
+      end;
+      else
+        result := 0;
+    end;
+  end;
+
+// AffGraphNRJ
+begin
+  ResetGraph;
+  case CBNRJ1.ItemIndex of
+    0: // R�partition globale
+    begin
+      Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]);
+//      Graph.View3D := TRUE;
+      Graph.Legend.Visible := FALSE;
+      Graph.Title.Text.Add(Format('%s (%s)', [CBNRJ3.Text, CBNRJ1.Text]));
+      csv := '';
+      for i := 0 to ListNRJ.Count - 1 do
+        csv := csv + Format('%s (%s)', [ListNRJ[i], CBNRJ4.Text]) + ';';
+      MExport.Lines.Append(csv);
+      // Affichage du camembert
+      PieNRJ.Active := TRUE;
+      PieNRJ.Clear;
+      if CBNRJ4.ItemIndex = 1
+      then
+        PieNRJ.Marks.Style := smsLabelPercent
+      else
+        PieNRJ.Marks.Style := smsLabelValue;
+      t := 0;
+      csv := '';
+      for i := 0 to ListNRJ.Count - 1 do
+      begin
+        y := NRJY;
+        if y > PICO
+        then
+          PieNRJ.AddPie(y, ListNRJ[i], AreaNRJ[i].SeriesColor);
+        t := t + y;
+        csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+      end;
+      Graph.SubTitle.Text.Add(Format('%s = %1.0f %s', [StrTotal, t, StrMJ]));
+      MExport.Lines.Append(csv);
+    end;
+    1: // R�partition dynamique
+    begin
+      Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]);
+      Graph.BottomAxis.Title.Caption := CBNRJ2D.Text;
+      Graph.Title.Text.Add(Format('%s (%s)', [CBNRJ3.Text, CBNRJ1.Text]));
+      csv := CBNRJ2D.Text;
+      for i := 0 to ListNRJ.Count - 1 do
+        csv := csv + ';' + Format('%s (%s)', [ListNRJ[i], CBNRJ4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des aires
+      for i := 0 to ListNRJ.Count - 1 do
+        AreaNRJ[i].Active := TRUE;
+      for i := 0 to ListNRJ.Count - 1 do
+        AreaNRJ[i].Clear;
+      if CBNRJ4.ItemIndex = 4
+      then
+        for i := 0 to ListNRJ.Count - 1 do
+          AreaNRJ[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListNRJ.Count - 1 do
+          AreaNRJ[i].MultiArea := maStacked;
+      for j := 1 to PResSimulP.NbJSim do
+      begin
+        csv := FloatToStrF(NRJX, ffFixed, 15, 15);
+        for i := 0 to ListNRJ.Count - 1 do
+        begin
+          AreaNRJ[i].AddXY(NRJX, NRJY, '', clTeeColor);
+          csv := csv + ';' + FloatToStrF(NRJY, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+      if CBNRJ2D.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+    2: // R�partition par p�riode
+    begin
+      Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]);
+      Graph.BottomAxis.Title.Caption := CBNRJ2P.Text;
+      Graph.Title.Text.Add(Format('%s (%s)', [CBNRJ3.Text, CBNRJ1.Text]));
+      csv := CBNRJ2P.Text;
+      for i := 0 to ListNRJ.Count - 1 do
+        csv := csv + ';' + Format('%s (%s)', [ListNRJ[i], CBNRJ4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des barres
+      for i := 0 to ListNRJ.Count - 1 do
+        BarNRJ[i].Active := TRUE;
+      for i := 0 to ListNRJ.Count - 1 do
+        BarNRJ[i].Clear;
+      if CBNRJ4.ItemIndex = 3
+      then
+        for i := 0 to ListNRJ.Count - 1 do
+          BarNRJ[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListNRJ.Count - 1 do
+          BarNRJ[i].MultiBar := mbStacked;
+      j := 1;
+      x := NRJX;
+      k := 1;
+      if PResSimulP.NbJSim > 1
+      then
+        for j := 2 to PResSimulP.NbJSim do
+        begin
+          p := NRJX;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            s := Format('%1.0f', [x]);
+            csv := s;
+            for i := 0 to ListNRJ.Count - 1 do
+            begin
+              y := NRJY;
+              if y > PICO
+              then
+                BarNRJ[i].AddBar(y, s, clTeeColor)
+              else
+                BarNRJ[i].AddNull(s);
+              csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+            end;
+            MExport.Lines.Append(csv);
+            x := p;
+            k := j;
+          end;
+        end;
+      j := PResSimulP.NbJSim + 1;
+      if j > k
+      then
+      begin
+        if CBNRJ2P.ItemIndex = 3
+        then // Globale
+          s := ' '
+        else
+          s := Format('%1.0f', [x]);
+        csv := s;
+        for i := 0 to ListNRJ.Count - 1 do
+        begin
+          y := NRJY;
+          if y > PICO
+          then
+            BarNRJ[i].AddBar(y, s, clTeeColor)
+          else
+            BarNRJ[i].AddNull(s);
+          csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+    end;
+    3: // Energie retenue
+    begin
+      Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBNRJ3R.Text, CBNRJ4.Text]);
+      Graph.BottomAxis.Title.Caption := CBNRJ2D.Text;
+      Graph.Legend.Alignment := laTop;
+      Graph.Title.Text.Add(CBNRJ1.Text);
+      LineNRJ[1].Title := StrAANonLim;
+      LineNRJ[2].Title := StrAAPotLim;
+      csv := CBNRJ2D.Text;
+      if CBNRJ3R.ItemIndex = 4
+      then // le calcul lipides / prot�ines n�cessiterait une simulation
+        csv := csv + ';' + Format('%s (%s)', [LineNRJ[2].Title, CBNRJ4.Text])
+      else
+        for i := 1 to 2 do
+          csv := csv + ';' + Format('%s (%s)', [LineNRJ[i].Title, CBNRJ4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des lignes
+      for i := 1 to 2 do
+        LineNRJ[i].Active := TRUE;
+      for i := 1 to 2 do
+        LineNRJ[i].Clear;
+      if CBNRJ3R.ItemIndex = 4
+      then // le calcul lipides / prot�ines n�cessiterait une simulation
+        LineNRJ[1].Active := FALSE;
+      for j := 1 to PResSimulP.NbJSim do
+      begin
+        csv := FloatToStrF(NRJX, ffFixed, 15, 15);
+        for i := 1 to 2 do
+          if (CBNRJ3R.ItemIndex = 4) and (i = 1)
+          then // le calcul lipides / prot�ines n�cessiterait une simulation
+            Continue
+          else
+          begin
+            LineNRJ[i].AddXY(NRJX, NRJY, '', clTeeColor);
+            csv := csv + ';' + FloatToStrF(NRJY, ffFixed, 15, 15);
+          end;
+        MExport.Lines.Append(csv);
+      end;
+      if CBNRJ2D.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+    4: // Valeurs �nerg�tiques
+    begin
+      Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBNRJ3V.Text, CBNRJ4.Text]);
+      Graph.BottomAxis.Title.Caption := CBNRJ2D.Text;
+      Graph.Legend.Alignment := laTop;
+      Graph.Title.Text.Add(Format('%s (%s)', [CBNRJ3V.Text, CBNRJ1.Text]));
+      LineNRJ[1].Title := StrValCal;
+      LineNRJ[2].Title := StrValSim;
+      csv := CBNRJ2D.Text;
+      for i := 1 to 2 do
+        csv := csv + ';' + Format('%s (%s)', [LineNRJ[i].Title, CBNRJ4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des lignes
+      for i := 1 to 2 do
+        LineNRJ[i].Active := TRUE;
+      for i := 1 to 2 do
+        LineNRJ[i].Clear;
+      for j := 1 to PResSimulP.NbJSim do
+      begin
+        csv := FloatToStrF(NRJX, ffFixed, 15, 15);
+        for i := 1 to 2 do
+        begin
+          LineNRJ[i].AddXY(NRJX, NRJY, '', clTeeColor);
+          csv := csv + ';' + FloatToStrF(NRJY, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+      if CBNRJ2D.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+  end;
+  if PieNRJ.Active
+  then
+  begin
+    Graph.View3DOptions.Orthogonal := FALSE;
+    Graph.View3DOptions.Elevation := 315;
+    Graph.View3DOptions.Rotation := 360;
+    Graph.View3DOptions.Perspective := 0;
+  end
+  else
+  begin
+    Graph.View3DOptions.Orthogonal := TRUE;
+    Graph.View3DOptions.Elevation := 345;
+    Graph.View3DOptions.Rotation := 345;
+    Graph.View3DOptions.Perspective := 15;
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFResSimulP.CBNRJ1Change(Sender: TObject);
+begin
+  CBNRJ4.Items.Clear;
+  case CBNRJ1.ItemIndex of
+    0: // R�partition globale
+    begin
+      CBNRJ2D.Visible := FALSE;
+      CBNRJ2P.Visible := FALSE;
+      CBNRJ3.Visible := TRUE;
+      CBNRJ3R.Visible := FALSE;
+      CBNRJ3V.Visible := FALSE;
+      CBNRJ4.Visible := TRUE;
+      // Unit�s
+      CBNRJ4.Items.Add(StrMJ);
+      CBNRJ4.Items.Add('%');
+    end;
+    1: // R�partition dynamique
+    begin
+      CBNRJ2D.Visible := TRUE;
+      CBNRJ2P.Visible := FALSE;
+      CBNRJ3.Visible := TRUE;
+      CBNRJ3R.Visible := FALSE;
+      CBNRJ3V.Visible := FALSE;
+      CBNRJ4.Visible := TRUE;
+      // Unit�s
+      CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
+      CBNRJ4.Items.Add(Format('%s/(%s %s)^0.60/%s', [StrMJ, StrKg, StrPV, StrJ]));
+      CBNRJ4.Items.Add(Format('%s/(%s %s)^0.75/%s', [StrMJ, StrKg, StrPV, StrJ]));
+      CBNRJ4.Items.Add(Format('%s/%s %s', [StrMJ, StrKg, StrAlimentUnit]));
+      CBNRJ4.Items.Add('%');
+    end;
+    2: // R�partition par p�riode
+    begin
+      CBNRJ2D.Visible := FALSE;
+      CBNRJ2P.Visible := TRUE;
+      CBNRJ3.Visible := TRUE;
+      CBNRJ3R.Visible := FALSE;
+      CBNRJ3V.Visible := FALSE;
+      CBNRJ4.Visible := TRUE;
+      // Unit�s
+      CBNRJ4.Items.Add(StrMJ);
+      CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
+      CBNRJ4.Items.Add(Format('%s/%s %s', [StrMJ, StrKg, StrAlimentUnit]));
+      CBNRJ4.Items.Add('%');
+    end;
+    3: // Energie retenue
+    begin
+      CBNRJ2D.Visible := TRUE;
+      CBNRJ2P.Visible := FALSE;
+      CBNRJ3.Visible := FALSE;
+      CBNRJ3R.Visible := TRUE;
+      CBNRJ3V.Visible := FALSE;
+      CBNRJ4.Visible := FALSE;
+      // Unit�s
+      case CBNRJ3R.ItemIndex of
+        0: // PD marginal
+          CBNRJ4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+        1: // X
+          CBNRJ4.Items.Add('%');
+        2, 3: // PD / LD ou (PD / LD) marginal
+          CBNRJ4.Items.Add(Format('%s/%s', [StrG, StrG]));
+        4: // p / l
+          CBNRJ4.Items.Add(Format('%s/%s', [StrKg, StrKg]));
+      end;
+    end;
+    4: // Valeurs �nerg�tiques
+    begin
+      CBNRJ2D.Visible := TRUE;
+      CBNRJ2P.Visible := FALSE;
+      CBNRJ3.Visible := FALSE;
+      CBNRJ3R.Visible := FALSE;
+      CBNRJ3V.Visible := TRUE;
+      CBNRJ4.Visible := TRUE;
+      // Unit�s
+      CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
+      CBNRJ4.Items.Add(Format('%s/(%s %s)^0.60/%s', [StrMJ, StrKg, StrPV, StrJ]));
+      CBNRJ4.Items.Add(Format('%s/(%s %s)^0.75/%s', [StrMJ, StrKg, StrPV, StrJ]));
+      CBNRJ4.Items.Add(Format('%s/%s %s', [StrMJ, StrKg, StrAlimentUnit]));
+      CBNRJ4.Items.Add(Format('%s/%s %s', [StrMJ, StrKg, StrGMQUnit]));
+    end;
+  end;
+  CBNRJ4.ItemIndex := 0;
+  AffGraphNRJ;
+end;
+
+procedure TFResSimulP.CBNRJ2Change(Sender: TObject);
+begin
+  AffGraphNRJ;
+end;
+
+procedure TFResSimulP.CBNRJ3Change(Sender: TObject);
+begin
+  if CBNRJ1.ItemIndex = 3
+  then // Energie retenue
+  begin
+    CBNRJ4.Items.Clear;
+    case CBNRJ3R.ItemIndex of
+      0: // PD marginal
+        CBNRJ4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+      1: // X
+        CBNRJ4.Items.Add('%');
+      2, 3: // PD / LD ou (PD / LD) marginal
+        CBNRJ4.Items.Add(Format('%s/%s', [StrG, StrG]));
+      4: // p / l
+        CBNRJ4.Items.Add(Format('%s/%s', [StrKg, StrKg]));
+    end;
+    CBNRJ4.ItemIndex := 0;
+  end;
+  AffGraphNRJ;
+end;
+
+procedure TFResSimulP.CBNRJ4Change(Sender: TObject);
+begin
+  AffGraphNRJ;
+end;
+
+//////////////////
+//   Min�raux   //
+//////////////////
+procedure TFResSimulP.InitMin;
+const
+  TabColor1: array[0..5] of TColor
+    = (clBlack, clTeal, clOlive, clPink, clRed, clGreen);
+  TabColor2: array[1..2] of TColor
+    = (clGreen, clRed);
+var
+  i: integer;
+begin
+  // ListMin : liste pour les min�raux
+  ListMin := TStringList.Create;
+  ListMin.Assign(LBMin.Items);
+  // PieMin : s�rie (camembert) graphique
+  PieMin := TPieSeries.Create(Graph);
+  PieMin.ParentChart := Graph;
+  PieMin.Circled := TRUE;
+  PieMin.Marks.ArrowLength := 24;
+  PieMin.Marks.Arrow.Color := clBlack;
+  PieMin.Marks.Brush.Style := bsClear;
+  PieMin.Marks.Frame.Visible := FALSE;
+  PieMin.ValueFormat := Format('# ##0 %s', [StrG]);
+  PieMin.PercentFormat := '##0 %';
+  Graph.AddSeries(PieMin);
+  // AreaMin : s�ries (aires) graphiques
+  SetLength(AreaMin, ListMin.Count);
+  for i := 0 to ListMin.Count - 1 do
+  begin
+    AreaMin[i] := TAreaSeries.Create(Graph);
+    AreaMin[i].ParentChart := Graph;
+    AreaMin[i].Title := ListMin[i];
+    AreaMin[i].SeriesColor := TabColor1[i];
+    AreaMin[i].AreaLinesPen.Visible := FALSE;
+    Graph.AddSeries(AreaMin[i]);
+  end;
+  // BarMin : s�ries (barres) graphiques
+  SetLength(BarMin, ListMin.Count);
+  for i := 0 to ListMin.Count - 1 do
+  begin
+    BarMin[i] := TBarSeries.Create(Graph);
+    BarMin[i].ParentChart := Graph;
+    BarMin[i].Title := ListMin[i];
+    BarMin[i].SeriesColor := TabColor1[i];
+    BarMin[i].BarPen.Color := BarMin[i].SeriesColor;
+    BarMin[i].Marks.Visible := FALSE;
+    Graph.AddSeries(BarMin[i]);
+  end;
+  // LineMin : s�ries (lignes) graphiques
+  for i := 1 to 2 do
+  begin
+    LineMin[i] := TLineSeries.Create(Graph);
+    LineMin[i].ParentChart := Graph;
+    if i = 1
+    then // Apport
+      LineMin[i].Title := StrApport
+    else // Besoin
+      LineMin[i].Title := StrBesoin;
+    LineMin[i].SeriesColor := TabColor2[i];
+    LineMin[i].LinePen.Color := LineMin[i].SeriesColor;
+    LineMin[i].LinePen.Width := 2;
+    Graph.AddSeries(LineMin[i]);
+  end;
+end;
+
+procedure TFResSimulP.AffGraphMin;
+var
+  i, j, k: integer;
+  x, y, t, p: double;
+  s, csv: string;
+
+  // Abscisse
+  function MinX: double;
+  begin
+    case CBMin1.ItemIndex of
+      1: // R�partition dynamique
+        case CBMin2D.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      2: // R�partition par p�riode
+        case CBMin2P.ItemIndex of
+          0: // Semaine
+            result := (j - 1) div 7 + 1;
+          1: // R�gle qualit�
+            result := PResSimulP.TabResult[3, j];
+          2: // R�gle quantit�
+            result := PResSimulP.TabResult[5, j];
+          else
+            result := 0;
+        end;
+      3: // Besoin et apport
+        case CBMin2D.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e
+  function MinY: double;
+  var
+    h: integer;
+    v, d, Ptot, Pdig, PV, GMQ, Indigestible, Entretien, Retenu, Gaspillage: double;
+
+    // Composition des aliments
+    procedure Composition(jour: integer);
+    var
+      Aliment1, Aliment2: integer;
+      IngereFrais, Taux1, Taux2, IngereSec1, IngereSec2, Ptot1, Ptot2, Pdig1, Pdig2: double;
+      CC1, CC2: CompositionChimique;
+    begin
+      IngereFrais := PresSimulP.TabResult[11, jour];
+      // Aliment 1
+      Aliment1 := Round (PresSimulP.TabResult[7, jour]);
+      if Aliment1 = -1
+      then
+        CC1 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment1))];
+        CC1 := PAliment.CC;
+      end;
+      Taux1 := PresSimulP.TabResult[9, jour] / 100;
+      IngereSec1 := IngereFrais * Taux1 * CC1.MS / 1000;
+      Ptot1 := IngereSec1 * CC1.P;
+      if Aliment1 = -1
+      then
+        Pdig1 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig1 := IngereSec1 * PAliment.CC.PdigG
+        else // Farine
+          Pdig1 := IngereSec1 * PAliment.CC.PdigF;
+      // Aliment 2
+      Aliment2 := Round (PresSimulP.TabResult[8, jour]);
+      if Aliment2 = -1
+      then
+        CC2 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment2))];
+        CC2 := PAliment.CC;
+      end;
+      Taux2 := PresSimulP.TabResult[10, jour] / 100;
+      IngereSec2 := IngereFrais * Taux2 * CC2.MS / 1000;
+      Ptot2 := IngereSec2 * CC2.P;
+      if Aliment2 = -1
+      then
+        Pdig2 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig2 := IngereSec2 * PAliment.CC.PdigG
+        else // Farine
+          Pdig2 := IngereSec2 * PAliment.CC.PdigF;
+      // Cumul
+      Ptot := Ptot1 + Ptot2;
+      Pdig := Pdig1 + Pdig2;
+    end;
+
+  begin
+    case CBMin1.ItemIndex of
+      0: // R�partition globale
+      begin
+        v := 0;
+        case CBMin3.ItemIndex of
+          0: // Phosphore
+            case i of
+              0: // Gaspillage
+                if CBMin5.ItemIndex = 1
+                then // Total
+                  for h := 1 to PresSimulP.NbJSim do
+                  begin
+                    Composition(h);
+                    Gaspillage := PResSimulP.TabResult[112, h];
+                    v := v + Ptot / (1 - Gaspillage) - Ptot;
+                  end;
+              1: // Indigestible
+                if CBMin5.ItemIndex = 1
+                then // Total
+                  for h := 1 to PresSimulP.NbJSim do
+                  begin
+                    Composition(h);
+                    Indigestible := Ptot - Pdig;
+                    v := v + Indigestible;
+                  end;
+              2: // Entretien
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  Composition (h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  if Ptot < Indigestible + Entretien
+                  then // D�ficit
+                    v := v + Ptot - Indigestible
+                  else
+                    v := v + Entretien;
+                end;
+              3: // Retenu
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  Composition (h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  GMQ := PResSimulP.TabResult[84, h];
+                  Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                  if Ptot < Indigestible + Entretien + Retenu
+                  then
+                    v := v + Max (Ptot - Indigestible - Entretien, 0)
+                  else
+                    v := v + Retenu;
+                end;
+              4: // D�ficit
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  Composition (h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  GMQ := PResSimulP.TabResult[84, h];
+                  Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                  if Ptot < Indigestible + Entretien + Retenu
+                  then
+                    v := v + Indigestible + Entretien + Retenu - Ptot;
+                end;
+              5: // Exc�s
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  Composition (h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  GMQ := PResSimulP.TabResult[84, h];
+                  Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                  if Ptot > Indigestible + Entretien + Retenu
+                  then
+                    v := v + Ptot - Indigestible - Entretien - Retenu;
+                end;
+            end;
+        end;
+        result := v;
+      end;
+      1: // R�partition dynamique
+      begin
+        // Diviseur
+        if CBMin4.ItemIndex = 1
+        then // Aliment
+          d := PResSimulP.TabResult[113, j]
+        else
+          d := 1;
+        case CBMin3.ItemIndex of
+          0: // Phosphore
+            case i of
+              0: // Gaspillage
+                if CBMin5.ItemIndex = 1
+                then // Total
+                begin
+                  Composition(j);
+                  Gaspillage := PResSimulP.TabResult[112, j];
+                  v := Ptot / (1 - Gaspillage) - Ptot;
+                end
+                else
+                  v := 0;
+              1: // Indigestible
+                if CBMin5.ItemIndex = 1
+                then // Total
+                begin
+                  Composition(j);
+                  Indigestible := Ptot - Pdig;
+                  v := Indigestible;
+                end
+                else
+                  v := 0;
+              2: // Entretien
+              begin
+                Composition (j);
+                Indigestible := Ptot - Pdig;
+                PV := PResSimulP.TabResult[2, j];
+                Entretien := 10 * PV / 1000;
+                if Ptot < Indigestible + Entretien
+                then // D�ficit
+                  v := Ptot - Indigestible
+                else
+                  v := Entretien;
+              end;
+              3: // Retenu
+              begin
+                Composition (j);
+                Indigestible := Ptot - Pdig;
+                PV := PResSimulP.TabResult[2, j];
+                Entretien := 10 * PV / 1000;
+                GMQ := PResSimulP.TabResult[84, j];
+                Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                if Ptot < Indigestible + Entretien + Retenu
+                then // D�ficit
+                  v := Max (Ptot - Indigestible - Entretien, 0)
+                else
+                  v := Retenu;
+              end;
+              4: // D�ficit
+              begin
+                Composition (j);
+                Indigestible := Ptot - Pdig;
+                PV := PResSimulP.TabResult[2, j];
+                Entretien := 10 * PV / 1000;
+                GMQ := PResSimulP.TabResult[84, j];
+                Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                if Ptot < Indigestible + Entretien + Retenu
+                then
+                  v := Indigestible + Entretien + Retenu - Ptot
+                else
+                  v := 0;
+              end;
+              5: // Exc�s
+              begin
+                Composition (j);
+                Indigestible := Ptot - Pdig;
+                PV := PResSimulP.TabResult[2, j];
+                Entretien := 10 * PV / 1000;
+                GMQ := PResSimulP.TabResult[84, j];
+                Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                if Ptot > Indigestible + Entretien + Retenu
+                then
+                  v := Ptot - Indigestible - Entretien - Retenu
+                else
+                  v := 0;
+              end;
+              else
+                v := 0;
+            end;
+          else
+            v := 0;
+        end;
+        result := v / d;
+      end;
+      2: // R�partition par p�riode
+      begin
+        // Diviseur
+        case CBMin4.ItemIndex of
+          1: // Dur�e
+            d := j - k;
+          2: // Aliment
+          begin
+            d := 0;
+            for h := k to j - 1 do
+              d := d + PResSimulP.TabResult[113, h];
+          end;
+          else
+            d := 1;
+        end;
+        v := 0;
+        case CBMin3.ItemIndex of
+          0: // Phosphore
+            case i of
+              0: // Gaspillage
+                if CBMin5.ItemIndex = 1
+                then // Total
+                  for h := k to j - 1 do
+                  begin
+                    Composition(h);
+                    Gaspillage := PResSimulP.TabResult[112, h];
+                    v := v + Ptot / (1 - Gaspillage) - Ptot;
+                  end;
+              1: // Indigestible
+                if CBMin5.ItemIndex = 1
+                then // Total
+                  for h := k to j - 1 do
+                  begin
+                    Composition(h);
+                    Indigestible := Ptot - Pdig;
+                    v := v + Indigestible;
+                  end;
+              2: // Entretien
+                for h := k to j - 1 do
+                begin
+                  Composition (h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  if Ptot < Indigestible + Entretien
+                  then // D�ficit
+                    v := v + Ptot - Indigestible
+                  else
+                    v := v + Entretien;
+                end;
+              3: // Retenu
+                for h := k to j - 1 do
+                begin
+                  Composition (h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  GMQ := PResSimulP.TabResult[84, h];
+                  Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                  if Ptot < Indigestible + Entretien + Retenu
+                  then // D�ficit
+                    v := v + Max (Ptot - Indigestible - Entretien, 0)
+                  else
+                    v := v + Retenu;
+                end;
+              4: // D�ficit
+                for h := k to j - 1 do
+                begin
+                  Composition (h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  GMQ := PResSimulP.TabResult[84, h];
+                  Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                  if Ptot < Indigestible + Entretien + Retenu
+                  then
+                    v := v + Indigestible + Entretien + Retenu - Ptot;
+                end;
+              5: // Exc�s
+                for h := k to j - 1 do
+                begin
+                  Composition (h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  GMQ := PResSimulP.TabResult[84, h];
+                  Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                  if Ptot > Indigestible + Entretien + Retenu
+                  then
+                    v := v + Ptot - Indigestible - Entretien - Retenu;
+                end;
+            end;
+        end;
+        result := v / d;
+      end;
+      3: // Besoin et apport
+      begin
+        // Diviseur
+        case CBMin4.ItemIndex of
+          1: // GMQ
+            d := PResSimulP.TabResult[84, j];
+          2: // Aliment ing�r�
+            d := PResSimulP.TabResult[11, j];
+          else
+            d := 1;
+        end;
+        case CBMin3.ItemIndex of
+          0: // Phosphore
+            case i of
+              1: // Apport
+              begin
+                Composition (j);
+                if CBMin5.ItemIndex = 0
+                then // Digestibilit� apparente
+                  v := Pdig
+                else // Total
+                  v := Ptot;
+              end;
+              2: // Besoin
+                if CBMin5.ItemIndex = 0
+                then // Digestibilit� apparente
+                begin
+                  PV := PResSimulP.TabResult[2, j];
+                  Entretien := 10 * PV / 1000;
+                  GMQ := PResSimulP.TabResult[84, j];
+                  Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                  v := Entretien + Retenu;
+                end
+                else
+                  v := 0;
+              else
+                v := 0;
+            end;
+          else
+            v := 0;
+        end;
+        result := v / d;
+      end;
+      else
+        result := 0;
+    end;
+  end;
+
+// AffGraphMin
+begin
+  ResetGraph;
+  Graph.Title.Text.Add(Format('%s (%s)', [CBMin3.Text, CBMin1.Text]));
+  Graph.SubTitle.Text.Add(CBMin5.Text);
+  Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBMin3.Text, CBMin4.Text]);
+  case CBMin1.ItemIndex of
+    0: // R�partition globale
+    begin
+//      Graph.View3D := TRUE;
+      Graph.Legend.Visible := FALSE;
+      csv := '';
+      for i := 0 to ListMin.Count - 1 do
+        csv := csv + Format('%s (%s)', [ListMin[i], CBMin4.Text]) + ';';
+      MExport.Lines.Append(csv);
+      // Affichage du camembert
+      PieMin.Active := TRUE;
+      PieMin.Clear;
+      if CBMin4.ItemIndex = 1
+      then
+        PieMin.Marks.Style := smsLabelPercent
+      else
+        PieMin.Marks.Style := smsLabelValue;
+      t := 0;
+      csv := '';
+      for i := 0 to ListMin.Count - 1 do
+      begin
+        y := MinY;
+        if y > PICO
+        then
+          PieMin.AddPie(y, ListMin[i], AreaMin[i].SeriesColor);
+        t := t + y;
+        csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+      end;
+      Graph.SubTitle.Text.Add(Format('%s = %1.0f %s', [StrTotal, t, StrG]));
+      MExport.Lines.Append(csv);
+    end;
+    1: // R�partition dynamique
+    begin
+      Graph.BottomAxis.Title.Caption := CBMin2D.Text;
+      csv := CBMin2D.Text;
+      for i := 0 to ListMin.Count - 1 do
+        csv := csv + ';' + Format('%s (%s)', [ListMin[i], CBMin4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des aires
+      for i := 0 to ListMin.Count - 1 do
+        AreaMin[i].Active := TRUE;
+      for i := 0 to ListMin.Count - 1 do
+        AreaMin[i].Clear;
+      if CBMin4.ItemIndex = 2
+      then
+        for i := 0 to ListMin.Count - 1 do
+          AreaMin[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListMin.Count - 1 do
+          AreaMin[i].MultiArea := maStacked;
+      for j := 1 to PResSimulP.NbJSim do
+      begin
+        csv := FloatToStrF(MinX, ffFixed, 15, 15);
+        for i := 0 to ListMin.Count - 1 do
+        begin
+          AreaMin[i].AddXY(MinX, MinY, '', clTeeColor);
+          csv := csv + ';' + FloatToStrF(MinY, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+      if CBMin2D.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+    2: // R�partition par p�riode
+    begin
+      Graph.BottomAxis.Title.Caption := CBMin2P.Text;
+      csv := CBMin2P.Text;
+      for i := 0 to ListMin.Count - 1 do
+        csv := csv + ';' + Format('%s (%s)', [ListMin[i], CBMin4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des barres
+      for i := 0 to ListMin.Count - 1 do
+        BarMin[i].Active := TRUE;
+      for i := 0 to ListMin.Count - 1 do
+        BarMin[i].Clear;
+      if CBMin4.ItemIndex = 3
+      then
+        for i := 0 to ListMin.Count - 1 do
+          BarMin[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListMin.Count - 1 do
+          BarMin[i].MultiBar := mbStacked;
+      j := 1;
+      x := MinX;
+      k := 1;
+      if PResSimulP.NbJSim > 1
+      then
+        for j := 2 to PResSimulP.NbJSim do
+        begin
+          p := MinX;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            s := Format('%1.0f', [x]);
+            csv := s;
+            for i := 0 to ListMin.Count - 1 do
+            begin
+              y := MinY;
+              if y > PICO
+              then
+                BarMin[i].AddBar(y, s, clTeeColor)
+              else
+                BarMin[i].AddNull(s);
+              csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+            end;
+            MExport.Lines.Append(csv);
+            x := p;
+            k := j;
+          end;
+        end;
+      j := PResSimulP.NbJSim + 1;
+      if j > k
+      then
+      begin
+        if CBMin2P.ItemIndex = 3
+        then // Globale
+          s := ' '
+        else
+          s := Format('%1.0f', [x]);
+        csv := s;
+        for i := 0 to ListMin.Count - 1 do
+        begin
+          y := MinY;
+          if y > PICO
+          then
+            BarMin[i].AddBar(y, s, clTeeColor)
+          else
+            BarMin[i].AddNull(s);
+          csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+    end;
+    3: // Besoin et apport
+    begin
+      Graph.BottomAxis.Title.Caption := CBMin2D.Text;
+      Graph.Legend.Alignment := laTop;
+      csv := CBMin2D.Text;
+      if CBMin5.ItemIndex = 1
+      then // En digestibilit� totale, seul l'apport est affich�
+        csv := csv + ';' + Format('%s (%s)', [LineMin[1].Title, CBMin4.Text])
+      else
+        for i := 1 to 2 do
+          csv := csv + ';' + Format('%s (%s)', [LineMin[i].Title, CBMin4.Text]);
+      // Affichage des lignes
+      if CBMin5.ItemIndex = 1
+      then // En digestibilit� totale, seul l'apport est affich�
+        LineMin[1].Active := TRUE
+      else
+        for i := 1 to 2 do
+          LineMin[i].Active := TRUE;
+      for i := 1 to 2 do
+        LineMin[i].Clear;
+      for j := 1 to PResSimulP.NbJSim do
+      begin
+        csv := FloatToStrF(MinX, ffFixed, 15, 15);
+        for i := 1 to 2 do
+          if (CBAA5.ItemIndex = 1) and (i = 2)
+          then // Le besoin total n'a pas de sens
+            Continue
+          else
+          begin
+            LineMin[i].AddXY(MinX, MinY, '', clTeeColor);
+            csv := csv + ';' + FloatToStrF(MinY, ffFixed, 15, 15);
+          end;
+        MExport.Lines.Append(csv);
+      end;
+      if CBMin2D.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+  end;
+  if PieMin.Active
+  then
+  begin
+    Graph.View3DOptions.Orthogonal := FALSE;
+    Graph.View3DOptions.Elevation := 315;
+    Graph.View3DOptions.Rotation := 360;
+    Graph.View3DOptions.Perspective := 0;
+  end
+  else
+  begin
+    Graph.View3DOptions.Orthogonal := TRUE;
+    Graph.View3DOptions.Elevation := 345;
+    Graph.View3DOptions.Rotation := 345;
+    Graph.View3DOptions.Perspective := 15;
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFResSimulP.CBMin1Change(Sender: TObject);
+begin
+  CBMin4.Items.Clear;
+  case CBMin1.ItemIndex of
+    0: // R�partition globale
+    begin
+      CBMin2D.Visible := FALSE;
+      CBMin2P.Visible := FALSE;
+      // Unit�s
+      CBMin4.Items.Add(StrG);
+      CBMin4.Items.Add('%');
+    end;
+    1: // R�partition dynamique
+    begin
+      CBMin2D.Visible := TRUE;
+      CBMin2P.Visible := FALSE;
+      // Unit�s
+      CBMin4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+      CBMin4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+      CBMin4.Items.Add('%');
+    end;
+    2: // R�partition par p�riode
+    begin
+      CBMin2D.Visible := FALSE;
+      CBMin2P.Visible := TRUE;
+      // Unit�s
+      CBMin4.Items.Add(StrG);
+      CBMin4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+      CBMin4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+      CBMin4.Items.Add('%');
+    end;
+    3: // Besoin et apport
+    begin
+      CBMin2D.Visible := TRUE;
+      CBMin2P.Visible := FALSE;
+      // Unit�s
+      CBMin4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+      CBMin4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrGMQUnit]));
+      CBMin4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+    end;
+  end;
+  CBMin4.ItemIndex := 0;
+  AffGraphMin;
+end;
+
+procedure TFResSimulP.CBMin2Change(Sender: TObject);
+begin
+  AffGraphMin;
+end;
+
+procedure TFResSimulP.CBMin3Change(Sender: TObject);
+begin
+  AffGraphMin;
+end;
+
+procedure TFResSimulP.CBMin4Change(Sender: TObject);
+begin
+  AffGraphMin;
+end;
+
+procedure TFResSimulP.CBMin5Change(Sender: TObject);
+begin
+  AffGraphMin;
+end;
+
+////////////////
+//   Rejets   //
+////////////////
+procedure TFResSimulP.InitRej;
+const
+  TabColor: array[0..4] of TColor
+    = (clBlack, clMaroon, clYellow, clMaroon, clPink);
+var
+  i: integer;
+begin
+  // ListRej : liste pour les rejets
+  ListRej := TStringList.Create;
+  ListRej.Assign(LBRej.Items);
+  // PieRej : s�rie (camembert) graphique
+  PieRej := TPieSeries.Create(Graph);
+  PieRej.ParentChart := Graph;
+  PieRej.Circled := TRUE;
+  PieRej.Marks.ArrowLength := 24;
+  PieRej.Marks.Arrow.Color := clBlack;
+  PieRej.Marks.Brush.Style := bsClear;
+  PieRej.Marks.Frame.Visible := FALSE;
+  PieRej.ValueFormat := Format('# ##0 %s', [StrG]);
+  PieRej.PercentFormat := '##0 %';
+  Graph.AddSeries(PieRej);
+  // AreaRej : s�ries (aires) graphiques
+  SetLength(AreaRej, ListRej.Count);
+  for i := 0 to ListRej.Count - 1 do
+  begin
+    AreaRej[i] := TAreaSeries.Create(Graph);
+    AreaRej[i].ParentChart := Graph;
+    AreaRej[i].Title := ListRej[i];
+    AreaRej[i].SeriesColor := TabColor[i];
+    AreaRej[i].AreaLinesPen.Visible := FALSE;
+    Graph.AddSeries(AreaRej[i]);
+  end;
+  // BarRej : s�ries (barres) graphiques
+  SetLength(BarRej, ListRej.Count);
+  for i := 0 to ListRej.Count - 1 do
+  begin
+    BarRej[i] := TBarSeries.Create(Graph);
+    BarRej[i].ParentChart := Graph;
+    BarRej[i].Title := ListRej[i];
+    BarRej[i].SeriesColor := TabColor[i];
+    BarRej[i].BarPen.Color := BarRej[i].SeriesColor;
+    BarRej[i].Marks.Visible := FALSE;
+    Graph.AddSeries(BarRej[i]);
+  end;
+end;
+
+procedure TFResSimulP.AffGraphRej;
+var
+  i, j, k: integer;
+  x, y, t, p: double;
+  s, csv: string;
+
+  // Abscisse
+  function RejX: double;
+  begin
+    case CBRej1.ItemIndex of
+      1: // R�partition dynamique
+        case CBRej2D.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      2: // R�partition par p�riode
+        case CBRej2P.ItemIndex of
+          0: // Semaine
+            result := (j - 1) div 7 + 1;
+          1: // R�gle qualit�
+            result := PResSimulP.TabResult[3, j];
+          2: // R�gle quantit�
+            result := PResSimulP.TabResult[5, j];
+          else
+            result := 0;
+        end;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e
+  function RejY: double;
+  var
+    h: integer;
+    v, d, IngereSec1, IngereSec2, Ptot, Pdig, Ingere, Digestible, Depose, Gaspillage: double;
+    CC1, CC2: CompositionChimique;
+
+    // Composition des aliments
+    procedure Composition(jour: integer);
+    var
+      Aliment1, Aliment2: integer;
+      IngereFrais, Taux1, Taux2, Ptot1, Ptot2, Pdig1, Pdig2: double;
+    begin
+      IngereFrais := PresSimulP.TabResult[11, jour];
+      // Aliment 1
+      Aliment1 := Round (PresSimulP.TabResult[7, jour]);
+      if Aliment1 = -1
+      then
+        CC1 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment1))];
+        CC1 := PAliment.CC;
+      end;
+      Taux1 := PresSimulP.TabResult[9, jour] / 100;
+      IngereSec1 := IngereFrais * Taux1 * CC1.MS / 1000;
+      Ptot1 := IngereSec1 * CC1.P;
+      if Aliment1 = -1
+      then
+        Pdig1 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig1 := IngereSec1 * PAliment.CC.PdigG
+        else // Farine
+          Pdig1 := IngereSec1 * PAliment.CC.PdigF;
+      // Aliment 2
+      Aliment2 := Round (PresSimulP.TabResult[8, jour]);
+      if Aliment2 = -1
+      then
+        CC2 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment2))];
+        CC2 := PAliment.CC;
+      end;
+      Taux2 := PresSimulP.TabResult[10, jour] / 100;
+      IngereSec2 := IngereFrais * Taux2 * CC2.MS / 1000;
+      Ptot2 := IngereSec2 * CC2.P;
+      if Aliment2 = -1
+      then
+        Pdig2 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig2 := IngereSec2 * PAliment.CC.PdigG
+        else // Farine
+          Pdig2 := IngereSec2 * PAliment.CC.PdigF;
+      // Cumul
+      Ptot := Ptot1 + Ptot2;
+      Pdig := Pdig1 + Pdig2;
+    end;
+
+    // Calcul de l'ing�r�
+    function CalcIngere: Double;
+    begin
+      case CBRej3.ItemIndex of
+        0: // Azote
+          result := (IngereSec1*CC1.MAT + IngereSec2*CC2.MAT) * 0.16;
+        1: // Phosphore
+          result := Ptot;
+        2: // Calcium
+          result := IngereSec1*CC1.Ca + IngereSec2*CC2.Ca;
+        3: // Potassium
+          result := IngereSec1*CC1.K + IngereSec2*CC2.K;
+        4: // Cuivre
+          result := IngereSec1*CC1.Cu + IngereSec2*CC2.Cu;
+        5: // Zinc
+          result := IngereSec1*CC1.Zn + IngereSec2*CC2.Zn;
+        else
+          result := 0;
+      end;
+    end;
+
+    // Calcul du digestible
+    function CalcDigestible: Double;
+    begin
+      case CBRej3.ItemIndex of
+        0: // Azote
+          result := (IngereSec1*CC1.MAT*CC1.dMAT_C/100 + IngereSec2*CC2.MAT*CC2.dMAT_C/100) * 0.16;
+        1: // Phosphore
+          result := Pdig;
+        else
+          result := 0;
+      end;
+    end;
+
+    // Calcul du d�p�t (potentiel)
+    function CalcDepot(jour: integer): Double;
+    var
+      PV, PVV, PVfin, PVVfin, GMQ, PD: Double;
+    begin
+      PV := PResSimulP.TabResult[2, jour];
+      PVV := CalcPVV (PV);
+      PVfin := PResSimulP.TabResult[83, jour];
+      PVVfin := CalcPVV (PVfin);
+      GMQ := PResSimulP.TabResult[84, jour];
+      PD := PResSimulP.TabResult[79, jour];
+      case CBRej3.ItemIndex of
+        0: // Azote
+          result := PD * 0.16;
+        1: // Phosphore
+          result := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+        2: // Calcium
+          result := -0.00180 * (Power (PVVfin, 2) - Power (PVV, 2)) + 8.64633 * (PVVfin - PVV);
+        3: // Potassium
+          result := -0.00345 * (Power (PVVfin, 2) - Power (PVV, 2)) + 2.53338 * (PVVfin - PVV);
+        4: // Cuivre
+          result := -0.00251 * (Power (PVVfin, 2) - Power (PVV, 2)) + 1.05393 * (PVVfin - PVV);
+        5: // Zinc
+          result := 21.8 * (PVVfin - PVV);
+        else
+          result := 0;
+      end;
+    end;
+
+  // RejY
+  begin
+    case CBRej1.ItemIndex of
+      0: // R�partition globale
+      begin
+        v := 0;
+        for h := 1 to PResSimulP.NbJSim do
+        begin
+          Composition (h);
+          Ingere := CalcIngere;
+          Gaspillage := PResSimulP.TabResult[112, h];
+          Digestible := CalcDigestible;
+          Depose := CalcDepot(h);
+          if CBRej3.ItemIndex < 2
+          then // Azote ou phosphore
+            case i of
+              0: // Gaspillage
+                v := v + Ingere / (1 - Gaspillage) - Ingere;
+              1: // F�cal
+                v := v + Ingere - Digestible;
+              2: // Urinaire
+                v := v + Max(Digestible - Depose, 0);
+              4: // Retenu
+                v := v + Min(Digestible, Depose);
+            end
+          else // Autres
+            case i of
+              0: // Gaspillage
+                v := v + Ingere / (1 - Gaspillage) - Ingere;
+              3: // Ecr�t�
+                v := v + Max(Ingere - Depose, 0);
+              4: // Retenu
+                v := v + Min(Ingere, Depose);
+            end;
+        end;
+        result := v;
+      end;
+      1: // R�partition dynamique
+      begin
+        // Diviseur
+        if CBRej4.ItemIndex = 1
+        then // Aliment ing�r�
+          d := PResSimulP.TabResult[113, j]
+        else
+          d := 1;
+        Composition(j);
+        Ingere := CalcIngere;
+        Gaspillage := PResSimulP.TabResult[112, j];
+        Digestible := CalcDigestible;
+        Depose := CalcDepot(j);
+        if CBRej3.ItemIndex < 2
+        then // Azote ou phosphore
+          case i of
+            0: // Gaspillage
+              v := Ingere / (1 - Gaspillage) - Ingere;
+            1: // F�cal
+              v := Ingere - Digestible;
+            2: // Urinaire
+              v := Max(Digestible - Depose, 0);
+            4: // Retenu
+              v := Min(Digestible, Depose);
+            else
+              v := 0;
+          end
+        else // Autres
+          case i of
+            0: // Gaspillage
+              v := Ingere / (1 - Gaspillage) - Ingere;
+            3: // Ecr�t�
+              v := Max(Ingere - Depose, 0);
+            4: // Retenu
+              v := Min(Ingere, Depose);
+            else
+              v := 0;
+          end;
+        result := v / d;
+      end;
+      2: // R�partition par p�riode
+      begin
+        // Diviseur
+        case CBRej4.ItemIndex of
+          1: // Dur�e
+            d := j - k;
+          2: // Aliment
+          begin
+            d := 0;
+            for h := k to j - 1 do
+              d := d + PResSimulP.TabResult[113, h];
+          end;
+          else
+            d := 1;
+        end;
+        v := 0;
+        for h := k to j - 1 do
+        begin
+          Composition(h);
+          Ingere := CalcIngere;
+          Gaspillage := PResSimulP.TabResult[112, h];
+          Digestible := CalcDigestible;
+          Depose := CalcDepot(h);
+          if CBRej3.ItemIndex < 2
+          then // Azote ou phosphore
+            case i of
+              0: // Gaspillage
+                v := v + Ingere / (1 - Gaspillage) - Ingere;
+              1: // F�cal
+                v := v + Ingere - Digestible;
+              2: // Urinaire
+                v := v + Max(Digestible - Depose, 0);
+              4: // Retenu
+                v := v + Min(Digestible, Depose);
+            end
+          else // Autres
+            case i of
+              0: // Gaspillage
+                v := v + Ingere / (1 - Gaspillage) - Ingere;
+              3: // Ecr�t�
+                v := v + Max(Ingere - Depose, 0);
+              4: // Retenu
+                v := v + Min(Ingere, Depose);
+            end;
+        end;
+        result := v / d;
+      end;
+      else
+        result := 0;
+    end;
+  end;
+
+// AffGraphRej
+begin
+  ResetGraph;
+  Graph.Title.Text.Add(Format('%s (%s)', [CBRej3.Text, CBRej1.Text]));
+  Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBRej3.Text, CBRej4.Text]);
+  case CBRej1.ItemIndex of
+    0: // R�partition globale
+    begin
+//      Graph.View3D := TRUE;
+      Graph.Legend.Visible := FALSE;
+      csv := '';
+      for i := 0 to ListRej.Count - 1 do
+        csv := csv + Format('%s (%s)', [ListRej[i], CBRej4.Text]) + ';';
+      MExport.Lines.Append(csv);
+      // Affichage du camembert
+      PieRej.Active := TRUE;
+      PieRej.Clear;
+      if CBRej4.ItemIndex = 1
+      then
+        PieRej.Marks.Style := smsLabelPercent
+      else
+        PieRej.Marks.Style := smsLabelValue;
+      t := 0;
+      csv := '';
+      for i := 0 to ListRej.Count - 1 do
+      begin
+        y := RejY;
+        if y > PICO
+        then
+          PieRej.AddPie(y, ListRej[i], AreaRej[i].SeriesColor);
+        t := t + y;
+        csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+      end;
+      if CBRej3.ItemIndex > 3
+      then // Oligo-�l�ment
+        Graph.SubTitle.Text.Add(Format('%s = %1.0f %s', [StrTotal, t, StrMg]))
+      else // Macro-�l�ment
+        Graph.SubTitle.Text.Add(Format('%s = %1.0f %s', [StrTotal, t, StrG]));
+      MExport.Lines.Append(csv);
+    end;
+    1: // R�partition dynamique
+    begin
+      Graph.BottomAxis.Title.Caption := CBRej2D.Text;
+      csv := CBRej2D.Text;
+      for i := 0 to ListRej.Count - 1 do
+        csv := csv + ';' + Format('%s (%s)', [ListRej[i], CBRej4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des aires
+      AreaRej[0].Active := TRUE;
+      AreaRej[1].Active := CBRej3.ItemIndex < 2;
+      AreaRej[2].Active := CBRej3.ItemIndex < 2;
+      AreaRej[3].Active := CBRej3.ItemIndex > 1;
+      AreaRej[4].Active := TRUE;
+      for i := 0 to ListRej.Count - 1 do
+        AreaRej[i].Clear;
+      if CBRej4.ItemIndex = 2
+      then
+        for i := 0 to ListRej.Count - 1 do
+          AreaRej[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListRej.Count - 1 do
+          AreaRej[i].MultiArea := maStacked;
+      for j := 1 to PResSimulP.NbJSim do
+      begin
+        csv := FloatToStrF(RejX, ffFixed, 15, 15);
+        for i := 0 to ListRej.Count - 1 do
+        begin
+          AreaRej[i].AddXY(RejX, RejY, '', clTeeColor);
+          csv := csv + ';' + FloatToStrF(RejY, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+      if CBRej2D.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+    2: // R�partition par p�riode
+    begin
+      Graph.BottomAxis.Title.Caption := CBRej2P.Text;
+      csv := CBRej2P.Text;
+      for i := 0 to ListRej.Count - 1 do
+        csv := csv + ';' + Format('%s (%s)', [ListRej[i], CBRej4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des barres
+      BarRej[0].Active := TRUE;
+      BarRej[1].Active := CBRej3.ItemIndex < 2;
+      BarRej[2].Active := CBRej3.ItemIndex < 2;
+      BarRej[3].Active := CBRej3.ItemIndex > 1;
+      BarRej[4].Active := TRUE;
+      for i := 0 to ListRej.Count - 1 do
+        BarRej[i].Clear;
+      if CBRej4.ItemIndex = 3
+      then
+        for i := 0 to ListRej.Count - 1 do
+          BarRej[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListRej.Count - 1 do
+          BarRej[i].MultiBar := mbStacked;
+      j := 1;
+      x := RejX;
+      k := 1;
+      if PResSimulP.NbJSim > 1
+      then
+        for j := 2 to PResSimulP.NbJSim do
+        begin
+          p := RejX;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            s := Format('%1.0f', [x]);
+            csv := s;
+            for i := 0 to ListRej.Count - 1 do
+            begin
+              y := RejY;
+              if y > PICO
+              then
+                BarRej[i].AddBar(y, s, clTeeColor)
+              else
+                BarRej[i].AddNull(s);
+              csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+            end;
+            MExport.Lines.Append(csv);
+            x := p;
+            k := j;
+          end;
+        end;
+      j := PResSimulP.NbJSim + 1;
+      if j > k
+      then
+      begin
+        if CBRej2P.ItemIndex = 3
+        then // Globale
+          s := ' '
+        else
+          s := Format('%1.0f', [x]);
+        csv := s;
+        for i := 0 to ListRej.Count - 1 do
+        begin
+          y := RejY;
+          if y > PICO
+          then
+            BarRej[i].AddBar(y, s, clTeeColor)
+          else
+            BarRej[i].AddNull(s);
+          csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+    end;
+  end;
+  if PieRej.Active
+  then
+  begin
+    Graph.View3DOptions.Orthogonal := FALSE;
+    Graph.View3DOptions.Elevation := 315;
+    Graph.View3DOptions.Rotation := 360;
+    Graph.View3DOptions.Perspective := 0;
+  end
+  else
+  begin
+    Graph.View3DOptions.Orthogonal := TRUE;
+    Graph.View3DOptions.Elevation := 345;
+    Graph.View3DOptions.Rotation := 345;
+    Graph.View3DOptions.Perspective := 15;
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFResSimulP.CBRej1Change(Sender: TObject);
+begin
+  case CBRej1.ItemIndex of
+    0: // R�partition globale
+    begin
+      CBRej2D.Visible := FALSE;
+      CBRej2P.Visible := FALSE;
+    end;
+    1: // R�partition dynamique
+    begin
+      CBRej2D.Visible := TRUE;
+      CBRej2P.Visible := FALSE;
+    end;
+    2: // R�partition par p�riode
+    begin
+      CBRej2D.Visible := FALSE;
+      CBRej2P.Visible := TRUE;
+    end;
+  end;
+  CBRej3Change(nil);
+end;
+
+procedure TFResSimulP.CBRej2Change(Sender: TObject);
+begin
+  AffGraphRej;
+end;
+
+procedure TFResSimulP.CBRej3Change(Sender: TObject);
+begin
+  if CBRej3.ItemIndex > 3
+  then // Oligo-�l�ment
+    PieRej.ValueFormat := Format('# ##0 %s', [StrMg])
+  else // Macro-�l�ment
+    PieRej.ValueFormat := Format('# ##0 %s', [StrG]);
+  CBRej4.Items.Clear;
+  case CBRej1.ItemIndex of
+    0: // R�partition globale
+      if CBRej3.ItemIndex > 3
+      then // Oligo-�l�ment
+      begin
+        CBRej4.Items.Add(StrMG);
+        CBRej4.Items.Add('%');
+      end
+      else // Macro-�l�ment
+      begin
+        CBRej4.Items.Add(StrG);
+        CBRej4.Items.Add('%');
+      end;
+    1: // R�partition dynamique
+      if CBRej3.ItemIndex > 3
+      then // Oligo-�l�ment
+      begin
+        CBRej4.Items.Add(Format('%s/%s', [StrMG, StrJ]));
+        CBRej4.Items.Add(Format('%s/%s %s', [StrMG, StrKg, StrAlimentUnit]));
+        CBRej4.Items.Add('%');
+      end
+      else // Macro-�l�ment
+      begin
+        CBRej4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+        CBRej4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+        CBRej4.Items.Add('%');
+      end;
+    2: // R�partition par p�riode
+      if CBRej3.ItemIndex > 3
+      then // Oligo-�l�ment
+      begin
+        CBRej4.Items.Add(StrMG);
+        CBRej4.Items.Add(Format('%s/%s', [StrMG, StrJ]));
+        CBRej4.Items.Add(Format('%s/%s %s', [StrMG, StrKg, StrAlimentUnit]));
+        CBRej4.Items.Add('%');
+      end
+      else // Macro-�l�ment
+      begin
+        CBRej4.Items.Add(StrG);
+        CBRej4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+        CBRej4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+        CBRej4.Items.Add('%');
+      end;
+  end;
+  CBRej4.ItemIndex := 0;
+  AffGraphRej;
+end;
+
+procedure TFResSimulP.CBRej4Change(Sender: TObject);
+begin
+  AffGraphRej;
+end;
+
+procedure TFResSimulP.WMSysCommand(var Mess: TWMSysCommand);
+begin
+  if Mess.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFResSimulT.pas
===================================================================
--- UFResSimulT.pas	(révision 0)
+++ UFResSimulT.pas	(révision 3)
@@ -0,0 +1,5257 @@
+unit UFResSimulT;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Grids,Contnrs, CheckLst, 
+  Menus, Printers,  Math, PBNumEdit, TeEngine, Series, TeeProcs, Chart, 
+  UVariables, gnugettext;
+
+type
+  TFResSimulT = class(TForm)
+    PC: TPageControl;
+    TabAli: TTabSheet;
+    CBAli1: TComboBox;
+    TabPD: TTabSheet;
+    CBPD2: TComboBox;
+    LBPD: TListBox;
+    TabPerf: TTabSheet;
+    TabAA: TTabSheet;
+    CBAA1: TComboBox;
+    CBAA3: TComboBox;
+    CBAA4: TComboBox;
+    CBPerf1: TComboBox;
+    CBPerf2D: TComboBox;
+    CBPerf3D: TComboBox;
+    CBPerf4: TComboBox;
+    CBAli2D: TComboBox;
+    CBAli4: TComboBox;
+    TabRej: TTabSheet;
+    CBRej1: TComboBox;
+    CBRej2D: TComboBox;
+    CBRej3: TComboBox;
+    CBRej4: TComboBox;
+    CBAA5: TComboBox;
+    GBPerfT: TGroupBox;
+    GBPerfY: TGroupBox;
+    GBPerfX: TGroupBox;
+    GBPDF: TGroupBox;
+    GBAliT: TGroupBox;
+    GBAliY: TGroupBox;
+    GBAliX: TGroupBox;
+    GBPDT: TGroupBox;
+    GBPDY: TGroupBox;
+    GBPDX: TGroupBox;
+    GBAAT: TGroupBox;
+    GBAAY: TGroupBox;
+    GBAAX: TGroupBox;
+    GBRejT: TGroupBox;
+    GBRejY: TGroupBox;
+    GBRejX: TGroupBox;
+    Graph: TChart;
+    LBRej: TListBox;
+    CBAli2P: TComboBox;
+    CBRej2P: TComboBox;
+    CBPerf2P: TComboBox;
+    CBPerf3P: TComboBox;
+    TabNRJ: TTabSheet;
+    TabMin: TTabSheet;
+    GBNRJX: TGroupBox;
+    CBNRJ2D: TComboBox;
+    CBNRJ2P: TComboBox;
+    GBNRJY: TGroupBox;
+    CBNRJ3: TComboBox;
+    CBNRJ4: TComboBox;
+    GBNRJT: TGroupBox;
+    CBNRJ1: TComboBox;
+    LBNRJ: TListBox;
+    GBMinX: TGroupBox;
+    CBMin2D: TComboBox;
+    CBMin2P: TComboBox;
+    GBMinY: TGroupBox;
+    CBMin3: TComboBox;
+    CBMin4: TComboBox;
+    GBMinT: TGroupBox;
+    CBMin1: TComboBox;
+    CBAli3: TComboBox;
+    PD: TPrintDialog;
+    LBMin: TListBox;
+    CBMin5: TComboBox;
+    CBAA2D: TComboBox;
+    CBAA2P: TComboBox;
+    LBAA: TListBox;
+    PM: TPopupMenu;
+    MI3D: TMenuItem;
+    MIPreview: TMenuItem;
+    MIPrint: TMenuItem;
+    MIExport: TMenuItem;
+    SD: TSaveDialog;
+    MExport: TMemo;
+    CBAli5: TComboBox;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormShow(Sender: TObject);
+    procedure PCChange(Sender: TObject);
+    procedure CBPerf1Change(Sender: TObject);
+    procedure CBPerf2Change(Sender: TObject);
+    procedure CBPerf3Change(Sender: TObject);
+    procedure CBPerf4Change(Sender: TObject);
+    procedure CBAli1Change(Sender: TObject);
+    procedure CBAli2Change(Sender: TObject);
+    procedure CBAli4Change(Sender: TObject);
+    procedure CBPD2Change(Sender: TObject);
+    procedure LBPDClick(Sender: TObject);
+    procedure LBPDDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure CBAA1Change(Sender: TObject);
+    procedure CBAA2Change(Sender: TObject);
+    procedure CBAA3Change(Sender: TObject);
+    procedure CBAA4Change(Sender: TObject);
+    procedure CBAA5Change(Sender: TObject);
+    procedure CBRej1Change(Sender: TObject);
+    procedure CBRej2Change(Sender: TObject);
+    procedure CBRej4Change(Sender: TObject);
+    procedure CBRej3Change(Sender: TObject);
+    procedure CBNRJ1Change(Sender: TObject);
+    procedure CBNRJ2Change(Sender: TObject);
+    procedure CBNRJ3Change(Sender: TObject);
+    procedure CBNRJ4Change(Sender: TObject);
+    procedure CBMin1Change(Sender: TObject);
+    procedure CBMin2Change(Sender: TObject);
+    procedure CBMin3Change(Sender: TObject);
+    procedure CBMin4Change(Sender: TObject);
+    procedure CBAli3Change(Sender: TObject);
+    procedure MI3DClick(Sender: TObject);
+    procedure MIPreviewClick(Sender: TObject);
+    procedure MIPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure CBMin5Change(Sender: TObject);
+    procedure MIExportClick(Sender: TObject);
+    procedure CBAli5Change(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+    LinePerf : TLineSeries ;
+    BarPerf : TBarSeries ;
+    ListAli, ListMat : TStrings ;
+    CompositionComplete : boolean ;
+    PieAli : TPieSeries ;
+    AreaAli : array of TAreaSeries ;
+    BarAli : array of TBarSeries ;
+    NbLimit : integer ;
+    ListPD : TStrings ;
+    LinePD : array of TLineSeries ;
+    ListAA : TStrings ;
+    PieAA : TPieSeries ;
+    AreaAA : array of TAreaSeries ;
+    BarAA : array of TBarSeries ;
+    LineAA : array[1..2] of TLineSeries ;
+    ListNRJ : TStrings ;
+    PieNRJ : TPieSeries ;
+    AreaNRJ : array of TAreaSeries ;
+    BarNRJ : array of TBarSeries ;
+    ListRej : TStrings ;
+    PieRej : TPieSeries ;
+    AreaRej : array of TAreaSeries ;
+    BarRej : array of TBarSeries ;
+    ListMin : TStrings ;
+    PieMin : TPieSeries ;
+    AreaMin : array of TAreaSeries ;
+    BarMin : array of TBarSeries ;
+    LineMin : array[1..2] of TLineSeries ;
+    procedure ResetGraph ;
+    procedure InitAli ;
+    procedure AffGraphAli ;
+    procedure InitPD ;
+    procedure AffGraphPD ;
+    procedure InitPerf ;
+    procedure AffGraphPerf ;
+    procedure InitAA ;
+    procedure AffGraphAA ;
+    procedure InitNRJ ;
+    procedure AffGraphNRJ ;
+    procedure InitRej ;
+    procedure AffGraphRej ;
+    procedure InitMin ;
+    procedure AffGraphMin ;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FResSimulT: TFResSimulT;
+
+implementation
+
+uses
+  UStrings, UFindRec, UUtil, UEchelle, UFSimulT, UFPrevGraph;
+
+{$R *.dfm}
+
+{ TFResSimulT }
+
+procedure TFResSimulT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 544 + (Width - ClientWidth);
+  Width := 640;
+  Constraints.MinHeight := 360 + (Height - ClientHeight);
+  Height := 480;
+  CBPerf1.ItemIndex := 0;
+  CBPerf2D.ItemIndex := 0;
+  CBPerf2P.ItemIndex := 0;
+  CBPerf3D.ItemIndex := 0;
+  CBPerf3P.ItemIndex := 0;
+  CBPerf4.Items.Add(StrKg);
+  CBPerf4.ItemIndex := 0;
+  CBAli1.ItemIndex := 0;
+  CBAli2D.ItemIndex := 0;
+  CBAli2P.ItemIndex := 0;
+  CBAli3.ItemIndex := 0;
+  CBAli4.Items.Add(StrKg);
+  CBAli4.Items.Add('%');
+  CBAli4.ItemIndex := 0;
+  CBAli5.ItemIndex := 0;
+  CBPD2.ItemIndex := 0;
+  CBAA1.ItemIndex := 0;
+  CBAA2D.ItemIndex := 0;
+  CBAA2P.ItemIndex := 0;
+  CBAA3.ItemIndex := 1;
+  CBAA4.Items.Add(StrG);
+  CBAA4.Items.Add('%');
+  CBAA4.ItemIndex := 0;
+  CBAA5.ItemIndex := 0;
+  CBNRJ1.ItemIndex := 0;
+  CBNRJ2D.ItemIndex := 0;
+  CBNRJ2P.ItemIndex := 0;
+  CBNRJ3.ItemIndex := 0;
+  CBNRJ4.Items.Add(StrMJ);
+  CBNRJ4.Items.Add('%');
+  CBNRJ4.ItemIndex := 0;
+  CBMin1.ItemIndex := 0;
+  CBMin2D.ItemIndex := 0;
+  CBMin2P.ItemIndex := 0;
+  CBMin3.ItemIndex := 0;
+  CBMin4.Items.Add(StrG);
+  CBMin4.Items.Add('%');
+  CBMin4.ItemIndex := 0;
+  CBMin5.ItemIndex := 0;
+  CBRej1.ItemIndex := 0;
+  CBRej2D.ItemIndex := 0;
+  CBRej2P.ItemIndex := 0;
+  CBRej3.ItemIndex := 0;
+  CBRej4.Items.Add(StrG);
+  CBRej4.Items.Add('%');
+  CBRej4.ItemIndex := 0;
+end;
+
+procedure TFResSimulT.FormShow (Sender : TObject) ;
+begin
+  MIPrint.Enabled := IsComplete or IsEducation ;
+  MIExport.Enabled := MIPrint.Enabled ;
+  // Bas de page du graphique
+  Graph.Foot.Text.Clear ;
+  Graph.Foot.Text.Add (FSimulT.CBSimul.Text) ;
+  // Aliments
+  InitAli ;
+  // Performances
+  InitPerf ;
+  // D�p�t de prot�ines
+  InitPD ;
+  // Acides Amin�s
+  InitAA ;
+  // Energie
+  InitNRJ ;
+  // Min�raux
+  InitMin ;
+  // Rejets
+  InitRej ;
+  // Abscisses par d�faut
+  CBPerf2D.ItemIndex := XTruie ;
+  CBAli2D.ItemIndex := XTruie ;
+  CBPD2.ItemIndex := XTruie ;
+  CBAA2D.ItemIndex := XTruie ;
+  CBNRJ2D.ItemIndex := XTruie ;
+  CBRej2D.ItemIndex := XTruie ;
+  CBMin2D.ItemIndex := XTruie ;
+  // Affichage principal
+  PC.ActivePageIndex := 0 ;
+  PCChange (nil) ;
+end ;
+
+procedure TFResSimulT.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+var
+  i : integer ;
+begin
+  // Performances
+  BarPerf.Free ;
+  LinePerf.Free ;
+  // Aliments
+  for i := 0 to ListAli.Count - 1 do
+    BarAli[i].Free ;
+  SetLength (BarAli, 0) ;
+  for i := 0 to ListAli.Count - 1 do
+    AreaAli[i].Free ;
+  SetLength (AreaAli, 0) ;
+  PieAli.Free ;
+  ListMat.Free ;
+  ListAli.Free ;
+  // D�p�t de prot�ines
+  for i := 0 to ListPD.Count do
+    LinePD[i].Free ;
+  SetLength (LinePD, 0) ;
+  ListPD.Free ;
+  // Acides Amin�s
+  for i := 1 to 2 do
+    LineAA[i].Free ;
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Free ;
+  SetLength (BarAA, 0) ;
+  for i := 0 to ListAA.Count - 1 do
+    AreaAA[i].Free ;
+  SetLength (AreaAA, 0) ;
+  PieAA.Free ;
+  ListAA.Free ;
+  // Energie
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Free ;
+  SetLength (BarNRJ, 0) ;
+  for i := 0 to ListNRJ.Count - 1 do
+    AreaNRJ[i].Free ;
+  SetLength (AreaNRJ, 0) ;
+  PieNRJ.Free ;
+  ListNRJ.Free ;
+  // Min�raux
+  for i := 1 to 2 do
+    LineMin[i].Free ;
+  for i := 0 to ListMin.Count - 1 do
+    BarMin[i].Free ;
+  SetLength (BarMin, 0) ;
+  for i := 0 to ListMin.Count - 1 do
+    AreaMin[i].Free ;
+  SetLength (AreaMin, 0) ;
+  PieMin.Free ;
+  ListMin.Free ;
+  // Rejets
+  for i := 0 to ListRej.Count - 1 do
+    BarRej[i].Free ;
+  SetLength (BarRej, 0) ;
+  for i := 0 to ListRej.Count - 1 do
+    AreaRej[i].Free ;
+  SetLength (AreaRej, 0) ;
+  PieRej.Free ;
+  ListRej.Free ;
+end ;
+
+procedure TFResSimulT.PCChange (Sender : TObject) ;
+begin
+  GBPDF.Visible := (PC.ActivePageIndex = 2) ;
+  case PC.ActivePageIndex of
+    0 : // Performances
+      AffGraphPerf ;
+    1 : // Aliments
+      AffGraphAli ;
+    2 : // D�p�t de prot�ines
+      AffGraphPD ;
+    3 : // Acides Amin�s
+      AffGraphAA ;
+    4 : // Energie
+      AffGraphNRJ ;
+    5: // Min�raux
+      AffGraphMin ;
+    6: // Rejets
+      AffGraphRej ;
+  end ;
+end ;
+
+procedure TFResSimulT.ResetGraph ;
+var
+  i : integer ;
+begin
+  Graph.UndoZoom ;
+//  Graph.View3D := FALSE ;
+  Graph.Legend.Visible := TRUE ;
+  Graph.Legend.Alignment := laRight ;
+  Graph.Title.Text.Clear ;
+  Graph.SubTitle.Text.Clear ;
+  Graph.BottomAxis.MinimumOffset := 0;
+  Graph.BottomAxis.MaximumOffset := 0;
+  // Performances
+  LinePerf.Active := FALSE ;
+  BarPerf.Active := FALSE ;
+  // Aliments
+  PieAli.Active := FALSE ;
+  for i := 0 to ListAli.Count - 1 do
+    AreaAli[i].Active := FALSE ;
+  for i := 0 to ListAli.Count - 1 do
+    BarAli[i].Active := FALSE ;
+  // D�p�t de prot�ines
+  for i := 0 to ListPD.Count do
+    LinePD[i].Active := FALSE ;
+  // Acides Amin�s
+  PieAA.Active := FALSE ;
+  for i := 0 to ListAA.Count - 1 do
+    AreaAA[i].Active := FALSE ;
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Active := FALSE ;
+  for i := 1 to 2 do
+    LineAA[i].Active := FALSE ;
+  // Energie
+  PieNRJ.Active := FALSE ;
+  for i := 0 to ListNRJ.Count - 1 do
+    AreaNRJ[i].Active := FALSE ;
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Active := FALSE ;
+  // Min�raux
+  PieMin.Active := FALSE ;
+  for i := 0 to ListMin.Count - 1 do
+    AreaMin[i].Active := FALSE ;
+  for i := 0 to ListMin.Count - 1 do
+    BarMin[i].Active := FALSE ;
+  for i := 1 to 2 do
+    LineMin[i].Active := FALSE ;
+  // Rejets
+  PieRej.Active := FALSE ;
+  for i := 0 to ListRej.Count - 1 do
+    AreaRej[i].Active := FALSE ;
+  for i := 0 to ListRej.Count - 1 do
+    BarRej[i].Active := FALSE ;
+  // Export
+  MExport.Clear;
+end ;
+
+procedure TFResSimulT.MI3DClick (Sender : TObject) ;
+begin
+  Graph.View3D := not (Graph.View3D) ;
+end ;
+
+procedure TFResSimulT.MIPreviewClick (Sender : TObject) ;
+begin
+  FPrevGraph := TFPrevGraph.Create (Self) ;
+  with FPrevGraph do
+  begin
+    TPPGraph.Panels.Add (Graph) ;
+    ShowModal ;
+    Release ;
+  end ;
+end ;
+
+procedure TFResSimulT.MIPrintClick (Sender : TObject) ;
+begin
+  if PD.Execute
+  then
+  begin
+    Printer.Orientation := poLandscape ;
+    Graph.Print ;
+  end ;
+end ;
+
+procedure TFResSimulT.MIExportClick(Sender: TObject);
+begin
+  SD.InitialDir := GetCurrentDir;
+  if SD.Execute
+  then
+    MExport.Lines.SaveToFile(SD.FileName);
+end;
+
+//////////////////////
+//   Performances   //
+//////////////////////
+procedure TFResSimulT.InitPerf ;
+begin
+  // LinePerf : s�rie (ligne) graphique
+  LinePerf := TLineSeries.Create (Graph) ;
+  LinePerf.ParentChart := Graph ;
+//  LinePerf.Title := ' ' ;
+  LinePerf.SeriesColor := clTeal ;
+  LinePerf.LinePen.Color := LinePerf.SeriesColor ;
+  LinePerf.LinePen.Width := 2 ;
+  Graph.AddSeries (LinePerf) ;
+  // BarPerf : s�rie (barre) graphique
+  BarPerf := TBarSeries.Create (Graph) ;
+  BarPerf.ParentChart := Graph ;
+//  BarPerf.Title := ' ' ;
+  BarPerf.SeriesColor := clTeal ;
+  BarPerf.BarPen.Color := BarPerf.SeriesColor ;
+  BarPerf.Marks.Style := smsValue ;
+  BarPerf.Marks.ArrowLength := 0 ;
+  BarPerf.Marks.Arrow.Visible := FALSE ;
+  BarPerf.Marks.Brush.Style := bsClear ;
+  BarPerf.Marks.Frame.Visible := FALSE ;
+  BarPerf.Marks.Font.Style := [fsBold] ;
+  Graph.AddSeries (BarPerf) ;
+end ;
+
+procedure TFResSimulT.AffGraphPerf ;
+var
+  j, k : integer ;
+  x, p : double ;
+  s, csv : string ;
+
+  // Abscisse
+  function PerfX : double ;
+  begin
+    case CBPerf1.ItemIndex of
+      0 : // Affichage dynamique
+        case CBPerf2D.ItemIndex of
+          0 : // Age
+            result := PResSimulT.TabResult[1, j] ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      1 : // Affichage par p�riode
+        case CBPerf2P.ItemIndex of
+          0 : // Cycle
+            result := PResSimulT.TabResult[2, j] ;
+          1 : // Stade
+            result := PResSimulT.TabResult[3, j] ;
+          else
+            result := 0 ;
+          end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function PerfY : double ;
+  var
+    h : integer ;
+    v, d, conso, gain : double ;
+  begin
+    case CBPerf1.ItemIndex of
+      0 : // Affichage dynamique
+        case CBPerf3D.ItemIndex of
+          0 : // Poids vif total
+            result := PResSimulT.TabResult[58, j] ;
+          1 : // Gain de poids total
+            result := PResSimulT.TabResult[59, j] * 1000 ;
+          2 : // Poids vif net
+            result := PResSimulT.TabResult[60, j] ;
+          3 : // Gain de poids net
+            result := PResSimulT.TabResult[61, j] * 1000 ;
+          4 : // Aliment consomm�
+            case CBPerf4.ItemIndex of
+              0 : // Aliment
+                result := PResSimulT.TabResult[11, j] ;
+              1 : // MS
+                result := PResSimulT.TabResult[12, j] ;
+              2 : // ED
+                result := PResSimulT.TabResult[71, j] ;
+              3 : // EM
+                result := PResSimulT.TabResult[72, j] ;
+              4 : // EN
+                result := PResSimulT.TabResult[73, j] ;
+              else
+                result := 0 ;
+            end ;
+          5 : // Indice de consommation
+            if PResSimulT.TabResult[59, j] <> 0
+            then
+              case CBPerf4.ItemIndex of
+                0 : // Aliment
+                  result := PResSimulT.TabResult[11, j] / PResSimulT.TabResult[59, j] ;
+                1 : // MS
+                  result := PResSimulT.TabResult[12, j] / PResSimulT.TabResult[59, j] ;
+                2 : // ED
+                  result := PResSimulT.TabResult[71, j] / PResSimulT.TabResult[59, j] ;
+                3 : // EM
+                  result := PResSimulT.TabResult[72, j] / PResSimulT.TabResult[59, j] ;
+                4 : // EN
+                  result := PResSimulT.TabResult[73, j] / PResSimulT.TabResult[59, j] ;
+                else
+                  result := 0 ;
+              end
+            else
+              result := 0 ;
+          6 : // Efficacit� alimentaire
+            case CBPerf4.ItemIndex of
+              0 : // Aliment
+                if PResSimulT.TabResult[11, j] <> 0
+                then
+                  result := PResSimulT.TabResult[59, j] / PResSimulT.TabResult[11, j]
+                else
+                  result := 0 ;
+              1 : // MS
+                if PResSimulT.TabResult[12, j] <> 0
+                then
+                  result := PResSimulT.TabResult[59, j] / PResSimulT.TabResult[12, j]
+                else
+                  result := 0 ;
+              2 : // ED
+                if PResSimulT.TabResult[71, j] <> 0
+                then
+                  result := PResSimulT.TabResult[59, j] / PResSimulT.TabResult[71, j]
+                else
+                  result := 0 ;
+              3 : // EM
+                if PResSimulT.TabResult[72, j] <> 0
+                then
+                  result := PResSimulT.TabResult[59, j] / PResSimulT.TabResult[72, j]
+                else
+                  result := 0 ;
+              4 : // EN
+                if PResSimulT.TabResult[73, j] <> 0
+                then
+                  result := PResSimulT.TabResult[59, j] / PResSimulT.TabResult[73, j]
+                else
+                  result := 0 ;
+              else
+                result := 0 ;
+            end ;
+          7 : // Poids de prot�ines
+            result := PResSimulT.TabResult[62, j] ;
+          8 : // D�p�t de prot�ines
+            result := PResSimulT.TabResult[63, j] ;
+          9 : // Poids de lipides
+            result := PResSimulT.TabResult[65, j] ;
+          10 : // D�p�t de lipides
+            result := PResSimulT.TabResult[66, j] ;
+          11 : // Epaisseur de lard
+            result := PResSimulT.TabResult[67, j] ;
+          12 : // Variation de P2
+            result := PResSimulT.TabResult[68, j] ;
+          13 : // Production laiti�re
+            result := PResSimulT.TabResult[69, j] ;
+          else
+            result := 0 ;
+        end ;
+      1 : // Affichage par p�riode
+      begin
+        // Diviseur
+        if (CBPerf3P.ItemIndex in [0, 1, 6, 7]) and (CBPerf4.ItemIndex = 1)
+        then // Dur�e et conversion kg -> g
+          d := (j - k) / 1000
+        else
+          if (CBPerf3P.ItemIndex in [3, 8, 9]) and (CBPerf4.ItemIndex mod 2 = 1)
+          then // Dur�e
+            d := (j - k)
+          else
+            d := 1 ;
+        v := 0 ;
+        case CBPerf3P.ItemIndex of
+          0 : // Gain de poids total
+            for h := k to j - 1 do
+              v := v + PResSimulT.TabResult[59, h] ;
+          1 : // Gain de poids net
+            for h := k to j - 1 do
+              v := v + PResSimulT.TabResult[61, h] ;
+          2 : // Dur�e
+            v := j - k ;
+          3 : // Aliment consomm�
+            for h := k to j - 1 do
+              case CBPerf4.ItemIndex of
+                0, 1 : // Aliment
+                  v := v + PResSimulT.TabResult[11, h] ;
+                2, 3 : // MS
+                  v := v + PResSimulT.TabResult[12, h] ;
+                4, 5 : // ED
+                  v := v + PResSimulT.TabResult[71, h] ;
+                6, 7 : // EM
+                  v := v + PResSimulT.TabResult[72, h] ;
+                8, 9 : // EN
+                  v := v + PResSimulT.TabResult[73, h] ;
+              end ;
+          4 : // Indice de consommation
+          begin
+            conso := 0 ;
+            for h := k to j - 1 do
+              case CBPerf4.ItemIndex of
+                0 : // Aliment
+                  conso := conso + PResSimulT.TabResult[11, h] ;
+                1 : // MS
+                  conso := conso + PResSimulT.TabResult[12, h] ;
+                2 : // ED
+                  conso := conso + PResSimulT.TabResult[71, h] ;
+                3 : // EM
+                  conso := conso + PResSimulT.TabResult[72, h] ;
+                4 : // EN
+                  conso := conso + PResSimulT.TabResult[73, h] ;
+              end ;
+            gain := 0 ;
+            for h := k to j - 1 do
+              gain := gain + PResSimulT.TabResult[59, h] ;
+            if gain <> 0
+            then
+              v := conso / gain ;
+          end ;
+          5 : // Efficacit� alimentaire
+          begin
+            gain := 0 ;
+            for h := k to j - 1 do
+              gain := gain + PResSimulT.TabResult[59, h] ;
+            conso := 0 ;
+            for h := k to j - 1 do
+              case CBPerf4.ItemIndex of
+                0 : // Aliment
+                  conso := conso + PResSimulT.TabResult[11, h] ;
+                1 : // MS
+                  conso := conso + PResSimulT.TabResult[12, h] ;
+                2 : // ED
+                  conso := conso + PResSimulT.TabResult[71, h] ;
+                3 : // EM
+                  conso := conso + PResSimulT.TabResult[72, h] ;
+                4 : // EN
+                  conso := conso + PResSimulT.TabResult[73, h] ;
+              end ;
+            if conso <> 0
+            then
+              v := gain / conso ;
+          end ;
+          6 : // D�p�t de prot�ines
+            for h := k to j - 1 do
+              v := v + PResSimulT.TabResult[63, h] / 1000 ;
+          7 : // D�p�t de lipides
+            for h := k to j - 1 do
+              v := v + PResSimulT.TabResult[66, h] / 1000 ;
+          8 : // Variation de P2
+            for h := k to j - 1 do
+              v := v + PResSimulT.TabResult[68, h] ;
+          9 : // Production laiti�re
+            for h := k to j - 1 do
+              v := v + PResSimulT.TabResult[69, h] ;
+        end ;
+        result := v / d ;
+      end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphPerf
+begin
+  ResetGraph ;
+  Graph.Legend.Visible := FALSE ;
+  Graph.Title.Text.Add (Format ('%s : %s', [TabPerf.Caption, CBPerf1.Text])) ;
+  case CBPerf1.ItemIndex of
+    0 : // Affichage dynamique
+    begin
+      Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBPerf3D.Text, CBPerf4.Text]) ;
+      Graph.BottomAxis.Title.Caption := CBPerf2D.Text ;
+      csv := CBPerf2D.Text;
+      csv := csv + ';' + Format ('%s (%s)', [CBPerf3D.Text, CBPerf4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage de la ligne
+      LinePerf.Active := TRUE ;
+      LinePerf.Clear ;
+      for j := 1 to PResSimulT.NbJSim do
+      begin
+        if (j > 1) and ((PResSimulT.TabResult[2, j] <> PResSimulT.TabResult[2, j - 1]) and (PSimulT.OptInit = 1)) or ((PResSimulT.TabResult[3, j] <> PResSimulT.TabResult[3, j - 1]) and (PSimulT.OptInit = 0))
+        then // Rupture de cycle ou de stade
+          LinePerf.AddXY (PerfX, PerfY, '', clNone) ;
+        LinePerf.AddXY (PerfX, PerfY, '', clTeeColor) ;
+        csv := FloatToStrF(PerfX, ffFixed, 15, 15);
+        csv := csv + ';' + FloatToStrF(PerfY, ffFixed, 15, 15);
+        MExport.Lines.Append(csv);
+      end ;
+    end ;
+    1 : // Affichage par p�riode
+    begin
+      Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBPerf3P.Text, CBPerf4.Text]) ;
+      Graph.BottomAxis.Title.Caption := CBPerf2P.Text ;
+      csv := CBPerf2P.Text;
+      csv := csv + ';' + Format ('%s (%s)', [CBPerf3P.Text, CBPerf4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage de la barre
+      BarPerf.Active := TRUE ;
+      BarPerf.Clear ;
+      j := 1 ;
+      x := PerfX ;
+      k := 1 ;
+      if PResSimulT.NbJSim > 1
+      then
+        for j := 2 to PResSimulT.NbJSim do
+        begin
+          p := PerfX ;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            if CBPerf2P.ItemIndex = 1
+            then // Stade
+              case Trunc (x) of
+                0 : s := StrGestation ;
+                1 : s := StrLactation ;
+                2 : s := StrISSF ;
+              end
+            else
+              s := Format ('%1.0f', [x]) ;
+            BarPerf.AddBar (PerfY, s, clTeeColor) ;
+            csv := s;
+            csv := csv + ';' + FloatToStrF(PerfY, ffFixed, 15, 15);
+            MExport.Lines.Append(csv);
+            x := p ;
+            k := j ;
+          end ;
+        end ;
+      j := PResSimulT.NbJSim + 1 ;
+      if CBPerf2P.ItemIndex = 2
+      then // Globale
+        s := ' '
+      else
+        if CBPerf2P.ItemIndex = 1
+        then // Stade
+          case Trunc (x) of
+            0 : s := StrGestation ;
+            1 : s := StrLactation ;
+            2 : s := StrISSF ;
+          end
+        else
+          s := Format ('%1.0f', [x]) ;
+      BarPerf.AddBar (PerfY, s, clTeeColor) ;
+      csv := s;
+      csv := csv + ';' + FloatToStrF(PerfY, ffFixed, 15, 15);
+      MExport.Lines.Append(csv);
+    end ;
+  end ;
+  Graph.View3DOptions.Orthogonal := TRUE ;
+  Graph.View3DOptions.Elevation := 345 ;
+  Graph.View3DOptions.Rotation := 345 ;
+  Graph.View3DOptions.Perspective := 15 ;
+  AjustEchelle (Graph) ;
+  with BarPerf do
+    ValueFormat := AjustFormat (AjustPas (MaxYValue - MinYValue) / 10) ;
+end ;
+
+procedure TFResSimulT.CBPerf1Change (Sender : TObject) ;
+begin
+  case CBPerf1.ItemIndex of
+    0 : // Affichage dynamique
+    begin
+      CBPerf2D.Visible := TRUE ;
+      CBPerf2P.Visible := FALSE ;
+      CBPerf3D.Visible := TRUE ;
+      CBPerf3P.Visible := FALSE ;
+//      CBPerf4.Visible := FALSE ;
+    end ;
+    1 : // Affichage par p�riode
+    begin
+      CBPerf2D.Visible := FALSE ;
+      CBPerf2P.Visible := TRUE ;
+      CBPerf3D.Visible := FALSE ;
+      CBPerf3P.Visible := TRUE ;
+//      CBPerf4.Visible := TRUE ;
+    end ;
+  end ;
+  CBPerf3Change (nil) ;
+end ;
+
+procedure TFResSimulT.CBPerf2Change (Sender : TObject) ;
+begin
+  AffGraphPerf ;
+end ;
+
+procedure TFResSimulT.CBPerf3Change (Sender : TObject) ;
+begin
+  CBPerf4.Items.Clear ;
+  case CBPerf1.ItemIndex of
+    0 : // Affichage dynamique
+      case CBPerf3D.ItemIndex of
+        0, 2 : // Poids vif (total ou net)
+          CBPerf4.Items.Add (StrKg) ;
+        1, 3 : // Gain de poids (total ou net)
+          CBPerf4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+        4 : // Aliment consomm�
+        begin
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrKg, StrAlimentUnit, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrKg, StrMS, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrED, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrEM, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrEN, StrJ])) ;
+        end ;
+        5 : // Indice de consommation
+        begin
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrAlimentUnit, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrMS, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrED, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrEM, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrEN, StrKg, StrGMQUnit])) ;
+        end ;
+        6 : // Efficacit� alimentaire
+        begin
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrKg, StrAlimentUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrKg, StrMS])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrED])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrEM])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrEN])) ;
+        end ;
+        7, 9 : // Poids de prot�ines ou de lipides
+          CBPerf4.Items.Add (StrKg) ;
+        8, 10 : // D�p�t de prot�ines ou de lipides
+          CBPerf4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+        11 : // Epaisseur de lard
+          CBPerf4.Items.Add (StrMm) ;
+        12 : // Variation de P2
+          CBPerf4.Items.Add (Format ('%s/%s', [StrMm, StrJ])) ;
+        13 : // Production laiti�re
+          CBPerf4.Items.Add (Format ('%s/%s', [StrKg, StrJ])) ;
+      end ;
+    1 : // Affichage par p�riode
+      case CBPerf3P.ItemIndex of
+        0, 1 : // Gain de poids (total ou net)
+        begin
+          CBPerf4.Items.Add (StrKg) ;
+          CBPerf4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+        end ;
+        2 : // Dur�e
+          CBPerf4.Items.Add (StrJ) ;
+        3 : // Aliment consomm�
+        begin
+          CBPerf4.Items.Add (Format ('%s %s', [StrKg, StrAlimentUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrKg, StrAlimentUnit, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s', [StrKg, StrMS])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrKg, StrMS, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s', [StrMJ, StrED])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrED, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s', [StrMJ, StrEM])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrEM, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s', [StrMJ, StrEN])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrEN, StrJ])) ;
+        end ;
+        4 : // Indice de consommation
+        begin
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrAlimentUnit, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrMS, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrED, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrEM, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrEN, StrKg, StrGMQUnit])) ;
+        end ;
+        5 : // Efficacit� alimentaire
+        begin
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrKg, StrAlimentUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrKg, StrMS])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrED])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrEM])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrEN])) ;
+        end ;
+        6, 7 : // D�p�t de prot�ines ou de lipides
+        begin
+          CBPerf4.Items.Add (StrKg) ;
+          CBPerf4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+        end ;
+        8 : // Variation de P2
+        begin
+          CBPerf4.Items.Add (StrMm) ;
+          CBPerf4.Items.Add (Format ('%s/%s', [StrMm, StrJ])) ;
+        end ;
+        9 : // Production laiti�re
+        begin
+          CBPerf4.Items.Add (StrKg) ;
+          CBPerf4.Items.Add (Format ('%s/%s', [StrKg, StrJ])) ;
+        end ;
+      end ;
+  end ;
+  CBPerf4.ItemIndex := 0 ;
+  AffGraphPerf ;
+end ;
+
+procedure TFResSimulT.CBPerf4Change (Sender : TObject) ;
+begin
+  AffGraphPerf ;
+end ;
+
+//////////////////
+//   Aliments   //
+//////////////////
+procedure TFResSimulT.InitAli ;
+var
+  i, j : integer ;
+  nom : string ;
+begin
+  // ListAli : liste des aliments utilis�s
+  ListAli := TStringList.Create ;
+  for i := 1 to 2 do // 2 aliments
+    for j := 1 to PResSimulT.NbJSim do
+      if PResSimulT.TabResult[8 + i, j] > 0
+      then
+      begin
+        nom := FindNomAliment (Trunc (PResSimulT.TabResult[6 + i, j])) ;
+        if ListAli.IndexOf (nom) = -1
+        then
+          ListAli.Add (nom) ;
+      end ;
+  // ListMat : liste des mati�res premi�res utilis�es
+  CompositionComplete := TRUE ;
+  ListMat := TStringList.Create ;
+  for i := 0 to ListAli.Count - 1 do
+  begin
+    PAliment := ListAliment[FindIdxAliment (ListAli[i])] ;
+    if PAliment.MP.NbMat > 0
+    then
+      for j := 0 to PAliment.MP.NbMat - 1 do
+      begin
+        nom := FindNomMatiere (PAliment.MP.NumMat[j]) ;
+        if ListMat.IndexOf (nom) = -1
+        then
+          ListMat.Add (nom) ;
+      end
+    else
+      CompositionComplete := FALSE ;
+  end ;
+  CBAli5.Visible := ConfAffMP and CompositionComplete ;
+  // PieAli : s�rie (camembert) graphique
+  PieAli := TPieSeries.Create (Graph) ;
+  PieAli.ParentChart := Graph ;
+  PieAli.SeriesColor := clBlack ;
+  PieAli.Circled := TRUE ;
+  PieAli.Marks.ArrowLength := 24 ;
+  PieAli.Marks.Arrow.Color := clBlack ;
+  PieAli.Marks.Brush.Style := bsClear ;
+  PieAli.Marks.Frame.Visible := FALSE ;
+  PieAli.OtherSlice.Style := poBelowPercent ;
+  PieAli.OtherSlice.Value := 1 ;
+  PieAli.OtherSlice.Text := StrAutres ;
+  Graph.AddSeries (PieAli) ;
+  // AreaAli : s�ries (aires) graphiques
+  SetLength (AreaAli, ListAli.Count) ;
+  for i := 0 to ListAli.Count - 1 do
+  begin
+    AreaAli[i] := TAreaSeries.Create (Graph) ;
+    AreaAli[i].ParentChart := Graph ;
+    AreaAli[i].Title := ListAli[i] ;
+    AreaAli[i].AreaLinesPen.Visible := FALSE ;
+    Graph.AddSeries (AreaAli[i]) ;
+  end ;
+  // BarAli : s�ries (barres) graphiques
+  SetLength (BarAli, ListAli.Count) ;
+  for i := 0 to ListAli.Count - 1 do
+  begin
+    BarAli[i] := TBarSeries.Create (Graph) ;
+    BarAli[i].ParentChart := Graph ;
+    BarAli[i].Title := ListAli[i] ;
+    BarAli[i].SeriesColor := AreaAli[i].SeriesColor ;
+    BarAli[i].BarPen.Color := BarAli[i].SeriesColor ;
+    BarAli[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarAli[i]) ;
+  end ;
+end ;
+
+procedure TFResSimulT.AffGraphAli ;
+var
+  i, j, k : integer ;
+  x, y, t, p : double ;
+  s, csv : string ;
+
+  // Abscisse
+  function AliX : double ;
+  begin
+    case CBAli1.ItemIndex of
+      1 : // R�partition dynamique
+        case CBAli2D.ItemIndex of
+          0 : // Age
+            result := PResSimulT.TabResult[1, j] ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      2 : // R�partition par p�riode
+        case CBAli2P.ItemIndex of
+          0 : // Cycle
+            result := PResSimulT.TabResult[2, j] ;
+          1 : // Stade
+            result := PResSimulT.TabResult[3, j] ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e (Aliments)
+  function AliY : double ;
+  var
+    h : integer ;
+    v, d : double ;
+  begin
+    case CBAli1.ItemIndex of
+      0 : // R�partition globale
+      begin
+        v := 0 ;
+        for h := 1 to PResSimulT.NbJSim do
+        begin
+          // Aliment 1
+          if (PResSimulT.TabResult[7, h] <> -1) and (FindNomAliment (Trunc (PResSimulT.TabResult[7, h])) = ListAli[i])
+          then
+            v := v + (PResSimulT.TabResult[11, h] * PResSimulT.TabResult[9, h] / 100) ;
+          // Aliment 2
+          if (PResSimulT.TabResult[8, h] <> -1) and (FindNomAliment (Trunc (PResSimulT.TabResult[8, h])) = ListAli[i])
+          then
+            v := v + (PResSimulT.TabResult[11, h] * PResSimulT.TabResult[10, h] / 100) ;
+        end ;
+        if CBAli3.ItemIndex = 1
+        then // Co�t
+        begin
+          PAliment := ListAliment[FindIdxAliment (ListAli[i])] ;
+          v := v * PAliment.Prix / 1000 ;
+        end ;
+        result := v ;
+      end ;
+      1 : // R�partition dynamique
+      begin
+        // Diviseur
+        case CBAli3.ItemIndex of
+          1 : // Co�t
+            case CBAli4.ItemIndex of
+              1 : // Aliment ing�r�
+                d := PResSimulT.TabResult[11, j] ;
+              else
+                d := 1 ;
+            end ;
+          else
+            d := 1 ;
+        end ;
+        v := 0 ;
+        // Aliment 1
+        if (PResSimulT.TabResult[7, j] <> -1) and (FindNomAliment (Trunc (PResSimulT.TabResult[7, j])) = ListAli[i])
+        then
+          v := v + (PResSimulT.TabResult[11, j] * PResSimulT.TabResult[9, j] / 100) ;
+        // Aliment 2
+        if (PResSimulT.TabResult[8, j] <> -1) and (FindNomAliment (Trunc (PResSimulT.TabResult[8, j])) = ListAli[i])
+        then
+          v := v + (PResSimulT.TabResult[11, j] * PResSimulT.TabResult[10, j] / 100) ;
+        if CBAli3.ItemIndex = 1
+        then // Co�t
+        begin
+          PAliment := ListAliment[FindIdxAliment (ListAli[i])] ;
+          v := v * PAliment.Prix / 1000 ;
+        end ;
+        result := v / d ;
+      end ;
+      2 : // R�partition par p�riode
+      begin
+        // Diviseur
+        case CBAli3.ItemIndex of
+          0 : // Quantit�
+            case CBAli4.ItemIndex of
+              1 : // Dur�e
+                d := j - k ;
+              else
+                d := 1 ;
+            end ;
+          1 : // Co�t
+            case CBAli4.ItemIndex of
+              1 : // Dur�e
+                d := j - k ;
+              2 : // Aliment ing�r�
+              begin
+                d := 0 ;
+                for h := k to j - 1 do
+                  d := d + PResSimulT.TabResult[11, h] ;
+              end ;
+              else
+                d := 1 ;
+            end ;
+          else
+            d := 1 ;
+        end ;
+        v := 0 ;
+        for h := k to j - 1 do
+        begin
+          // Aliment 1
+          if (PResSimulT.TabResult[7, h] <> -1) and (FindNomAliment (Trunc (PResSimulT.TabResult[7, h])) = ListAli[i])
+          then
+            v := v + (PResSimulT.TabResult[11, h] * PResSimulT.TabResult[9, h] / 100) ;
+          // Aliment 2
+          if (PResSimulT.TabResult[8, h] <> -1) and (FindNomAliment (Trunc (PResSimulT.TabResult[8, h])) = ListAli[i])
+          then
+            v := v + (PResSimulT.TabResult[11, h] * PResSimulT.TabResult[10, h] / 100) ;
+        end ;
+        if CBAli3.ItemIndex = 1
+        then // Co�t
+        begin
+          PAliment := ListAliment[FindIdxAliment (ListAli[i])] ;
+          v := v * PAliment.Prix / 1000 ;
+        end ;
+        result := v / d ;
+      end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�es (Mati�res premi�res)
+  function MatY : double ;
+  var
+    g, h : integer ;
+    v : double ;
+  begin
+    v := 0 ;
+    for h := 1 to PResSimulT.NbJSim do
+    begin
+      if PResSimulT.TabResult[7, h] <> -1
+      then // Aliment 1
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Trunc (PResSimulT.TabResult[7, h])))] ;
+        for g := 0 to PAliment.MP.NbMat - 1 do
+          if FindNomMatiere (PAliment.MP.NumMat[g]) = ListMat[i]
+          then
+            v := v + (PAliment.MP.Qte[g] * PResSimulT.TabResult[11, h] * PResSimulT.TabResult[9, h] / 100) ;
+      end ;
+      if PResSimulT.TabResult[8, h] <> -1
+      then // Aliment 2
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Trunc (PResSimulT.TabResult[8, h])))] ;
+        for g := 0 to PAliment.MP.NbMat - 1 do
+          if FindNomMatiere (PAliment.MP.NumMat[g]) = ListMat[i]
+          then
+            v := v + (PAliment.MP.Qte[g] * PResSimulT.TabResult[11, h] * PResSimulT.TabResult[10, h] / 100) ;
+      end ;
+    end ;
+    result := v / 1000 ; // Conversion g -> kg
+  end ;
+
+// AffGraphAli
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (Format ('%s : %s', [CBAli5.Text, CBAli1.Text])) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBAli3.Text, CBAli4.Text]) ;
+  case CBAli1.ItemIndex of
+    0 : // R�partition globale
+    begin
+//      Graph.View3D := TRUE ;
+      Graph.Legend.Visible := FALSE ;
+      csv := '';
+      for i := 0 to ListAli.Count - 1 do
+        csv := csv + Format ('%s (%s)', [ListAli[i], CBAli4.Text]) + ';';
+      MExport.Lines.Append(csv);
+      // Affichage du camembert
+      PieAli.Active := TRUE ;
+      PieAli.Clear ;
+      if CBAli4.ItemIndex = 1
+      then
+        PieAli.Marks.Style := smsLabelPercent
+      else
+        PieAli.Marks.Style := smsLabelValue ;
+      t := 0 ;
+      csv := '';
+      if CBAli5.ItemIndex = 1
+      then // Mati�res premi�res
+        for i := 0 to ListMat.Count - 1 do
+        begin
+          y := MatY ;
+          PieAli.AddPie (y, ListMat[i], clTeeColor) ;
+          t := t + y ;
+          csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+        end
+      else // Aliments
+        for i := 0 to ListAli.Count - 1 do
+        begin
+          y := AliY ;
+          PieAli.AddPie (y, ListAli[i], AreaAli[i].SeriesColor) ;
+          t := t + y ;
+          csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+        end ;
+      Graph.SubTitle.Text.Add (Format ('%s : %1.0f %s', [StrTotal, t, CBAli4.Items[0]])) ;
+      MExport.Lines.Append(csv);
+    end ;
+    1 : // R�partition dynamique
+    begin
+      Graph.BottomAxis.Title.Caption := CBAli2D.Text ;
+      csv := CBAli2D.Text;
+      for i := 0 to ListAli.Count - 1 do
+        csv := csv + ';' + Format ('%s (%s)', [ListAli[i], CBAli4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des aires
+      for i := 0 to ListAli.Count - 1 do
+        AreaAli[i].Active := TRUE ;
+      for i := 0 to ListAli.Count - 1 do
+        AreaAli[i].Clear ;
+      if (CBAli4.ItemIndex = 1) and (CBAli3.ItemIndex = 0)
+      then
+        for i := 0 to ListAli.Count - 1 do
+          AreaAli[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListAli.Count - 1 do
+          AreaAli[i].MultiArea := maStacked ;
+      for j := 1 to PResSimulT.NbJSim do
+      begin
+        csv := FloatToStrF(AliX, ffFixed, 15, 15);
+        for i := 0 to ListAli.Count - 1 do
+        begin
+          AreaAli[i].AddXY (AliX, AliY, '', clTeeColor) ;
+          csv := csv + ';' + FloatToStrF(AliY, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+    end ;
+    2 : // R�partition par p�riode
+    begin
+      Graph.BottomAxis.Title.Caption := CBAli2P.Text ;
+      csv := CBAli2P.Text;
+      for i := 0 to ListAli.Count - 1 do
+        csv := csv + ';' + Format ('%s (%s)', [ListAli[i], CBAli4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des barres
+      for i := 0 to ListAli.Count - 1 do
+        BarAli[i].Active := TRUE ;
+      for i := 0 to ListAli.Count - 1 do
+        BarAli[i].Clear ;
+      if (CBAli4.ItemIndex = 2) and (CBAli3.ItemIndex = 0)
+      then
+        for i := 0 to ListAli.Count - 1 do
+          BarAli[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListAli.Count - 1 do
+          BarAli[i].MultiBar := mbStacked ;
+      j := 1 ;
+      x := AliX ;
+      k := 1 ;
+      if PResSimulT.NbJSim > 1
+      then
+        for j := 2 to PResSimulT.NbJSim do
+        begin
+          p := AliX ;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            if CBAli2P.ItemIndex = 1
+            then // Stade
+              case Trunc (x) of
+                0 : s := StrGestation ;
+                1 : s := StrLactation ;
+                2 : s := StrISSF ;
+              end
+            else
+              s := Format ('%1.0f', [x]) ;
+            csv := s;
+            for i := 0 to ListAli.Count - 1 do
+            begin
+              y := AliY ;
+              if y > 0
+              then
+                BarAli[i].AddBar (y, s, clTeeColor)
+              else
+                BarAli[i].AddNull (s) ;
+              csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+            end ;
+            MExport.Lines.Append(csv);
+            x := p ;
+            k := j ;
+          end ;
+        end ;
+      j := PResSimulT.NbJSim + 1 ;
+      if CBAli2P.ItemIndex = 2
+      then // Globale
+        s := ' '
+      else
+        if CBAli2P.ItemIndex = 1
+        then // Stade
+          case Trunc (x) of
+            0 : s := StrGestation ;
+            1 : s := StrLactation ;
+            2 : s := StrISSF ;
+          end
+        else
+          s := Format ('%1.0f', [x]) ;
+      csv := s;
+      for i := 0 to ListAli.Count - 1 do
+      begin
+        y := AliY ;
+        if y > 0
+        then
+          BarAli[i].AddBar (y, s, clTeeColor)
+        else
+          BarAli[i].AddNull (s) ;
+        csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+      end ;
+      MExport.Lines.Append(csv);
+    end ;
+  end ;
+  if PieAli.Active
+  then
+  begin
+    Graph.View3DOptions.Orthogonal := FALSE ;
+    Graph.View3DOptions.Elevation := 315 ;
+    Graph.View3DOptions.Rotation := 360 ;
+    Graph.View3DOptions.Perspective := 0 ;
+  end
+  else
+  begin
+    Graph.View3DOptions.Orthogonal := TRUE ;
+    Graph.View3DOptions.Elevation := 345 ;
+    Graph.View3DOptions.Rotation := 345 ;
+    Graph.View3DOptions.Perspective := 15 ;
+  end ;
+  AjustEchelle (Graph) ;
+  PieAli.PercentFormat := Format ('%s %s', [AjustFormat (0.1), CBAli4.Text]) ;
+  PieAli.ValueFormat := Format ('%s %s', [AjustFormat (0.1), CBAli4.Text]) ;
+  PieAli.PercentFormat := Format ('%s %s', [AjustFormat (1), CBAli4.Text]) ;
+  PieAli.ValueFormat := Format ('%s %s', [AjustFormat (1), CBAli4.Text]) ;
+end ;
+
+procedure TFResSimulT.CBAli1Change (Sender : TObject) ;
+begin
+  case CBAli1.ItemIndex of
+    0 : // R�partition globale
+    begin
+      CBAli2D.Visible := FALSE ;
+      CBAli2P.Visible := FALSE ;
+      CBAli5.Visible := ConfAffMP and CompositionComplete ;
+    end ;
+    1 : // R�partition dynamique
+    begin
+      CBAli2D.Visible := TRUE ;
+      CBAli2P.Visible := FALSE ;
+      CBAli3.Enabled := TRUE ;
+      CBAli5.ItemIndex := 0 ; // Aliments
+      CBAli5.Visible := FALSE ;
+    end ;
+    2 : // R�partition par p�riode
+    begin
+      CBAli2D.Visible := FALSE ;
+      CBAli2P.Visible := TRUE ;
+      CBAli3.Enabled := TRUE ;
+      CBAli5.ItemIndex := 0 ; // Aliments
+      CBAli5.Visible := FALSE ;
+    end ;
+  end ;
+  CBAli3Change (nil) ;
+end ;
+
+procedure TFResSimulT.CBAli2Change (Sender : TObject) ;
+begin
+  AffGraphAli ;
+end ;
+
+procedure TFResSimulT.CBAli3Change(Sender: TObject);
+begin
+  CBAli4.Items.Clear ;
+  case CBAli1.ItemIndex of
+    0 : // R�partition globale
+      case CBAli3.ItemIndex of
+        0 : // Quantit�
+        begin
+          CBAli4.Items.Add (StrKg) ;
+          CBAli4.Items.Add ('%') ;
+        end ;
+        1 : // Co�t
+        begin
+          CBAli4.Items.Add (CurrencySign) ;
+          CBAli4.Items.Add ('%') ;
+        end ;
+      end ;
+    1 : // R�partition dynamique
+      case CBAli3.ItemIndex of
+        0 : // Quantit�
+        begin
+          CBAli4.Items.Add (Format ('%s/%s', [StrKg, StrJ])) ;
+          CBAli4.Items.Add ('%') ;
+        end ;
+        1 : // Co�t
+        begin
+          CBAli4.Items.Add (Format ('%s/%s', [CurrencySign, StrJ])) ;
+          CBAli4.Items.Add (Format ('%s/%s %s', [CurrencySign, StrKg, StrAlimentUnit])) ;
+        end ;
+      end ;
+    2 : // R�partition par p�riode
+      case CBAli3.ItemIndex of
+        0 : // Quantit�
+        begin
+          CBAli4.Items.Add (StrKg) ;
+          CBAli4.Items.Add (Format ('%s/%s', [StrKg, StrJ])) ;
+          CBAli4.Items.Add ('%') ;
+        end ;
+        1 : // Co�t
+        begin
+          CBAli4.Items.Add (CurrencySign) ;
+          CBAli4.Items.Add (Format ('%s/%s', [CurrencySign, StrJ])) ;
+          CBAli4.Items.Add (Format ('%s/%s %s', [CurrencySign, StrKg, StrAlimentUnit])) ;
+        end ;
+      end ;
+  end ;
+  CBAli4.ItemIndex := 0 ;
+  AffGraphAli ;
+end;
+
+procedure TFResSimulT.CBAli4Change (Sender : TObject) ;
+begin
+  AffGraphAli ;
+end ;
+
+procedure TFResSimulT.CBAli5Change(Sender: TObject);
+begin
+  CBAli3.Enabled := CBAli5.ItemIndex = 0 ; // Aliments
+  if (CBAli5.ItemIndex = 1) and (CBAli3.ItemIndex <> 0)
+  then // Mati�res premi�res => Quantit�
+  begin
+    CBAli3.ItemIndex := 0 ;
+    CBAli4.Items.Clear ;
+    CBAli4.Items.Add (StrKg) ;
+    CBAli4.Items.Add ('%') ;
+    CBAli4.ItemIndex := 0 ;
+  end ;
+  AffGraphAli ;
+end;
+
+////////////////////////////
+//   D�p�t de prot�ines   //
+////////////////////////////
+procedure TFResSimulT.InitPD ;
+const
+  TabColor : array[0..14] of TColor = (clRed, clGreen, clYellow, clBlue,
+    clFuchsia, clTeal, clNavy, clLime, clMaroon, clOlive, clPurple, clAqua,
+    clMoneyGreen, clSkyBlue, clCream) ;
+type
+  TRecTriPD = record
+    Idx : integer ;
+    Min : double ;
+    Moy : double ;
+  end ;
+var
+  i, j : integer ;
+  PD, PDAA : double ;
+  TabTriPD : array of TRecTriPD ;
+  TabTemp : array of double ;
+  RecTemp : TRecTriPD ;
+begin
+  // ListPD : liste pour le d�p�t de prot�ines
+  ListPD := TStringList.Create ;
+  ListPD.Assign (LBPD.Items) ;
+  // Initialisation du tableau
+  SetLength (TabTriPD, ListPD.Count) ;
+  SetLength (TabTemp, PResSimulT.NbJSim) ;
+  for i := 0 to ListPD.Count - 1 do
+  begin
+    TabTriPD[i].Idx := i ;
+    for j := 1 to PResSimulT.NbJSim do
+    begin
+      if PresSimulT.TabResult[3, j] = 1
+      then // Lactation
+        PD := PResSimulT.TabResult[69, j] / 6.38 * 50 * 6.25
+      else
+        PD := PResSimulT.TabResult[64, j] ;
+      case i of
+        0 : // Energie
+          PDAA := PResSimulT.TabResult[40, j] ;
+        1 : // Lysine
+          PDAA := PResSimulT.TabResult[42, j] ;
+        2 : // Thr�onine
+          PDAA := PResSimulT.TabResult[46, j] ;
+        3 : // Tryptophane
+          PDAA := PResSimulT.TabResult[45, j] ;
+        4 : // M�thionine
+          PDAA := PResSimulT.TabResult[43, j] ;
+        5 : // M�thionine+Cystine
+          PDAA := PResSimulT.TabResult[54, j] ;
+        6 : // Valine
+          PDAA := PResSimulT.TabResult[51, j] ;
+        7 : // Isoleucine
+          PDAA := PResSimulT.TabResult[50, j] ;
+        8 : // Leucine
+          PDAA := PResSimulT.TabResult[49, j] ;
+        9 : // Ph�nylalanine
+          PDAA := PResSimulT.TabResult[47, j] ;
+        10 : // Ph�nylalanine+Tyrosine
+          PDAA := PResSimulT.TabResult[55, j] ;
+        11 : // Arginine
+          PDAA := PResSimulT.TabResult[53, j] ;
+        12 : // Histidine
+          PDAA := PResSimulT.TabResult[52, j] ;
+        13 : // MAT
+          PDAA := PResSimulT.TabResult[41, j] ;
+        else
+          PDAA := 0 ;
+      end ;
+      if (PD = 0) or (PDAA = 0)
+      then
+        TabTemp[j - 1] := INFINI
+      else
+        TabTemp[j - 1] := PDAA / PD ;
+    end ;
+    TabTriPD[i].Min := MinValue (TabTemp) ;
+    TabTriPD[i].Moy := Mean (TabTemp) ;
+  end ;
+  // D�termination du nombre de facteurs limitants
+  NbLimit := 0 ;
+  for i := 0 to ListPD.Count - 1 do
+    if TabTriPD[i].Min - 1 < PICO then Inc (NbLimit) ;
+  // Tri du tableau (tri � bulle) sur Min et Moy
+  for i := ListPD.Count - 1 downto 1 do
+    for j := 0 to i - 1 do
+      if (TabTriPD[j].Min > TabTriPD[j + 1].Min)
+        or ((TabTriPD[j].Min = TabTriPD[j + 1].Min)
+          and (TabTriPD[j].Moy > TabTriPD[j + 1].Moy))
+      then
+      begin
+        RecTemp.Idx := TabTriPD[j].Idx ;
+        RecTemp.Min := TabTriPD[j].Min ;
+        RecTemp.Moy := TabTriPD[j].Moy ;
+        TabTriPD[j].Idx := TabTriPD[j + 1].Idx ;
+        TabTriPD[j].Min := TabTriPD[j + 1].Min ;
+        TabTriPD[j].Moy := TabTriPD[j + 1].Moy ;
+        TabTriPD[j + 1].Idx := RecTemp.Idx ;
+        TabTriPD[j + 1].Min := RecTemp.Min ;
+        TabTriPD[j + 1].Moy := RecTemp.Moy ;
+      end ;
+  // Construction de la liste tri�e
+  LBPD.Items.Clear ;
+  for i := 0 to ListPD.Count - 1 do
+    LBPD.Items.Add (ListPD[TabTriPD[i].Idx]) ;
+  // LinePD : s�ries (lignes) graphiques
+  SetLength (LinePD, ListPD.Count + 1) ;
+  // D�p�t de prot�ines
+  LinePD[ListPD.Count] := TLineSeries.Create (Graph) ;
+  LinePD[ListPD.Count].ParentChart := Graph ;
+  LinePD[ListPD.Count].Title := TabPD.Caption ;
+  LinePD[ListPD.Count].SeriesColor := clBlack ;
+  LinePD[ListPD.Count].LinePen.Color := LinePD[ListPD.Count].SeriesColor ;
+  LinePD[ListPD.Count].LinePen.Width := 2 ;
+  Graph.AddSeries (LinePD[ListPD.Count]) ;
+  // Facteurs potentiellement limitants
+  for i := 0 to ListPD.Count - 1 do
+  begin
+    LinePD[i] := TLineSeries.Create (Graph) ;
+    LinePD[i].ParentChart := Graph ;
+    LinePD[i].Title := ListPD[i] ;
+    LinePD[i].SeriesColor := TabColor[LBPD.Items.IndexOf (ListPD[i])] ;
+    LinePD[i].LinePen.Color := LinePD[i].SeriesColor ;
+    LinePD[i].LinePen.Width := 2 ;
+    Graph.AddSeries (LinePD[i]) ;
+  end ;
+{
+  // S�lection des facteurs effectivement limitants
+  for i := 0 to NbLimit - 1 do
+    LBPD.Selected[i] := TRUE ;
+}
+end ;
+
+procedure TFResSimulT.AffGraphPD ;
+var
+  i, j : integer ;
+  csv : string ;
+
+  // Abscisse
+  function PDX : double ;
+  begin
+    case CBPD2.ItemIndex of
+      0 : // Age
+        result := PResSimulT.TabResult[1, j] ;
+      1 : // Dur�e
+        result := j - 1 ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function PDY : double ;
+  begin
+    case i of
+      0 : // Energie
+        result := PResSimulT.TabResult[40, j] ;
+      1 : // Lysine
+        result := PResSimulT.TabResult[42, j] ;
+      2 : // Thr�onine
+        result := PResSimulT.TabResult[46, j] ;
+      3 : // Tryptophane
+        result := PResSimulT.TabResult[45, j] ;
+      4 : // M�thionine
+        result := PResSimulT.TabResult[43, j] ;
+      5 : // M�thionine+Cystine
+        result := PResSimulT.TabResult[54, j] ;
+      6 : // Valine
+        result := PResSimulT.TabResult[51, j] ;
+      7 : // Isoleucine
+        result := PResSimulT.TabResult[50, j] ;
+      8 : // Leucine
+        result := PResSimulT.TabResult[49, j] ;
+      9 : // Ph�nylalanine
+        result := PResSimulT.TabResult[47, j] ;
+      10 : // Ph�nylalanine+Tyrosine
+        result := PResSimulT.TabResult[55, j] ;
+      11 : // Arginine
+        result := PResSimulT.TabResult[53, j] ;
+      12 : // Histidine
+        result := PResSimulT.TabResult[52, j] ;
+      13 : // MAT
+        result := PResSimulT.TabResult[41, j] ;
+      14 : // D�p�t de prot�ines
+        if PresSimulT.TabResult[3, j] = 1
+        then // Lactation
+          result := PResSimulT.TabResult[40, j]
+        else
+          result := PResSimulT.TabResult[64, j] ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphPD
+begin
+  ResetGraph ;
+  Graph.Legend.Visible := FALSE ;
+  Graph.Title.Text.Add (TabPD.Caption) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s/%s)', [TabPD.Caption, StrG, StrJ]) ;
+  Graph.BottomAxis.Title.Caption := CBPD2.Text ;
+  csv := CBPD2.Text;
+  for i := 0 to ListPD.Count - 1 do
+    csv := csv + ';' + Format ('%s (%s %s/%s)', [ListPD[i], StrG, StrPD, StrJ]);
+  csv := csv + ';' + StrMinimum;
+  MExport.Lines.Append(csv);
+  // Affichage des lignes
+  for i := 0 to ListPD.Count do
+    LinePD[i].Active := TRUE ;
+  for i := 0 to ListPD.Count do
+    LinePD[i].Clear ;
+  for j := 1 to PResSimulT.NbJSim do
+  begin
+    csv := FloatToStrF(PDX, ffFixed, 15, 15);
+    for i := 0 to ListPD.Count - 1 do
+    begin
+      if LBPD.Selected[LBPD.Items.IndexOf (ListPD[i])]
+      then
+        LinePD[i].AddXY (PDX, PDY) ;
+      csv := csv + ';' + FloatToStrF(PDY, ffFixed, 15, 15);
+    end ;
+    i := ListPD.Count ;
+    LinePD[i].AddXY (PDX, PDY) ;
+    csv := csv + ';' + FloatToStrF(PDY, ffFixed, 15, 15);
+    MExport.Lines.Append(csv);
+  end ;
+  Graph.View3DOptions.Orthogonal := TRUE ;
+  Graph.View3DOptions.Elevation := 345 ;
+  Graph.View3DOptions.Rotation := 345 ;
+  Graph.View3DOptions.Perspective := 15 ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResSimulT.CBPD2Change (Sender : TObject) ;
+begin
+  AffGraphPD ;
+end ;
+
+procedure TFResSimulT.LBPDClick (Sender : TObject) ;
+begin
+  AffGraphPD ;
+end ;
+
+procedure TFResSimulT.LBPDDrawItem (Control : TWinControl ; Index : Integer ;
+  Rect : TRect ; State : TOwnerDrawState) ;
+begin
+  with (Control as TListBox).Canvas do
+  begin
+    // Cadre principal
+    FillRect (Rect) ;
+    // Etoile
+    SetTextAlign (Handle, TA_RIGHT) ;
+    if Index < NbLimit
+    then // Facteur limitant
+      TextRect (Rect, Rect.Right - 4, Rect.Top, '*') ;
+    Rect.Right := Rect.Right - 16 ;
+    // Texte
+    SetTextAlign (Handle, TA_LEFT) ;
+    TextRect (Rect, Rect.Left + 32, Rect.Top, LBPD.Items[Index]) ;
+    Rect.Right := 32 ;
+    // Num�ro
+    SetTextAlign (Handle, TA_RIGHT) ;
+    TextRect (Rect, Rect.Right - 8, Rect.Top, Format ('%d', [Index + 1])) ;
+    // Couleur
+    if odSelected in State
+    then
+    begin
+      // Cadre noir
+      Brush.Color := clBlack ;
+      Rect.Top := Rect.Top + 2 ;
+      Rect.Bottom := Rect.Bottom - 2 ;
+      Rect.Left := Rect.Left + 2 ;
+      Rect.Right := Rect.Left + (Rect.Bottom - Rect.Top) ;
+      FillRect (Rect) ;
+      // Carr� de couleur
+      Brush.Color := LinePD[ListPD.IndexOf (LBPD.Items[Index])].SeriesColor ;
+      Rect.Top := Rect.Top + 1 ;
+      Rect.Bottom := Rect.Bottom - 1 ;
+      Rect.Left := Rect.Left + 1 ;
+      Rect.Right := Rect.Right - 1 ;
+      FillRect (Rect) ;
+    end ;
+  end ;
+end ;
+
+///////////////////////
+//   Acides amin�s   //
+///////////////////////
+procedure TFResSimulT.InitAA ;
+const
+  TabColor1 : array[0..10] of TColor
+    = (clTeal, clAqua, clOlive, clPurple, clSilver, clPink, clWhite, clSkyBlue,
+      clGray, clRed, clGreen) ;
+  TabColor2 : array[1..2] of TColor
+    = (clGreen, clRed) ;
+var
+  i : integer ;
+begin
+  // ListAA : liste pour les acides amin�s
+  ListAA := TStringList.Create ;
+  ListAA.Assign (LBAA.Items) ;
+  // PieAA : s�rie (camembert) graphique
+  PieAA := TPieSeries.Create (Graph) ;
+  PieAA.ParentChart := Graph ;
+  PieAA.Circled := TRUE ;
+  PieAA.Marks.ArrowLength := 24 ;
+  PieAA.Marks.Arrow.Color := clBlack ;
+  PieAA.Marks.Brush.Style := bsClear ;
+  PieAA.Marks.Frame.Visible := FALSE ;
+  PieAA.ValueFormat := Format ('# ##0 %s', [StrG]) ;
+  PieAA.PercentFormat := '##0 %' ;
+  Graph.AddSeries (PieAA) ;
+  // AreaAA : s�ries (aires) graphiques
+  SetLength (AreaAA, ListAA.Count) ;
+  for i := 0 to ListAA.Count - 1 do
+  begin
+    AreaAA[i] := TAreaSeries.Create (Graph) ;
+    AreaAA[i].ParentChart := Graph ;
+    AreaAA[i].Title := ListAA[i] ;
+    AreaAA[i].SeriesColor := TabColor1[i] ;
+    AreaAA[i].AreaLinesPen.Visible := FALSE ;
+    Graph.AddSeries (AreaAA[i]) ;
+  end ;
+  // BarAA : s�ries (barres) graphiques
+  SetLength (BarAA, ListAA.Count) ;
+  for i := 0 to ListAA.Count - 1 do
+  begin
+    BarAA[i] := TBarSeries.Create (Graph) ;
+    BarAA[i].ParentChart := Graph ;
+    BarAA[i].Title := ListAA[i] ;
+    BarAA[i].SeriesColor := TabColor1[i] ;
+    BarAA[i].BarPen.Color := BarAA[i].SeriesColor ;
+    BarAA[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarAA[i]) ;
+  end ;
+  // LineAA : s�ries (lignes) graphiques
+  for i := 1 to 2 do
+  begin
+    LineAA[i] := TLineSeries.Create (Graph) ;
+    LineAA[i].ParentChart := Graph ;
+    if i = 1
+    then // Apport
+      LineAA[i].Title := StrApport
+    else // Besoin
+      LineAA[i].Title := StrBesoin ;
+    LineAA[i].SeriesColor := TabColor2[i] ;
+    LineAA[i].LinePen.Color := LineAA[i].SeriesColor ;
+    LineAA[i].LinePen.Width := 2 ;
+    Graph.AddSeries (LineAA[i]) ;
+  end ;
+end ;
+
+procedure TFResSimulT.AffGraphAA ;
+var
+  i, j, k : integer ;
+  x, y, t, p : double ;
+  s, csv : string ;
+
+  // Abscisse
+  function AAX : double ;
+  begin
+    case CBAA1.ItemIndex of
+      1 : // R�partition dynamique
+        case CBAA2D.ItemIndex of
+          0 : // Age
+            result := PResSimulT.TabResult[1, j] ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      2 : // R�partition par p�riode
+        case CBAA2P.ItemIndex of
+          0 : // Cycle
+            result := PResSimulT.TabResult[2, j] ;
+          1 : // Stade
+            result := PResSimulT.TabResult[3, j] ;
+          else
+            result := 0 ;
+        end ;
+      3 : // Besoin et apport
+        case CBAA2D.ItemIndex of
+          0 : // Age
+            result := PResSimulT.TabResult[1, j] ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function AAY : double ;
+  var
+    h : integer ;
+    v, d, Lys, ProtId, PDMax, PVV : double ;
+
+    function Ingere(AA, Jour: integer): double;
+    begin
+      result := PresSimulT.TabResult[AA + 14, Jour];
+      if (AA = 3) or (AA = 7)
+      then // met + cys, phe + tyr
+        result := result + PresSimulT.TabResult[AA + 13, Jour];
+    end;
+
+    function Digestible(AA, Jour: integer): double;
+    begin
+      result := PresSimulT.TabResult[AA + 27, Jour];
+      if (AA = 3) or (AA = 7)
+      then // met + cys, phe + tyr
+        result := result + PresSimulT.TabResult[AA + 26, Jour];
+    end;
+
+    function Endogene(AA, Jour: integer): double;
+    var
+      IngereSec: double;
+    begin
+      IngereSec := PResSimulT.TabResult[12, Jour] ;
+      result := IngereSec * AAendogene[AA] ;
+      if (AA = 3) or (AA = 7)
+      then // met + cys, phe + tyr
+        result := result + IngereSec * AAendogene[AA - 1] ;
+    end;
+
+    function Entretien(AA, Jour: integer): double;
+    var
+      PVTot, ProfilEnt: double;
+    begin
+      PVTot := PresSimulT.TabResult[58, Jour];
+      ProfilEnt := AAm75[AA];
+      if (AA = 3) or (AA = 7)
+      then // met + cys, phe + tyr
+        ProfilEnt := ProfilEnt + AAm75[AA - 1];
+      result := ProfilEnt * Power(PVTot, 0.75);
+    end;
+
+    function Portee(AA, Jour: integer): double;
+    var
+      PDTot, PDNet, ProfilRet : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 0
+      then // Gestation
+      begin
+        PDTot := PresSimulT.TabResult[64, Jour] ;
+        PDNet := PresSimulT.TabResult[63, Jour] ;
+        if AA = 0
+        then // Azote
+          result := PDTot - PDNet
+        else
+        begin
+          ProfilRet := ProtIdRet[AA] ;
+          if (AA = 3) or (AA = 7)
+          then // met + cys, phe + tyr
+            ProfilRet := ProfilRet + ProtIdRet[AA - 1] ;
+          result := (PDTot - PDNet) * 0.060 * ProfilRet / 100 ;
+        end ;
+      end
+      else // Lactation ou ISSF
+        result := 0 ;
+    end;
+
+    function DepotPot(AA, Jour: integer): double;
+    var
+      PDPot, PDTot, PDNet, ProfilRet : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := 0
+      else // Gestation ou ISSF
+      begin
+        PDPot := PresSimulT.TabResult[40, Jour] ;
+        PDTot := PresSimulT.TabResult[64, Jour] ;
+        PDNet := PresSimulT.TabResult[63, Jour] ;
+        if AA = 0
+        then // Azote
+          result := PDPot - (PDTot - PDNet)
+        else
+        begin
+          ProfilRet := ProtIdRet[AA] ;
+          if (AA = 3) or (AA = 7)
+          then // met + cys, phe + tyr
+            ProfilRet := ProfilRet + ProtIdRet[AA - 1] ;
+          result := (PDPot - (PDTot - PDNet)) * 0.070 * ProfilRet / 100 ;
+        end ;
+      end ;
+    end;
+
+    function Depot(AA, Jour: integer): double;
+    var
+      PDPot, PDTot : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := 0
+      else // Gestation ou ISSF
+      begin
+        PDPot := PresSimulT.TabResult[40, Jour] ;
+        PDTot := PresSimulT.TabResult[64, Jour] ;
+        result := (Portee(AA, Jour) + DepotPot(AA, Jour)) / PDPot * PDTot - Portee(AA, Jour) ;
+      end ;
+    end;
+
+    function Cumul(AA, Jour: integer): double;
+    var
+      ProtLait, ProfilLact, ProfilGest : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        if AA > 1
+        then
+        begin
+          ProfilLact := ProtIdLact[AA] ;
+          if (AA = 3) or (AA = 7)
+          then // met + cys, phe + tyr
+            ProfilLact := ProfilLact + ProtIdLact[AA - 1] ;
+          result := Cumul(1, Jour) * ProfilLact / 100 ;
+        end
+        else
+        begin
+          ProtLait := PresSimulT.TabResult[40, Jour] ;
+          if AA = 0
+          then // Azote
+            result := Endogene(0, Jour) + Entretien(0, Jour) + ProtLait / kAA[0]
+          else // Lysine
+            result := (14.2 + 0.629 * ProtLait / 6.28) / 1.335 ;
+        end
+      else // Gestation ou ISSF
+        if AA = 0
+        then // Azote
+          result := Endogene(0, Jour) + Entretien(0, Jour) + (Portee(0, Jour) + Depot(0, Jour)) / kAA[0]
+        else
+          if AA = 12
+          then // Arginine
+            result := Endogene(12, Jour) + Entretien(12, Jour) + Portee(12, Jour) + Depot(12, Jour)
+          else
+          begin
+            ProfilGest := ProtIdGest[AA] ;
+            if (AA = 3) or (AA = 7)
+            then // met + cys, phe + tyr
+              ProfilGest := ProfilGest + ProtIdGest[AA - 1] ;
+            result := (Endogene(1, Jour) + Entretien(1, Jour) + (Portee(1, Jour) + Depot(1, Jour)) / KLysGest) * ProfilGest / 100 ;
+          end ;
+    end;
+
+    function CumulPot(AA, Jour: integer): double;
+    var
+      ProfilGest : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := 0
+      else // Gestation ou ISSF
+        if AA = 0
+        then // Azote
+          result := Endogene(0, Jour) + Entretien(0, Jour) + (Portee(0, Jour) + DepotPot(0, Jour)) / kAA[0]
+        else
+          if AA = 12
+          then // Arginine
+            result := Endogene(12, Jour) + Entretien(12, Jour) + Portee(12, Jour) + DepotPot(12, Jour)
+          else
+          begin
+            ProfilGest := ProtIdGest[AA] ;
+            if (AA = 3) or (AA = 7)
+            then // met + cys, phe + tyr
+              ProfilGest := ProfilGest + ProtIdGest[AA - 1] ;
+            result := (Endogene(1, Jour) + Entretien(1, Jour) + (Portee(1, Jour) + DepotPot(1, Jour)) / KLysGest) * ProfilGest / 100 ;
+          end ;
+    end;
+
+    function Mobilisation(AA, Jour: integer): double;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := Max(Cumul(AA, Jour) - Digestible(AA, Jour), 0)
+      else // Gestation ou ISSF
+        result := 0 ;
+    end;
+
+    // AA du lait provenant de l'aliment
+    function Lait(AA, Jour: integer): double;
+    var
+      ProtLait, ProfilLait, ExportLait, BesoinLait, CoeffLait : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+      begin
+        ProtLait := PresSimulT.TabResult[40, Jour] ;
+        BesoinLait := Cumul(AA, Jour) - Endogene(AA, Jour) - Entretien(AA, Jour) ;
+        CoeffLait := Max ((BesoinLait - Mobilisation(AA, Jour)) / BesoinLait, 0) ;
+        if AA = 0
+        then // Azote
+          ExportLait := ProtLait
+        else
+        begin
+          ProfilLait := ProtIdLait[AA] ;
+          if (AA = 3) or (AA = 7)
+          then // met + cys, phe + tyr
+            ProfilLait := ProfilLait + ProtIdLait[AA - 1] ;
+          ExportLait := ProtLait * 0.075 * ProfilLait / 100 ;
+        end ;
+        result := CoeffLait * ExportLait ;
+      end
+      else // Gestation ou ISSF
+        result := 0 ;
+    end;
+
+    function Deficit(AA, Jour: integer): double;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := 0
+      else // Gestation ou ISSF
+        result := Max(CumulPot(AA, Jour) - Digestible(AA, Jour), 0) ;
+    end;
+
+    function Exces(AA, Jour: integer): double;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := Max(Digestible(AA, Jour) - Cumul(AA, Jour), 0)
+      else // Gestation ou ISSF
+        result := Max(Digestible(AA, Jour) - CumulPot(AA, Jour), 0) ;
+    end;
+
+    function Desequilibre(AA, Jour: integer): double;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := 0
+      else // Gestation ou ISSF
+        result := Max(CumulPot(AA, Jour) - Cumul(AA, Jour) - Deficit(AA, Jour), 0) ;
+    end;
+
+    function Oxydation(AA, Jour: integer): double;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+      begin
+        result := Cumul(AA, Jour) - Mobilisation(AA, Jour) - Endogene(AA, Jour) - Entretien(AA, Jour) - Lait(AA, Jour)
+      end
+      else // Gestation ou ISSF
+        result := Max(Cumul(AA, Jour) - Entretien(AA, Jour) - Endogene(AA, Jour) - Portee(AA, Jour) - Depot(AA, Jour), 0) ;
+    end;
+
+  begin
+    case CBAA1.ItemIndex of
+      0 : // R�partition globale
+      begin
+        v := 0 ;
+        case i of
+          0 : // Indigestible
+            if CBAA5.ItemIndex = 2
+            then // Total
+              for h := 1 to PresSimulT.NbJSim do
+                v := v + Ingere(CBAA3.ItemIndex, h) - Digestible(CBAA3.ItemIndex, h) ;
+          1 : // Endog�ne basal
+            if CBAA5.ItemIndex <> 1
+            then // Total ou Digestible standardis�
+              for h := 1 to PresSimulT.NbJSim do
+                v := v + Endogene(CBAA3.ItemIndex, h) ;
+          2 : // Entretien
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Entretien(CBAA3.ItemIndex, h) ;
+          3 : // Port�e
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Portee(CBAA3.ItemIndex, h) ;
+          4 : // Oxydation minimale
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Oxydation(CBAA3.ItemIndex, h) ;
+          5 : // D�p�t
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Depot(CBAA3.ItemIndex, h) ;
+          6 : // Lait
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Lait(CBAA3.ItemIndex, h) ;
+          7 : // Mobilisation
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Mobilisation(CBAA3.ItemIndex, h) ;
+          8 : // D�s�quilibre
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Desequilibre(CBAA3.ItemIndex, h) ;
+          9 : // D�ficit
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Deficit(CBAA3.ItemIndex, h) ;
+          10 : // Exc�s
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Exces(CBAA3.ItemIndex, h) ;
+        end ;
+        result := v ;
+      end ;
+      1 : // R�partition dynamique
+      begin
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1 : // Aliment ing�r�
+            d := PResSimulT.TabResult[11, j] ;
+          else
+            d := 1 ;
+        end ;
+        case i of
+          0 : // Indigestible
+            if CBAA5.ItemIndex = 2
+            then // Total
+              v := Ingere(CBAA3.ItemIndex, j) - Digestible(CBAA3.ItemIndex, j)
+            else
+              v := 0 ;
+          1 : // Endog�ne basal
+            if CBAA5.ItemIndex <> 1
+            then // Total ou Digestible standardis�
+              v := Endogene(CBAA3.ItemIndex, j)
+            else
+              v := 0 ;
+          2 : // Entretien
+            v := Entretien(CBAA3.ItemIndex, j) ;
+          3 : // Port�e
+            v := Portee(CBAA3.ItemIndex, j) ;
+          4 : // Oxydation minimale
+            v := Oxydation(CBAA3.ItemIndex, j) ;
+          5 : // D�p�t
+            v := Depot(CBAA3.ItemIndex, j) ;
+          6 : // Lait
+            v := Lait(CBAA3.ItemIndex, j) ;
+          7 : // Mobilisation
+            v := Mobilisation(CBAA3.ItemIndex, j) ;
+          8 : // D�s�quilibre
+            v := Desequilibre(CBAA3.ItemIndex, j) ;
+          9 : // D�ficit
+            v := Deficit(CBAA3.ItemIndex, j) ;
+          10 : // Exc�s
+            v := Exces(CBAA3.ItemIndex, j) ;
+          else
+            v := 0 ;
+        end ;
+        result := v / d ;
+      end ;
+      2 : // R�partition par p�riode
+      begin
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1 : // Dur�e
+            d := j - k ;
+          2 : // Aliment ing�r�
+          begin
+            d := 0 ;
+            for h := k to j - 1 do
+              d := d + PResSimulT.TabResult[11, h] ;
+          end ;
+          else
+            d := 1 ;
+        end ;
+        v := 0 ;
+        case i of
+          0 : // Indigestible
+            if CBAA5.ItemIndex = 2
+            then // Total
+              for h := k to j - 1 do
+                v := v + Ingere(CBAA3.ItemIndex, h) - Digestible(CBAA3.ItemIndex, h) ;
+          1 : // Endog�ne basal
+            if CBAA5.ItemIndex <> 1
+            then // Total ou Digestible standardis�
+              for h := k to j - 1 do
+                v := v + Endogene(CBAA3.ItemIndex, h) ;
+          2 : // Entretien
+            for h := k to j - 1 do
+              v := v + Entretien(CBAA3.ItemIndex, h) ;
+          3 : // Port�e
+            for h := k to j - 1 do
+              v := v + Portee(CBAA3.ItemIndex, h) ;
+          4 : // Oxydation minimale
+            for h := k to j - 1 do
+              v := v + Oxydation(CBAA3.ItemIndex, h) ;
+          5 : // D�p�t
+            for h := k to j - 1 do
+              v := v + Depot(CBAA3.ItemIndex, h) ;
+          6 : // Lait
+            for h := k to j - 1 do
+              v := v + Lait(CBAA3.ItemIndex, h) ;
+          7 : // Mobilisation
+            for h := k to j - 1 do
+              v := v + Mobilisation(CBAA3.ItemIndex, h) ;
+          8 : // D�s�quilibre
+            for h := k to j - 1 do
+              v := v + Desequilibre(CBAA3.ItemIndex, h) ;
+          9 : // D�ficit
+            for h := k to j - 1 do
+              v := v + Deficit(CBAA3.ItemIndex, h) ;
+          10 : // Exc�s
+            for h := k to j - 1 do
+              v := v + Exces(CBAA3.ItemIndex, h) ;
+        end ;
+        result := v / d ;
+      end ;
+      3 : // Besoin et apport
+      begin
+        PDmax := PResSimulT.TabResult[40, j] ;
+        PVV := PResSimulT.TabResult[58, j] * PV2PVV ;
+        if PResSimulT.TabResult[3, j] = 1
+        then // Lactation
+          Lys := (14.2 + 0.629 * PDmax / 6.38) / 1.335
+        else // Gestation ou ISSF
+          Lys := (PDmax * 0.065 + 0.036 * Power (PVV, 0.75)) / KLysGest ;
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1 : // Lysine
+          begin
+            if i = 1
+            then // Apport
+              case CBAA5.ItemIndex of
+                0 : // Standardis�
+                  d := Digestible(1, j) ;
+                1 : // Apparent
+                  d := Digestible(1, j) - Endogene(1, j) ;
+                2 : // Total
+                  d := Ingere(1, j) ;
+                else
+                  d := 1 ;
+              end
+            else // Besoin
+              case CBAA5.ItemIndex of
+                0 : // Standardis�
+                  d := Lys ;
+                1 : // Apparent
+                  d := Lys - Endogene(1, j) ;
+                else
+                  d := 1 ;
+              end ;
+            d := d / 100 ;
+          end ;
+          2 : // ED
+            d := PResSimulT.TabResult[71, j] ;
+          3 : // EM
+            d := PResSimulT.TabResult[72, j] ;
+          4 : // EN
+            d := PResSimulT.TabResult[73, j] ;
+          5 : // Aliment ing�r�
+            d := PResSimulT.TabResult[11, j] ;
+          else
+            d := 1 ;
+        end ;
+        if i = 1
+        then // Apport
+          case CBAA5.ItemIndex of
+            0 : // Standardis�
+              v := Digestible(CBAA3.ItemIndex, j) ;
+            1 : // Apparent
+              v := Digestible(CBAA3.ItemIndex, j) - Endogene(CBAA3.ItemIndex, j) ;
+            2 : // Total
+              v := Ingere(CBAA3.ItemIndex, j) ;
+            else
+              v := 0 ;
+          end
+        else // Besoin
+        begin
+          if PResSimulT.TabResult[3, j] = 1
+          then // Lactation
+          begin
+            ProtId := ProtIdLact[CBAA3.ItemIndex] ;
+            if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+            then // met + cys, phe + tyr
+              ProtId := ProtId + ProtIdLact[CBAA3.ItemIndex - 1] ;
+          end
+          else // Gestation ou ISSF
+          begin
+            ProtId := ProtIdGest[CBAA3.ItemIndex] ;
+            if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+            then // met + cys, phe + tyr
+              ProtId := ProtId + ProtIdGest[CBAA3.ItemIndex - 1] ;
+          end ;
+          case CBAA5.ItemIndex of
+            0 : // Standardis�
+              if CBAA3.ItemIndex = 0
+              then // Mati�res azot�es
+                v := (PDmax + AAm75[0] * Power (PVV, 0.75) + Endogene(0, j)) / kAA[0]
+              else
+                v := Lys * ProtId / 100 ;
+            1 : // Apparent
+              if CBAA3.ItemIndex = 0
+              then // Mati�res azot�es
+                v := (PDmax + AAm75[0] * Power (PVV, 0.75)) / kAA[0]
+              else
+                v := Lys * ProtId / 100 - Endogene(CBAA3.ItemIndex, j) ;
+            else
+              v := 0 ;
+          end ;
+        end ;
+        result := v / d ;
+      end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphAA
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (Format ('%s : %s', [CBAA3.Text, CBAA1.Text])) ;
+  Graph.SubTitle.Text.Add (CBAA5.Text) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBAA3.Text, CBAA4.Text]) ;
+  case CBAA1.ItemIndex of
+    0 : // R�partition globale
+    begin
+//      Graph.View3D := TRUE ;
+      Graph.Legend.Visible := FALSE ;
+      csv := '';
+      for i := 0 to ListAA.Count - 1 do
+        csv := csv + Format ('%s (%s)', [ListAA[i], CBAA4.Text]) + ';';
+      MExport.Lines.Append(csv);
+      // Affichage du camembert
+      PieAA.Active := TRUE ;
+      PieAA.Clear ;
+      if CBAA4.ItemIndex = 1
+      then // %
+        PieAA.Marks.Style := smsLabelPercent
+      else
+        PieAA.Marks.Style := smsLabelValue ;
+      t := 0 ;
+      csv := '';
+      for i := 0 to ListAA.Count - 1 do
+      begin
+        y := AAY ;
+        if y > PICO
+        then
+          PieAA.AddPie (y, ListAA[i], AreaAA[i].SeriesColor) ;
+        csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+        t := t + y ;
+      end ;
+      Graph.SubTitle.Text.Add (Format ('%s : %1.0f %s', [StrTotal, t, StrG])) ;
+      MExport.Lines.Append(csv);
+    end ;
+    1 : // R�partition dynamique
+    begin
+      csv := CBAA2D.Text;
+      for i := 0 to ListAA.Count - 1 do
+        csv := csv + ';' + Format ('%s (%s)', [ListAA[i], CBAA4.Text]);
+      MExport.Lines.Append(csv);
+      Graph.BottomAxis.Title.Caption := CBAA2D.Text ;
+      // Affichage des aires
+      for i := 0 to ListAA.Count - 1 do
+        AreaAA[i].Active := TRUE ;
+      for i := 0 to ListAA.Count - 1 do
+        AreaAA[i].Clear ;
+      if CBAA4.ItemIndex = 2
+      then // %
+        for i := 0 to ListAA.Count - 1 do
+          AreaAA[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListAA.Count - 1 do
+          AreaAA[i].MultiArea := maStacked ;
+      for j := 1 to PResSimulT.NbJSim do
+      begin
+        csv := FloatToStrF(AAX, ffFixed, 15, 15);
+        for i := 0 to ListAA.Count - 1 do
+        begin
+          AreaAA[i].AddXY (AAX, AAY, '', clTeeColor) ;
+          csv := csv + ';' + FloatToStrF(AAY, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+    end ;
+    2 : // R�partition par p�riode
+    begin
+      Graph.BottomAxis.Title.Caption := CBAA2P.Text ;
+      csv := CBAA2P.Text;
+      for i := 0 to ListAA.Count - 1 do
+        csv := csv + ';' + Format ('%s (%s)', [ListAA[i], CBAA4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des barres
+      for i := 0 to ListAA.Count - 1 do
+        BarAA[i].Active := TRUE ;
+      for i := 0 to ListAA.Count - 1 do
+        BarAA[i].Clear ;
+      if CBAA4.ItemIndex = 3
+      then // %
+        for i := 0 to ListAA.Count - 1 do
+          BarAA[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListAA.Count - 1 do
+          BarAA[i].MultiBar := mbStacked ;
+      j := 1 ;
+      x := AAX ;
+      k := 1 ;
+      if PResSimulT.NbJSim > 1
+      then
+        for j := 2 to PResSimulT.NbJSim do
+        begin
+          p := AAX ;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            s := Format ('%1.0f', [x]) ;
+            csv := s;
+            for i := 0 to ListAA.Count - 1 do
+            begin
+              y := AAY ;
+              if y > PICO
+              then
+                BarAA[i].AddBar (y, s, clTeeColor)
+              else
+                BarAA[i].AddNull (s) ;
+              csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+            end ;
+            MExport.Lines.Append(csv);
+            x := p ;
+            k := j ;
+          end ;
+        end ;
+      j := PResSimulT.NbJSim + 1 ;
+      if j > k
+      then
+      begin
+        if CBAA2P.ItemIndex = 2
+        then // Globale
+          s := ' '
+        else
+          s := Format ('%1.0f', [x]) ;
+        csv := s;
+        for i := 0 to ListAA.Count - 1 do
+        begin
+          y := AAY ;
+          if y > PICO
+          then
+            BarAA[i].AddBar (y, s, clTeeColor)
+          else
+            BarAA[i].AddNull (s) ;
+          csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+        end ;
+        MExport.Lines.Append(csv);
+      end ;
+    end ;
+    3 : // Besoin et apport
+    begin
+      Graph.BottomAxis.Title.Caption := CBAA2D.Text ;
+      Graph.Legend.Alignment := laTop ;
+      csv := CBAA2D.Text;
+      if CBAA5.ItemIndex = 2
+      then // En digestibilit� totale, seul l'apport est affich�
+        csv := csv + ';' + Format ('%s (%s)', [LineAA[1].Title, CBAA4.Text])
+      else
+        for i := 1 to 2 do
+          csv := csv + ';' + Format ('%s (%s)', [LineAA[i].Title, CBAA4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des lignes
+      if CBAA5.ItemIndex = 2
+      then // En digestibilit� totale, seul l'apport est affich�
+        LineAA[1].Active := TRUE
+      else
+        for i := 1 to 2 do
+          LineAA[i].Active := TRUE ;
+      for i := 1 to 2 do
+        LineAA[i].Clear ;
+      for j := 1 to PResSimulT.NbJSim do
+      begin
+        csv := FloatToStrF(AAX, ffFixed, 15, 15);
+        for i := 1 to 2 do
+          if (CBAA5.ItemIndex = 2) and (i = 2)
+          then // En digestibilit� totale, le besoin n'est pas affich�
+            Continue
+          else
+          begin
+            LineAA[i].AddXY (AAX, AAY, '', clTeeColor) ;
+            csv := csv + ';' + FloatToStrF(AAY, ffFixed, 15, 15);
+          end ;
+        MExport.Lines.Append(csv);
+      end ;
+    end ;
+  end ;
+  if PieAA.Active
+  then
+  begin
+    Graph.View3DOptions.Orthogonal := FALSE ;
+    Graph.View3DOptions.Elevation := 315 ;
+    Graph.View3DOptions.Rotation := 360 ;
+    Graph.View3DOptions.Perspective := 0 ;
+  end
+  else
+  begin
+    Graph.View3DOptions.Orthogonal := TRUE ;
+    Graph.View3DOptions.Elevation := 345 ;
+    Graph.View3DOptions.Rotation := 345 ;
+    Graph.View3DOptions.Perspective := 15 ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResSimulT.CBAA1Change (Sender : TObject) ;
+begin
+  CBAA4.Items.Clear ;
+  case CBAA1.ItemIndex of
+    0 : // R�partition globale
+    begin
+      CBAA2D.Visible := FALSE ;
+      CBAA2P.Visible := FALSE ;
+      // Unit�s
+      CBAA4.Items.Add (StrG) ;
+      CBAA4.Items.Add ('%') ;
+    end ;
+    1 : // R�partition dynamique
+    begin
+      CBAA2D.Visible := TRUE ;
+      CBAA2P.Visible := FALSE ;
+      // Unit�s
+      CBAA4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+      CBAA4.Items.Add ('%') ;
+    end ;
+    2 : // R�partition par p�riode
+    begin
+      CBAA2D.Visible := FALSE ;
+      CBAA2P.Visible := TRUE ;
+      // Unit�s
+      CBAA4.Items.Add (StrG) ;
+      CBAA4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+      CBAA4.Items.Add ('%') ;
+    end ;
+    3 : // Besoin et apport
+    begin
+      CBAA2D.Visible := TRUE ;
+      CBAA2P.Visible := FALSE ;
+      // Unit�s
+      CBAA4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBAA4.Items.Add (Format ('%% %s', [StrLys])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrED])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrEM])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrEN])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+    end ;
+  end ;
+  CBAA4.ItemIndex := 0 ;
+  AffGraphAA ;
+end ;
+
+procedure TFResSimulT.CBAA2Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFResSimulT.CBAA3Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFResSimulT.CBAA4Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFResSimulT.CBAA5Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+/////////////////
+//   Energie   //
+/////////////////
+procedure TFResSimulT.InitNRJ ;
+const
+  TabColor : array[0..9] of TColor
+    = (clTeal, clYellow, clOlive, clAqua, clFuchsia, clPurple, clWhite, clBlue,
+      clLime, clRed) ;
+var
+  i : integer ;
+begin
+  // ListNRJ : liste pour l'�nergie
+  ListNRJ := TStringList.Create ;
+  ListNRJ.Assign (LBNRJ.Items) ;
+  // PieNRJ : s�rie (camembert) graphique
+  PieNRJ := TPieSeries.Create (Graph) ;
+  PieNRJ.ParentChart := Graph ;
+  PieNRJ.Circled := TRUE ;
+  PieNRJ.Marks.ArrowLength := 24 ;
+  PieNRJ.Marks.Arrow.Color := clBlack ;
+  PieNRJ.Marks.Brush.Style := bsClear ;
+  PieNRJ.Marks.Frame.Visible := FALSE ;
+  PieNRJ.ValueFormat := Format ('# ##0 %s', [StrMJ]) ;
+  PieNRJ.PercentFormat := '##0 %' ;
+  Graph.AddSeries (PieNRJ) ;
+  // AreaNRJ : s�ries (aires) graphiques
+  SetLength (AreaNRJ, ListNRJ.Count) ;
+  for i := 0 to ListNRJ.Count - 1 do
+  begin
+    AreaNRJ[i] := TAreaSeries.Create (Graph) ;
+    AreaNRJ[i].ParentChart := Graph ;
+    AreaNRJ[i].Title := ListNRJ[i] ;
+    AreaNRJ[i].SeriesColor := TabColor[i] ;
+    AreaNRJ[i].AreaLinesPen.Visible := FALSE ;
+    Graph.AddSeries (AreaNRJ[i]) ;
+  end ;
+  // BarNRJ : s�ries (barres) graphiques
+  SetLength (BarNRJ, ListNRJ.Count) ;
+  for i := 0 to ListNRJ.Count - 1 do
+  begin
+    BarNRJ[i] := TBarSeries.Create (Graph) ;
+    BarNRJ[i].ParentChart := Graph ;
+    BarNRJ[i].Title := ListNRJ[i] ;
+    BarNRJ[i].SeriesColor := TabColor[i] ;
+    BarNRJ[i].BarPen.Color := BarNRJ[i].SeriesColor ;
+    BarNRJ[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarNRJ[i]) ;
+  end ;
+end ;
+
+procedure TFResSimulT.AffGraphNRJ ;
+var
+  i, j, k : integer ;
+  x, y, t, p : double ;
+  s, csv : string ;
+
+  // Abscisse
+  function NRJX : double ;
+  begin
+    case CBNRJ1.ItemIndex of
+      1 : // R�partition dynamique
+        case CBNRJ2D.ItemIndex of
+          0 : // Age
+            result := PresSimulT.TabResult[1, j] ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      2 : // R�partition par p�riode
+        case CBNRJ2P.ItemIndex of
+          0 : // Cycle
+            result := PResSimulT.TabResult[2, j] ;
+          1 : // Stade
+            result := PResSimulT.TabResult[3, j] ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function NRJY : double ;
+  var
+    h : integer ;
+    v, d, EBIng, EDIng, EMIng, EMEnt, EMThe, EMAct, Chaleur, ENProd, Deficit,
+      ENProt, ENLip, EMProd, EMRes : double ;
+  begin
+    case CBNRJ1.ItemIndex of
+      0 : // R�partition globale
+      begin
+        v := 0 ;
+        case i of
+          0 : // Indigestible
+            if CBNRJ3.ItemIndex = 0
+            then // EB
+              for h := 1 to PresSimulT.NbJSim do
+              begin
+                EBIng := PresSimulT.TabResult[13, h] ;
+                EDIng := PresSimulT.TabResult[71, h] ;
+                v := v + EBIng - EDIng ;
+              end ;
+          1 : // M�thane et urines
+            if CBNRJ3.ItemIndex <= 1
+            then // EB ou ED
+              for h := 1 to PresSimulT.NbJSim do
+              begin
+                EDIng := PresSimulT.TabResult[71, h] ;
+                EMIng := PresSimulT.TabResult[72, h] ;
+                v := v + EDIng - EMIng ;
+              end ;
+          2 : // Entretien et activit�
+            for h := 1 to PresSimulT.NbJSim do
+            begin
+              EMEnt := PresSimulT.TabResult[74, h] ;
+              EMAct := PresSimulT.TabResult[76, h] ;
+              if CBNRJ3.ItemIndex = 3
+              then // EN
+                v := v + (EMEnt + EMAct) * KGest
+              else // EB, ED ou EM
+                v := v + EMEnt + EMAct ;
+            end ;
+          3 : // Thermor�gulation
+            for h := 1 to PresSimulT.NbJSim do
+            begin
+              EMThe := PresSimulT.TabResult[75, h] ;
+              v := v + EMThe ;
+            end ;
+          4 : // Extrachaleur
+            if CBNRJ3.ItemIndex <= 2
+            then // EB ou ED ou EM
+              for h := 1 to PresSimulT.NbJSim do
+              begin
+                Chaleur := PresSimulT.TabResult[70, h] ;
+                EMEnt := PresSimulT.TabResult[74, h] ;
+                EMThe := PresSimulT.TabResult[75, h] ;
+                EMAct := PresSimulT.TabResult[76, h] ;
+                if PresSimulT.TabResult[3, h] = 1
+                then // Lactation
+                begin
+                  EMIng := PresSimulT.TabResult[72, h] ;
+                  EMProd := PresSimulT.TabResult[77, h] ;
+                  EMRes := EMIng - EMEnt - EMThe - EMAct - EMProd ;
+                  if EMRes > 0
+                  then // D�p�t
+                    v := v + Chaleur - EMEnt - EMThe - EMAct
+                  else // Mobilisation
+                    v := v + Chaleur - EMEnt - EMThe - EMAct - EMRes * KL / KResL * (1 - KResL) ;
+                end
+                else
+                  v := v + Chaleur - EMEnt - EMThe - EMAct ;
+              end ;
+          5 : // Port�e
+            for h := 1 to PresSimulT.NbJSim do
+              if PresSimulT.TabResult[3, h] = 0
+              then // Gestation
+              begin
+                ENProd := PresSimulT.TabResult[77, h] * KU ;
+                ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+                ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+                Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) ;
+                if Deficit > Max (ENProt, 0)
+                then // Deficit
+                  v := v + Max (ENProd + Max (ENProt, 0) - Deficit, 0)
+                else
+                  v := v + ENProd ;
+              end ;
+          6 : // Lait
+            for h := 1 to PresSimulT.NbJSim do
+              if PresSimulT.TabResult[3, h] = 1
+              then // Lactation
+              begin
+                ENProd := PresSimulT.TabResult[77, h] * KL ;
+                ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+                ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+                Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) * KResL ;
+                v := v + Max (ENProd - Deficit, 0) ;
+              end ;
+          7 : // d�p�t de prot�ines
+            for h := 1 to PresSimulT.NbJSim do
+              if PresSimulT.TabResult[3, h] <> 1
+              then // Gestation ou ISSF
+              begin
+                ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+                ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+                Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) ;
+                v := v + Max (ENProt - Deficit, 0) ;
+              end ;
+          8 : // D�p�t de lipides
+            for h := 1 to PresSimulT.NbJSim do
+            begin
+              ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+              v := v + Max (ENLip, 0) ;
+            end ;
+          9 : // D�ficit (mobilisation)
+            for h := 1 to PresSimulT.NbJSim do
+            begin
+              ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+              ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+              if PresSimulT.TabResult[3, h] = 1
+              then // Lactation
+              begin
+                ENProd := PresSimulT.TabResult[77, h] * KL ;
+                Deficit := (Max (- ENProt, 0) + Max (- ENLip, 0)) * KResL ;
+                if Deficit > ENProd
+                then // on limite le d�ficit � la production de lait
+                  Deficit := ENProd ;
+              end
+              else
+                Deficit := Max (- ENProt, 0) + Max (- ENLip, 0) ;
+              v := v + Deficit ;
+            end ;
+        end ;
+        result := v ;
+      end ;
+      1 : // R�partition dynamique
+      begin
+        // Diviseur
+        case CBNRJ4.ItemIndex of
+          1 : // PV^0.75
+            d := Power (PResSimulT.TabResult[58, j], 0.75) ;
+          2 : // Aliment ing�r�
+            d := PResSimulT.TabResult[11, j] ;
+          else
+            d := 1 ;
+        end ;
+        case i of
+          0 : // Indigestible
+            if CBNRJ3.ItemIndex = 0
+            then // EB
+            begin
+              EBIng := PresSimulT.TabResult[13, j] ;
+              EDIng := PresSimulT.TabResult[71, j] ;
+              v := EBIng - EDIng ;
+            end
+            else
+              v := 0 ;
+          1 : // M�thane et urines
+            if CBNRJ3.ItemIndex <= 1
+            then // EB ou ED
+            begin
+              EDIng := PresSimulT.TabResult[71, j] ;
+              EMIng := PresSimulT.TabResult[72, j] ;
+              v := EDIng - EMIng ;
+            end
+            else
+              v := 0 ;
+          2 : // Entretien et activit�
+          begin
+            EMEnt := PresSimulT.TabResult[74, j] ;
+            EMAct := PresSimulT.TabResult[76, j] ;
+            if CBNRJ3.ItemIndex = 3
+            then // EN
+              v := (EMEnt + EMAct) * KGest
+            else // EB, ED ou EM
+              v := EMEnt + EMAct ;
+          end ;
+          3 : // Thermor�gulation
+          begin
+            EMThe := PresSimulT.TabResult[75, j] ;
+            v := EMThe ;
+          end ;
+          4 : // Extrachaleur
+            if CBNRJ3.ItemIndex <= 2
+            then // EB ou ED ou EM
+            begin
+              Chaleur := PresSimulT.TabResult[70, j] ;
+              EMEnt := PresSimulT.TabResult[74, j] ;
+              EMThe := PresSimulT.TabResult[75, j] ;
+              EMAct := PresSimulT.TabResult[76, j] ;
+              if PresSimulT.TabResult[3, j] = 1
+              then // Lactation
+              begin
+                EMIng := PresSimulT.TabResult[72, j] ;
+                EMProd := PresSimulT.TabResult[77, j] ;
+                EMRes := EMIng - EMEnt - EMThe - EMAct - EMProd ;
+                if EMRes > 0
+                then // D�p�t
+                  v := Chaleur - EMEnt - EMThe - EMAct
+                else // Mobilisation
+                  v := Chaleur - EMEnt - EMThe - EMAct - EMRes * KL / KResL * (1 - KResL) ;
+              end
+              else
+                v := Chaleur - EMEnt - EMThe - EMAct ;
+            end
+            else
+              v := 0 ;
+          5 : // Port�e
+            if PresSimulT.TabResult[3, j] = 0
+            then // Gestation
+            begin
+              ENProd := PresSimulT.TabResult[77, j] * KU ;
+              ENProt := PresSimulT.TabResult[63, j] * 23.8 / 1000 ;
+              ENLip := PresSimulT.TabResult[66, j] * 39.7 / 1000 ;
+              Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) ;
+              if Deficit > Max (ENProt, 0)
+              then // Deficit
+                v := Max (ENProd + Max (ENProt, 0) - Deficit, 0)
+              else
+                v := ENProd ;
+            end
+            else
+              v := 0 ;
+          6 : // Lait
+            if PresSimulT.TabResult[3, j] = 1
+            then // Lactation
+            begin
+              ENProd := PresSimulT.TabResult[77, j] * KL ;
+              ENProt := PresSimulT.TabResult[63, j] * 23.8 / 1000 ;
+              ENLip := PresSimulT.TabResult[66, j] * 39.7 / 1000 ;
+              Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) * KResL ;
+              v := Max (ENProd - Deficit, 0) ;
+            end
+            else
+              v := 0 ;
+          7 : // d�p�t de prot�ines
+            if PresSimulT.TabResult[3, j] <> 1
+            then // Gestation ou ISSF
+            begin
+              ENProt := PresSimulT.TabResult[63, j] * 23.8 / 1000 ;
+              ENLip := PresSimulT.TabResult[66, j] * 39.7 / 1000 ;
+              Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) ;
+              v := Max (ENProt - Deficit, 0) ;
+            end
+            else
+              v := 0 ;
+          8 : // D�p�t de lipides
+          begin
+            ENLip := PresSimulT.TabResult[66, j] * 39.7 / 1000 ;
+            v := Max (ENLip, 0) ;
+          end ;
+          9 : // D�ficit (mobilisation)
+          begin
+            ENProt := PresSimulT.TabResult[63, j] * 23.8 / 1000 ;
+            ENLip := PresSimulT.TabResult[66, j] * 39.7 / 1000 ;
+            if PresSimulT.TabResult[3, j] = 1
+            then // Lactation
+            begin
+              ENProd := PresSimulT.TabResult[77, j] * KL ;
+              Deficit := (Max (- ENProt, 0) + Max (- ENLip, 0)) * KResL ;
+              if Deficit > ENProd
+              then // on limite le d�ficit � la production de lait
+                Deficit := ENProd ;
+            end
+            else
+              Deficit := Max (- ENProt, 0) + Max (- ENLip, 0) ;
+            v := Deficit ;
+          end ;
+          else
+            v := 0 ;
+        end ;
+        result := v / d ;
+      end ;
+      2 : // R�partition par p�riode
+      begin
+        // Diviseur
+        case CBNRJ4.ItemIndex of
+          1 : // Dur�e
+            d := j - k ;
+          2 : // Aliment ing�r�
+          begin
+            d := 0 ;
+            for h := k to j - 1 do
+              d := d + PResSimulT.TabResult[11, h] ;
+          end ;
+          else
+            d := 1 ;
+        end ;
+        v := 0 ;
+        case i of
+          0 : // Indigestible
+            if CBNRJ3.ItemIndex = 0
+            then // EB
+              for h := k to j - 1 do
+              begin
+                EBIng := PresSimulT.TabResult[13, h] ;
+                EDIng := PresSimulT.TabResult[71, h] ;
+                v := v + EBIng - EDIng ;
+              end ;
+          1 : // M�thane et urines
+            if CBNRJ3.ItemIndex <= 1
+            then // EB ou ED
+              for h := k to j - 1 do
+              begin
+                EDIng := PresSimulT.TabResult[71, h] ;
+                EMIng := PresSimulT.TabResult[72, h] ;
+                v := v + EDIng - EMIng ;
+              end ;
+          2 : // Entretien et activit�
+            for h := k to j - 1 do
+            begin
+              EMEnt := PresSimulT.TabResult[74, h] ;
+              EMAct := PresSimulT.TabResult[76, h] ;
+              if CBNRJ3.ItemIndex = 3
+              then // EN
+                v := v + (EMEnt + EMAct) * KGest
+              else // EB, ED ou EM
+                v := v + EMEnt + EMAct ;
+            end ;
+          3 : // Thermor�gulation
+            for h := k to j - 1 do
+            begin
+              EMThe := PresSimulT.TabResult[75, h] ;
+              v := v + EMThe ;
+            end ;
+          4 : // Extrachaleur
+            if CBNRJ3.ItemIndex <= 2
+            then // EB ou ED ou EM
+              for h := k to j - 1 do
+              begin
+                Chaleur := PresSimulT.TabResult[70, h] ;
+                EMEnt := PresSimulT.TabResult[74, h] ;
+                EMThe := PresSimulT.TabResult[75, h] ;
+                EMAct := PresSimulT.TabResult[76, h] ;
+                if PresSimulT.TabResult[3, h] = 1
+                then // Lactation
+                begin
+                  EMIng := PresSimulT.TabResult[72, h] ;
+                  EMProd := PresSimulT.TabResult[77, h] ;
+                  EMRes := EMIng - EMEnt - EMThe - EMAct - EMProd ;
+                  if EMRes > 0
+                  then // D�p�t
+                    v := v + Chaleur - EMEnt - EMThe - EMAct
+                  else // Mobilisation
+                    v := v + Chaleur - EMEnt - EMThe - EMAct - EMRes * KL / KResL * (1 - KResL) ;
+                end
+                else
+                  v := v + Chaleur - EMEnt - EMThe - EMAct ;
+              end ;
+          5 : // Port�e
+            for h := k to j - 1 do
+              if PresSimulT.TabResult[3, h] = 0
+              then // Gestation
+              begin
+                ENProd := PresSimulT.TabResult[77, h] * KU ;
+                ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+                ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+                Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) ;
+                if Deficit > Max (ENProt, 0)
+                then // Deficit
+                  v := v + Max (ENProd + Max (ENProt, 0) - Deficit, 0)
+                else
+                  v := v + ENProd ;
+              end ;
+          6 : // Lait
+            for h := k to j - 1 do
+              if PresSimulT.TabResult[3, h] = 1
+              then // Lactation
+              begin
+                ENProd := PresSimulT.TabResult[77, h] * KL ;
+                ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+                ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+                Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) * KResL ;
+                v := v + Max (ENProd - Deficit, 0) ;
+              end ;
+          7 : // d�p�t de prot�ines
+            for h := k to j - 1 do
+              if PresSimulT.TabResult[3, h] <> 1
+              then // Gestation ou ISSF
+              begin
+                ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+                ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+                Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) ;
+                v := v + Max (ENProt - Deficit, 0) ;
+              end ;
+          8 : // D�p�t de lipides
+            for h := k to j - 1 do
+            begin
+              ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+              v := v + Max (ENLip, 0) ;
+            end ;
+          9 : // D�ficit (mobilisation)
+            for h := k to j - 1 do
+            begin
+              ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+              ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+              if PresSimulT.TabResult[3, h] = 1
+              then // Lactation
+              begin
+                ENProd := PresSimulT.TabResult[77, h] * KL ;
+                Deficit := (Max (- ENProt, 0) + Max (- ENLip, 0)) * KResL ;
+                if Deficit > ENProd
+                then // on limite le d�ficit � la production de lait
+                  Deficit := ENProd ;
+              end
+              else
+                Deficit := Max (- ENProt, 0) + Max (- ENLip, 0) ;
+              v := v + Deficit ;
+            end ;
+        end ;
+        result := v / d ;
+      end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphNRJ
+begin
+  ResetGraph ;
+  case CBNRJ1.ItemIndex of
+    0 : // R�partition globale
+    begin
+      Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]) ;
+//      Graph.View3D := TRUE ;
+      Graph.Legend.Visible := FALSE ;
+      Graph.Title.Text.Add (Format ('%s : %s', [CBNRJ3.Text, CBNRJ1.Text])) ;
+      csv := '';
+      for i := 0 to ListNRJ.Count - 1 do
+        csv := csv + Format ('%s (%s)', [ListNRJ[i], CBNRJ4.Text]) + ';';
+      MExport.Lines.Append(csv);
+      // Affichage du camembert
+      PieNRJ.Active := TRUE ;
+      PieNRJ.Clear ;
+      if CBNRJ4.ItemIndex = 1
+      then // %
+        PieNRJ.Marks.Style := smsLabelPercent
+      else
+        PieNRJ.Marks.Style := smsLabelValue ;
+      t := 0 ;
+      csv := '';
+      for i := 0 to ListNRJ.Count - 1 do
+      begin
+        y := NRJY ;
+        if y > PICO
+        then
+          PieNRJ.AddPie (y, ListNRJ[i], AreaNRJ[i].SeriesColor) ;
+        t := t + y ;
+        csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+      end ;
+      Graph.SubTitle.Text.Add (Format ('%s : %1.0f %s', [StrTotal, t, StrMJ])) ;
+      MExport.Lines.Append(csv);
+    end ;
+    1 : // R�partition dynamique
+    begin
+      Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]) ;
+      Graph.BottomAxis.Title.Caption := CBNRJ2D.Text ;
+      Graph.Title.Text.Add (Format ('%s : %s', [CBNRJ3.Text, CBNRJ1.Text])) ;
+      csv := CBNRJ2D.Text;
+      for i := 0 to ListNRJ.Count - 1 do
+        csv := csv + ';' + Format ('%s (%s)', [ListNRJ[i], CBNRJ4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des aires
+      for i := 0 to ListNRJ.Count - 1 do
+        AreaNRJ[i].Active := TRUE ;
+      for i := 0 to ListNRJ.Count - 1 do
+        AreaNRJ[i].Clear ;
+      if CBNRJ4.ItemIndex = 3
+      then // %
+        for i := 0 to ListNRJ.Count - 1 do
+          AreaNRJ[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListNRJ.Count - 1 do
+          AreaNRJ[i].MultiArea := maStacked ;
+      for j := 1 to PResSimulT.NbJSim do
+      begin
+        csv := FloatToStrF(NRJX, ffFixed, 15, 15);
+        for i := 0 to ListNRJ.Count - 1 do
+        begin
+          AreaNRJ[i].AddXY (NRJX, NRJY, '', clTeeColor) ;
+          csv := csv + ';' + FloatToStrF(NRJY, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+    end ;
+    2 : // R�partition par p�riode
+    begin
+      Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]) ;
+      Graph.BottomAxis.Title.Caption := CBNRJ2P.Text ;
+      Graph.Title.Text.Add (Format ('%s : %s', [CBNRJ3.Text, CBNRJ1.Text])) ;
+      csv := CBNRJ2P.Text;
+      for i := 0 to ListNRJ.Count - 1 do
+        csv := csv + ';' + Format ('%s (%s)', [ListNRJ[i], CBNRJ4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des barres
+      for i := 0 to ListNRJ.Count - 1 do
+        BarNRJ[i].Active := TRUE ;
+      for i := 0 to ListNRJ.Count - 1 do
+        BarNRJ[i].Clear ;
+      if CBNRJ4.ItemIndex = 3
+      then // %
+        for i := 0 to ListNRJ.Count - 1 do
+          BarNRJ[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListNRJ.Count - 1 do
+          BarNRJ[i].MultiBar := mbStacked ;
+      j := 1 ;
+      x := NRJX ;
+      k := 1 ;
+      if PResSimulT.NbJSim > 1
+      then
+        for j := 2 to PResSimulT.NbJSim do
+        begin
+          p := NRJX ;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            s := Format ('%1.0f', [x]) ;
+            csv := s;
+            for i := 0 to ListNRJ.Count - 1 do
+            begin
+              y := NRJY ;
+              if y > PICO
+              then
+                BarNRJ[i].AddBar (y, s, clTeeColor)
+              else
+                BarNRJ[i].AddNull (s) ;
+              csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+            end ;
+            MExport.Lines.Append(csv);
+            x := p ;
+            k := j ;
+          end ;
+        end ;
+      j := PResSimulT.NbJSim + 1 ;
+      if j > k
+      then
+      begin
+        if CBNRJ2P.ItemIndex = 2
+        then // Globale
+          s := ' '
+        else
+          s := Format ('%1.0f', [x]) ;
+        csv := s;
+        for i := 0 to ListNRJ.Count - 1 do
+        begin
+          y := NRJY ;
+          if y > PICO
+          then
+            BarNRJ[i].AddBar (y, s, clTeeColor)
+          else
+            BarNRJ[i].AddNull (s) ;
+          csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+        end ;
+        MExport.Lines.Append(csv);
+      end ;
+    end ;
+  end ;
+  if PieNRJ.Active
+  then
+  begin
+    Graph.View3DOptions.Orthogonal := FALSE ;
+    Graph.View3DOptions.Elevation := 315 ;
+    Graph.View3DOptions.Rotation := 360 ;
+    Graph.View3DOptions.Perspective := 0 ;
+  end
+  else
+  begin
+    Graph.View3DOptions.Orthogonal := TRUE ;
+    Graph.View3DOptions.Elevation := 345 ;
+    Graph.View3DOptions.Rotation := 345 ;
+    Graph.View3DOptions.Perspective := 15 ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResSimulT.CBNRJ1Change (Sender : TObject) ;
+begin
+  CBNRJ4.Items.Clear ;
+  case CBNRJ1.ItemIndex of
+    0 : // R�partition globale
+    begin
+      CBNRJ2D.Visible := FALSE ;
+      CBNRJ2P.Visible := FALSE ;
+      CBNRJ3.Visible := TRUE ;
+      CBNRJ4.Visible := TRUE ;
+      // Unit�s
+      CBNRJ4.Items.Add (StrMJ) ;
+      CBNRJ4.Items.Add ('%') ;
+    end ;
+    1 : // R�partition dynamique
+    begin
+      CBNRJ2D.Visible := TRUE ;
+      CBNRJ2P.Visible := FALSE ;
+      CBNRJ3.Visible := TRUE ;
+      CBNRJ4.Visible := TRUE ;
+      // Unit�s
+      CBNRJ4.Items.Add (Format ('%s/%s', [StrMJ, StrJ])) ;
+      CBNRJ4.Items.Add (Format ('%s/(%s %s)^0.75/%s', [StrMJ, StrKg, StrPV, StrJ])) ;
+      CBNRJ4.Items.Add (Format ('%s/%s %s', [StrMJ, StrKg, StrAlimentUnit])) ;
+      CBNRJ4.Items.Add ('%') ;
+    end ;
+    2 : // R�partition par p�riode
+    begin
+      CBNRJ2D.Visible := FALSE ;
+      CBNRJ2P.Visible := TRUE ;
+      CBNRJ3.Visible := TRUE ;
+      CBNRJ4.Visible := TRUE ;
+      // Unit�s
+      CBNRJ4.Items.Add (StrMJ) ;
+      CBNRJ4.Items.Add (Format ('%s/%s', [StrMJ, StrJ])) ;
+      CBNRJ4.Items.Add (Format ('%s/%s %s', [StrMJ, StrKg, StrAlimentUnit])) ;
+      CBNRJ4.Items.Add ('%') ;
+    end ;
+  end ;
+  CBNRJ4.ItemIndex := 0 ;
+  AffGraphNRJ ;
+end ;
+
+procedure TFResSimulT.CBNRJ2Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+procedure TFResSimulT.CBNRJ3Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+procedure TFResSimulT.CBNRJ4Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+//////////////////
+//   Min�raux   //
+//////////////////
+procedure TFResSimulT.InitMin ;
+const
+  TabColor1 : array[0..6] of TColor
+    = (clTeal, clOlive, clPurple, clPink, clWhite, clRed, clGreen) ;
+  TabColor2 : array[1..2] of TColor
+    = (clGreen, clRed) ;
+var
+  i : integer ;
+begin
+  // ListMin : liste pour les min�raux
+  ListMin := TStringList.Create ;
+  ListMin.Assign (LBMin.Items) ;
+  // PieMin : s�rie (camembert) graphique
+  PieMin := TPieSeries.Create (Graph) ;
+  PieMin.ParentChart := Graph ;
+  PieMin.Circled := TRUE ;
+  PieMin.Marks.ArrowLength := 24 ;
+  PieMin.Marks.Arrow.Color := clBlack ;
+  PieMin.Marks.Brush.Style := bsClear ;
+  PieMin.Marks.Frame.Visible := FALSE ;
+  PieMin.ValueFormat := Format ('# ##0 %s', [StrG]) ;
+  PieMin.PercentFormat := '##0 %' ;
+  Graph.AddSeries (PieMin) ;
+  // AreaMin : s�ries (aires) graphiques
+  SetLength (AreaMin, ListMin.Count) ;
+  for i := 0 to ListMin.Count - 1 do
+  begin
+    AreaMin[i] := TAreaSeries.Create (Graph) ;
+    AreaMin[i].ParentChart := Graph ;
+    AreaMin[i].Title := ListMin[i] ;
+    AreaMin[i].SeriesColor := TabColor1[i] ;
+    AreaMin[i].AreaLinesPen.Visible := FALSE ;
+    Graph.AddSeries (AreaMin[i]) ;
+  end ;
+  // BarMin : s�ries (barres) graphiques
+  SetLength (BarMin, ListMin.Count) ;
+  for i := 0 to ListMin.Count - 1 do
+  begin
+    BarMin[i] := TBarSeries.Create (Graph) ;
+    BarMin[i].ParentChart := Graph ;
+    BarMin[i].Title := ListMin[i] ;
+    BarMin[i].SeriesColor := TabColor1[i] ;
+    BarMin[i].BarPen.Color := BarMin[i].SeriesColor ;
+    BarMin[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarMin[i]) ;
+  end ;
+  // LineMin : s�ries (lignes) graphiques
+  for i := 1 to 2 do
+  begin
+    LineMin[i] := TLineSeries.Create (Graph) ;
+    LineMin[i].ParentChart := Graph ;
+    if i = 1
+    then // Apport
+      LineMin[i].Title := StrApport
+    else // Besoin
+      LineMin[i].Title := StrBesoin ;
+    LineMin[i].SeriesColor := TabColor2[i] ;
+    LineMin[i].LinePen.Color := LineMin[i].SeriesColor ;
+    LineMin[i].LinePen.Width := 2 ;
+    Graph.AddSeries (LineMin[i]) ;
+  end ;
+end ;
+
+procedure TFResSimulT.AffGraphMin ;
+var
+  i, j, k : integer ;
+  x, y, t, p : double ;
+  s, csv : string ;
+
+  // Abscisse
+  function MinX : double ;
+  begin
+    case CBMin1.ItemIndex of
+      1 : // R�partition dynamique
+        case CBMin2D.ItemIndex of
+          0 : // Age
+            result := PResSimulT.TabResult[1, j] ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      2 : // R�partition par p�riode
+        case CBMin2P.ItemIndex of
+          0 : // Cycle
+            result := PResSimulT.TabResult[2, j] ;
+          1 : // Stade
+            result := PResSimulT.TabResult[3, j] ;
+          else
+            result := 0 ;
+        end ;
+      3 : // Besoin et apport
+        case CBMin2D.ItemIndex of
+          0 : // Age
+            result := PResSimulT.TabResult[1, j] ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function MinY : double ;
+  var
+    h, Cycle, Jour : integer ;
+    v, d, Ptot, Pdig, PVtot, PVnet, GMQnet, PdsPortee, NesT, Foetus, Placenta,
+      Indigestible, Entretien, Portee, Retenu, Lait : double ;
+
+    // Composition des aliments
+    procedure Composition (jour : integer) ;
+    var
+      Aliment1, Aliment2 : integer ;
+      IngereFrais, Taux1, Taux2, IngereSec1, IngereSec2, Ptot1, Ptot2, Pdig1, Pdig2 : double ;
+      CC1, CC2 : CompositionChimique ;
+    begin
+      IngereFrais := PresSimulT.TabResult[11, jour] ;
+      // Aliment 1
+      Aliment1 := Round (PresSimulT.TabResult[7, jour]) ;
+      if Aliment1 = -1
+      then
+        CC1 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment1))] ;
+        CC1 := PAliment.CC ;
+      end ;
+      Taux1 := PresSimulT.TabResult[9, jour] / 100 ;
+      IngereSec1 := IngereFrais * Taux1 * CC1.MS / 1000 ;
+      Ptot1 := IngereSec1 * CC1.P ;
+      if Aliment1 = -1
+      then
+        Pdig1 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig1 := IngereSec1 * PAliment.CC.PdigG
+        else // Farine
+          Pdig1 := IngereSec1 * PAliment.CC.PdigF ;
+      // Aliment 2
+      Aliment2 := Round (PresSimulT.TabResult[8, jour]) ;
+      if Aliment2 = -1
+      then
+        CC2 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment2))] ;
+        CC2 := PAliment.CC ;
+      end ;
+      Taux2 := PresSimulT.TabResult[10, jour] / 100 ;
+      IngereSec2 := IngereFrais * Taux2 * CC2.MS / 1000 ;
+      Ptot2 := IngereSec2 * CC2.P ;
+      if Aliment2 = -1
+      then
+        Pdig2 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig2 := IngereSec2 * PAliment.CC.PdigG
+        else // Farine
+          Pdig2 := IngereSec2 * PAliment.CC.PdigF ;
+      // Cumul
+      Ptot := Ptot1 + Ptot2 ;
+      Pdig := Pdig1 + Pdig2 ;
+    end ;
+
+  begin
+    case CBMin1.ItemIndex of
+      0 : // R�partition globale
+      begin
+        v := 0 ;
+        case CBMin3.ItemIndex of
+          0 : // Phosphore
+            case i of
+              0 : // Indigestible
+                if CBMin5.ItemIndex = 1
+                then // Total
+                  for h := 1 to PresSimulT.NbJSim do
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    v := v + Indigestible ;
+                  end ;
+              1 : // Entretien
+                for h := 1 to PresSimulT.NbJSim do
+                begin
+                  Composition (h) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, h] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  if Ptot < Indigestible + Entretien
+                  then // D�ficit
+                    v := v + Ptot - Indigestible
+                  else
+                    v := v + Entretien ;
+                end ;
+              2 : // Port�e
+                for h := 1 to PresSimulT.NbJSim do
+                  if PResSimulT.TabResult[3, h] = 0
+                  then // Gestation
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    PVtot := PResSimulT.TabResult[58, h] ;
+                    Entretien := 10 * PVtot / 1000 ;
+                    Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                    with PPRofilT.Porcelets[Cycle] do
+                    begin
+                      PdsPortee := NesTotaux * PdsNais ;
+                      NesT := NesTotaux ;
+                    end ;
+                    Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                    Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                      * Exp(-0.023998 * (Jour - 45)
+                        - 6.389 * Exp(-0.023998 * (Jour - 45))
+                        + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                    Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                      * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                        + 0.00759 * Jour + 0.06339 * NesT)
+                      * 0.0096 / 23.8 ;
+                    Portee := Foetus + Placenta ;
+                    if Ptot < Indigestible + Entretien + Portee
+                    then // D�ficit
+                      v := v + Max (Ptot - Indigestible - Entretien, 0)
+                    else
+                      v := v + Portee ;
+                  end ;
+              3 : // Retenu
+                for h := 1 to PresSimulT.NbJSim do
+                  if PResSimulT.TabResult[3, h] <> 1
+                  then // Gestation ou ISSF
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    PVtot := PResSimulT.TabResult[58, h] ;
+                    Entretien := 10 * PVtot / 1000 ;
+                    if PResSimulT.TabResult[3, h] = 0
+                    then // Gestation
+                    begin
+                      Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                      with PPRofilT.Porcelets[Cycle] do
+                      begin
+                        PdsPortee := NesTotaux * PdsNais ;
+                        NesT := NesTotaux ;
+                      end ;
+                      Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                      Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                        * Exp(-0.023998 * (Jour - 45)
+                          - 6.389 * Exp(-0.023998 * (Jour - 45))
+                          + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                      Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                        * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                          + 0.00759 * Jour + 0.06339 * NesT)
+                        * 0.0096 / 23.8 ;
+                      Portee := Foetus + Placenta ;
+                    end
+                    else
+                      Portee := 0 ;
+                    PVnet := PResSimulT.TabResult[60, h] ;
+                    GMQnet := PResSimulT.TabResult[61, h] ;
+                    Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                    if Ptot < Indigestible + Entretien + Portee + Retenu
+                    then // D�ficit
+                      v := v + Max (Ptot - Indigestible - Entretien - Portee, 0)
+                    else
+                      v := v + Retenu ;
+                  end ;
+              4 : // Lait
+                for h := 1 to PresSimulT.NbJSim do
+                  if PResSimulT.TabResult[3, h] = 1
+                  then // Lactation
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    PVtot := PResSimulT.TabResult[58, h] ;
+                    Entretien := 10 * PVtot / 1000 ;
+                    Lait := PResSimulT.TabResult[69, h] * 1.55 ;
+                    if Ptot < Indigestible + Entretien + Lait
+                    then // D�ficit
+                      v := v + Max (Ptot - Indigestible - Entretien, 0)
+                    else
+                      v := v + Lait ;
+                  end ;
+              5 : // D�ficit
+                for h := 1 to PresSimulT.NbJSim do
+                begin
+                  Composition (h) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, h] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  if PResSimulT.TabResult[3, h] = 0
+                  then // Gestation
+                  begin
+                    Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                    with PPRofilT.Porcelets[Cycle] do
+                    begin
+                      PdsPortee := NesTotaux * PdsNais ;
+                      NesT := NesTotaux ;
+                    end ;
+                    Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                    Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                      * Exp(-0.023998 * (Jour - 45)
+                        - 6.389 * Exp(-0.023998 * (Jour - 45))
+                        + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                    Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                      * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                        + 0.00759 * Jour + 0.06339 * NesT)
+                      * 0.0096 / 23.8 ;
+                    Portee := Foetus + Placenta ;
+                  end
+                  else
+                    Portee := 0 ;
+                  if PResSimulT.TabResult[3, h] <> 1
+                  then // Gestation ou ISSF
+                  begin
+                    PVnet := PResSimulT.TabResult[60, h] ;
+                    GMQnet := PResSimulT.TabResult[61, h] ;
+                    Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                  end
+                  else
+                    Retenu := 0 ;
+                  if PResSimulT.TabResult[3, h] = 1
+                  then // Lactation
+                    Lait := PResSimulT.TabResult[69, h] * 1.55
+                  else
+                    Lait := 0 ;
+                  if Ptot < Indigestible + Entretien + Portee + Retenu + Lait
+                  then
+                    v := v + Indigestible + Entretien + Portee + Retenu + Lait - Ptot ;
+                end ;
+              6 : // Exc�s
+                for h := 1 to PresSimulT.NbJSim do
+                begin
+                  Composition (h) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, h] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  if PResSimulT.TabResult[3, h] = 0
+                  then // Gestation
+                  begin
+                    Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                    with PPRofilT.Porcelets[Cycle] do
+                    begin
+                      PdsPortee := NesTotaux * PdsNais ;
+                      NesT := NesTotaux ;
+                    end ;
+                    Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                    Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                      * Exp(-0.023998 * (Jour - 45)
+                        - 6.389 * Exp(-0.023998 * (Jour - 45))
+                        + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                    Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                      * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                        + 0.00759 * Jour + 0.06339 * NesT)
+                      * 0.0096 / 23.8 ;
+                    Portee := Foetus + Placenta ;
+                  end
+                  else
+                    Portee := 0 ;
+                  if PResSimulT.TabResult[3, h] <> 1
+                  then // Gestation ou ISSF
+                  begin
+                    PVnet := PResSimulT.TabResult[60, h] ;
+                    GMQnet := PResSimulT.TabResult[61, h] ;
+                    Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                  end
+                  else
+                    Retenu := 0 ;
+                  if PResSimulT.TabResult[3, h] = 1
+                  then // Lactation
+                    Lait := PResSimulT.TabResult[69, h] * 1.55
+                  else
+                    Lait := 0 ;
+                  if Ptot > Indigestible + Entretien + Portee + Retenu + Lait
+                  then
+                    v := v + Ptot - Indigestible - Entretien - Portee - Retenu - Lait ;
+                end ;
+            end ;
+        end ;
+        result := v ;
+      end ;
+      1 : // R�partition dynamique
+      begin
+        // Diviseur
+        if CBMin4.ItemIndex = 1
+        then // Aliment ing�r�
+          d := PResSimulT.TabResult[11, j]
+        else
+          d := 1 ;
+        case CBMin3.ItemIndex of
+          0 : // Phosphore
+            case i of
+              0 : // Indigestible
+                if CBMin5.ItemIndex = 1
+                then // Total
+                begin
+                  Composition (j) ;
+                  Indigestible := Ptot - Pdig ;
+                  v := Indigestible ;
+                end
+                else
+                  v := 0 ;
+              1 : // Entretien
+              begin
+                Composition (j) ;
+                Indigestible := Ptot - Pdig ;
+                PVtot := PResSimulT.TabResult[58, j] ;
+                Entretien := 10 * PVtot / 1000 ;
+                if Ptot < Indigestible + Entretien
+                then // D�ficit
+                  v := Ptot - Indigestible
+                else
+                  v := Entretien ;
+              end ;
+              2 : // Port�e
+                if PResSimulT.TabResult[3, j] = 0
+                then // Gestation
+                begin
+                  Composition (j) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, j] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  Cycle := Trunc(PResSimulT.TabResult[2, j]) ;
+                  with PPRofilT.Porcelets[Cycle] do
+                  begin
+                    PdsPortee := NesTotaux * PdsNais ;
+                    NesT := NesTotaux ;
+                  end ;
+                  Jour := Trunc(PResSimulT.TabResult[78, j]) ;
+                  Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                    * Exp(-0.023998 * (Jour - 45)
+                      - 6.389 * Exp(-0.023998 * (Jour - 45))
+                      + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                  Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                    * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                      + 0.00759 * Jour + 0.06339 * NesT)
+                    * 0.0096 / 23.8 ;
+                  Portee := Foetus + Placenta ;
+                  if Ptot < Indigestible + Entretien + Portee
+                  then // D�ficit
+                    v := Max (Ptot - Indigestible - Entretien, 0)
+                  else
+                    v := Portee ;
+                end
+                else
+                  v := 0 ;
+              3 : // Retenu
+                if PResSimulT.TabResult[3, j] <> 1
+                then // Gestation ou ISSF
+                begin
+                  Composition (j) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, j] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  if PResSimulT.TabResult[3, j] = 0
+                  then // Gestation
+                  begin
+                    Cycle := Trunc(PResSimulT.TabResult[2, j]) ;
+                    with PPRofilT.Porcelets[Cycle] do
+                    begin
+                      PdsPortee := NesTotaux * PdsNais ;
+                      NesT := NesTotaux ;
+                    end ;
+                    Jour := Trunc(PResSimulT.TabResult[78, j]) ;
+                    Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                      * Exp(-0.023998 * (Jour - 45)
+                        - 6.389 * Exp(-0.023998 * (Jour - 45))
+                        + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                    Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                      * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                        + 0.00759 * Jour + 0.06339 * NesT)
+                      * 0.0096 / 23.8 ;
+                    Portee := Foetus + Placenta ;
+                  end
+                  else
+                    Portee := 0 ;
+                  PVnet := PResSimulT.TabResult[60, j] ;
+                  GMQnet := PResSimulT.TabResult[61, j] ;
+                  Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                  if Ptot < Indigestible + Entretien + Portee + Retenu
+                  then // D�ficit
+                    v := Max (Ptot - Indigestible - Entretien - Portee, 0)
+                  else
+                    v := Retenu ;
+                end
+                else
+                  v := 0 ;
+              4 : // Lait
+                if PResSimulT.TabResult[3, j] = 1
+                then // Lactation
+                begin
+                  Composition (j) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, j] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  Lait := PResSimulT.TabResult[69, j] * 1.55 ;
+                  if Ptot < Indigestible + Entretien + Lait
+                  then // D�ficit
+                    v := Max (Ptot - Indigestible - Entretien, 0)
+                  else
+                    v := Lait ;
+                end
+                else
+                  v := 0 ;
+              5 : // D�ficit
+              begin
+                Composition (j) ;
+                Indigestible := Ptot - Pdig ;
+                PVtot := PResSimulT.TabResult[58, j] ;
+                Entretien := 10 * PVtot / 1000 ;
+                if PResSimulT.TabResult[3, j] = 0
+                then // Gestation
+                begin
+                  Cycle := Trunc(PResSimulT.TabResult[2, j]) ;
+                  with PPRofilT.Porcelets[Cycle] do
+                  begin
+                    PdsPortee := NesTotaux * PdsNais ;
+                    NesT := NesTotaux ;
+                  end ;
+                  Jour := Trunc(PResSimulT.TabResult[78, j]) ;
+                  Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                    * Exp(-0.023998 * (Jour - 45)
+                      - 6.389 * Exp(-0.023998 * (Jour - 45))
+                      + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                  Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                    * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                      + 0.00759 * Jour + 0.06339 * NesT)
+                    * 0.0096 / 23.8 ;
+                  Portee := Foetus + Placenta ;
+                end
+                else
+                  Portee := 0 ;
+                if PResSimulT.TabResult[3, j] <> 1
+                then // Gestation ou ISSF
+                begin
+                  PVnet := PResSimulT.TabResult[60, j] ;
+                  GMQnet := PResSimulT.TabResult[61, j] ;
+                  Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                end
+                else
+                  Retenu := 0 ;
+                if PResSimulT.TabResult[3, j] = 1
+                then // Lactation
+                  Lait := PResSimulT.TabResult[69, j] * 1.55
+                else
+                  Lait := 0 ;
+                if Ptot < Indigestible + Entretien + Portee + Retenu + Lait
+                then
+                  v := Indigestible + Entretien + Portee + Retenu + Lait - Ptot
+                else
+                  v := 0 ;
+              end ;
+              6 : // Exc�s
+              begin
+                Composition (j) ;
+                Indigestible := Ptot - Pdig ;
+                PVtot := PResSimulT.TabResult[58, j] ;
+                Entretien := 10 * PVtot / 1000 ;
+                if PResSimulT.TabResult[3, j] = 0
+                then // Gestation
+                begin
+                  Cycle := Trunc(PResSimulT.TabResult[2, j]) ;
+                  with PPRofilT.Porcelets[Cycle] do
+                  begin
+                    PdsPortee := NesTotaux * PdsNais ;
+                    NesT := NesTotaux ;
+                  end ;
+                  Jour := Trunc(PResSimulT.TabResult[78, j]) ;
+                  Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                    * Exp(-0.023998 * (Jour - 45)
+                      - 6.389 * Exp(-0.023998 * (Jour - 45))
+                      + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                  Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                    * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                      + 0.00759 * Jour + 0.06339 * NesT)
+                    * 0.0096 / 23.8 ;
+                  Portee := Foetus + Placenta ;
+                end
+                else
+                  Portee := 0 ;
+                if PResSimulT.TabResult[3, j] <> 1
+                then // Gestation ou ISSF
+                begin
+                  PVnet := PResSimulT.TabResult[60, j] ;
+                  GMQnet := PResSimulT.TabResult[61, j] ;
+                  Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                end
+                else
+                  Retenu := 0 ;
+                if PResSimulT.TabResult[3, j] = 1
+                then // Lactation
+                  Lait := PResSimulT.TabResult[69, j] * 1.55
+                else
+                  Lait := 0 ;
+                if Ptot > Indigestible + Entretien + Portee + Retenu + Lait
+                then
+                  v := Ptot - Indigestible - Entretien - Portee - Retenu - Lait
+                else
+                  v := 0 ;
+              end ;
+              else
+                v := 0 ;
+            end ;
+          else
+            v := 0 ;
+        end ;
+        result := v / d ;
+      end ;
+      2 : // R�partition par p�riode
+      begin
+        // Diviseur
+        case CBMin4.ItemIndex of
+          1 : // Dur�e
+            d := j - k ;
+          2 : // Aliment ing�r�
+          begin
+            d := 0 ;
+            for h := k to j - 1 do
+              d := d + PResSimulT.TabResult[11, h] ;
+          end ;
+          else
+            d := 1 ;
+        end ;
+        v := 0 ;
+        case CBMin3.ItemIndex of
+          0 : // Phosphore
+            case i of
+              0 : // Indigestible
+                if CBMin5.ItemIndex = 1
+                then // Total
+                  for h := k to j - 1 do
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    v := v + Indigestible ;
+                  end ;
+              1 : // Entretien
+                for h := k to j - 1 do
+                begin
+                  Composition (h) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, h] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  if Ptot < Indigestible + Entretien
+                  then // D�ficit
+                    v := v + Ptot - Indigestible
+                  else
+                    v := v + Entretien ;
+                end ;
+              2 : // Port�e
+                for h := k to j - 1 do
+                  if PResSimulT.TabResult[3, h] = 0
+                  then // Gestation
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    PVtot := PResSimulT.TabResult[58, h] ;
+                    Entretien := 10 * PVtot / 1000 ;
+                    Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                    with PPRofilT.Porcelets[Cycle] do
+                    begin
+                      PdsPortee := NesTotaux * PdsNais ;
+                      NesT := NesTotaux ;
+                    end ;
+                    Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                    Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                      * Exp(-0.023998 * (Jour - 45)
+                        - 6.389 * Exp(-0.023998 * (Jour - 45))
+                        + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                    Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                      * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                        + 0.00759 * Jour + 0.06339 * NesT)
+                      * 0.0096 / 23.8 ;
+                    Portee := Foetus + Placenta ;
+                    if Ptot < Indigestible + Entretien + Portee
+                    then // D�ficit
+                      v := v + Max (Ptot - Indigestible - Entretien, 0)
+                    else
+                      v := v + Portee ;
+                  end ;
+              3 : // Retenu
+                for h := k to j - 1 do
+                  if PResSimulT.TabResult[3, h] <> 1
+                  then // Gestation ou ISSF
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    PVtot := PResSimulT.TabResult[58, h] ;
+                    Entretien := 10 * PVtot / 1000 ;
+                    if PResSimulT.TabResult[3, h] = 0
+                    then // Gestation
+                    begin
+                      Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                      with PPRofilT.Porcelets[Cycle] do
+                      begin
+                        PdsPortee := NesTotaux * PdsNais ;
+                        NesT := NesTotaux ;
+                      end ;
+                      Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                      Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                        * Exp(-0.023998 * (Jour - 45)
+                          - 6.389 * Exp(-0.023998 * (Jour - 45))
+                          + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                      Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                        * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                          + 0.00759 * Jour + 0.06339 * NesT)
+                        * 0.0096 / 23.8 ;
+                      Portee := Foetus + Placenta ;
+                    end
+                    else
+                      Portee := 0 ;
+                    PVnet := PResSimulT.TabResult[60, h] ;
+                    GMQnet := PResSimulT.TabResult[61, h] ;
+                    Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                    if Ptot < Indigestible + Entretien + Portee + Retenu
+                    then // D�ficit
+                      v := v + Max (Ptot - Indigestible - Entretien - Portee, 0)
+                    else
+                      v := v + Retenu ;
+                  end ;
+              4 : // Lait
+                for h := k to j - 1 do
+                  if PResSimulT.TabResult[3, h] = 1
+                  then // Lactation
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    PVtot := PResSimulT.TabResult[58, h] ;
+                    Entretien := 10 * PVtot / 1000 ;
+                    Lait := PResSimulT.TabResult[69, h] * 1.55 ;
+                    if Ptot < Indigestible + Entretien + Lait
+                    then // D�ficit
+                      v := v + Max (Ptot - Indigestible - Entretien, 0)
+                    else
+                      v := v + Lait ;
+                  end ;
+              5 : // D�ficit
+                for h := k to j - 1 do
+                begin
+                  Composition (h) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, h] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  if PResSimulT.TabResult[3, h] = 0
+                  then // Gestation
+                  begin
+                    Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                    with PPRofilT.Porcelets[Cycle] do
+                    begin
+                      PdsPortee := NesTotaux * PdsNais ;
+                      NesT := NesTotaux ;
+                    end ;
+                    Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                    Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                      * Exp(-0.023998 * (Jour - 45)
+                        - 6.389 * Exp(-0.023998 * (Jour - 45))
+                        + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                    Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                      * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                        + 0.00759 * Jour + 0.06339 * NesT)
+                      * 0.0096 / 23.8 ;
+                    Portee := Foetus + Placenta ;
+                  end
+                  else
+                    Portee := 0 ;
+                  if PResSimulT.TabResult[3, h] <> 1
+                  then // Gestation ou ISSF
+                  begin
+                    PVnet := PResSimulT.TabResult[60, h] ;
+                    GMQnet := PResSimulT.TabResult[61, h] ;
+                    Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                  end
+                  else
+                    Retenu := 0 ;
+                  if PResSimulT.TabResult[3, h] = 1
+                  then // Lactation
+                    Lait := PResSimulT.TabResult[69, h] * 1.55
+                  else
+                    Lait := 0 ;
+                  if Ptot < Indigestible + Entretien + Portee + Retenu + Lait
+                  then
+                    v := v + Indigestible + Entretien + Portee + Retenu + Lait - Ptot ;
+                end ;
+              6 : // Exc�s
+                for h := k to j - 1 do
+                begin
+                  Composition (h) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, h] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  if PResSimulT.TabResult[3, h] = 0
+                  then // Gestation
+                  begin
+                    Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                    with PPRofilT.Porcelets[Cycle] do
+                    begin
+                      PdsPortee := NesTotaux * PdsNais ;
+                      NesT := NesTotaux ;
+                    end ;
+                    Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                    Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                      * Exp(-0.023998 * (Jour - 45)
+                        - 6.389 * Exp(-0.023998 * (Jour - 45))
+                        + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                    Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                      * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                        + 0.00759 * Jour + 0.06339 * NesT)
+                      * 0.0096 / 23.8 ;
+                    Portee := Foetus + Placenta ;
+                  end
+                  else
+                    Portee := 0 ;
+                  if PResSimulT.TabResult[3, h] <> 1
+                  then // Gestation ou ISSF
+                  begin
+                    PVnet := PResSimulT.TabResult[60, h] ;
+                    GMQnet := PResSimulT.TabResult[61, h] ;
+                    Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                  end
+                  else
+                    Retenu := 0 ;
+                  if PResSimulT.TabResult[3, h] = 1
+                  then // Lactation
+                    Lait := PResSimulT.TabResult[69, h] * 1.55
+                  else
+                    Lait := 0 ;
+                  if Ptot > Indigestible + Entretien + Portee + Retenu + Lait
+                  then
+                    v := v + Ptot - Indigestible - Entretien - Portee - Retenu - Lait ;
+                end ;
+            end ;
+        end ;
+        result := v / d ;
+      end ;
+      3 : // Besoin et apport
+      begin
+        // Diviseur
+        if CBMin4.ItemIndex = 1
+        then // Aliment ing�r�
+          d := PResSimulT.TabResult[11, j]
+        else
+          d := 1 ;
+        case CBMin3.ItemIndex of
+          0 : // Phosphore
+            case i of
+              1 : // Apport
+              begin
+                Composition (j) ;
+                if CBMin5.ItemIndex = 0
+                then // Digestibilit� apparente
+                  v := Pdig
+                else // Total
+                  v := Ptot ;
+              end ;
+              2 : // Besoin
+                if CBMin5.ItemIndex = 0
+                then // Digestibilit� apparente
+                begin
+                  PVtot := PResSimulT.TabResult[58, j] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  if PResSimulT.TabResult[3, j] = 0
+                  then // Gestation
+                  begin
+                    Cycle := Trunc(PResSimulT.TabResult[2, j]) ;
+                    with PPRofilT.Porcelets[Cycle] do
+                    begin
+                      PdsPortee := NesTotaux * PdsNais ;
+                      NesT := NesTotaux ;
+                    end ;
+                    Jour := Trunc(PResSimulT.TabResult[78, j]) ;
+                    Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                      * Exp(-0.023998 * (Jour - 45)
+                        - 6.389 * Exp(-0.023998 * (Jour - 45))
+                        + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                    Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                      * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                        + 0.00759 * Jour + 0.06339 * NesT)
+                      * 0.0096 / 23.8 ;
+                    Portee := Foetus + Placenta ;
+                  end
+                  else
+                    Portee := 0 ;
+                  if PResSimulT.TabResult[3, j] <> 1
+                  then // Gestation ou ISSF
+                  begin
+                    PVnet := PResSimulT.TabResult[60, j] ;
+                    GMQnet := PResSimulT.TabResult[61, j] ;
+                    Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                  end
+                  else
+                    Retenu := 0 ;
+                  if PResSimulT.TabResult[3, j] = 1
+                  then // Lactation
+                    Lait := PResSimulT.TabResult[69, j] * 1.55
+                  else
+                    Lait := 0 ;
+                  v := Entretien + Portee + Retenu + Lait ;
+                end
+                else
+                  v := 0 ;
+              else
+                v := 0 ;
+            end ;
+          else
+            v := 0 ;
+        end ;
+        result := v / d ;
+      end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphMin
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (Format ('%s : %s', [CBMin3.Text, CBMin1.Text])) ;
+  Graph.SubTitle.Text.Add (CBMin5.Text) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBMin3.Text, CBMin4.Text]) ;
+  case CBMin1.ItemIndex of
+    0 : // R�partition globale
+    begin
+//      Graph.View3D := TRUE ;
+      Graph.Legend.Visible := FALSE ;
+      csv := '';
+      for i := 0 to ListMin.Count - 1 do
+        csv := csv + Format ('%s (%s)', [ListMin[i], CBMin4.Text]) + ';';
+      MExport.Lines.Append(csv);
+      // Affichage du camembert
+      PieMin.Active := TRUE ;
+      PieMin.Clear ;
+      if CBMin4.ItemIndex = 1
+      then
+        PieMin.Marks.Style := smsLabelPercent
+      else
+        PieMin.Marks.Style := smsLabelValue ;
+      t := 0 ;
+      csv := '';
+      for i := 0 to ListMin.Count - 1 do
+      begin
+        y := MinY ;
+        if y > PICO
+        then
+          PieMin.AddPie (y, ListMin[i], AreaMin[i].SeriesColor) ;
+        t := t + y ;
+        csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+      end ;
+      Graph.SubTitle.Text.Add (Format ('%s : %1.0f %s', [StrTotal, t, StrG])) ;
+      MExport.Lines.Append(csv);
+    end ;
+    1 : // R�partition dynamique
+    begin
+      Graph.BottomAxis.Title.Caption := CBMin2D.Text ;
+      csv := CBMin2D.Text;
+      for i := 0 to ListMin.Count - 1 do
+        csv := csv + ';' + Format ('%s (%s)', [ListMin[i], CBMin4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des aires
+      for i := 0 to ListMin.Count - 1 do
+        AreaMin[i].Active := TRUE ;
+      for i := 0 to ListMin.Count - 1 do
+        AreaMin[i].Clear ;
+      if CBMin4.ItemIndex = 2
+      then
+        for i := 0 to ListMin.Count - 1 do
+          AreaMin[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListMin.Count - 1 do
+          AreaMin[i].MultiArea := maStacked ;
+      for j := 1 to PResSimulT.NbJSim do
+      begin
+        csv := FloatToStrF(MinX, ffFixed, 15, 15);
+        for i := 0 to ListMin.Count - 1 do
+        begin
+          AreaMin[i].AddXY (MinX, MinY, '', clTeeColor) ;
+          csv := csv + ';' + FloatToStrF(MinY, ffFixed, 15, 15);
+        end;
+        MExport.Lines.Append(csv);
+      end;
+    end ;
+    2 : // R�partition par p�riode
+    begin
+      Graph.BottomAxis.Title.Caption := CBMin2P.Text ;
+      csv := CBMin2P.Text;
+      for i := 0 to ListMin.Count - 1 do
+        csv := csv + ';' + Format ('%s (%s)', [ListMin[i], CBMin4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des barres
+      for i := 0 to ListMin.Count - 1 do
+        BarMin[i].Active := TRUE ;
+      for i := 0 to ListMin.Count - 1 do
+        BarMin[i].Clear ;
+      if CBMin4.ItemIndex = 3
+      then
+        for i := 0 to ListMin.Count - 1 do
+          BarMin[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListMin.Count - 1 do
+          BarMin[i].MultiBar := mbStacked ;
+      j := 1 ;
+      x := MinX ;
+      k := 1 ;
+      if PResSimulT.NbJSim > 1
+      then
+        for j := 2 to PResSimulT.NbJSim do
+        begin
+          p := MinX ;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            if CBMin2P.ItemIndex = 1
+            then // Stade
+              case Trunc (x) of
+                0 : s := StrGestation ;
+                1 : s := StrLactation ;
+                2 : s := StrISSF ;
+              end
+            else
+              s := Format ('%1.0f', [x]) ;
+            csv := s;
+            for i := 0 to ListMin.Count - 1 do
+            begin
+              y := MinY ;
+              if y > PICO
+              then
+                BarMin[i].AddBar (y, s, clTeeColor)
+              else
+                BarMin[i].AddNull (s) ;
+              csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+            end ;
+            MExport.Lines.Append(csv);
+            x := p ;
+            k := j ;
+          end ;
+        end ;
+      j := PResSimulT.NbJSim + 1 ;
+      if CBMin2P.ItemIndex = 2
+      then // Globale
+        s := ' '
+      else
+        if CBMin2P.ItemIndex = 1
+        then // Stade
+          case Trunc (x) of
+            0 : s := StrGestation ;
+            1 : s := StrLactation ;
+            2 : s := StrISSF ;
+          end
+        else
+          s := Format ('%1.0f', [x]) ;
+      csv := s;
+      for i := 0 to ListMin.Count - 1 do
+      begin
+        y := MinY ;
+        if y > PICO
+        then
+          BarMin[i].AddBar (y, s, clTeeColor)
+        else
+          BarMin[i].AddNull (s) ;
+        csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+      end ;
+      MExport.Lines.Append(csv);
+    end ;
+    3 : // Besoin et apport
+    begin
+      Graph.BottomAxis.Title.Caption := CBMin2D.Text ;
+      Graph.Legend.Alignment := laTop ;
+      csv := CBMin2D.Text;
+      if CBMin5.ItemIndex = 1
+      then // En digestibilit� totale, seul l'apport est affich�
+        csv := csv + ';' + Format ('%s (%s)', [LineMin[1].Title, CBMin4.Text])
+      else
+        for i := 1 to 2 do
+          csv := csv + ';' + Format ('%s (%s)', [LineMin[i].Title, CBMin4.Text]);
+      // Affichage des lignes
+      if CBMin5.ItemIndex = 1
+      then // En digestibilit� totale, seul l'apport est affich�
+        LineMin[1].Active := TRUE
+      else
+        for i := 1 to 2 do
+          LineMin[i].Active := TRUE ;
+      for i := 1 to 2 do
+        LineMin[i].Clear ;
+      for j := 1 to PResSimulT.NbJSim do
+      begin
+        csv := FloatToStrF(MinX, ffFixed, 15, 15);
+        for i := 1 to 2 do
+          if (CBAA5.ItemIndex = 1) and (i = 2)
+          then // Le besoin total n'a pas de sens
+            Continue
+          else
+          begin
+            LineMin[i].AddXY (MinX, MinY, '', clTeeColor) ;
+            csv := csv + ';' + FloatToStrF(MinY, ffFixed, 15, 15);
+          end ;
+        MExport.Lines.Append(csv);
+      end ;
+    end ;
+  end ;
+  if PieMin.Active
+  then
+  begin
+    Graph.View3DOptions.Orthogonal := FALSE ;
+    Graph.View3DOptions.Elevation := 315 ;
+    Graph.View3DOptions.Rotation := 360 ;
+    Graph.View3DOptions.Perspective := 0 ;
+  end
+  else
+  begin
+    Graph.View3DOptions.Orthogonal := TRUE ;
+    Graph.View3DOptions.Elevation := 345 ;
+    Graph.View3DOptions.Rotation := 345 ;
+    Graph.View3DOptions.Perspective := 15 ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResSimulT.CBMin1Change(Sender: TObject);
+begin
+  CBMin4.Items.Clear ;
+  case CBMin1.ItemIndex of
+    0 : // R�partition globale
+    begin
+      CBMin2D.Visible := FALSE ;
+      CBMin2P.Visible := FALSE ;
+      // Unit�s
+      CBMin4.Items.Add (StrG) ;
+      CBMin4.Items.Add ('%') ;
+    end ;
+    1 : // R�partition dynamique
+    begin
+      CBMin2D.Visible := TRUE ;
+      CBMin2P.Visible := FALSE ;
+      // Unit�s
+      CBMin4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBMin4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+      CBMin4.Items.Add ('%') ;
+    end ;
+    2 : // R�partition par p�riode
+    begin
+      CBMin2D.Visible := FALSE ;
+      CBMin2P.Visible := TRUE ;
+      // Unit�s
+      CBMin4.Items.Add (StrG) ;
+      CBMin4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBMin4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+      CBMin4.Items.Add ('%') ;
+    end ;
+    3 : // Besoin et apport
+    begin
+      CBMin2D.Visible := TRUE ;
+      CBMin2P.Visible := FALSE ;
+      // Unit�s
+      CBMin4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBMin4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+    end ;
+  end ;
+  CBMin4.ItemIndex := 0 ;
+  AffGraphMin ;
+end;
+
+procedure TFResSimulT.CBMin2Change(Sender: TObject);
+begin
+  AffGraphMin ;
+end;
+
+procedure TFResSimulT.CBMin3Change(Sender: TObject);
+begin
+  AffGraphMin ;
+end;
+
+procedure TFResSimulT.CBMin4Change(Sender: TObject);
+begin
+  AffGraphMin ;
+end;
+
+procedure TFResSimulT.CBMin5Change(Sender: TObject);
+begin
+  AffGraphMin ;
+end;
+
+////////////////
+//   Rejets   //
+////////////////
+procedure TFResSimulT.InitRej ;
+const
+  TabColor : array[0..3] of TColor
+    = (clMaroon, clYellow, clPink, clMaroon) ;
+var
+  i : integer ;
+begin
+  // ListRej : liste pour les rejets
+  ListRej := TStringList.Create ;
+  ListRej.Assign (LBRej.Items) ;
+  // PieRej : s�rie (camembert) graphique
+  PieRej := TPieSeries.Create (Graph) ;
+  PieRej.ParentChart := Graph ;
+  PieRej.Circled := TRUE ;
+  PieRej.Marks.ArrowLength := 24 ;
+  PieRej.Marks.Arrow.Color := clBlack ;
+  PieRej.Marks.Brush.Style := bsClear ;
+  PieRej.Marks.Frame.Visible := FALSE ;
+  PieRej.ValueFormat := Format ('# ##0 %s', [StrG]) ;
+  PieRej.PercentFormat := '##0 %' ;
+  Graph.AddSeries (PieRej) ;
+  // AreaRej : s�ries (aires) graphiques
+  SetLength (AreaRej, ListRej.Count) ;
+  for i := 0 to ListRej.Count - 1 do
+  begin
+    AreaRej[i] := TAreaSeries.Create (Graph) ;
+    AreaRej[i].ParentChart := Graph ;
+    AreaRej[i].Title := ListRej[i] ;
+    AreaRej[i].SeriesColor := TabColor[i] ;
+    AreaRej[i].AreaLinesPen.Visible := FALSE ;
+    Graph.AddSeries (AreaRej[i]) ;
+  end ;
+  // BarRej : s�ries (barres) graphiques
+  SetLength (BarRej, ListRej.Count) ;
+  for i := 0 to ListRej.Count - 1 do
+  begin
+    BarRej[i] := TBarSeries.Create (Graph) ;
+    BarRej[i].ParentChart := Graph ;
+    BarRej[i].Title := ListRej[i] ;
+    BarRej[i].SeriesColor := TabColor[i] ;
+    BarRej[i].BarPen.Color := BarRej[i].SeriesColor ;
+    BarRej[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarRej[i]) ;
+  end ;
+end ;
+
+procedure TFResSimulT.AffGraphRej ;
+var
+  i, j, k : integer ;
+  x, y, t, p : double ;
+  s, csv : string ;
+
+  // Abscisse
+  function RejX : double ;
+  begin
+    case CBRej1.ItemIndex of
+      1 : // R�partition dynamique
+        case CBRej2D.ItemIndex of
+          0 : // Age
+            result := PResSimulT.TabResult[1, j] ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      2 : // R�partition par p�riode
+        case CBRej2P.ItemIndex of
+          0 : // Cycle
+            result := PResSimulT.TabResult[2, j] ;
+          1 : // Stade
+            result := PResSimulT.TabResult[3, j] ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function RejY : double ;
+  var
+    h : integer ;
+    v, d, IngereSec1, IngereSec2, Ptot, Pdig, Ingere, Digestible, Depose, Exporte : double ;
+    CC1, CC2 : CompositionChimique ;
+
+    // Composition des aliments
+    procedure Composition (jour : integer) ;
+    var
+      Aliment1, Aliment2 : integer ;
+      IngereFrais, Taux1, Taux2, Ptot1, Ptot2, Pdig1, Pdig2 : double ;
+    begin
+      IngereFrais := PresSimulT.TabResult[11, jour] ;
+      // Aliment 1
+      Aliment1 := Round (PresSimulT.TabResult[7, jour]) ;
+      if Aliment1 = -1
+      then
+        CC1 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment1))] ;
+        CC1 := PAliment.CC ;
+      end ;
+      Taux1 := PresSimulT.TabResult[9, jour] / 100 ;
+      IngereSec1 := IngereFrais * Taux1 * CC1.MS / 1000 ;
+      Ptot1 := IngereSec1 * CC1.P ;
+      if Aliment1 = -1
+      then
+        Pdig1 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig1 := IngereSec1 * PAliment.CC.PdigG
+        else // Farine
+          Pdig1 := IngereSec1 * PAliment.CC.PdigF ;
+      // Aliment 2
+      Aliment2 := Round (PresSimulT.TabResult[8, jour]) ;
+      if Aliment2 = -1
+      then
+        CC2 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment2))] ;
+        CC2 := PAliment.CC ;
+      end ;
+      Taux2 := PresSimulT.TabResult[10, jour] / 100 ;
+      IngereSec2 := IngereFrais * Taux2 * CC2.MS / 1000 ;
+      Ptot2 := IngereSec2 * CC2.P ;
+      if Aliment2 = -1
+      then
+        Pdig2 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig2 := IngereSec2 * PAliment.CC.PdigG
+        else // Farine
+          Pdig2 := IngereSec2 * PAliment.CC.PdigF ;
+      // Cumul
+      Ptot := Ptot1 + Ptot2 ;
+      Pdig := Pdig1 + Pdig2 ;
+    end ;
+
+    // Calcul de l'ing�r�
+    function CalcIngere : Double ;
+    begin
+      case CBRej3.ItemIndex of
+        0 : // Azote
+          result := (IngereSec1*CC1.MAT + IngereSec2*CC2.MAT) * 0.16 ;
+        1 : // Phosphore
+          result := Ptot;
+        2 : // Calcium
+          result := IngereSec1*CC1.Ca + IngereSec2*CC2.Ca ;
+        3 : // Potassium
+          result := IngereSec1*CC1.K + IngereSec2*CC2.K ;
+        4 : // Cuivre
+          result := IngereSec1*CC1.Cu + IngereSec2*CC2.Cu ;
+        5 : // Zinc
+          result := IngereSec1*CC1.Zn + IngereSec2*CC2.Zn ;
+        else
+          result := 0 ;
+      end ;
+    end ;
+
+    // Calcul du digestible
+    function CalcDigestible : Double ;
+    begin
+      case CBRej3.ItemIndex of
+        0 : // Azote
+          result := (IngereSec1*CC1.MAT*CC1.dMAT_C/100 + IngereSec2*CC2.MAT*CC2.dMAT_C/100) * 0.16 ;
+        1 : // Phosphore
+          result := Pdig;
+        else
+          result := 0 ;
+      end ;
+    end ;
+
+    // Calcul du d�p�t (potentiel)
+    function CalcDepot (jour : integer) : Double ;
+    var
+      PV, GMQ, PD : Double ;
+    begin
+      PV := PresSimulT.TabResult[58, jour] ;
+      GMQ := PresSimulT.TabResult[59, jour] ;
+      PD := PResSimulT.TabResult[64, jour] ;
+      case CBRej3.ItemIndex of
+        0 : // Azote
+          result := PD * 0.16 ;
+        1 : // Phosphore
+          if GMQ > 0
+          then
+            result := -0.00227 * (Power(PV+GMQ, 2) - Power(PV, 2)) + 5.36335 * GMQ
+          else
+            result := 0 ;
+        2 : // Calcium
+          if GMQ > 0
+          then
+            result := -0.00180 * (Power(PV+GMQ, 2) - Power(PV, 2)) + 8.64633 * GMQ
+          else
+            result := 0 ;
+        3 : // Potassium
+          if GMQ > 0
+          then
+            result := -0.00345 * (Power(PV+GMQ, 2) - Power(PV, 2)) + 2.53338 * GMQ
+          else
+            result := 0 ;
+        4 : // Cuivre
+          if GMQ > 0
+          then
+            result := 1.0 * GMQ
+          else
+            result := 0 ;
+        5 : // Zinc
+          if GMQ > 0
+          then
+            result := 21.8 * GMQ
+          else
+            result := 0 ;
+        else
+          result := 0 ;
+      end ;
+    end ;
+
+    // Calcul de l'export (lait)
+    function CalcExport (jour : integer) : Double ;
+    var
+      Lait : Double ;
+    begin
+      Lait := PResSimulT.TabResult[69, jour] ;
+      case CBRej3.ItemIndex of
+        0 : // Azote
+          result := Lait / 0.1325 ;
+        1 : // Phosphore
+          result := Lait * 1.41 ;
+        2 : // Calcium
+          result := Lait * 1.95 ;
+        3 : // Potassium
+          result := Lait * 0.59 ;
+        4 : // Cuivre
+          result := Lait * 0.002 ;
+        5 : // Zinc
+          result := Lait * 0.007 ;
+        else
+          result := 0 ;
+      end ;
+    end ;
+
+  // RejY
+  begin
+    case CBRej1.ItemIndex of
+      0 : // R�partition globale
+      begin
+        v := 0 ;
+        for h := 1 to PResSimulT.NbJSim do
+        begin
+          Composition (h) ;
+          Ingere := CalcIngere ;
+          Digestible := CalcDigestible ;
+          Depose := CalcDepot (h) ;
+          Exporte := CalcExport (h) ;
+          if CBRej3.ItemIndex < 2
+          then // Azote ou phosphore
+            case i of
+              0 : // F�cal
+                v := v + Ingere - Digestible ;
+              1 : // Urinaire
+                v := v + Max (Digestible - Depose - Exporte, 0) ;
+              2 : // Retenu ou export�
+                v := v + Min (Digestible, Depose + Exporte) ;
+            end
+          else // Autres
+            case i of
+              2 : // Retenu ou export�
+                v := v + Min (Ingere, Depose + Exporte) ;
+              3 : // Ecr�t�
+                v := v + Max (Ingere - Depose - Exporte, 0) ;
+            end ;
+        end ;
+        result := v ;
+      end ;
+      1 : // R�partition dynamique
+      begin
+        // Diviseur
+        if CBRej4.ItemIndex = 1
+        then // Aliment ing�r�
+          d := PResSimulT.TabResult[11, j]
+        else
+          d := 1 ;
+        Composition (j) ;
+        Ingere := CalcIngere ;
+        Digestible := CalcDigestible ;
+        Depose := CalcDepot (j) ;
+        Exporte := CalcExport (j) ;
+        if CBRej3.ItemIndex < 2
+        then // Azote ou phosphore
+          case i of
+            0 : // F�cal
+              v := Ingere - Digestible ;
+            1 : // Urinaire
+              v := Max (Digestible - Depose - Exporte, 0) ;
+            2 : // Retenu ou export�
+              v := Min (Digestible, Depose + Exporte) ;
+            else
+              v := 0 ;
+          end
+        else // Autres
+          case i of
+            2 : // Retenu ou export�
+              v := Min (Ingere, Depose + Exporte) ;
+            3 : // Ecr�t�
+              v := Max (Ingere - Depose - Exporte, 0) ;
+            else
+              v := 0 ;
+          end ;
+        result := v / d ;
+      end ;
+      2 : // R�partition par p�riode
+      begin
+        // Diviseur
+        case CBRej4.ItemIndex of
+          1 : // Dur�e
+            d := j - k ;
+          2 : // Aliment ing�r�
+          begin
+            d := 0 ;
+            for h := k to j - 1 do
+              d := d + PResSimulT.TabResult[11, h] ;
+          end ;
+          else
+            d := 1 ;
+        end ;
+        v := 0 ;
+        for h := k to j - 1 do
+        begin
+          Composition (h) ;
+          Ingere := CalcIngere ;
+          Digestible := CalcDigestible ;
+          Depose := CalcDepot (h) ;
+          Exporte := CalcExport (h) ;
+          if CBRej3.ItemIndex < 2
+          then // Azote ou phosphore
+            case i of
+              0 : // F�cal
+                v := v + Ingere - Digestible ;
+              1 : // Urinaire
+                v := v + Max (Digestible - Depose - Exporte, 0) ;
+              2 : // Retenu ou export�
+                v := v + Min (Digestible, Depose + Exporte) ;
+            end
+          else // Autres
+            case i of
+              2 : // Retenu ou export�
+                v := v + Min (Ingere, Depose + Exporte) ;
+              3 : // Ecr�t�
+                v := v + Max (Ingere - Depose - Exporte, 0) ;
+            end ;
+        end ;
+        result := v / d ;
+      end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphRej
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (Format ('%s : %s', [CBRej3.Text, CBRej1.Text])) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBRej3.Text, CBRej4.Text]) ;
+  case CBRej1.ItemIndex of
+    0 : // R�partition globale
+    begin
+//      Graph.View3D := TRUE ;
+      Graph.Legend.Visible := FALSE ;
+      csv := '';
+      if CBRej3.ItemIndex < 2
+      then // Azote ou phosphore : F�cal, Urinaire et Retenu
+        for i := 0 to 2 do
+          csv := csv + Format ('%s (%s)', [ListRej[i], CBRej4.Text]) + ';'
+      else // Autres : Retenu et Excr�t�
+        for i := 2 to ListRej.Count - 1 do
+          csv := csv + Format ('%s (%s)', [ListRej[i], CBRej4.Text]) + ';';
+      MExport.Lines.Append(csv);
+      // Affichage du camembert
+      PieRej.Active := TRUE ;
+      PieRej.Clear ;
+      if CBRej4.ItemIndex = 1
+      then
+        PieRej.Marks.Style := smsLabelPercent
+      else
+        PieRej.Marks.Style := smsLabelValue ;
+      t := 0 ;
+      csv := '';
+      if CBRej3.ItemIndex < 2
+      then // Azote ou phosphore : F�cal, Urinaire et Retenu
+        for i := 0 to 2 do
+        begin
+          y := RejY ;
+          PieRej.AddPie (y, ListRej[i], AreaRej[i].SeriesColor) ;
+          t := t + y ;
+          csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+        end
+      else // Autres : Retenu et Excr�t�
+        for i := 2 to ListRej.Count - 1 do
+        begin
+          y := RejY ;
+          if y > PICO
+          then
+            PieRej.AddPie (y, ListRej[i], AreaRej[i].SeriesColor) ;
+          t := t + y ;
+          csv := csv + FloatToStrF(y, ffFixed, 15, 15) + ';';
+        end ;
+      if CBRej3.ItemIndex > 3
+      then // Oligo-�l�ment
+        Graph.SubTitle.Text.Add (Format ('%s : %1.0f %s', [StrTotal, t, StrMg]))
+      else // Macro-�l�ment
+        Graph.SubTitle.Text.Add (Format ('%s : %1.0f %s', [StrTotal, t, StrG])) ;
+      MExport.Lines.Append(csv);
+    end ;
+    1 : // R�partition dynamique
+    begin
+      Graph.BottomAxis.Title.Caption := CBRej2D.Text ;
+      csv := CBRej2D.Text;
+      if CBRej3.ItemIndex < 2
+      then // Azote ou phosphore : F�cal, Urinaire et Retenu
+        for i := 0 to 2 do
+          csv := csv + ';' + Format ('%s (%s)', [ListRej[i], CBRej4.Text])
+      else // Autres : Retenu et Excr�t�
+        for i := 2 to ListRej.Count - 1 do
+          csv := csv + ';' + Format ('%s (%s)', [ListRej[i], CBRej4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des aires
+      if CBRej3.ItemIndex < 2
+      then // Azote ou phosphore : F�cal, Urinaire et Retenu
+        for i := 0 to 2 do
+          AreaRej[i].Active := TRUE
+      else // Autres : Retenu et Excr�t�
+        for i := 2 to ListRej.Count - 1 do
+          AreaRej[i].Active := TRUE ;
+      for i := 0 to ListRej.Count - 1 do
+        AreaRej[i].Clear ;
+      if CBRej4.ItemIndex = 2
+      then
+        for i := 0 to ListRej.Count - 1 do
+          AreaRej[i].MultiArea := maStacked100
+      else
+        for i := 0 to ListRej.Count - 1 do
+          AreaRej[i].MultiArea := maStacked ;
+      for j := 1 to PResSimulT.NbJSim do
+      begin
+        csv := FloatToStrF(RejX, ffFixed, 15, 15);
+        if CBRej3.ItemIndex < 2
+        then // Azote ou phosphore : F�cal, Urinaire et Retenu
+          for i := 0 to 2 do
+          begin
+            AreaRej[i].AddXY (RejX, RejY, '', clTeeColor) ;
+            csv := csv + ';' + FloatToStrF(RejY, ffFixed, 15, 15);
+          end
+        else // Autres : Retenu et Excr�t�
+          for i := 2 to ListRej.Count - 1 do
+          begin
+            AreaRej[i].AddXY (RejX, RejY, '', clTeeColor) ;
+            csv := csv + ';' + FloatToStrF(RejY, ffFixed, 15, 15);
+          end;
+        MExport.Lines.Append(csv);
+      end;
+    end ;
+    2 : // R�partition par p�riode
+    begin
+      Graph.BottomAxis.Title.Caption := CBRej2P.Text ;
+      csv := CBRej2P.Text;
+      if CBRej3.ItemIndex < 2
+      then // Azote ou phosphore : F�cal, Urinaire et Retenu
+        for i := 0 to 2 do
+          csv := csv + ';' + Format ('%s (%s)', [ListRej[i], CBRej4.Text])
+      else // Autres : Retenu et Excr�t�
+        for i := 2 to ListRej.Count - 1 do
+          csv := csv + ';' + Format ('%s (%s)', [ListRej[i], CBRej4.Text]);
+      MExport.Lines.Append(csv);
+      // Affichage des barres
+      if CBRej3.ItemIndex < 2
+      then // Azote ou phosphore : F�cal, Urinaire et Retenu
+        for i := 0 to 2 do
+          BarRej[i].Active := TRUE
+      else // Autres : Retenu et Excr�t�
+        for i := 2 to ListRej.Count - 1 do
+          BarRej[i].Active := TRUE ;
+      for i := 0 to ListRej.Count - 1 do
+        BarRej[i].Clear ;
+      if CBRej4.ItemIndex = 3
+      then
+        for i := 0 to ListRej.Count - 1 do
+          BarRej[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListRej.Count - 1 do
+          BarRej[i].MultiBar := mbStacked ;
+      j := 1 ;
+      x := RejX ;
+      k := 1 ;
+      if PResSimulT.NbJSim > 1
+      then
+        for j := 2 to PResSimulT.NbJSim do
+        begin
+          p := RejX ;
+          if x <> p
+          then
+          begin
+            // Changement de p�riode
+            if CBRej2P.ItemIndex = 1
+            then // Stade
+              case Trunc (x) of
+                0 : s := StrGestation ;
+                1 : s := StrLactation ;
+                2 : s := StrISSF ;
+              end
+            else
+              s := Format ('%1.0f', [x]) ;
+            csv := s;
+            if CBRej3.ItemIndex < 2
+            then // Azote ou phosphore : F�cal, Urinaire et Retenu
+              for i := 0 to 2 do
+              begin
+                y := RejY ;
+                if y > PICO
+                then
+                  BarRej[i].AddBar (y, s, clTeeColor)
+                else
+                  BarRej[i].AddNull (s) ;
+                csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+              end
+            else // Autres : Retenu et Excr�t�
+              for i := 2 to ListRej.Count - 1 do
+              begin
+                y := RejY ;
+                if y > PICO
+                then
+                  BarRej[i].AddBar (y, s, clTeeColor)
+                else
+                  BarRej[i].AddNull (s) ;
+                csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+              end ;
+            MExport.Lines.Append(csv);
+            x := p ;
+            k := j ;
+          end ;
+        end ;
+      j := PResSimulT.NbJSim + 1 ;
+      if CBRej2P.ItemIndex = 2
+      then // Globale
+        s := ' '
+      else
+        if CBRej2P.ItemIndex = 1
+        then // Stade
+          case Trunc (x) of
+            0 : s := StrGestation ;
+            1 : s := StrLactation ;
+            2 : s := StrISSF ;
+          end
+        else
+          s := Format ('%1.0f', [x]) ;
+      csv := s;
+      if CBRej3.ItemIndex < 2
+      then // Azote ou phosphore : F�cal, Urinaire et Retenu
+        for i := 0 to 2 do
+        begin
+          y := RejY ;
+          if y > PICO
+          then
+            BarRej[i].AddBar (y, s, clTeeColor)
+          else
+            BarRej[i].AddNull (s) ;
+          csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+        end
+      else // Autres : Retenu et Excr�t�
+        for i := 2 to ListRej.Count - 1 do
+        begin
+          y := RejY ;
+          if y > PICO
+          then
+            BarRej[i].AddBar (y, s, clTeeColor)
+          else
+            BarRej[i].AddNull (s) ;
+          csv := csv + ';' + FloatToStrF(y, ffFixed, 15, 15);
+        end ;
+      MExport.Lines.Append(csv);
+    end ;
+  end ;
+  if PieRej.Active
+  then
+  begin
+    Graph.View3DOptions.Orthogonal := FALSE ;
+    Graph.View3DOptions.Elevation := 315 ;
+    Graph.View3DOptions.Rotation := 360 ;
+    Graph.View3DOptions.Perspective := 0 ;
+  end
+  else
+  begin
+    Graph.View3DOptions.Orthogonal := TRUE ;
+    Graph.View3DOptions.Elevation := 345 ;
+    Graph.View3DOptions.Rotation := 345 ;
+    Graph.View3DOptions.Perspective := 15 ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFResSimulT.CBRej1Change (Sender : TObject) ;
+begin
+  case CBRej1.ItemIndex of
+    0 : // R�partition globale
+    begin
+      CBRej2D.Visible := FALSE ;
+      CBRej2P.Visible := FALSE ;
+    end ;
+    1 : // R�partition dynamique
+    begin
+      CBRej2D.Visible := TRUE ;
+      CBRej2P.Visible := FALSE ;
+    end ;
+    2 : // R�partition par p�riode
+    begin
+      CBRej2D.Visible := FALSE ;
+      CBRej2P.Visible := TRUE ;
+    end ;
+  end ;
+  CBRej3Change (nil) ;
+end ;
+
+procedure TFResSimulT.CBRej2Change (Sender : TObject) ;
+begin
+  AffGraphRej ;
+end ;
+
+procedure TFResSimulT.CBRej3Change (Sender : TObject) ;
+begin
+  if CBRej3.ItemIndex > 3
+  then // Oligo-�l�ment
+    PieRej.ValueFormat := Format ('# ##0 %s', [StrMg])
+  else // Macro-�l�ment
+    PieRej.ValueFormat := Format ('# ##0 %s', [StrG]) ;
+  CBRej4.Items.Clear ;
+  case CBRej1.ItemIndex of
+    0 : // R�partition globale
+      if CBRej3.ItemIndex > 3
+      then // Oligo-�l�ment
+      begin
+        CBRej4.Items.Add (StrMG) ;
+        CBRej4.Items.Add ('%') ;
+      end
+      else // Macro-�l�ment
+      begin
+        CBRej4.Items.Add (StrG) ;
+        CBRej4.Items.Add ('%') ;
+      end ;
+    1 : // R�partition dynamique
+      if CBRej3.ItemIndex > 3
+      then // Oligo-�l�ment
+      begin
+        CBRej4.Items.Add (Format ('%s/%s', [StrMG, StrJ])) ;
+        CBRej4.Items.Add (Format ('%s/%s %s', [StrMG, StrKg, StrAlimentUnit])) ;
+        CBRej4.Items.Add ('%') ;
+      end
+      else // Macro-�l�ment
+      begin
+        CBRej4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+        CBRej4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+        CBRej4.Items.Add ('%') ;
+      end ;
+    2 : // R�partition par p�riode
+      if CBRej3.ItemIndex > 3
+      then // Oligo-�l�ment
+      begin
+        CBRej4.Items.Add (StrMG) ;
+        CBRej4.Items.Add (Format ('%s/%s', [StrMG, StrJ])) ;
+        CBRej4.Items.Add (Format ('%s/%s %s', [StrMG, StrKg, StrAlimentUnit])) ;
+        CBRej4.Items.Add ('%') ;
+      end
+      else // Macro-�l�ment
+      begin
+        CBRej4.Items.Add (StrG) ;
+        CBRej4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+        CBRej4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+        CBRej4.Items.Add ('%') ;
+      end ;
+  end ;
+  CBRej4.ItemIndex := 0 ;
+  AffGraphRej ;
+end ;
+
+procedure TFResSimulT.CBRej4Change (Sender : TObject) ;
+begin
+  AffGraphRej ;
+end ;
+
+procedure TFResSimulT.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFError.pas
===================================================================
--- UFError.pas	(révision 0)
+++ UFError.pas	(révision 3)
@@ -0,0 +1,69 @@
+unit UFError;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons;
+
+type
+  TFError = class(TForm)
+    MErrors: TMemo;
+    LFolder: TLabel;
+    LQuestion: TLabel;
+    EFolder: TEdit;
+    BBYes: TBitBtn;
+    BBNo: TBitBtn;
+    LWarning: TLabel;
+    BBHelp: TBitBtn;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure BBHelpClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FError: TFError;
+
+implementation
+
+uses
+  Dialogs, SysUtils, gnugettext, UStrings, UInit;
+
+{$R *.dfm}
+
+procedure TFError.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+end;
+
+procedure TFError.FormShow(Sender: TObject);
+begin
+  EFolder.Text := GetCurrentDir;
+end;
+
+procedure TFError.FormClose(Sender: TObject; var Action: TCloseAction);
+const
+  LOG = 'Errors.log';
+begin
+  if ModalResult = mrYes
+  then
+  begin
+    MErrors.Lines.SaveToFile(LOG);
+    MessageDlg(Format(MsgRecordErrors, [LOG, EFolder.Text]), mtInformation, [mbOK], 0);
+    SaveData;
+  end;
+end;
+
+procedure TFError.BBHelpClick(Sender: TObject);
+begin
+  Application.HelpCommand(HELP_CONTEXT, HelpContext);
+end;
+
+end.
Index: UFAliment.pas
===================================================================
--- UFAliment.pas	(révision 0)
+++ UFAliment.pas	(révision 3)
@@ -0,0 +1,5531 @@
+unit UFAliment ;
+
+interface
+
+uses
+  Windows, Controls, Forms, Classes, StdCtrls, ComCtrls, Buttons, Grids,
+  PBNumEdit, JvEnterTab, JvStringGrid, JvExGrids, JvExControls;
+
+type
+  TFAliment = class(TForm)
+    GBAliment: TGroupBox;
+    SBAdd: TSpeedButton;
+    SBDel: TSpeedButton;
+    SBRename: TSpeedButton;
+    SBComment: TSpeedButton;
+    CBAliment: TComboBox;
+    PC: TPageControl;
+    TSElem: TTabSheet;
+    GBEnergie: TGroupBox;
+    GBEVal: TGroupBox;
+    LEVal_C: TLabel;
+    LEN: TLabel;
+    LEM: TLabel;
+    LED: TLabel;
+    LEB: TLabel;
+    LEVal_T: TLabel;
+    LCorrCUD: TLabel;
+    RBEN: TRadioButton;
+    RBEM: TRadioButton;
+    RBED: TRadioButton;
+    PBEB_T: TPBNumEdit;
+    PBEB_C: TPBNumEdit;
+    CBCorrCUD: TCheckBox;
+    PBED_C: TPBNumEdit;
+    PBED_T: TPBNumEdit;
+    PBEM_C: TPBNumEdit;
+    PBEM_T: TPBNumEdit;
+    PBEN_C: TPBNumEdit;
+    PBEN_T: TPBNumEdit;
+    BGERap: TGroupBox;
+    LEDsEB: TLabel;
+    LENsEM: TLabel;
+    LERap_C: TLabel;
+    LERap_T: TLabel;
+    PBEDsEB_C: TPBNumEdit;
+    PBENsEM_C: TPBNumEdit;
+    PBEDsEB_T: TPBNumEdit;
+    PBENsEM_T: TPBNumEdit;
+    GBFecale: TGroupBox;
+    LMS: TLabel;
+    LMM: TLabel;
+    LMO: TLabel;
+    LLip: TLabel;
+    LMAT: TLabel;
+    LAmidon: TLabel;
+    LSucres: TLabel;
+    GBdFecale: TGroupBox;
+    LdFecale_C: TLabel;
+    LdFecale_T: TLabel;
+    PBdMO_C: TPBNumEdit;
+    PBdLip_C: TPBNumEdit;
+    PBdMAT_C: TPBNumEdit;
+    PBdSucres_C: TPBNumEdit;
+    PBdLip_T: TPBNumEdit;
+    PBdMAT_T: TPBNumEdit;
+    PBdAmidon_T: TPBNumEdit;
+    PBdSucres_T: TPBNumEdit;
+    PBdMO_T: TPBNumEdit;
+    PBdAmidon_C: TPBNumEdit;
+    GBTFecale: TGroupBox;
+    PBTMS: TPBNumEdit;
+    PBTMM: TPBNumEdit;
+    PBTMO: TPBNumEdit;
+    PBTLip: TPBNumEdit;
+    PBTMAT: TPBNumEdit;
+    PBTAmidon: TPBNumEdit;
+    PBTSucres: TPBNumEdit;
+    TSAA: TTabSheet;
+    GBAA: TGroupBox;
+    LMAT2: TLabel;
+    LLys: TLabel;
+    LMet: TLabel;
+    LCys: TLabel;
+    LTrp: TLabel;
+    LThr: TLabel;
+    LPhe: TLabel;
+    LTyr: TLabel;
+    LLeu: TLabel;
+    LIle: TLabel;
+    LVal: TLabel;
+    LHis: TLabel;
+    LArg: TLabel;
+    GBTAA: TGroupBox;
+    PBTVal: TPBNumEdit;
+    PBTMAT2: TPBNumEdit;
+    PBTLys: TPBNumEdit;
+    PBTMet: TPBNumEdit;
+    PBTCys: TPBNumEdit;
+    PBTTrp: TPBNumEdit;
+    PBTThr: TPBNumEdit;
+    PBTPhe: TPBNumEdit;
+    PBTTyr: TPBNumEdit;
+    PBTLeu: TPBNumEdit;
+    PBTIle: TPBNumEdit;
+    PBTArg: TPBNumEdit;
+    PBTHis: TPBNumEdit;
+    CBAAsLys: TCheckBox;
+    GBdAA: TGroupBox;
+    LdAAStd: TLabel;
+    LdAAApp: TLabel;
+    PBdArgStd: TPBNumEdit;
+    PBdMATStd: TPBNumEdit;
+    PBdLysStd: TPBNumEdit;
+    PBdMetStd: TPBNumEdit;
+    PBdCysStd: TPBNumEdit;
+    PBdTrpStd: TPBNumEdit;
+    PBdThrStd: TPBNumEdit;
+    PBdPheStd: TPBNumEdit;
+    PBdTyrStd: TPBNumEdit;
+    PBdLeuStd: TPBNumEdit;
+    PBdIleStd: TPBNumEdit;
+    PBdValStd: TPBNumEdit;
+    PBdHisStd: TPBNumEdit;
+    PBdMATApp: TPBNumEdit;
+    PBdLysApp: TPBNumEdit;
+    PBdMetApp: TPBNumEdit;
+    PBdCysApp: TPBNumEdit;
+    PBdTrpApp: TPBNumEdit;
+    PBdThrApp: TPBNumEdit;
+    PBdPheApp: TPBNumEdit;
+    PBdTyrApp: TPBNumEdit;
+    PBdLeuApp: TPBNumEdit;
+    PBdIleApp: TPBNumEdit;
+    PBdValApp: TPBNumEdit;
+    PBdHisApp: TPBNumEdit;
+    PBdArgApp: TPBNumEdit;
+    GBProt: TGroupBox;
+    LProtStd: TLabel;
+    LProtTot: TLabel;
+    PBProtTrpStd: TPBNumEdit;
+    PBProtLysStd: TPBNumEdit;
+    PBProtMetStd: TPBNumEdit;
+    PBProtCysStd: TPBNumEdit;
+    PBProtThrStd: TPBNumEdit;
+    PBProtPheStd: TPBNumEdit;
+    PBProtTyrStd: TPBNumEdit;
+    PBProtLeuStd: TPBNumEdit;
+    PBProtIleStd: TPBNumEdit;
+    PBProtValStd: TPBNumEdit;
+    PBProtHisStd: TPBNumEdit;
+    PBProtArgStd: TPBNumEdit;
+    PBProtLysTot: TPBNumEdit;
+    PBProtMetTot: TPBNumEdit;
+    PBProtCysTot: TPBNumEdit;
+    PBProtTrpTot: TPBNumEdit;
+    PBProtThrTot: TPBNumEdit;
+    PBProtPheTot: TPBNumEdit;
+    PBProtTyrTot: TPBNumEdit;
+    PBProtLeuTot: TPBNumEdit;
+    PBProtIleTot: TPBNumEdit;
+    PBProtValTot: TPBNumEdit;
+    PBProtHisTot: TPBNumEdit;
+    PBProtArgTot: TPBNumEdit;
+    GBCompAA: TGroupBox;
+    GBMetCys: TGroupBox;
+    LTMetCys: TLabel;
+    LdMetCys: TLabel;
+    LProtMetCys: TLabel;
+    PBTMetCys: TPBNumEdit;
+    PBdMetCysStd: TPBNumEdit;
+    PBProtMetCysStd: TPBNumEdit;
+    GBTrp: TGroupBox;
+    LTrpTot: TLabel;
+    LTrpStd: TLabel;
+    PBTrpTot: TPBNumEdit;
+    PBTrpStd: TPBNumEdit;
+    GBPheTyr: TGroupBox;
+    LTPheTyr: TLabel;
+    LdPheTyr: TLabel;
+    LProtPheTyr: TLabel;
+    PBTPheTyr: TPBNumEdit;
+    PBdPheTyrStd: TPBNumEdit;
+    PBProtPheTyrStd: TPBNumEdit;
+    GBEAA: TGroupBox;
+    LEAATot: TLabel;
+    LEAAStd: TLabel;
+    PBEAATot: TPBNumEdit;
+    PBEAAStd: TPBNumEdit;
+    TSAG: TTabSheet;
+    LAG: TLabel;
+    LLip2: TLabel;
+    LSatur: TLabel;
+    LMono: TLabel;
+    LPoly: TLabel;
+    LO6sO3: TLabel;
+    GBTAG: TGroupBox;
+    LC6C8C10: TLabel;
+    LC24: TLabel;
+    LC22: TLabel;
+    LC20: TLabel;
+    LC18: TLabel;
+    LC14: TLabel;
+    LC16: TLabel;
+    LC12: TLabel;
+    LCtot: TLabel;
+    GBAGtot: TGroupBox;
+    PBC24_tot: TPBNumEdit;
+    PBC22_tot: TPBNumEdit;
+    PBC20_tot: TPBNumEdit;
+    PBC18_tot: TPBNumEdit;
+    PBC16_tot: TPBNumEdit;
+    PBC14_tot: TPBNumEdit;
+    PBC12_tot: TPBNumEdit;
+    PBC6C8C10_tot: TPBNumEdit;
+    PBCtot_tot: TPBNumEdit;
+    GBAG0: TGroupBox;
+    PBC6C8C10_0: TPBNumEdit;
+    PBC12_0: TPBNumEdit;
+    PBC14_0: TPBNumEdit;
+    PBC16_0: TPBNumEdit;
+    PBC18_0: TPBNumEdit;
+    PBC20_0: TPBNumEdit;
+    PBC22_0: TPBNumEdit;
+    PBC24_0: TPBNumEdit;
+    PBCtot_0: TPBNumEdit;
+    GBAG1: TGroupBox;
+    PBC22_1: TPBNumEdit;
+    PBC16_1: TPBNumEdit;
+    PBC18_1: TPBNumEdit;
+    PBC20_1: TPBNumEdit;
+    PBCtot_1: TPBNumEdit;
+    GBAG2: TGroupBox;
+    PBC18_2: TPBNumEdit;
+    PBCtot_2: TPBNumEdit;
+    GBAG3: TGroupBox;
+    PBC18_3: TPBNumEdit;
+    PBCtot_3: TPBNumEdit;
+    GBAG4: TGroupBox;
+    PBC18_4: TPBNumEdit;
+    PBC20_4: TPBNumEdit;
+    PBCtot_4: TPBNumEdit;
+    GBAG5: TGroupBox;
+    PBC20_5: TPBNumEdit;
+    PBC22_5: TPBNumEdit;
+    PBCtot_5: TPBNumEdit;
+    GBAG6: TGroupBox;
+    PBC22_6: TPBNumEdit;
+    PBCtot_6: TPBNumEdit;
+    PBAG: TPBNumEdit;
+    PBLip2: TPBNumEdit;
+    PBSatur: TPBNumEdit;
+    PBMono: TPBNumEdit;
+    PBPoly: TPBNumEdit;
+    PBO6sO3: TPBNumEdit;
+    TSMineraux: TTabSheet;
+    LBilanCA: TLabel;
+    LBilanE: TLabel;
+    GBP: TGroupBox;
+    LPdigG: TLabel;
+    LPhytase: TLabel;
+    LActPhytE: TLabel;
+    LCasP: TLabel;
+    LPtot: TLabel;
+    PBPhytase: TPBNumEdit;
+    PBPdigG: TPBNumEdit;
+    PBActPhytE: TPBNumEdit;
+    PBCasP: TPBNumEdit;
+    PBPtot: TPBNumEdit;
+    GBMacro: TGroupBox;
+    LCa: TLabel;
+    LP: TLabel;
+    LMg: TLabel;
+    LCl: TLabel;
+    LK: TLabel;
+    LNa: TLabel;
+    LS: TLabel;
+    GBTMacro: TGroupBox;
+    PBCa: TPBNumEdit;
+    PBP: TPBNumEdit;
+    PBMg: TPBNumEdit;
+    PBCl: TPBNumEdit;
+    PBK: TPBNumEdit;
+    PBNa: TPBNumEdit;
+    PBS: TPBNumEdit;
+    GBOligo: TGroupBox;
+    LZn: TLabel;
+    LCu: TLabel;
+    LFe: TLabel;
+    LMn: TLabel;
+    LCo: TLabel;
+    LSe: TLabel;
+    LI: TLabel;
+    LMb: TLabel;
+    GBTOligo: TGroupBox;
+    PBCu: TPBNumEdit;
+    PBFe: TPBNumEdit;
+    PBMn: TPBNumEdit;
+    PBZn: TPBNumEdit;
+    PBSe: TPBNumEdit;
+    PBI: TPBNumEdit;
+    PBMb: TPBNumEdit;
+    PBCo: TPBNumEdit;
+    PBBilanCA: TPBNumEdit;
+    PBBilanE: TPBNumEdit;
+    TSFibres: TTabSheet;
+    GBFibres: TGroupBox;
+    LNDF: TLabel;
+    LCB: TLabel;
+    LParois: TLabel;
+    LADL: TLabel;
+    LADF: TLabel;
+    PBParois: TPBNumEdit;
+    PBADL: TPBNumEdit;
+    PBADF: TPBNumEdit;
+    PBNDF: TPBNumEdit;
+    PBCB: TPBNumEdit;
+    TSMatiere: TTabSheet;
+    CBAAsMAT: TCheckBox;
+    LBGauche: TListBox;
+    LBDroite: TListBox;
+    CBType: TComboBox;
+    LType: TLabel;
+    SBPlus: TSpeedButton;
+    SBMoins: TSpeedButton;
+    LMSG: TLabel;
+    LMSD: TLabel;
+    PBMSG: TPBNumEdit;
+    PBMSD: TPBNumEdit;
+    PBQte: TPBNumEdit;
+    PBTotal: TPBNumEdit;
+    LTotal: TLabel;
+    LQte: TLabel;
+    BBCalcul: TBitBtn;
+    GBGauche: TGroupBox;
+    GBDroite: TGroupBox;
+    BBGraph: TBitBtn;
+    SBHaut: TSpeedButton;
+    SBBas: TSpeedButton;
+    LBRap: TListBox;
+    LBDig: TListBox;
+    LBdCompo: TListBox;
+    LBdAA: TListBox;
+    LBTCompo: TListBox;
+    LBTAA: TListBox;
+    LBTAG: TListBox;
+    LBTMacro: TListBox;
+    LBTOligo: TListBox;
+    LBTFibres: TListBox;
+    LMATG: TLabel;
+    PBMATG: TPBNumEdit;
+    LdLysG: TLabel;
+    PBdLysG: TPBNumEdit;
+    LEDG: TLabel;
+    PBEDG: TPBNumEdit;
+    LEMG: TLabel;
+    PBEMG: TPBNumEdit;
+    LENG: TLabel;
+    PBENG: TPBNumEdit;
+    LPdigF: TLabel;
+    PBPdigF: TPBNumEdit;
+    LActPhytM: TLabel;
+    PBActPhytM: TPBNumEdit;
+    LActPhyt: TLabel;
+    LPdig: TLabel;
+    SBSave: TSpeedButton;
+    SBPrint: TSpeedButton;
+    PBdMetCysApp: TPBNumEdit;
+    PBProtMetCysTot: TPBNumEdit;
+    PBdPheTyrApp: TPBNumEdit;
+    PBProtPheTyrTot: TPBNumEdit;
+    JvEnterAsTab: TJvEnterAsTab;
+    LResidu: TLabel;
+    PBTResidu: TPBNumEdit;
+    PBdResidu_C: TPBNumEdit;
+    PBdResidu_T: TPBNumEdit;
+    SBReplace: TSpeedButton;
+    SBSortQte: TSpeedButton;
+    SBSortNom: TSpeedButton;
+    JvSGSort: TJvStringGrid;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormDeactivate(Sender: TObject);
+    procedure CBAlimentChange(Sender: TObject);
+    procedure SBAddClick(Sender: TObject);
+    procedure SBDelClick(Sender: TObject);
+    procedure SBRenameClick(Sender: TObject);
+    procedure SBCommentClick(Sender: TObject);
+    procedure PBTMSChange(Sender: TObject);
+    procedure PBTMSExit(Sender: TObject);
+    procedure PBTMMChange(Sender: TObject);
+    procedure PBTMMExit(Sender: TObject);
+    procedure PBTLipChange(Sender: TObject);
+    procedure PBTMATChange(Sender: TObject);
+    procedure PBTMATExit(Sender: TObject);
+    procedure PBTAmidonChange(Sender: TObject);
+    procedure PBTSucresChange(Sender: TObject);
+    procedure PBdMO_CChange(Sender: TObject);
+    procedure PBdLip_CChange(Sender: TObject);
+    procedure PBdMAT_CChange(Sender: TObject);
+    procedure PBdMO_TChange(Sender: TObject);
+    procedure PBdLip_TChange(Sender: TObject);
+    procedure PBdMAT_TChange(Sender: TObject);
+    procedure CBCorrCUDClick(Sender: TObject);
+    procedure LCorrCUDClick(Sender: TObject);
+    procedure RBEDClick(Sender: TObject);
+    procedure LEDClick(Sender: TObject);
+    procedure RBEMClick(Sender: TObject);
+    procedure LEMClick(Sender: TObject);
+    procedure RBENClick(Sender: TObject);
+    procedure LENClick(Sender: TObject);
+    procedure PBED_CChange(Sender: TObject);
+    procedure PBED_CExit(Sender: TObject);
+    procedure PBEM_CChange(Sender: TObject);
+    procedure PBEM_CExit(Sender: TObject);
+    procedure PBEN_CChange(Sender: TObject);
+    procedure PBEN_CExit(Sender: TObject);
+    procedure PBED_TChange(Sender: TObject);
+    procedure PBED_TExit(Sender: TObject);
+    procedure PBEM_TChange(Sender: TObject);
+    procedure PBEM_TExit(Sender: TObject);
+    procedure PBEN_TChange(Sender: TObject);
+    procedure PBEN_TExit(Sender: TObject);
+    procedure PBTLysChange(Sender: TObject);
+    procedure PBTLysExit(Sender: TObject);
+    procedure PBTMetChange(Sender: TObject);
+    procedure PBTCysChange(Sender: TObject);
+    procedure PBTTrpChange(Sender: TObject);
+    procedure PBTThrChange(Sender: TObject);
+    procedure PBTPheChange(Sender: TObject);
+    procedure PBTTyrChange(Sender: TObject);
+    procedure PBTLeuChange(Sender: TObject);
+    procedure PBTIleChange(Sender: TObject);
+    procedure PBTValChange(Sender: TObject);
+    procedure PBTHisChange(Sender: TObject);
+    procedure PBTArgChange(Sender: TObject);
+    procedure CBAAsLysClick(Sender: TObject);
+    procedure PBdMATStdChange(Sender: TObject);
+    procedure PBdLysStdChange(Sender: TObject);
+    procedure PBdMetStdChange(Sender: TObject);
+    procedure PBdCysStdChange(Sender: TObject);
+    procedure PBdTrpStdChange(Sender: TObject);
+    procedure PBdThrStdChange(Sender: TObject);
+    procedure PBdPheStdChange(Sender: TObject);
+    procedure PBdTyrStdChange(Sender: TObject);
+    procedure PBdLeuStdChange(Sender: TObject);
+    procedure PBdIleStdChange(Sender: TObject);
+    procedure PBdValStdChange(Sender: TObject);
+    procedure PBdHisStdChange(Sender: TObject);
+    procedure PBdArgStdChange(Sender: TObject);
+    procedure PBC6C8C10_0Change(Sender: TObject);
+    procedure PBC12_0Change(Sender: TObject);
+    procedure PBC14_0Change(Sender: TObject);
+    procedure PBC16_0Change(Sender: TObject);
+    procedure PBC16_1Change(Sender: TObject);
+    procedure PBC18_0Change(Sender: TObject);
+    procedure PBC18_1Change(Sender: TObject);
+    procedure PBC18_2Change(Sender: TObject);
+    procedure PBC18_3Change(Sender: TObject);
+    procedure PBC18_4Change(Sender: TObject);
+    procedure PBC20_0Change(Sender: TObject);
+    procedure PBC20_1Change(Sender: TObject);
+    procedure PBC20_4Change(Sender: TObject);
+    procedure PBC20_5Change(Sender: TObject);
+    procedure PBC22_0Change(Sender: TObject);
+    procedure PBC22_1Change(Sender: TObject);
+    procedure PBC22_5Change(Sender: TObject);
+    procedure PBC22_6Change(Sender: TObject);
+    procedure PBC24_0Change(Sender: TObject);
+    procedure PBAGChange(Sender: TObject);
+    procedure PBCaChange(Sender: TObject);
+    procedure PBPChange(Sender: TObject);
+    procedure PBNaChange(Sender: TObject);
+    procedure PBKChange(Sender: TObject);
+    procedure PBMgChange(Sender: TObject);
+    procedure PBClChange(Sender: TObject);
+    procedure PBSChange(Sender: TObject);
+    procedure PBCuChange(Sender: TObject);
+    procedure PBZnChange(Sender: TObject);
+    procedure PBMnChange(Sender: TObject);
+    procedure PBFeChange(Sender: TObject);
+    procedure PBSeChange(Sender: TObject);
+    procedure PBCoChange(Sender: TObject);
+    procedure PBMbChange(Sender: TObject);
+    procedure PBIChange(Sender: TObject);
+    procedure PBPdigGChange(Sender: TObject);
+    procedure PBPhytaseChange(Sender: TObject);
+    procedure PBActPhytEChange(Sender: TObject);
+    procedure PBCBChange(Sender: TObject);
+    procedure PBNDFChange(Sender: TObject);
+    procedure PBADFChange(Sender: TObject);
+    procedure PBADLChange(Sender: TObject);
+    procedure PBParoisChange(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure SBPlusClick(Sender: TObject);
+    procedure SBMoinsClick(Sender: TObject);
+    procedure LBDroiteDblClick(Sender: TObject);
+    procedure LBGaucheDblClick(Sender: TObject);
+    procedure CBTypeChange(Sender: TObject);
+    procedure LBDroiteDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure PBMSDChange(Sender: TObject);
+    procedure PBQteChange(Sender: TObject);
+    procedure PBTotalChange(Sender: TObject);
+    procedure LBGaucheClick(Sender: TObject);
+    procedure LBDroiteClick(Sender: TObject);
+    procedure BBCalculClick(Sender: TObject);
+    procedure BBGraphClick(Sender: TObject);
+    procedure SBHautClick(Sender: TObject);
+    procedure SBBasClick(Sender: TObject);
+    procedure PBQteKeyPress(Sender: TObject; var Key: Char);
+    procedure PBPdigFChange(Sender: TObject);
+    procedure PBActPhytMChange(Sender: TObject);
+    procedure SBSaveClick(Sender: TObject);
+    procedure SBPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure PCChange(Sender: TObject);
+    procedure SBReplaceClick(Sender: TObject);
+    procedure SBSortQteClick(Sender: TObject);
+    procedure SBSortNomClick(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified : boolean ;
+    RapMS : double ;
+    procedure Save ;
+    procedure CalculTMO ;
+    procedure CalculResidu ;
+    procedure CalculEnergie ;
+    procedure CalculDigEDCrois ;
+    procedure CalculDigEMCrois ;
+    procedure CalculDigENCrois ;
+    procedure CalculDigEDTruie ;
+    procedure CalculDigEMTruie ;
+    procedure CalculDigENTruie ;
+    procedure CalculAA ;
+    procedure CalculAG ;
+    procedure CalculMineraux ;
+    procedure AffichTFecale ;
+    procedure AffichdFecale ;
+    procedure AffichResidu ;
+    procedure AffichEnergie ;
+    procedure AffichTAA ;
+    procedure AffichdAA ;
+    procedure AffichTAG ;
+    procedure AffichTMineraux ;
+    procedure AffichTFibres ;
+    procedure VerifyMP ;
+  public
+    { D�clarations publiques }
+    IdxAliment : integer ;
+    procedure AjustCaption ;
+    procedure AjustDecimals ;
+    procedure AjustEnabled ;
+  end;
+
+var
+  FAliment: TFAliment;
+
+implementation
+
+uses
+  Dialogs, Graphics, SysUtils, gnugettext, UVariables, UStrings, UInit, UUtil,
+  UFindRec, UFWarning, UFCommentAli, UFGraphAli, UFRapportAli;
+
+{$R *.dfm}
+
+{ TFAliment }
+
+procedure TFAliment.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 744 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 463 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  CBType.ItemIndex := 0 ;
+end;
+
+procedure TFAliment.FormShow (Sender : TObject) ;
+begin
+  Modified := FALSE ;
+  AjustCaption ;
+  AjustDecimals ;
+//  CBTypeChange (nil) ;
+  StringsAliment (CBAliment.Items, 0, TRUE) ;
+  SBAdd.Enabled := IsComplete or (ListAliment.Count < 10) ;
+  SBSave.Enabled := IsComplete or IsEducation ;
+  IdxAliment := -1 ;
+//  CBAlimentChange (nil) ;
+end ;
+
+procedure TFAliment.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+begin
+  if Modified then Save ;
+  Action := caFree ;
+  NumWinAliment := -1 ;
+end ;
+
+procedure TFAliment.FormActivate (Sender : TObject) ;
+var
+  i : integer ;
+begin
+//  if IdxAliment <> -1
+//  then
+//    PAliment := ListAliment[IdxAliment] ;
+  CBAlimentChange (nil) ;
+  CBTypeChange (nil) ;
+
+  for i := 0 to PC.PageCount - 1 do
+    PC.Pages[i].Enabled := IsComplete or IsEducation or IsEvaluation ;
+end ;
+
+procedure TFAliment.FormDeactivate (Sender : TObject) ;
+begin
+  if Modified then Save ;
+end ;
+
+procedure TFAliment.Save ;
+var
+  s : string ;
+begin
+  Modified := FALSE ;
+  if IsComplete or IsEducation
+  then
+    if MessageDlg (Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      SaveAliment ;
+      if not AlimentValid (PAliment)
+      then
+        MessageDlg(Format (MsgInvalidData, [Caption, PAliment.Nom]), mtWarning, [mbOK], 0) ;
+    end
+    else
+    begin
+      LoadAliment ;
+      s := CBAliment.Text ;
+      StringsAliment (CBAliment.Items, 0, TRUE) ;
+      if FindIdxAliment (s) = -1
+      then
+      begin
+        IdxAliment := -1 ;
+        CBAlimentChange (nil) ;
+      end
+      else
+        CBAliment.ItemIndex := CBAliment.Items.IndexOf (s) ;
+    end ;
+end ;
+
+// Adaptation des libell�s par rapport � la configuration
+procedure TFAliment.AjustCaption;
+begin
+  Hint := Format(_('Chemical composition (%s)'), [LBRap.Items[ConfRap]]);
+  GBTFecale.Caption := Format('%s (%s)', [_('Content'), LBTCompo.Items[ConfTCompo]]);
+  GBdFecale.Caption := Format('%s (%s)', [LBDig.Items[ConfDig], LBdCompo.Items[ConfdCompo]]);
+  GBTAA.Caption := Format('%s (%s)', [_('Content'), LBTAA.Items[ConfTAA]]);
+  GBdAA.Caption := Format('%s (%s)', [LBDig.Items[ConfDig], LBdAA.Items[ConfdAA]]);
+  GBTAG.Caption := Format('%s (%s)', [_('Content'), LBTAG.Items[ConfTAG]]);
+  GBTMacro.Caption := Format('%s (%s)', [_('Content'), LBTMacro.Items[ConfTMacro]]);
+  GBTOligo.Caption := Format('%s (%s)', [_('Content'), LBTOligo.Items[ConfTOligo]]);
+  LPtot.Caption := Format('%s (%s)', [_('Total phosphorus'), LBTMacro.Items[ConfTMacro]]);
+  LPdig.Caption := Format('%s (%s)', [_('Digestible phosphorus'), LBTMacro.Items[ConfTMacro]]);
+  GBFibres.Caption := Format('%s (%s)', [_('Content'), LBTFibres.Items[ConfTFibres]]);
+  if ConfDig = 0
+  then // CUD
+  begin
+    LdMetCys.Caption := _('Std. digestibility');
+    LdPheTyr.Caption := _('Std. digestibility');
+  end
+  else // Teneur digestible
+  begin
+    LdMetCys.Caption := _('Std. dig. content');
+    LdPheTyr.Caption := _('Std. dig. content');
+  end;
+end;
+
+// Ajustement du nombre de d�cimales en fonction de la configuration
+procedure TFAliment.AjustDecimals;
+begin
+  Update := TRUE;
+  // Composition �l�mentaire
+  if ConfTCompo = 0
+  then // g/kg
+    PBTMS.Decimals := 1
+  else // %
+    PBTMS.Decimals := 2;
+  PBTMM.Decimals := PBTMS.Decimals;
+  PBTMO.Decimals := PBTMS.Decimals;
+  PBTLip.Decimals := PBTMS.Decimals;
+  PBTMAT.Decimals := PBTMS.Decimals;
+  PBTAmidon.Decimals := PBTMS.Decimals;
+  PBTSucres.Decimals := PBTMS.Decimals;
+  PBTResidu.Decimals := PBTMS.Decimals;
+  if (ConfDig = 0)
+  then // CUD
+    PBdMO_C.Decimals := 1
+  else // Teneur digestible
+    if ConfdCompo = 0
+    then // g/kg
+      PBdMO_C.Decimals := 1
+    else // %
+      PBdMO_C.Decimals := 2;
+  PBdLip_C.Decimals := PBdMO_C.Decimals;
+  PBdMAT_C.Decimals := PBdMO_C.Decimals;
+  PBdAmidon_C.Decimals := PBdMO_C.Decimals;
+  PBdSucres_C.Decimals := PBdMO_C.Decimals;
+  PBdResidu_C.Decimals := PBdMO_C.Decimals;
+  PBdMO_T.Decimals := PBdMO_C.Decimals;
+  PBdLip_T.Decimals := PBdMO_C.Decimals;
+  PBdMAT_T.Decimals := PBdMO_C.Decimals;
+  PBdAmidon_T.Decimals := PBdMO_C.Decimals;
+  PBdSucres_T.Decimals := PBdMO_C.Decimals;
+  PBdResidu_T.Decimals := PBdMO_C.Decimals;
+  // Acides amin�s
+  if ConfTAA = 1
+  then // %
+    PBTMAT2.Decimals := 3
+  else // %MAT ou g/kg
+    PBTMAT2.Decimals := 2;
+  PBTLys.Decimals := PBTMAT2.Decimals;
+  PBTMet.Decimals := PBTMAT2.Decimals;
+  PBTCys.Decimals := PBTMAT2.Decimals;
+  PBTTrp.Decimals := PBTMAT2.Decimals;
+  PBTThr.Decimals := PBTMAT2.Decimals;
+  PBTPhe.Decimals := PBTMAT2.Decimals;
+  PBTTyr.Decimals := PBTMAT2.Decimals;
+  PBTLeu.Decimals := PBTMAT2.Decimals;
+  PBTIle.Decimals := PBTMAT2.Decimals;
+  PBTVal.Decimals := PBTMAT2.Decimals;
+  PBTHis.Decimals := PBTMAT2.Decimals;
+  PBTArg.Decimals := PBTMAT2.Decimals;
+  PBTMetCys.Decimals := PBTMAT2.Decimals;
+  PBTPheTyr.Decimals := PBTMAT2.Decimals;
+  if ConfDig = 0
+  then // CUD
+    PBdMATStd.Decimals := 1
+  else // Teneur digestible
+    if ConfdAA = 0
+    then // g/kg
+      PBdMATStd.Decimals := 2
+    else // %
+      PBdMATStd.Decimals := 3;
+  PBdLysStd.Decimals := PBdMATStd.Decimals;
+  PBdMetStd.Decimals := PBdMATStd.Decimals;
+  PBdCysStd.Decimals := PBdMATStd.Decimals;
+  PBdTrpStd.Decimals := PBdMATStd.Decimals;
+  PBdThrStd.Decimals := PBdMATStd.Decimals;
+  PBdPheStd.Decimals := PBdMATStd.Decimals;
+  PBdTyrStd.Decimals := PBdMATStd.Decimals;
+  PBdLeuStd.Decimals := PBdMATStd.Decimals;
+  PBdIleStd.Decimals := PBdMATStd.Decimals;
+  PBdValStd.Decimals := PBdMATStd.Decimals;
+  PBdHisStd.Decimals := PBdMATStd.Decimals;
+  PBdArgStd.Decimals := PBdMATStd.Decimals;
+  PBdMATApp.Decimals := PBdMATStd.Decimals;
+  PBdLysApp.Decimals := PBdMATStd.Decimals;
+  PBdMetApp.Decimals := PBdMATStd.Decimals;
+  PBdCysApp.Decimals := PBdMATStd.Decimals;
+  PBdTrpApp.Decimals := PBdMATStd.Decimals;
+  PBdThrApp.Decimals := PBdMATStd.Decimals;
+  PBdPheApp.Decimals := PBdMATStd.Decimals;
+  PBdTyrApp.Decimals := PBdMATStd.Decimals;
+  PBdLeuApp.Decimals := PBdMATStd.Decimals;
+  PBdIleApp.Decimals := PBdMATStd.Decimals;
+  PBdValApp.Decimals := PBdMATStd.Decimals;
+  PBdHisApp.Decimals := PBdMATStd.Decimals;
+  PBdArgApp.Decimals := PBdMATStd.Decimals;
+  PBdMetCysStd.Decimals := PBdMATStd.Decimals;
+  PBdMetCysApp.Decimals := PBdMATStd.Decimals;
+  PBdPheTyrStd.Decimals := PBdMATStd.Decimals;
+  PBdPheTyrApp.Decimals := PBdMATStd.Decimals;
+  // Acides gras
+  case ConfTAG of
+    0: // g/kg
+      PBC6C8C10_0.Decimals := 2;
+    1: // %
+      PBC6C8C10_0.Decimals := 3;
+    else // % acides gras
+      PBC6C8C10_0.Decimals := 1;
+  end;
+  PBC12_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC14_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC16_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC16_1.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_1.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_2.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_3.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_4.Decimals := PBC6C8C10_0.Decimals;
+  PBC20_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC20_1.Decimals := PBC6C8C10_0.Decimals;
+  PBC20_4.Decimals := PBC6C8C10_0.Decimals;
+  PBC20_5.Decimals := PBC6C8C10_0.Decimals;
+  PBC22_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC22_1.Decimals := PBC6C8C10_0.Decimals;
+  PBC22_5.Decimals := PBC6C8C10_0.Decimals;
+  PBC22_6.Decimals := PBC6C8C10_0.Decimals;
+  PBC24_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC6C8C10_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC12_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC14_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC16_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC20_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC22_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC24_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_0.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_1.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_2.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_3.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_4.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_5.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_6.Decimals := PBC6C8C10_0.Decimals;
+  // Min�raux
+  if ConfTMacro = 0
+  then // g/kg
+    PBCa.Decimals := 2
+  else // %
+    PBCa.Decimals := 3;
+  PBP.Decimals := PBCa.Decimals;
+  PBNa.Decimals := PBCa.Decimals;
+  PBK.Decimals := PBCa.Decimals;
+  PBMg.Decimals := PBCa.Decimals;
+  PBCl.Decimals := PBCa.Decimals;
+  PBS.Decimals := PBCa.Decimals;
+  if ConfTOligo = 0
+  then // mg/kg
+    PBCu.Decimals := 2
+  else // %
+    PBCu.Decimals := 6;
+  PBZn.Decimals := PBCu.Decimals;
+  PBMn.Decimals := PBCu.Decimals;
+  PBFe.Decimals := PBCu.Decimals;
+  PBSe.Decimals := PBCu.Decimals;
+  PBCo.Decimals := PBCu.Decimals;
+  PBMb.Decimals := PBCu.Decimals;
+  PBI.Decimals := PBCu.Decimals;
+  PBPtot.Decimals := PBCa.Decimals;
+  PBPdigG.Decimals := PBCa.Decimals;
+  PBPdigF.Decimals := PBCa.Decimals;
+  // Fibres
+  if ConfTFibres = 0
+  then // g/kg
+    PBCB.Decimals := 1
+  else // %
+    PBCB.Decimals := 2;
+  PBNDF.Decimals := PBCB.Decimals;
+  PBADF.Decimals := PBCB.Decimals;
+  PBADL.Decimals := PBCB.Decimals;
+  PBParois.Decimals := PBCB.Decimals;
+  Update := FALSE;
+end;
+
+// Activation (ou non) des champs de saisie
+procedure TFAliment.AjustEnabled;
+begin
+  if IdxAliment = -1
+  then
+    SBDel.Enabled := FALSE
+  else
+    SBDel.Enabled := TRUE ;
+  SBRename.Enabled := SBDel.Enabled ;
+  SBComment.Enabled := SBDel.Enabled ;
+  SBSave.Enabled := SBDel.Enabled ;
+  SBPrint.Enabled := SBDel.Enabled ;
+  if PC.Visible
+  then
+  begin
+    // Composition �l�mentaire
+    if PAliment.CC.MS = 0
+    then
+      PBTMM.Enabled := FALSE
+    else
+      PBTMM.Enabled := TRUE ;
+    PBTLip.Enabled := PBTMM.Enabled ;
+    PBTMAT.Enabled := PBTMM.Enabled ;
+    PBTAmidon.Enabled := PBTMM.Enabled ;
+    PBTSucres.Enabled := PBTMM.Enabled ;
+    PBdMO_C.Enabled := PBTMM.Enabled ;
+    PBdLip_C.Enabled := PBTMM.Enabled ;
+    PBdMAT_C.Enabled := PBTMM.Enabled ;
+    PBdMO_T.Enabled := PBTMM.Enabled ;
+    PBdLip_T.Enabled := PBTMM.Enabled ;
+    PBdMAT_T.Enabled := PBTMM.Enabled ;
+    CBAAsMAT.Enabled := PBTMM.Enabled ;
+    CBCorrCUD.Enabled := PBTMM.Enabled ;
+    // Acides amin�s
+    PBTLys.Enabled := PBTMM.Enabled ;
+    PBTMet.Enabled := PBTMM.Enabled and not CBAAsLys.Checked ;
+    PBTCys.Enabled := PBTMet.Enabled ;
+    PBTTrp.Enabled := PBTMet.Enabled ;
+    PBTThr.Enabled := PBTMet.Enabled ;
+    PBTPhe.Enabled := PBTMet.Enabled ;
+    PBTTyr.Enabled := PBTMet.Enabled ;
+    PBTLeu.Enabled := PBTMet.Enabled ;
+    PBTIle.Enabled := PBTMet.Enabled ;
+    PBTVal.Enabled := PBTMet.Enabled ;
+    PBTHis.Enabled := PBTMet.Enabled ;
+    PBTArg.Enabled := PBTMet.Enabled ;
+    PBdMATStd.Enabled := PBTMM.Enabled ;
+    PBdLysStd.Enabled := PBTMM.Enabled ;
+    PBdMetStd.Enabled := PBTMM.Enabled ;
+    PBdCysStd.Enabled := PBTMM.Enabled ;
+    PBdTrpStd.Enabled := PBTMM.Enabled ;
+    PBdThrStd.Enabled := PBTMM.Enabled ;
+    PBdPheStd.Enabled := PBTMM.Enabled ;
+    PBdTyrStd.Enabled := PBTMM.Enabled ;
+    PBdLeuStd.Enabled := PBTMM.Enabled ;
+    PBdIleStd.Enabled := PBTMM.Enabled ;
+    PBdValStd.Enabled := PBTMM.Enabled ;
+    PBdHisStd.Enabled := PBTMM.Enabled ;
+    PBdArgStd.Enabled := PBTMM.Enabled ;
+    CBAAsLys.Enabled := PBTMM.Enabled ;
+    // Acides gras
+    PBC6C8C10_0.Enabled := PBTMM.Enabled ;
+    PBC12_0.Enabled := PBTMM.Enabled ;
+    PBC14_0.Enabled := PBTMM.Enabled ;
+    PBC16_0.Enabled := PBTMM.Enabled ;
+    PBC16_1.Enabled := PBTMM.Enabled ;
+    PBC18_0.Enabled := PBTMM.Enabled ;
+    PBC18_1.Enabled := PBTMM.Enabled ;
+    PBC18_2.Enabled := PBTMM.Enabled ;
+    PBC18_3.Enabled := PBTMM.Enabled ;
+    PBC18_4.Enabled := PBTMM.Enabled ;
+    PBC20_0.Enabled := PBTMM.Enabled ;
+    PBC20_1.Enabled := PBTMM.Enabled ;
+    PBC20_4.Enabled := PBTMM.Enabled ;
+    PBC20_5.Enabled := PBTMM.Enabled ;
+    PBC22_0.Enabled := PBTMM.Enabled ;
+    PBC22_1.Enabled := PBTMM.Enabled ;
+    PBC22_5.Enabled := PBTMM.Enabled ;
+    PBC22_6.Enabled := PBTMM.Enabled ;
+    PBC24_0.Enabled := PBTMM.Enabled ;
+    PBAG.Enabled := PBTMM.Enabled ;
+    // Min�raux
+    PBCa.Enabled := PBTMM.Enabled ;
+    PBP.Enabled := PBTMM.Enabled ;
+    PBNa.Enabled := PBTMM.Enabled ;
+    PBK.Enabled := PBTMM.Enabled ;
+    PBMg.Enabled := PBTMM.Enabled ;
+    PBCl.Enabled := PBTMM.Enabled ;
+    PBS.Enabled := PBTMM.Enabled ;
+    PBCu.Enabled := PBTMM.Enabled ;
+    PBZn.Enabled := PBTMM.Enabled ;
+    PBMn.Enabled := PBTMM.Enabled ;
+    PBFe.Enabled := PBTMM.Enabled ;
+    PBSe.Enabled := PBTMM.Enabled ;
+    PBCo.Enabled := PBTMM.Enabled ;
+    PBMb.Enabled := PBTMM.Enabled ;
+    PBI.Enabled := PBTMM.Enabled ;
+    PBPdigG.Enabled := PBTMM.Enabled ;
+    PBPdigF.Enabled := PBTMM.Enabled ;
+    PBPhytase.Enabled := PBTMM.Enabled ;
+    PBActPhytE.Enabled := PBTMM.Enabled ;
+    PBActPhytM.Enabled := PBTMM.Enabled ;
+    // Fibres
+    PBCB.Enabled := PBTMM.Enabled ;
+    PBNDF.Enabled := PBTMM.Enabled ;
+    PBADF.Enabled := PBTMM.Enabled ;
+    PBADL.Enabled := PBTMM.Enabled ;
+    PBParois.Enabled := PBTMM.Enabled ;
+  end ;
+end ;
+
+procedure TFAliment.CBAlimentChange (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  if (IdxAliment <> -1) and (CBAliment.Text <> PAliment.Nom)
+  then
+    if Modified then Save ;
+  IdxAliment := FindIdxAliment (CBAliment.Text) ;
+  if IdxAliment = -1
+  then // Pas d'enregistrement
+  begin
+    CBAliment.Repaint ;
+    PC.ActivePageIndex := 0 ;
+    PC.Visible := FALSE ;
+    AjustEnabled ;
+  end
+  else // Affichage de l'enregistrement
+  begin
+    PC.Visible := TRUE ;
+    PAliment := ListAliment[IdxAliment] ;
+    with PAliment^ do
+      CBAliment.Hint := Memo ;
+    with PAliment.CC do
+      if ConfRap = 0
+      then // sur frais
+        RapMS := MS / 1000
+      else // sur mati�re s�che
+        RapMS := 1 ;
+    AjustEnabled ;
+    Update := TRUE ;
+    // Composition �l�mentaire
+    // Certaines donn�es calcul�es sont stock�es...
+    // On les recalcule tout de m�me avant de les afficher !
+    CalculTMO ;
+    CalculResidu ;
+    CalculEnergie ;
+    AffichTFecale ;
+    AffichdFecale ;
+    AffichResidu ;
+    AffichEnergie ;
+    // Acides amin�s
+    AffichTAA ;
+    AffichdAA ;
+    CalculAA ;
+    // Acides gras
+    with PAliment.CC do
+      PBLip2.AsFloat := Lip * RapMS ;
+    with PAliment.CC do
+      PBAG.AsFloat := AGsLip ;
+    AffichTAG ;
+    CalculAG ;
+    // Min�raux
+    AffichTMineraux ;
+    CalculMineraux ;
+    // Fibres
+    AffichTFibres ;
+    Update := FALSE ;
+    CBAAsMAT.Checked := TRUE ;
+    CBCorrCUD.Checked := FALSE ;
+    // Mati�res premi�res
+    TSMatiere.TabVisible := ConfAffMP ;
+    LBDroite.Clear ;
+    PBTotal.AsFloat := 0 ;
+    if PAliment.MP.NbMat > 0
+    then
+      for i := 0 to PAliment.MP.NbMat - 1 do
+      begin
+        if PAliment.MP.NumMat[i] = 0
+        then
+          LBDroite.Items.Add ('')
+        else
+          LBDroite.Items.Add (FindNomMatiere (PAliment.MP.NumMat[i])) ;
+        PBTotal.AsFloat := PBTotal.AsFloat + PAliment.MP.Qte[i] ;
+      end ;
+    LBDroiteClick (nil) ;
+    LBGauche.ItemIndex := -1 ;
+    LBGaucheClick (nil) ;
+    case PAliment.Typ of
+      1 : // Porc croissance
+      begin
+        PBEDG.Hint := Format ('%s (%s/%s %s)', [StrED_C, StrMJ, StrKg, StrFrais]) ;
+        PBEMG.Hint := Format ('%s (%s/%s %s)', [StrEM_C, StrMJ, StrKg, StrFrais]) ;
+        PBENG.Hint := Format ('%s (%s/%s %s)', [StrEN_C, StrMJ, StrKg, StrFrais]) ;
+      end ;
+      2 : // Truie reproductrice
+      begin
+        PBEDG.Hint := Format ('%s (%s/%s %s)', [StrED_T, StrMJ, StrKg, StrFrais]) ;
+        PBEMG.Hint := Format ('%s (%s/%s %s)', [StrEM_T, StrMJ, StrKg, StrFrais]) ;
+        PBENG.Hint := Format ('%s (%s/%s %s)', [StrEN_T, StrMJ, StrKg, StrFrais]) ;
+      end ;
+      else
+      begin
+        PBEDG.Hint := StrTyp0 ;
+        PBEMG.Hint := StrTyp0 ;
+        PBENG.Hint := StrTyp0 ;
+      end ;
+    end ;
+    LEDG.Hint := PBEDG.Hint ;
+    LEMG.Hint := PBEMG.Hint ;
+    LENG.Hint := PBENG.Hint ;
+    if PAliment.MP.NbMat = 0
+    then
+      SBMoins.Enabled := FALSE
+    else
+      SBMoins.Enabled := TRUE ;
+    if PAliment.MP.NbMat > MAX_MP
+    then
+      SBPlus.Enabled := FALSE
+    else
+      SBPlus.Enabled := TRUE ;
+    VerifyMP ;
+  end ;
+end ;
+
+procedure TFAliment.SBAddClick (Sender : TObject) ;
+var
+  i, n, q : integer ;
+  s : string ;
+  ok : boolean ;
+  PBackup : PRecAliment ;
+begin
+  if Modified then Save ;
+  if IdxAliment = -1
+  then
+    q := mrNo
+  else
+    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
+  // saisie du nouveau nom
+  s := '' ;
+  repeat
+    if InputQuery (FAliment.Caption, MsgName, s)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 35
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [35]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 35) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListAliment.Count) do
+          begin
+            PAliment := ListAliment[i] ;
+            if PAliment.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      if (IdxAliment <> -1)
+      then
+        PAliment := ListAliment[IdxAliment] ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  if s <> ''
+  then // Cr�ation du nouvel enregistrement
+  begin
+    // recherche du premier num�ro libre
+    n := 0 ;
+    repeat
+      Inc (n) ;
+      ok := TRUE ;
+      i := 0 ;
+      while ok and (i < ListAliment.Count) do
+      begin
+        PAliment := ListAliment[i] ;
+        if PAliment.Num = n
+        then
+          ok := FALSE
+        else
+          Inc (i) ;
+      end ;
+    until ok ;
+    New (PAliment) ;
+    with PAliment^ do
+    begin
+      Nom := s ;
+      Num := n ;
+      if q = mrYes
+      then
+      begin
+        PBackup := ListAliment[IdxAliment] ;
+        Memo := PBackup.Memo ;
+        Typ := PBackup.Typ ;
+        Presentation := PBackup.Presentation ;
+        Prix := PBackup.Prix ;
+        MP := PBackup.MP ;
+        CC := PBackup.CC ;
+        for i := 0 to 12 do
+          AAtotal[i] := PBackup.AATotal[i] ;
+        for i := 0 to 12 do
+          CUDAA[i] := PBackup.CUDAA[i] ;
+      end
+      else
+      begin
+        Memo := '' ;
+        Typ := 0 ;
+        Presentation := 0 ;
+        Prix := 0 ;
+        MP.NbMat := 0 ;
+        for i := 0 to MAX_MP do
+        begin
+          MP.NumMat[i] := 0 ;
+          MP.MS[i] := 0 ;
+          MP.Qte[i] := 0 ;
+        end ;
+        CC := CCVide ;
+        for i := 0 to 12 do
+          AAtotal[i] := 0 ;
+        for i := 0 to 12 do
+          CUDAA[i] := 0 ;
+        if ConfAffMP
+        then
+          PC.ActivePage := TSMatiere
+        else
+          PC.ActivePage := TSElem ;
+        PCChange(nil);
+      end ;
+    end ;
+    ListAliment.Add (PAliment) ;
+    CBAliment.Items.Add (PAliment.Nom) ;
+    CBAliment.ItemIndex := CBAliment.Items.IndexOf (PAliment.Nom) ;
+    CBAlimentChange (nil) ;
+    Modified := TRUE ;
+    SBAdd.Enabled := IsComplete or (ListAliment.Count < 10) ;
+    SBCommentClick (nil) ;
+  end ;
+end ;
+
+procedure TFAliment.SBDelClick (Sender : TObject) ;
+begin
+  if AlimentUsed (PAliment.Num)
+  then // Enregistrement utilis�
+    MessageDlg (MsgDelErr, mtWarning, [mbOk], 0)
+  else // Suppression de l'enregistrement
+    if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      Dispose (PAliment) ;
+      ListAliment.Delete (IdxAliment) ;
+      SaveAliment ; // Sauvegarde !
+      Modified := FALSE ;
+      CBAliment.DeleteSelected ;
+      IdxAliment := -1 ;
+      CBAliment.ItemIndex := -1 ;
+      CBAlimentChange (nil) ;
+      SBAdd.Enabled := IsComplete or (ListAliment.Count < 10) ;
+    end ;
+end ;
+
+procedure TFAliment.SBRenameClick (Sender : TObject) ;
+var
+  i : integer ;
+  s : string ;
+  ok : boolean ;
+begin
+  // Saisie du nouveau nom
+  s := CBAliment.Text ;
+  repeat
+    if InputQuery (FAliment.Caption, MsgRename, s) and (s <> CBAliment.Text)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 35
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [35]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 35) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListAliment.Count) do
+          begin
+            PAliment := ListAliment[i] ;
+            if PAliment.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  PAliment := ListAliment[IdxAliment] ;
+  if s <> ''
+  then // Renommer l'enregistrement
+  begin
+    PAliment.Nom := s ;
+    Modified := TRUE ;
+    StringsAliment (CBAliment.Items, 0, TRUE) ;
+    CBAliment.ItemIndex := CBAliment.Items.IndexOf (s) ;
+  end ;
+end ;
+
+procedure TFAliment.SBCommentClick (Sender : TObject) ;
+begin
+  // Saisie du commentaire
+  FCommentAli := TFCommentAli.Create (Self) ;
+  with FCommentAli do
+  begin
+    Memo.Text := PAliment.Memo ;
+    CBType.ItemIndex := PAliment.Typ ;
+    CBPresentation.ItemIndex := PAliment.Presentation ;
+    PBPrix.AsFloat := PAliment.Prix ;
+    LMonnaie.Caption := Format ('%s / 1000 %s', [CurrencySign, StrKg]) ;
+    if ShowModal = mrOk
+    then // Commenter l'enregistrement
+    begin
+      PAliment.Memo := Memo.Text ;
+      PAliment.Typ := CBType.ItemIndex ;
+      PAliment.Presentation := CBPresentation.ItemIndex ;
+      PAliment.Prix := PBPrix.AsFloat ;
+      Modified := TRUE ;
+      CBAliment.Hint := PAliment.Memo ;
+    end ;
+    Release ;
+  end ;
+end ;
+
+procedure TFAliment.SBSaveClick(Sender: TObject);
+begin
+  SaveAliment ;
+  if not AlimentValid (PAliment)
+  then
+    MessageDlg(Format (MsgInvalidData, [Caption, PAliment.Nom]), mtWarning, [mbOK], 0) ;
+  Modified := FALSE ;
+end;
+
+procedure TFAliment.SBPrintClick(Sender: TObject);
+begin
+  FRapportAli := TFRapportAli.Create (Self) ;
+  FRapportAli.ShowModal ;
+  FRapportAli.Release ;
+end;
+
+////////////////////////////////////////////////////////////////////////////////
+// Composition �l�mentaire
+////////////////////////////////////////////////////////////////////////////////
+
+// Mati�re organique = Mati�re s�che - Mati�res min�rales
+procedure TFAliment.CalculTMO ;
+begin
+  with PAliment.CC do
+    MO := 1000 - MM ;
+  // Affichage de la valeur
+  if ConfTCompo = 0
+  then // g/kg
+    with PAliment.CC do
+      PBTMO.AsFloat := MO * RapMS
+  else // %
+    with PAliment.CC do
+      PBTMO.AsFloat := MO / 1000 * 100 * RapMS ;
+end ;
+
+procedure TFAliment.CalculResidu ;
+begin
+  with PAliment.CC do
+  begin
+    // R�sidu = Mati�re s�che - (Mati�re min�rale + Mati�res azot�es + Mati�res grasses + Amidon + Sucres + Cellulose brute)
+    if MM + MAT + Lip + Amidon + Sucres + CB > 1000
+    then
+      Residu := 0
+    else
+      Residu := 1000 - (MM + MAT + Lip + Amidon + Sucres + CB) ;
+    // CUD R�sidu
+    if CB + Residu > 0
+    then
+    begin
+      dResidu_C := (MO * dMO_C - (MAT * dMAT_C + Lip * dLip_C + Amidon * 100 + Sucres * 100)) / (CB + Residu) ;
+      dResidu_T := (MO * dMO_T - (MAT * dMAT_T + Lip * dLip_T + Amidon * 100 + Sucres * 100)) / (CB + Residu) ;
+    end
+    else
+    begin
+      dResidu_C := 0 ;
+      dResidu_T := 0 ;
+    end ;
+    // CUD Cellulose brute = CUD R�sidu
+    dCB_C := dResidu_C ;
+    dCB_T := dResidu_T ;
+  end ;
+end ;
+
+procedure TFAliment.AffichResidu ;
+begin
+  with PAliment.CC do
+  begin
+    // Teneur
+    if ConfTCompo = 0
+    then // g/kg
+      PBTResidu.AsFloat := (Residu + CB) * RapMS
+    else // %
+      PBTResidu.AsFloat := (Residu + CB) / 1000 * 100 * RapMS ;
+    // Digestibilit�
+    if ConfDig = 0
+    then // CUD
+    begin
+      // Croissance
+      PBdResidu_C.AsFloat := dResidu_C ;
+      // Truie
+      PBdResidu_T.AsFloat := dResidu_T ;
+    end
+    else // Teneur digestible
+      if ConfdCompo = 0
+      then // g/kg
+      begin
+        // Croissance
+        PBdResidu_C.AsFloat := (Residu + CB) * dResidu_C / 100 * RapMS ;
+        // Truie
+        PBdResidu_T.AsFloat := (Residu + CB) * dResidu_T / 100 * RapMS ;
+      end
+      else // %
+      begin
+        // Croissance
+        PBdResidu_C.AsFloat := (Residu + CB) / 1000 * dResidu_C * RapMS ;
+        // Truie
+        PBdResidu_T.AsFloat := (Residu + CB) / 1000 * dResidu_T * RapMS ;
+      end ;
+  end ;
+end ;
+
+// Affichage de la teneur en fonction de la configuration
+procedure TFAliment.AffichTFecale ;
+begin
+  if ConfTCompo = 0
+  then // g/kg
+    with PAliment.CC do
+    begin
+      if ActiveControl <> PBTMS
+      then
+        PBTMS.AsFloat := MS ;
+      PBTMM.AsFloat := MM * RapMS ;
+      PBTMO.AsFloat := MO * RapMS ;
+      PBTLip.AsFloat := Lip * RapMS ;
+      PBTMAT.AsFloat := MAT * RapMS ;
+      PBTAmidon.AsFloat := Amidon * RapMS ;
+      PBTSucres.AsFloat := Sucres * RapMS ;
+    end
+  else // %
+    with PAliment.CC do
+    begin
+      if ActiveControl <> PBTMS
+      then
+        PBTMS.AsFloat := MS / 1000 * 100 ;
+      PBTMM.AsFloat := MM / 1000 * 100 * RapMS ;
+      PBTMO.AsFloat := MO / 1000 * 100 * RapMS ;
+      PBTLip.AsFloat := Lip / 1000 * 100 * RapMS ;
+      PBTMAT.AsFloat := MAT / 1000 * 100 * RapMS ;
+      PBTAmidon.AsFloat := Amidon / 1000 * 100 * RapMS ;
+      PBTSucres.AsFloat := Sucres / 1000 * 100 * RapMS ;
+    end ;
+{
+  // Hint (temporaire)
+  with PAliment.CC do
+  begin
+    PBTMS.Hint := FloatToStr(MS);
+    PBTMM.Hint := FloatToStr(MM * RapMS);
+    PBTLip.Hint := FloatToStr(Lip * RapMS);
+    PBTMAT.Hint := FloatToStr(MAT * RapMS);
+    PBTAmidon.Hint := FloatToStr(Amidon * RapMS);
+    PBTSucres.Hint := FloatToStr(Sucres * RapMS);
+  end;
+}
+end ;
+
+// Affichage de la digestibilit� f�cale en fonction de la configuration
+procedure TFAliment.AffichdFecale ;
+begin
+  if ConfDig = 0
+  then // CUD
+    with PAliment.CC do
+    begin
+      // Croissance
+      PBdMO_C.AsFloat := dMO_C ;
+      PBdLip_C.AsFloat := dLip_C ;
+      PBdMAT_C.AsFloat := dMAT_C ;
+      PBdAmidon_C.AsFloat := 100 ; // CUD Amidon = 100 %
+      PBdSucres_C.AsFloat := 100 ; // CUD Sucres = 100 %
+      // Truie
+      PBdMO_T.AsFloat := dMO_T ;
+      PBdLip_T.AsFloat := dLip_T ;
+      PBdMAT_T.AsFloat := dMAT_T ;
+      PBdAmidon_T.AsFloat := 100 ; // CUD Amidon = 100 %
+      PBdSucres_T.AsFloat := 100 ; // CUD Sucres = 100 %
+    end
+  else // Teneur digestible
+    if ConfdCompo = 0
+    then // g/kg
+      with PAliment.CC do
+      begin
+        // Croissance
+        PBdMO_C.AsFloat := MO * dMO_C / 100 * RapMS ;
+        PBdLip_C.AsFloat := Lip * dLip_C / 100 * RapMS ;
+        PBdMAT_C.AsFloat := MAT * dMAT_C / 100 * RapMS ;
+        PBdAmidon_C.AsFloat := Amidon * RapMS ;
+        PBdSucres_C.AsFloat := Sucres * RapMS ;
+        // Truie
+        PBdMO_T.AsFloat := MO * dMO_T / 100 * RapMS ;
+        PBdLip_T.AsFloat := Lip * dLip_T / 100 * RapMS ;
+        PBdMAT_T.AsFloat := MAT * dMAT_T / 100 * RapMS ;
+        PBdAmidon_T.AsFloat := Amidon * RapMS ;
+        PBdSucres_T.AsFloat := Sucres * RapMS ;
+      end
+    else // %
+      with PAliment.CC do
+      begin
+        // Croissance
+        PBdMO_C.AsFloat := MO / 1000 * dMO_C * RapMS ;
+        PBdLip_C.AsFloat := Lip / 1000 * dLip_C * RapMS ;
+        PBdMAT_C.AsFloat := MAT / 1000 * dMAT_C * RapMS ;
+        PBdAmidon_C.AsFloat := Amidon / 1000 * 100 * RapMS ;
+        PBdSucres_C.AsFloat := Sucres / 1000 * 100 * RapMS ;
+        // Truie
+        PBdMO_T.AsFloat := MO / 1000 * dMO_T * RapMS ;
+        PBdLip_T.AsFloat := Lip / 1000 * dLip_T * RapMS ;
+        PBdMAT_T.AsFloat := MAT / 1000 * dMAT_T * RapMS ;
+        PBdAmidon_T.AsFloat := Amidon / 1000 * 100 * RapMS ;
+        PBdSucres_T.AsFloat := Sucres / 1000 * 100 * RapMS ;
+      end ;
+{
+  // Hint (temporaire)
+  with PAliment.CC do
+  begin
+    PBdMO_C.Hint := FloatToStr(dMO_C);
+    PBdLip_C.Hint := FloatToStr(dLip_C);
+    PBdMAT_C.Hint := FloatToStr(dMAT_C);
+    PBdMO_T.Hint := FloatToStr(dMO_T);
+    PBdLip_T.Hint := FloatToStr(dLip_T);
+    PBdMAT_T.Hint := FloatToStr(dMAT_T);
+  end;
+}
+end ;
+
+procedure TFAliment.CalculEnergie ;
+begin
+  with PAliment.CC do
+  begin
+{
+    EB := (22.64 * MAT + 38.76 * Lip + 17.54 * Amidon + 16.71 * Sucres + 18.58 * (Residu + CB)) / 1000 ;
+    ED_C := (23.25 * MAT * dMAT_C / 100 + 38.73 * Lip * dLip_C / 100 + 17.45 * Amidon + 16.77 * Sucres + 16.68 * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    ED_T := (23.25 * MAT * dMAT_T / 100 + 38.73 * Lip * dLip_T / 100 + 17.45 * Amidon + 16.77 * Sucres + 16.68 * (Residu + CB) * dResidu_T / 100) / 1000 ;
+    EM_C := (20.40 * MAT * dMAT_C / 100 + 39.28 * Lip * dLip_C / 100 + 17.45 * Amidon + 16.47 * Sucres + 15.45 * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    EM_T := (20.40 * MAT * dMAT_T / 100 + 39.28 * Lip * dLip_T / 100 + 17.45 * Amidon + 16.47 * Sucres + 15.45 * (Residu + CB) * dResidu_T / 100) / 1000 ;
+    EN_C := (12.08 * MAT * dMAT_C / 100 + 35.01 * Lip * dLip_C / 100 + 14.32 * Amidon + 11.94 * Sucres + 8.64 * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    EN_T := (12.08 * MAT * dMAT_T / 100 + 35.01 * Lip * dLip_T / 100 + 14.32 * Amidon + 11.94 * Sucres + 8.64 * (Residu + CB) * dResidu_T / 100) / 1000 ;
+}
+    EB := (ValEnergie[1, 1] * MAT + ValEnergie[2, 1] * Lip
+      + ValEnergie[3, 1] * Amidon + ValEnergie[4, 1] * Sucres
+      + ValEnergie[6, 1] * (Residu + CB)) / 1000 ;
+    ED_C := (ValEnergie[1, 2] * MAT * dMAT_C / 100
+      + ValEnergie[2, 2] * Lip * dLip_C / 100
+      + ValEnergie[3, 2] * Amidon + ValEnergie[4, 2] * Sucres
+      + ValEnergie[6, 2] * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    ED_T := (ValEnergie[1, 2] * MAT * dMAT_T / 100
+      + ValEnergie[2, 2] * Lip * dLip_T / 100
+      + ValEnergie[3, 2] * Amidon + ValEnergie[4, 2] * Sucres
+      + ValEnergie[6, 2] * (Residu + CB) * dResidu_T / 100) / 1000 ;
+    EM_C := (ValEnergie[1, 3] * MAT * dMAT_C / 100
+      + ValEnergie[2, 3] * Lip * dLip_C / 100
+      + ValEnergie[3, 3] * Amidon + ValEnergie[4, 3] * Sucres
+      + ValEnergie[6, 3] * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    EM_T := (ValEnergie[1, 3] * MAT * dMAT_T / 100
+      + ValEnergie[2, 3] * Lip * dLip_T / 100
+      + ValEnergie[3, 3] * Amidon + ValEnergie[4, 3] * Sucres
+      + ValEnergie[6, 3] * (Residu + CB) * dResidu_T / 100) / 1000 ;
+    EN_C := (ValEnergie[1, 6] * MAT * dMAT_C / 100
+      + ValEnergie[2, 6] * Lip * dLip_C / 100
+      + ValEnergie[3, 6] * Amidon + ValEnergie[4, 6] * Sucres
+      + ValEnergie[6, 6] * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    EN_T := (ValEnergie[1, 6] * MAT * dMAT_T / 100
+      + ValEnergie[2, 6] * Lip * dLip_T / 100
+      + ValEnergie[3, 6] * Amidon + ValEnergie[4, 6] * Sucres
+      + ValEnergie[6, 6] * (Residu + CB) * dResidu_T / 100) / 1000 ;
+  end ;
+end ;
+
+procedure TFAliment.AffichEnergie ;
+begin
+  with PAliment.CC do
+  begin
+    // Croissance
+    PBEB_C.AsFloat := EB * RapMS ;
+    if ActiveControl <> PBED_C
+    then
+      PBED_C.AsFloat := ED_C * RapMS ;
+    if ActiveControl <> PBEM_C
+    then
+      PBEM_C.AsFloat := EM_C * RapMS ;
+    if ActiveControl <> PBEN_C
+    then
+      PBEN_C.AsFloat := EN_C * RapMS ;
+    // Truie
+    PBEB_T.AsFloat := EB * RapMS ;
+    if ActiveControl <> PBED_T
+    then
+      PBED_T.AsFloat := ED_T * RapMS ;
+    if ActiveControl <> PBEM_T
+    then
+      PBEM_T.AsFloat := EM_T * RapMS ;
+    if ActiveControl <> PBEN_T
+    then
+      PBEN_T.AsFloat := EN_T * RapMS ;
+    // ED / EB
+    if EB = 0
+    then
+    begin
+      PBEDsEB_C.Text := '' ;
+      PBEDsEB_T.Text := '' ;
+    end
+    else
+    begin
+      PBEDsEB_C.AsFloat := ED_C / EB * 100 ;
+      PBEDsEB_T.AsFloat := ED_T / EB * 100 ;
+    end ;
+    // EN / EM
+    if EM_C = 0
+    then
+      PBENsEM_C.Text := ''
+    else
+      PBENsEM_C.AsFloat := EN_C / EM_C * 100 ;
+    if EM_T = 0
+    then
+      PBENsEM_T.Text := ''
+    else
+      PBENsEM_T.AsFloat := EN_T / EM_T * 100 ;
+  end ;
+end ;
+
+procedure TFAliment.PBTMSChange (Sender : TObject) ;
+begin
+  if (PBTMS.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        MS := PBTMS.AsFloat
+      else // %
+        MS := PBTMS.AsFloat / 100 * 1000 ;
+    // En cas d'affichage sur frais, la valeur de RapMS change...
+    // L'ensemble de l'enregistrement est r�affich� !
+    if ConfRap = 0
+    then // sur frais
+    begin
+      IdxAliment := -1 ;
+      CBAlimentChange (nil) ;
+    end
+    else
+      AjustEnabled ;
+  end ;
+end ;
+
+procedure TFAliment.PBTMSExit (Sender : TObject) ;
+begin
+  if (PBTMS.AsFloat = 0) and (PAliment.CC.MS <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PAliment.CC do
+      MS := 0 ;
+    // En cas d'affichage sur frais, la valeur de RapMS change...
+    // L'ensemble de l'enregistrement est r�affich� !
+    if ConfRap = 0
+    then // sur frais
+    begin
+      IdxAliment := -1 ;
+      CBAlimentChange (nil) ;
+    end
+    else
+      AjustEnabled ;
+  end ;
+end ;
+
+procedure TFAliment.PBTMMChange (Sender : TObject) ;
+begin
+  if (PBTMM.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        MM := PBTMM.AsFloat / RapMS
+      else // %
+        MM := PBTMM.AsFloat / 100 * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculTMO ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBTMMExit (Sender : TObject) ;
+begin
+  if (PBTMM.AsFloat = 0) and (PAliment.CC.MM <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PAliment.CC do
+      MM := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculTMO ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBTLipChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        Lip := PBTLip.AsFloat / RapMS
+      else // %
+        Lip := PBTLip.AsFloat / 100 * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    with PAliment.CC do
+      PBLip2.AsFloat := Lip * RapMS ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    if ConfTAG <> 2
+    then // non % AG
+      AffichTAG ;
+    CalculAG ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBTMATChange (Sender : TObject) ;
+var
+  i : integer ;
+  variation : double ;
+begin
+  if (PBTMAT.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Variation de la teneur en mati�res azot�s
+    with PAliment.CC do
+      if MAT = 0
+      then
+        variation := 1
+      else
+        if ConfTCompo = 0
+        then // g/kg
+          variation := PBTMAT.AsFloat / RapMS / MAT
+        else // %
+          variation := PBTMAT.AsFloat / 100 * 1000 / RapMS / MAT ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        MAT := PBTMAT.AsFloat / RapMS
+      else // %
+        MAT := PBTMAT.AsFloat / 100 * 1000 / RapMS ;
+    with PAliment^ do
+      AAtotal[0] := CC.MAT ;
+    // Mise � jour des champs li�s � cette valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          PBTMAT2.AsFloat := AAtotal[0] / 1000 * 100 * RapMS ;
+        2 : // % MAT
+          PBTMAT2.AsFloat := AAtotal[0] / CC.MAT * 100 ;
+        else // g/kg
+          PBTMAT2.AsFloat := AAtotal[0] * RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    if CBAAsMAT.Checked
+    then // Variation des teneur en acides amin�s (r�gle de trois)
+      with PAliment^ do
+        for i := 1 to 12 do
+          AAtotal[i] := AAtotal[i] * variation ;
+    AffichTAA ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    CalculAA ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBTMATExit (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  if PBTMAT.AsFloat = 0
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PAliment.CC do
+      MAT := 0 ;
+    with PAliment^ do
+      AAtotal[0] := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    PBTMAT2.AsFloat := 0 ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    if CBAAsMAT.Checked
+    then
+    begin
+      // Variation des teneur en acides amin�s (r�gle de trois)
+      with PAliment^ do
+        for i := 1 to 12 do
+          AAtotal[i] := 0 ;
+      AffichTAA ;
+      if ConfDig = 0
+      then // Teneur digestible
+        AffichdAA ;
+    end ;
+    CalculAA ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBTAmidonChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        Amidon := PBTAmidon.AsFloat / RapMS
+      else // %
+        Amidon := PBTAmidon.AsFloat / 100 * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBTSucresChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        Sucres := PBTSucres.AsFloat / RapMS
+      else // %
+        Sucres := PBTSucres.AsFloat / 100 * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBdMO_CChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfDig = 0
+      then // CUD
+        dMO_C := PBdMO_C.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dMO_C := PBdMO_C.AsFloat / MO * 100 / RapMS
+        else // %
+          dMO_C := PBdMO_C.AsFloat / MO * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBdLip_CChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfDig = 0
+      then // CUD
+        dLip_C := PBdLip_C.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dLip_C := PBdLip_C.AsFloat / Lip * 100 / RapMS
+        else // %
+          dLip_C := PBdLip_C.AsFloat / Lip * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBdMAT_CChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfDig = 0
+      then // CUD
+        dMAT_C := PBdMAT_C.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dMAT_C := PBdMAT_C.AsFloat / MAT * 100 / RapMS
+        else // %
+          dMAT_C := PBdMAT_C.AsFloat / MAT * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBdMO_TChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfDig = 0
+      then // CUD
+        dMO_T := PBdMO_T.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dMO_T := PBdMO_T.AsFloat / MO * 100 / RapMS
+        else // %
+          dMO_T := PBdMO_T.AsFloat / MO * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBdLip_TChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfDig = 0
+      then // CUD
+        dLip_T := PBdLip_T.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dLip_T := PBdLip_T.AsFloat / Lip * 100 / RapMS
+        else // %
+          dLip_T := PBdLip_T.AsFloat / Lip * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBdMAT_TChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfDig = 0
+      then // CUD
+        dMAT_T := PBdMAT_T.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dMAT_T := PBdMAT_T.AsFloat / MAT * 100 / RapMS
+        else // %
+          dMAT_T := PBdMAT_T.AsFloat / MAT * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.CBCorrCUDClick (Sender : TObject) ;
+begin
+  if AffCorrCUD
+  then
+  begin
+    FWarning := TFWarning.Create (Self) ;
+    with FWarning do
+    begin
+      Msg := 'CorrCUD';
+      ShowModal ;
+      Release ;
+      AffCorrCUD := FALSE ;
+    end ;
+  end ;
+  if not CBCorrCUD.Checked
+  then
+  begin
+    RBED.Checked := FALSE ;
+    RBEM.Checked := FALSE ;
+    RBEN.Checked := FALSE ;
+  end ;
+  RBED.Enabled := CBCorrCUD.Checked ;
+  RBEM.Enabled := CBCorrCUD.Checked ;
+  RBEN.Enabled := CBCorrCUD.Checked ;
+  Update := TRUE ;
+  RBEDClick (nil) ;
+  RBEMClick (nil) ;
+  RBENClick (nil) ;
+  Update := FALSE ;
+  PBdMO_C.Enabled := not CBCorrCUD.Checked ;
+  PBdLip_C.Enabled := not CBCorrCUD.Checked ;
+  PBdMAT_C.Enabled := not CBCorrCUD.Checked ;
+  PBdMO_T.Enabled := not CBCorrCUD.Checked ;
+  PBdLip_T.Enabled := not CBCorrCUD.Checked ;
+  PBdMAT_T.Enabled := not CBCorrCUD.Checked ;
+end ;
+
+procedure TFAliment.LCorrCUDClick (Sender : TObject) ;
+begin
+  if CBCorrCUD.Enabled
+  then
+    CBCorrCUD.Checked := not CBCorrCUD.Checked ;
+end ;
+
+procedure TFAliment.RBEDClick (Sender : TObject) ;
+begin
+  PBED_C.Enabled := RBED.Checked ;
+  PBED_T.Enabled := RBED.Checked ;
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    RBEMClick (nil) ;
+    RBENClick (nil) ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.LEDClick (Sender : TObject) ;
+begin
+  if RBED.Enabled
+  then
+    RBED.Checked := TRUE ;
+end ;
+
+procedure TFAliment.PBED_CChange (Sender : TObject) ;
+begin
+  if (PBED_C.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      ED_C := PBED_C.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEDCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBED_CExit (Sender : TObject) ;
+begin
+  if (PBED_C.AsFloat = 0) and (PAliment.CC.ED_C <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PAliment.CC do
+      ED_C := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEDCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.CalculDigEDCrois ;
+var
+  x : double ;
+begin
+  with PAliment.CC do
+  begin
+    x := (ED_C * 1000 - 17.45 * Amidon - 16.77 * Sucres) / (23.25 * MAT * dMAT_C / 100 + 38.73 * Lip * dLip_C / 100 + 16.68 * (Residu + CB) * dResidu_C / 100) ;
+    dLip_C := dLip_C * x ;
+    dMAT_C := dMAT_C * x ;
+    dResidu_C := dResidu_C * x ;
+    dCB_C := dCB_C * x ;
+    dMO_C := ((dMO_C * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+procedure TFAliment.PBED_TChange (Sender : TObject) ;
+begin
+  if (PBED_T.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      ED_T := PBED_T.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEDTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBED_TExit (Sender : TObject) ;
+begin
+  if (PBED_T.AsFloat = 0) and (PAliment.CC.ED_T <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PAliment.CC do
+      ED_T := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEDTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.CalculDigEDTruie ;
+var
+  x : double ;
+begin
+  with PAliment.CC do
+  begin
+    x := (ED_T * 1000 - 17.45 * Amidon - 16.77 * Sucres) / (23.25 * MAT * dMAT_T / 100 + 38.73 * Lip * dLip_T / 100 + 16.68 * (Residu + CB) * dResidu_T / 100) ;
+    dLip_T := dLip_T * x ;
+    dMAT_T := dMAT_T * x ;
+    dResidu_T := dResidu_T * x ;
+    dCB_T := dCB_T * x ;
+    dMO_T := ((dMO_T * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+procedure TFAliment.RBEMClick (Sender : TObject) ;
+begin
+  PBEM_C.Enabled := RBEM.Checked ;
+  PBEM_T.Enabled := RBEM.Checked ;
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    RBEDClick (nil) ;
+    RBENClick (nil) ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.LEMClick (Sender : TObject) ;
+begin
+  if RBEM.Enabled
+  then
+    RBEM.Checked := TRUE ;
+end ;
+
+procedure TFAliment.PBEM_CChange (Sender : TObject) ;
+begin
+  if (PBEM_C.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      EM_C := PBEM_C.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEMCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBEM_CExit (Sender : TObject) ;
+begin
+  if (PBEM_C.AsFloat = 0) and (PAliment.CC.EM_C <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PAliment.CC do
+      EM_C := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEMCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.CalculDigEMCrois ;
+var
+  x : double ;
+begin
+  with PAliment.CC do
+  begin
+    x := (EM_C * 1000 - 17.45 * Amidon - 16.47 * Sucres) / (20.40 * MAT * dMAT_C / 100 + 39.28 * Lip * dLip_C / 100 + 15.45 * (Residu + CB) * dResidu_C / 100) ;
+    dLip_C := dLip_C * x ;
+    dMAT_C := dMAT_C * x ;
+    dResidu_C := dResidu_C * x ;
+    dCB_C := dCB_C * x ;
+    dMO_C := ((dMO_C * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+procedure TFAliment.PBEM_TChange (Sender : TObject) ;
+begin
+  if (PBEM_T.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      EM_T := PBEM_T.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEMTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBEM_TExit (Sender : TObject) ;
+begin
+  if (PBEM_T.AsFloat = 0) and (PAliment.CC.EM_T <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PAliment.CC do
+      EM_T := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEMTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.CalculDigEMTruie ;
+var
+  x : double ;
+begin
+  with PAliment.CC do
+  begin
+    x := (EM_T * 1000 - 17.45 * Amidon - 16.47 * Sucres) / (20.40 * MAT * dMAT_T / 100 + 39.28 * Lip * dLip_T / 100 + 15.45 * (Residu + CB) * dResidu_T / 100) ;
+    dLip_T := dLip_T * x ;
+    dMAT_T := dMAT_T * x ;
+    dResidu_T := dResidu_T * x ;
+    dCB_T := dCB_T * x ;
+    dMO_T := ((dMO_T * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+procedure TFAliment.RBENClick (Sender : TObject) ;
+begin
+  PBEN_C.Enabled := RBEN.Checked ;
+  PBEN_T.Enabled := RBEN.Checked ;
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    RBEDClick (nil) ;
+    RBEMClick (nil) ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.LENClick (Sender : TObject) ;
+begin
+  if RBEN.Enabled
+  then
+    RBEN.Checked := TRUE ;
+end ;
+
+procedure TFAliment.PBEN_CChange (Sender : TObject) ;
+begin
+  if (PBEN_C.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      EN_C := PBEN_C.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigENCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBEN_CExit (Sender : TObject) ;
+begin
+  if (PBEN_C.AsFloat = 0) and (PAliment.CC.EN_C <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PAliment.CC do
+      EN_C := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigENCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.CalculDigENCrois ;
+var
+  x : double ;
+begin
+  with PAliment.CC do
+  begin
+    x := (EN_C * 1000 - 14.32 * Amidon - 11.94 * Sucres) / (12.08 * MAT * dMAT_C / 100 + 35.01 * Lip * dLip_C / 100 + 8.64 * (Residu + CB) * dResidu_C / 100) ;
+    dLip_C := dLip_C * x ;
+    dMAT_C := dMAT_C * x ;
+    dResidu_C := dResidu_C * x ;
+    dCB_C := dCB_C * x ;
+    dMO_C := ((dMO_C * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+procedure TFAliment.PBEN_TChange (Sender : TObject) ;
+begin
+  if (PBEN_T.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      EN_T := PBEN_T.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigENTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.PBEN_TExit (Sender : TObject) ;
+begin
+  if (PBEN_T.AsFloat = 0) and (PAliment.CC.EN_T <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PAliment.CC do
+      EN_T := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigENTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFAliment.CalculDigENTruie ;
+var
+  x : double ;
+begin
+  with PAliment.CC do
+  begin
+    x := (EN_T * 1000 - 14.32 * Amidon - 11.94 * Sucres) / (12.08 * MAT * dMAT_T / 100 + 35.01 * Lip * dLip_T / 100 + 8.64 * (Residu + CB) * dResidu_T / 100) ;
+    dLip_T := dLip_T * x ;
+    dMAT_T := dMAT_T * x ;
+    dResidu_T := dResidu_T * x ;
+    dCB_T := dCB_T * x ;
+    dMO_T := ((dMO_T * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+////////////////////////////////////////////////////////////////////////////////
+// Acides amin�s
+////////////////////////////////////////////////////////////////////////////////
+
+// Affichage de la teneur en fonction de la configuration
+procedure TFAliment.AffichTAA ;
+begin
+//  with PAliment^ do
+//    AAtotal[0] := CC.MAT ;
+  case ConfTAA of
+    1 : // %
+      with PAliment^ do
+      begin
+        PBTMAT2.AsFloat := AAtotal[0] / 1000 * 100 * RapMS ;
+        if ActiveControl <> PBTLys
+        then
+          PBTLys.AsFloat := AAtotal[1] / 1000 * 100 * RapMS ;
+        PBTMet.AsFloat := AAtotal[2] / 1000 * 100 * RapMS ;
+        PBTCys.AsFloat := AAtotal[3] / 1000 * 100 * RapMS ;
+        PBTTrp.AsFloat := AAtotal[4] / 1000 * 100 * RapMS ;
+        PBTThr.AsFloat := AAtotal[5] / 1000 * 100 * RapMS ;
+        PBTPhe.AsFloat := AAtotal[6] / 1000 * 100 * RapMS ;
+        PBTTyr.AsFloat := AAtotal[7] / 1000 * 100 * RapMS ;
+        PBTLeu.AsFloat := AAtotal[8] / 1000 * 100 * RapMS ;
+        PBTIle.AsFloat := AAtotal[9] / 1000 * 100 * RapMS ;
+        PBTVal.AsFloat := AAtotal[10] / 1000 * 100 * RapMS ;
+        PBTHis.AsFloat := AAtotal[11] / 1000 * 100 * RapMS ;
+        PBTArg.AsFloat := AAtotal[12] / 1000 * 100 * RapMS ;
+      end ;
+    2 : // % MAT
+      if PAliment.CC.MAT = 0
+      then
+      begin
+        PBTMAT2.AsFloat := 0 ;
+        PBTLys.AsFloat := 0 ;
+        PBTMet.AsFloat := 0 ;
+        PBTCys.AsFloat := 0 ;
+        PBTTrp.AsFloat := 0 ;
+        PBTThr.AsFloat := 0 ;
+        PBTPhe.AsFloat := 0 ;
+        PBTTyr.AsFloat := 0 ;
+        PBTLeu.AsFloat := 0 ;
+        PBTIle.AsFloat := 0 ;
+        PBTVal.AsFloat := 0 ;
+        PBTHis.AsFloat := 0 ;
+        PBTArg.AsFloat := 0 ;
+      end
+      else
+        with PAliment^ do
+        begin
+          PBTMAT2.AsFloat := AAtotal[0] / CC.MAT * 100 ;
+          if ActiveControl <> PBTLys
+          then
+            PBTLys.AsFloat := AAtotal[1] / CC.MAT * 100 ;
+          PBTMet.AsFloat := AAtotal[2] / CC.MAT * 100 ;
+          PBTCys.AsFloat := AAtotal[3] / CC.MAT * 100 ;
+          PBTTrp.AsFloat := AAtotal[4] / CC.MAT * 100 ;
+          PBTThr.AsFloat := AAtotal[5] / CC.MAT * 100 ;
+          PBTPhe.AsFloat := AAtotal[6] / CC.MAT * 100 ;
+          PBTTyr.AsFloat := AAtotal[7] / CC.MAT * 100 ;
+          PBTLeu.AsFloat := AAtotal[8] / CC.MAT * 100 ;
+          PBTIle.AsFloat := AAtotal[9] / CC.MAT * 100 ;
+          PBTVal.AsFloat := AAtotal[10] / CC.MAT * 100 ;
+          PBTHis.AsFloat := AAtotal[11] / CC.MAT * 100 ;
+          PBTArg.AsFloat := AAtotal[12] / CC.MAT * 100 ;
+        end ;
+    else // g/kg
+      with PAliment^ do
+      begin
+        PBTMAT2.AsFloat := AAtotal[0] * RapMS ;
+        if ActiveControl <> PBTLys
+        then
+          PBTLys.AsFloat := AAtotal[1] * RapMS ;
+        PBTMet.AsFloat := AAtotal[2] * RapMS ;
+        PBTCys.AsFloat := AAtotal[3] * RapMS ;
+        PBTTrp.AsFloat := AAtotal[4] * RapMS ;
+        PBTThr.AsFloat := AAtotal[5] * RapMS ;
+        PBTPhe.AsFloat := AAtotal[6] * RapMS ;
+        PBTTyr.AsFloat := AAtotal[7] * RapMS ;
+        PBTLeu.AsFloat := AAtotal[8] * RapMS ;
+        PBTIle.AsFloat := AAtotal[9] * RapMS ;
+        PBTVal.AsFloat := AAtotal[10] * RapMS ;
+        PBTHis.AsFloat := AAtotal[11] * RapMS ;
+        PBTArg.AsFloat := AAtotal[12] * RapMS ;
+      end ;
+  end ;
+end ;
+
+// Affichage de la digestibilit� il�ale en fonction de la configuration
+procedure TFAliment.AffichdAA ;
+begin
+  if ConfDig = 0
+  then // CUD
+    with PAliment^ do
+    begin
+      PBdMATStd.AsFloat := CUDAA[0] ;
+      PBdLysStd.AsFloat := CUDAA[1] ;
+      PBdMetStd.AsFloat := CUDAA[2] ;
+      PBdCysStd.AsFloat := CUDAA[3] ;
+      PBdTrpStd.AsFloat := CUDAA[4] ;
+      PBdThrStd.AsFloat := CUDAA[5] ;
+      PBdPheStd.AsFloat := CUDAA[6] ;
+      PBdTyrStd.AsFloat := CUDAA[7] ;
+      PBdLeuStd.AsFloat := CUDAA[8] ;
+      PBdIleStd.AsFloat := CUDAA[9] ;
+      PBdValStd.AsFloat := CUDAA[10] ;
+      PBdHisStd.AsFloat := CUDAA[11] ;
+      PBdArgStd.AsFloat := CUDAA[12] ;
+    end
+  else // Teneur digestible
+    if ConfdAA = 0
+    then // g/kg
+      with PAliment^ do
+      begin
+        PBdMATStd.AsFloat := AAtotal[0] * CUDAA[0] / 100 * RapMS ;
+        PBdLysStd.AsFloat := AAtotal[1] * CUDAA[1] / 100 * RapMS ;
+        PBdMetStd.AsFloat := AAtotal[2] * CUDAA[2] / 100 * RapMS ;
+        PBdCysStd.AsFloat := AAtotal[3] * CUDAA[3] / 100 * RapMS ;
+        PBdTrpStd.AsFloat := AAtotal[4] * CUDAA[4] / 100 * RapMS ;
+        PBdThrStd.AsFloat := AAtotal[5] * CUDAA[5] / 100 * RapMS ;
+        PBdPheStd.AsFloat := AAtotal[6] * CUDAA[6] / 100 * RapMS ;
+        PBdTyrStd.AsFloat := AAtotal[7] * CUDAA[7] / 100 * RapMS ;
+        PBdLeuStd.AsFloat := AAtotal[8] * CUDAA[8] / 100 * RapMS ;
+        PBdIleStd.AsFloat := AAtotal[9] * CUDAA[9] / 100 * RapMS ;
+        PBdValStd.AsFloat := AAtotal[10] * CUDAA[10] / 100 * RapMS ;
+        PBdHisStd.AsFloat := AAtotal[11] * CUDAA[11] / 100 * RapMS ;
+        PBdArgStd.AsFloat := AAtotal[12] * CUDAA[12] / 100 * RapMS ;
+      end
+    else // %
+      with PAliment^ do
+      begin
+        PBdMATStd.AsFloat := AAtotal[0] / 1000 * CUDAA[0] * RapMS ;
+        PBdLysStd.AsFloat := AAtotal[1] / 1000 * CUDAA[1] * RapMS ;
+        PBdMetStd.AsFloat := AAtotal[2] / 1000 * CUDAA[2] * RapMS ;
+        PBdCysStd.AsFloat := AAtotal[3] / 1000 * CUDAA[3] * RapMS ;
+        PBdTrpStd.AsFloat := AAtotal[4] / 1000 * CUDAA[4] * RapMS ;
+        PBdThrStd.AsFloat := AAtotal[5] / 1000 * CUDAA[5] * RapMS ;
+        PBdPheStd.AsFloat := AAtotal[6] / 1000 * CUDAA[6] * RapMS ;
+        PBdTyrStd.AsFloat := AAtotal[7] / 1000 * CUDAA[7] * RapMS ;
+        PBdLeuStd.AsFloat := AAtotal[8] / 1000 * CUDAA[8] * RapMS ;
+        PBdIleStd.AsFloat := AAtotal[9] / 1000 * CUDAA[9] * RapMS ;
+        PBdValStd.AsFloat := AAtotal[10] / 1000 * CUDAA[10] * RapMS ;
+        PBdHisStd.AsFloat := AAtotal[11] / 1000 * CUDAA[11] * RapMS ;
+        PBdArgStd.AsFloat := AAtotal[12] / 1000 * CUDAA[12] * RapMS ;
+      end ;
+end ;
+
+procedure TFAliment.CalculAA ;
+begin
+  // Digestibilit� apparente
+  if ConfDig = 0
+  then // CUD
+    with PAliment^ do
+    begin
+      if AAtotal[0] = 0
+      then
+        PBdMATApp.Text := ''
+      else
+        PBdMATApp.AsFloat := CUDAA[0] - AAendogene[0] * 100 / AAtotal[0] ;
+      if AAtotal[1] = 0
+      then
+        PBdLysApp.Text := ''
+      else
+        PBdLysApp.AsFloat := CUDAA[1] - AAendogene[1] * 100 / AAtotal[1] ;
+      if AAtotal[2] = 0
+      then
+        PBdMetApp.Text := ''
+      else
+        PBdMetApp.AsFloat := CUDAA[2] - AAendogene[2] * 100 / AAtotal[2] ;
+      if AAtotal[3] = 0
+      then
+        PBdCysApp.Text := ''
+      else
+        PBdCysApp.AsFloat := CUDAA[3] - AAendogene[3] * 100 / AAtotal[3] ;
+      if AAtotal[4] = 0
+      then
+        PBdTrpApp.Text := ''
+      else
+        PBdTrpApp.AsFloat := CUDAA[4] - AAendogene[4] * 100 / AAtotal[4] ;
+      if AAtotal[5] = 0
+      then
+        PBdThrApp.Text := ''
+      else
+        PBdThrApp.AsFloat := CUDAA[5] - AAendogene[5] * 100 / AAtotal[5] ;
+      if AAtotal[6] = 0
+      then
+        PBdPheApp.Text := ''
+      else
+        PBdPheApp.AsFloat := CUDAA[6] - AAendogene[6] * 100 / AAtotal[6] ;
+      if AAtotal[7] = 0
+      then
+        PBdTyrApp.Text := ''
+      else
+        PBdTyrApp.AsFloat := CUDAA[7] - AAendogene[7] * 100 / AAtotal[7] ;
+      if AAtotal[8] = 0
+      then
+        PBdLeuApp.Text := ''
+      else
+        PBdLeuApp.AsFloat := CUDAA[8] - AAendogene[8] * 100 / AAtotal[8] ;
+      if AAtotal[9] = 0
+      then
+        PBdIleApp.Text := ''
+      else
+        PBdIleApp.AsFloat := CUDAA[9] - AAendogene[9] * 100 / AAtotal[9] ;
+      if AAtotal[10] = 0
+      then
+        PBdValApp.Text := ''
+      else
+        PBdValApp.AsFloat := CUDAA[10] - AAendogene[10] * 100 / AAtotal[10] ;
+      if AAtotal[11] = 0
+      then
+        PBdHisApp.Text := ''
+      else
+        PBdHisApp.AsFloat := CUDAA[11] - AAendogene[11] * 100 / AAtotal[11] ;
+      if AAtotal[12] = 0
+      then
+        PBdArgApp.Text := ''
+      else
+        PBdArgApp.AsFloat := CUDAA[12] - AAendogene[12] * 100 / AAtotal[12] ;
+    end
+  else // Teneur digestible
+    if ConfdAA = 0
+    then // g/kg
+      with PAliment^ do
+      begin
+        PBdMATApp.AsFloat := (AAtotal[0] * CUDAA[0] / 100 - AAendogene[0]) * RapMS ;
+        PBdLysApp.AsFloat := (AAtotal[1] * CUDAA[1] / 100 - AAendogene[1]) * RapMS ;
+        PBdMetApp.AsFloat := (AAtotal[2] * CUDAA[2] / 100 - AAendogene[2]) * RapMS ;
+        PBdCysApp.AsFloat := (AAtotal[3] * CUDAA[3] / 100 - AAendogene[3]) * RapMS ;
+        PBdTrpApp.AsFloat := (AAtotal[4] * CUDAA[4] / 100 - AAendogene[4]) * RapMS ;
+        PBdThrApp.AsFloat := (AAtotal[5] * CUDAA[5] / 100 - AAendogene[5]) * RapMS ;
+        PBdPheApp.AsFloat := (AAtotal[6] * CUDAA[6] / 100 - AAendogene[6]) * RapMS ;
+        PBdTyrApp.AsFloat := (AAtotal[7] * CUDAA[7] / 100 - AAendogene[7]) * RapMS ;
+        PBdLeuApp.AsFloat := (AAtotal[8] * CUDAA[8] / 100 - AAendogene[8]) * RapMS ;
+        PBdIleApp.AsFloat := (AAtotal[9] * CUDAA[9] / 100 - AAendogene[9]) * RapMS ;
+        PBdValApp.AsFloat := (AAtotal[10] * CUDAA[10] / 100 - AAendogene[10]) * RapMS ;
+        PBdHisApp.AsFloat := (AAtotal[11] * CUDAA[11] / 100 - AAendogene[11]) * RapMS ;
+        PBdArgApp.AsFloat := (AAtotal[12] * CUDAA[12] / 100 - AAendogene[12]) * RapMS ;
+      end
+    else // %
+      with PAliment^ do
+      begin
+        PBdMATApp.AsFloat := (AAtotal[0] / 1000 * CUDAA[0] - AAendogene[0] * 100 / 1000) * RapMS ;
+        PBdLysApp.AsFloat := (AAtotal[1] / 1000 * CUDAA[1] - AAendogene[1] * 100 / 1000) * RapMS ;
+        PBdMetApp.AsFloat := (AAtotal[2] / 1000 * CUDAA[2] - AAendogene[2] * 100 / 1000) * RapMS ;
+        PBdCysApp.AsFloat := (AAtotal[3] / 1000 * CUDAA[3] - AAendogene[3] * 100 / 1000) * RapMS ;
+        PBdTrpApp.AsFloat := (AAtotal[4] / 1000 * CUDAA[4] - AAendogene[4] * 100 / 1000) * RapMS ;
+        PBdThrApp.AsFloat := (AAtotal[5] / 1000 * CUDAA[5] - AAendogene[5] * 100 / 1000) * RapMS ;
+        PBdPheApp.AsFloat := (AAtotal[6] / 1000 * CUDAA[6] - AAendogene[6] * 100 / 1000) * RapMS ;
+        PBdTyrApp.AsFloat := (AAtotal[7] / 1000 * CUDAA[7] - AAendogene[7] * 100 / 1000) * RapMS ;
+        PBdLeuApp.AsFloat := (AAtotal[8] / 1000 * CUDAA[8] - AAendogene[8] * 100 / 1000) * RapMS ;
+        PBdIleApp.AsFloat := (AAtotal[9] / 1000 * CUDAA[9] - AAendogene[9] * 100 / 1000) * RapMS ;
+        PBdValApp.AsFloat := (AAtotal[10] / 1000 * CUDAA[10] - AAendogene[10] * 100 / 1000) * RapMS ;
+        PBdHisApp.AsFloat := (AAtotal[11] / 1000 * CUDAA[11] - AAendogene[11] * 100 / 1000) * RapMS ;
+        PBdArgApp.AsFloat := (AAtotal[12] / 1000 * CUDAA[12] - AAendogene[12] * 100 / 1000) * RapMS ;
+      end ;
+  // Prot�ine id�ale standardis�e
+  PBProtLysStd.AsFloat := 100 ;
+  if (PAliment.AAtotal[1] = 0) or (PAliment.CUDAA[1] = 0)
+  then
+  begin
+    PBProtMetStd.Text := '' ;
+    PBProtCysStd.Text := '' ;
+    PBProtTrpStd.Text := '' ;
+    PBProtThrStd.Text := '' ;
+    PBProtPheStd.Text := '' ;
+    PBProtTyrStd.Text := '' ;
+    PBProtLeuStd.Text := '' ;
+    PBProtIleStd.Text := '' ;
+    PBProtValStd.Text := '' ;
+    PBProtHisStd.Text := '' ;
+    PBProtArgStd.Text := '' ;
+  end
+  else
+    with PAliment^ do
+    begin
+      PBProtMetStd.AsFloat := (AAtotal[2] * CUDAA[2]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtCysStd.AsFloat := (AAtotal[3] * CUDAA[3]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtTrpStd.AsFloat := (AAtotal[4] * CUDAA[4]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtThrStd.AsFloat := (AAtotal[5] * CUDAA[5]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtPheStd.AsFloat := (AAtotal[6] * CUDAA[6]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtTyrStd.AsFloat := (AAtotal[7] * CUDAA[7]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtLeuStd.AsFloat := (AAtotal[8] * CUDAA[8]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtIleStd.AsFloat := (AAtotal[9] * CUDAA[9]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtValStd.AsFloat := (AAtotal[10] * CUDAA[10]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtHisStd.AsFloat := (AAtotal[11] * CUDAA[11]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtArgStd.AsFloat := (AAtotal[12] * CUDAA[12]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+    end ;
+  // Prot�ine id�ale totale
+  PBProtLysTot.AsFloat := 100 ;
+  if (PAliment.AAtotal[1] = 0) or (PAliment.CUDAA[1] = 0)
+  then
+  begin
+    PBProtMetTot.Text := '' ;
+    PBProtCysTot.Text := '' ;
+    PBProtTrpTot.Text := '' ;
+    PBProtThrTot.Text := '' ;
+    PBProtPheTot.Text := '' ;
+    PBProtTyrTot.Text := '' ;
+    PBProtLeuTot.Text := '' ;
+    PBProtIleTot.Text := '' ;
+    PBProtValTot.Text := '' ;
+    PBProtHisTot.Text := '' ;
+    PBProtArgTot.Text := '' ;
+  end
+  else
+    with PAliment^ do
+    begin
+      PBProtMetTot.AsFloat := AAtotal[2] / AAtotal[1] * 100 ;
+      PBProtCysTot.AsFloat := AAtotal[3] / AAtotal[1] * 100 ;
+      PBProtTrpTot.AsFloat := AAtotal[4] / AAtotal[1] * 100 ;
+      PBProtThrTot.AsFloat := AAtotal[5] / AAtotal[1] * 100 ;
+      PBProtPheTot.AsFloat := AAtotal[6] / AAtotal[1] * 100 ;
+      PBProtTyrTot.AsFloat := AAtotal[7] / AAtotal[1] * 100 ;
+      PBProtLeuTot.AsFloat := AAtotal[8] / AAtotal[1] * 100 ;
+      PBProtIleTot.AsFloat := AAtotal[9] / AAtotal[1] * 100 ;
+      PBProtValTot.AsFloat := AAtotal[10] / AAtotal[1] * 100 ;
+      PBProtHisTot.AsFloat := AAtotal[11] / AAtotal[1] * 100 ;
+      PBProtArgTot.AsFloat := AAtotal[12] / AAtotal[1] * 100 ;
+    end ;
+  // met + cys
+  PBTMetCys.AsFloat := PBTMet.AsFloat + PBTCys.AsFloat ;
+  if ConfDig = 0
+  then // CUD
+    if PBTMetCys.AsFloat = 0
+    then
+    begin
+      PBdMetCysStd.Text := '' ;
+      PBdMetCysApp.Text := '' ;
+    end
+    else
+    begin
+      PBdMetCysStd.AsFloat := (PBTMet.AsFloat * PBdMetStd.AsFloat + PBTCys.AsFloat * PBdCysStd.AsFloat) / PBTMetCys.AsFloat ;
+      PBdMetCysApp.AsFloat := (PBTMet.AsFloat * PBdMetApp.AsFloat + PBTCys.AsFloat * PBdCysApp.AsFloat) / PBTMetCys.AsFloat ;
+    end
+  else // Teneur digestible
+  begin
+    PBdMetCysStd.AsFloat := PBdMetStd.AsFloat + PBdCysStd.AsFloat ;
+    PBdMetCysApp.AsFloat := PBdMetApp.AsFloat + PBdCysApp.AsFloat ;
+  end ;
+  if (PAliment.AAtotal[1] = 0) or (PAliment.CUDAA[1] = 0)
+  then
+  begin
+    PBProtMetCysStd.Text := '' ;
+    PBProtMetCysTot.Text := '' ;
+  end
+  else
+  begin
+    PBProtMetCysStd.AsFloat := PBProtMetStd.AsFloat + PBProtCysStd.AsFloat ;
+    PBProtMetCysTot.AsFloat := PBProtMetTot.AsFloat + PBProtCysTot.AsFloat ;
+  end ;
+  // phe + tyr
+  PBTPheTyr.AsFloat := PBTPhe.AsFloat + PBTTyr.AsFloat ;
+  if ConfDig = 0
+  then // CUD
+    if PBTPheTyr.AsFloat = 0
+    then
+    begin
+      PBdPheTyrStd.Text := '' ;
+      PBdPheTyrApp.Text := '' ;
+    end
+    else
+    begin
+      PBdPheTyrStd.AsFloat := (PBTPhe.AsFloat * PBdPheStd.AsFloat + PBTTyr.AsFloat * PBdTyrStd.AsFloat) / PBTPheTyr.AsFloat ;
+      PBdPheTyrApp.AsFloat := (PBTPhe.AsFloat * PBdPheApp.AsFloat + PBTTyr.AsFloat * PBdTyrApp.AsFloat) / PBTPheTyr.AsFloat ;
+    end
+  else // Teneur digestible
+  begin
+    PBdPheTyrStd.AsFloat := PBdPheStd.AsFloat + PBdTyrStd.AsFloat ;
+    PBdPheTyrApp.AsFloat := PBdPheApp.AsFloat + PBdTyrApp.AsFloat ;
+  end ;
+  if (PAliment.AAtotal[1] = 0) or (PAliment.CUDAA[1] = 0)
+  then
+  begin
+    PBProtPheTyrStd.Text := '' ;
+    PBProtPheTyrTot.Text := '' ;
+  end
+  else
+  begin
+    PBProtPheTyrStd.AsFloat := PBProtPheStd.AsFloat + PBProtTyrStd.AsFloat ;
+    PBProtPheTyrTot.AsFloat := PBProtPheTot.AsFloat + PBProtTyrTot.AsFloat ;
+  end ;
+  // trp / AA neutres
+  with PAliment^ do
+    if AAtotal[6] * CUDAA[6] + AAtotal[7] * CUDAA[7] + AAtotal[8] * CUDAA[8] + AAtotal[9] * CUDAA[9] + AAtotal[10] * CUDAA[10] = 0
+    then
+      PBTrpStd.Text := ''
+    else
+      PBTrpStd.AsFloat := AAtotal[4] * CUDAA[4] / (AAtotal[6] * CUDAA[6] + AAtotal[7] * CUDAA[7] + AAtotal[8] * CUDAA[8] + AAtotal[9] * CUDAA[9] + AAtotal[10] * CUDAA[10]) * 100 ;
+  with PAliment^ do
+    if AAtotal[6] + AAtotal[7] + AAtotal[8] + AAtotal[9] + AAtotal[10] = 0
+    then
+      PBTrpTot.Text := ''
+    else
+      PBTrpTot.AsFloat := AAtotal[4] / (AAtotal[6] + AAtotal[7] + AAtotal[8] + AAtotal[9] + AAtotal[10]) * 100 ;
+  // EAA-N / N
+  if (PAliment.AAtotal[0] = 0) or (PAliment.CUDAA[0] = 0)
+  then
+    PBEAAStd.Text := ''
+  else
+    with PAliment^ do
+      PBEAAStd.AsFloat := 14 * (2/146 * AAtotal[1] * CUDAA[1] + 1/149 * AAtotal[2] * CUDAA[2] + 1/121 * AAtotal[3] * CUDAA[3] + 1/119 * AAtotal[5] * CUDAA[5] + 2/204 * AAtotal[4] * CUDAA[4] + 1/131 * AAtotal[9] * CUDAA[9] + 1/131 * AAtotal[8] * CUDAA[8] + 1/117 * AAtotal[10] * CUDAA[10] + 1/165 * AAtotal[6] * CUDAA[6] + 1/181 * AAtotal[7] * CUDAA[7] + 3/155 * AAtotal[11] * CUDAA[11] + 4/174 * AAtotal[12] * CUDAA[12]) / (AAtotal[0] * CUDAA[0] / 6.25) * 100 ;
+  if PAliment.AAtotal[0] = 0
+  then
+    PBEAATot.Text := ''
+  else
+    with PAliment^ do
+      PBEAATot.AsFloat := 14 * (2/146 * AAtotal[1] + 1/149 * AAtotal[2] + 1/121 * AAtotal[3] + 1/119 * AAtotal[5] + 2/204 * AAtotal[4] + 1/131 * AAtotal[9] + 1/131 * AAtotal[8] + 1/117 * AAtotal[10] + 1/165 * AAtotal[6] + 1/181 * AAtotal[7] + 3/155 * AAtotal[11] + 4/174 * AAtotal[12]) / (AAtotal[0] / 6.25) * 100 ;
+end ;
+
+procedure TFAliment.CBAAsLysClick (Sender : TObject) ;
+begin
+  PBTMet.Enabled := not CBAAsLys.Checked ;
+  PBTCys.Enabled := not CBAAsLys.Checked ;
+  PBTTrp.Enabled := not CBAAsLys.Checked ;
+  PBTThr.Enabled := not CBAAsLys.Checked ;
+  PBTPhe.Enabled := not CBAAsLys.Checked ;
+  PBTTyr.Enabled := not CBAAsLys.Checked ;
+  PBTLeu.Enabled := not CBAAsLys.Checked ;
+  PBTIle.Enabled := not CBAAsLys.Checked ;
+  PBTVal.Enabled := not CBAAsLys.Checked ;
+  PBTHis.Enabled := not CBAAsLys.Checked ;
+  PBTArg.Enabled := not CBAAsLys.Checked ;
+end ;
+
+procedure TFAliment.PBTLysChange(Sender: TObject);
+var
+  i : integer ;
+  variation : double ;
+begin
+  if (PBTLys.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Variation de la teneur en lysine
+    with PAliment^ do
+      if AAtotal[1] = 0
+      then
+        variation := 1
+      else
+        case ConfTAA of
+          1 : // %
+            variation := PBTLys.AsFloat / 100 * 1000 / RapMS / AAtotal[1] ;
+          2 : // % MAT
+            variation := PBTLys.AsFloat * CC.MAT / 100 / AAtotal[1] ;
+          else // g/kg
+            variation := PBTLys.AsFloat / RapMS / AAtotal[1] ;
+        end ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[1] := PBTLys.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[1] := PBTLys.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[1] := PBTLys.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if CBAAsLys.Checked
+    then
+    begin
+      // Variation des teneur en acides amin�s (r�gle de trois)
+      with PAliment^ do
+        for i := 2 to 12 do
+          AAtotal[i] := AAtotal[i] * variation ;
+      // Affichage des valeurs
+      AffichTAA ;
+    end ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBTLysExit (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  if (PBTLys.AsFloat = 0) and (PAliment.AAtotal[1] <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PAliment^ do
+      AAtotal[1] := 0 ;
+    Update := TRUE ;
+    if CBAAsLys.Checked
+    then
+    begin
+      // Variation des teneur en acides amin�s (r�gle de trois)
+      with PAliment^ do
+        for i := 2 to 12 do
+          AAtotal[i] := 0 ;
+      // Affichage des valeurs
+      AffichTAA ;
+    end ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end ;
+
+procedure TFAliment.PBTMetChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[2] := PBTMet.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[2] := PBTMet.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[2] := PBTMet.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBTCysChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[3] := PBTCys.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[3] := PBTCys.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[3] := PBTCys.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBTTrpChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[4] := PBTTrp.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[4] := PBTTrp.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[4] := PBTTrp.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBTThrChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[5] := PBTThr.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[5] := PBTThr.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[5] := PBTThr.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBTPheChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[6] := PBTPhe.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[6] := PBTPhe.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[6] := PBTPhe.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBTTyrChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[7] := PBTTyr.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[7] := PBTTyr.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[7] := PBTTyr.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBTLeuChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[8] := PBTLeu.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[8] := PBTLeu.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[8] := PBTLeu.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBTIleChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[9] := PBTIle.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[9] := PBTIle.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[9] := PBTIle.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBTValChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[10] := PBTVal.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[10] := PBTVal.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[10] := PBTVal.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBTHisChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[11] := PBTHis.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[11] := PBTHis.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[11] := PBTHis.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBTArgChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[12] := PBTArg.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[12] := PBTArg.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[12] := PBTArg.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdMATStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[0] := PBdMATStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[0] := PBdMATStd.AsFloat / AATotal[0] * 100 / RapMS
+        else // %
+          CUDAA[0] := PBdMATStd.AsFloat / AATotal[0] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdLysStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[1] := PBdLysStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[1] := PBdLysStd.AsFloat / AATotal[1] * 100 / RapMS
+        else // %
+          CUDAA[1] := PBdLysStd.AsFloat / AATotal[1] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdMetStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[2] := PBdMetStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[2] := PBdMetStd.AsFloat / AATotal[2] * 100 / RapMS
+        else // %
+          CUDAA[2] := PBdMetStd.AsFloat / AATotal[2] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdCysStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[3] := PBdCysStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[3] := PBdCysStd.AsFloat / AATotal[3] * 100 / RapMS
+        else // %
+          CUDAA[3] := PBdCysStd.AsFloat / AATotal[3] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdTrpStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[4] := PBdTrpStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[4] := PBdTrpStd.AsFloat / AATotal[4] * 100 / RapMS
+        else // %
+          CUDAA[4] := PBdTrpStd.AsFloat / AATotal[4] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdThrStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[5] := PBdThrStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[5] := PBdThrStd.AsFloat / AATotal[5] * 100 / RapMS
+        else // %
+          CUDAA[5] := PBdThrStd.AsFloat / AATotal[5] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdPheStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[6] := PBdPheStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[6] := PBdPheStd.AsFloat / AATotal[6] * 100 / RapMS
+        else // %
+          CUDAA[6] := PBdPheStd.AsFloat / AATotal[6] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdTyrStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[7] := PBdTyrStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[7] := PBdTyrStd.AsFloat / AATotal[7] * 100 / RapMS
+        else // %
+          CUDAA[7] := PBdTyrStd.AsFloat / AATotal[7] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdLeuStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[8] := PBdLeuStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[8] := PBdLeuStd.AsFloat / AATotal[8] * 100 / RapMS
+        else // %
+          CUDAA[8] := PBdLeuStd.AsFloat / AATotal[8] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdIleStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[9] := PBdIleStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[9] := PBdIleStd.AsFloat / AATotal[9] * 100 / RapMS
+        else // %
+          CUDAA[9] := PBdIleStd.AsFloat / AATotal[9] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdValStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[10] := PBdValStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[10] := PBdValStd.AsFloat / AATotal[10] * 100 / RapMS
+        else // %
+          CUDAA[10] := PBdValStd.AsFloat / AATotal[10] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdHisStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[11] := PBdHisStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[11] := PBdHisStd.AsFloat / AATotal[11] * 100 / RapMS
+        else // %
+          CUDAA[11] := PBdHisStd.AsFloat / AATotal[11] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFAliment.PBdArgStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[12] := PBdArgStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[12] := PBdArgStd.AsFloat / AATotal[12] * 100 / RapMS
+        else // %
+          CUDAA[12] := PBdArgStd.AsFloat / AATotal[12] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+////////////////////////////////////////////////////////////////////////////////
+// Acides gras
+////////////////////////////////////////////////////////////////////////////////
+
+// Affichage de la teneur en fonction de la configuration
+procedure TFAliment.AffichTAG ;
+begin
+  case ConfTAG of
+    0 : // g/kg
+      with PAliment.CC do
+      begin
+        PBC6C8C10_0.AsFloat := C6C8C10 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC12_0.AsFloat := C12_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC14_0.AsFloat := C14_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC16_0.AsFloat := C16_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC16_1.AsFloat := C16_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC18_0.AsFloat := C18_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC18_1.AsFloat := C18_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC18_2.AsFloat := C18_2 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC18_3.AsFloat := C18_3 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC18_4.AsFloat := C18_4 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC20_0.AsFloat := C20_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC20_1.AsFloat := C20_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC20_4.AsFloat := C20_4 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC20_5.AsFloat := C20_5 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC22_0.AsFloat := C22_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC22_1.AsFloat := C22_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC22_5.AsFloat := C22_5 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC22_6.AsFloat := C22_6 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC24_0.AsFloat := C24_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+      end ;
+    1 : // %
+      with PAliment.CC do
+      begin
+        PBC6C8C10_0.AsFloat := C6C8C10 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC12_0.AsFloat := C12_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC14_0.AsFloat := C14_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC16_0.AsFloat := C16_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC16_1.AsFloat := C16_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC18_0.AsFloat := C18_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC18_1.AsFloat := C18_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC18_2.AsFloat := C18_2 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC18_3.AsFloat := C18_3 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC18_4.AsFloat := C18_4 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC20_0.AsFloat := C20_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC20_1.AsFloat := C20_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC20_4.AsFloat := C20_4 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC20_5.AsFloat := C20_5 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC22_0.AsFloat := C22_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC22_1.AsFloat := C22_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC22_5.AsFloat := C22_5 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC22_6.AsFloat := C22_6 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC24_0.AsFloat := C24_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+      end ;
+    else // % acides gras
+      with PAliment.CC do
+      begin
+        PBC6C8C10_0.AsFloat := C6C8C10 ;
+        PBC12_0.AsFloat := C12_0 ;
+        PBC14_0.AsFloat := C14_0 ;
+        PBC16_0.AsFloat := C16_0 ;
+        PBC16_1.AsFloat := C16_1 ;
+        PBC18_0.AsFloat := C18_0 ;
+        PBC18_1.AsFloat := C18_1 ;
+        PBC18_2.AsFloat := C18_2 ;
+        PBC18_3.AsFloat := C18_3 ;
+        PBC18_4.AsFloat := C18_4 ;
+        PBC20_0.AsFloat := C20_0 ;
+        PBC20_1.AsFloat := C20_1 ;
+        PBC20_4.AsFloat := C20_4 ;
+        PBC20_5.AsFloat := C20_5 ;
+        PBC22_0.AsFloat := C22_0 ;
+        PBC22_1.AsFloat := C22_1 ;
+        PBC22_5.AsFloat := C22_5 ;
+        PBC22_6.AsFloat := C22_6 ;
+        PBC24_0.AsFloat := C24_0 ;
+      end ;
+  end ;
+end ;
+
+procedure TFAliment.CalculAG ;
+var
+  Omega3, Omega6 : double ;
+begin
+  // Teneurs totales
+  PBC6C8C10_tot.AsFloat := PBC6C8C10_0.AsFloat ;
+  PBC12_tot.AsFloat := PBC12_0.AsFloat ;
+  PBC14_tot.AsFloat := PBC14_0.AsFloat ;
+  PBC16_tot.AsFloat := PBC16_0.AsFloat + PBC16_1.AsFloat ;
+  PBC18_tot.AsFloat := PBC18_0.AsFloat + PBC18_1.AsFloat + PBC18_2.AsFloat + PBC18_3.AsFloat + PBC18_4.AsFloat ;
+  PBC20_tot.AsFloat := PBC20_0.AsFloat + PBC20_1.AsFloat + PBC20_4.AsFloat + PBC20_5.AsFloat ;
+  PBC22_tot.AsFloat := PBC22_0.AsFloat + PBC22_1.AsFloat + PBC22_5.AsFloat + PBC22_6.AsFloat ;
+  PBC24_tot.AsFloat := PBC24_0.AsFloat ;
+  PBCtot_tot.AsFloat := PBC6C8C10_tot.AsFloat + PBC12_tot.AsFloat + PBC14_tot.AsFloat + PBC16_tot.AsFloat + PBC18_tot.AsFloat + PBC20_tot.AsFloat + PBC22_tot.AsFloat + PBC24_tot.AsFloat ;
+  PBCtot_0.AsFloat := PBC6C8C10_0.AsFloat + PBC12_0.AsFloat + PBC14_0.AsFloat + PBC16_0.AsFloat + PBC18_0.AsFloat + PBC20_0.AsFloat + PBC22_0.AsFloat + PBC24_0.AsFloat ;
+  PBCtot_1.AsFloat := PBC16_1.AsFloat + PBC18_1.AsFloat + PBC20_1.AsFloat + PBC22_1.AsFloat ;
+  PBCtot_2.AsFloat := PBC18_2.AsFloat ;
+  PBCtot_3.AsFloat := PBC18_3.AsFloat ;
+  PBCtot_4.AsFloat := PBC18_4.AsFloat + PBC20_4.AsFloat ;
+  PBCtot_5.AsFloat := PBC20_5.AsFloat + PBC22_5.AsFloat ;
+  PBCtot_6.AsFloat := PBC22_6.AsFloat ;
+  // Acides gras satur�s
+  if PBCtot_tot.AsFloat = 0
+  then
+    PBSatur.Text := ''
+  else
+    PBSatur.AsFloat := PBCtot_0.AsFloat / PBCtot_tot.AsFloat * 100 ;
+  // Acides gras mono-insatur�s
+  if PBCtot_tot.AsFloat = 0
+  then
+    PBMono.Text := ''
+  else
+    PBMono.AsFloat := PBCtot_1.AsFloat / PBCtot_tot.AsFloat * 100 ;
+  // Acides gras poly-insatur�s
+  PBPoly.AsFloat := 100 - (PBSatur.AsFloat + PBMono.AsFloat) ;
+  // Omega-6 / Omega-3
+  Omega3 := PBC18_3.AsFloat + PBC18_4.AsFloat + PBC20_5.AsFloat + PBC22_5.AsFloat + PBC22_6.AsFloat ;
+  Omega6 := PBC18_2.AsFloat + PBC20_4.AsFloat ;
+  if Omega3 = 0
+  then
+    PBO6sO3.Text := 'infini'
+  else
+    PBO6sO3.AsFloat := Omega6 / Omega3 ;
+end ;
+
+procedure TFAliment.PBAGChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    PAliment.CC.AGsLip := PBAG.AsFloat ;
+    Update := TRUE ;
+    // R�affichage des teneurs en acides gras (si besoin)
+    case ConfTAG of
+      0 : // g/kg
+        with PAliment.CC do
+        begin
+          PBC6C8C10_0.AsFloat := C6C8C10 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC12_0.AsFloat := C12_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC14_0.AsFloat := C14_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC16_0.AsFloat := C16_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC16_1.AsFloat := C16_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC18_0.AsFloat := C18_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC18_1.AsFloat := C18_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC18_2.AsFloat := C18_2 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC18_3.AsFloat := C18_3 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC18_4.AsFloat := C18_4 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC20_0.AsFloat := C20_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC20_1.AsFloat := C20_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC20_4.AsFloat := C20_4 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC20_5.AsFloat := C20_5 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC22_0.AsFloat := C22_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC22_1.AsFloat := C22_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC22_5.AsFloat := C22_5 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC22_6.AsFloat := C22_6 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC24_0.AsFloat := C24_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        end ;
+      1 : // %
+        with PAliment.CC do
+        begin
+          PBC6C8C10_0.AsFloat := C6C8C10 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC12_0.AsFloat := C12_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC14_0.AsFloat := C14_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC16_0.AsFloat := C16_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC16_1.AsFloat := C16_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC18_0.AsFloat := C18_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC18_1.AsFloat := C18_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC18_2.AsFloat := C18_2 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC18_3.AsFloat := C18_3 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC18_4.AsFloat := C18_4 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC20_0.AsFloat := C20_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC20_1.AsFloat := C20_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC20_4.AsFloat := C20_4 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC20_5.AsFloat := C20_5 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC22_0.AsFloat := C22_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC22_1.AsFloat := C22_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC22_5.AsFloat := C22_5 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC22_6.AsFloat := C22_6 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC24_0.AsFloat := C24_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        end ;
+    end ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC6C8C10_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C6C8C10 := 0
+          else
+            C6C8C10 := PBC6C8C10_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C6C8C10 := 0
+          else
+            C6C8C10 := PBC6C8C10_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C6C8C10 := PBC6C8C10_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC12_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C12_0 := 0
+          else
+            C12_0 := PBC12_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C12_0 := 0
+          else
+            C12_0 := PBC12_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C12_0 := PBC12_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC14_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C14_0 := 0
+          else
+            C14_0 := PBC14_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C14_0 := 0
+          else
+            C14_0 := PBC14_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C14_0 := PBC14_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC16_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C16_0 := 0
+          else
+            C16_0 := PBC16_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C16_0 := 0
+          else
+            C16_0 := PBC16_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C16_0 := PBC16_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC16_1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C16_1 := 0
+          else
+            C16_1 := PBC16_1.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C16_1 := 0
+          else
+            C16_1 := PBC16_1.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C16_1 := PBC16_1.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC18_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_0 := 0
+          else
+            C18_0 := PBC18_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_0 := 0
+          else
+            C18_0 := PBC18_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C18_0 := PBC18_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC18_1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_1 := 0
+          else
+            C18_1 := PBC18_1.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_1 := 0
+          else
+            C18_1 := PBC18_1.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C18_1 := PBC18_1.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC18_2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_2 := 0
+          else
+            C18_2 := PBC18_2.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_2 := 0
+          else
+            C18_2 := PBC18_2.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C18_2 := PBC18_2.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC18_3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_3 := 0
+          else
+            C18_3 := PBC18_3.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_3 := 0
+          else
+            C18_3 := PBC18_3.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C18_3 := PBC18_3.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC18_4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_4 := 0
+          else
+            C18_4 := PBC18_4.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_4 := 0
+          else
+            C18_4 := PBC18_4.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C18_4 := PBC18_4.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC20_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_0 := 0
+          else
+            C20_0 := PBC20_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_0 := 0
+          else
+            C20_0 := PBC20_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C20_0 := PBC20_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC20_1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_1 := 0
+          else
+            C20_1 := PBC20_1.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_1 := 0
+          else
+            C20_1 := PBC20_1.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C20_1 := PBC20_1.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC20_4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_4 := 0
+          else
+            C20_4 := PBC20_4.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_4 := 0
+          else
+            C20_4 := PBC20_4.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C20_4 := PBC20_4.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC20_5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_5 := 0
+          else
+            C20_5 := PBC20_5.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_5 := 0
+          else
+            C20_5 := PBC20_5.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C20_5 := PBC20_5.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC22_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_0 := 0
+          else
+            C22_0 := PBC22_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_0 := 0
+          else
+            C22_0 := PBC22_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C22_0 := PBC22_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC22_1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_1 := 0
+          else
+            C22_1 := PBC22_1.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_1 := 0
+          else
+            C22_1 := PBC22_1.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C22_1 := PBC22_1.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC22_5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_5 := 0
+          else
+            C22_5 := PBC22_5.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_5 := 0
+          else
+            C22_5 := PBC22_5.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C22_5 := PBC22_5.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC22_6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_6 := 0
+          else
+            C22_6 := PBC22_6.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_6 := 0
+          else
+            C22_6 := PBC22_6.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C22_6 := PBC22_6.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFAliment.PBC24_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C24_0 := 0
+          else
+            C24_0 := PBC24_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C24_0 := 0
+          else
+            C24_0 := PBC24_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C24_0 := PBC24_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+////////////////////////////////////////////////////////////////////////////////
+// Min�raux
+////////////////////////////////////////////////////////////////////////////////
+
+// Affichage de la teneur en fonction de la configuration
+procedure TFAliment.AffichTMineraux;
+begin
+  // Macro-�l�ments
+  if ConfTMacro = 0
+  then // g/kg
+    with PAliment.CC do
+    begin
+      PBCa.AsFloat := Ca * RapMS;
+      PBP.AsFloat := P * RapMS;
+      PBNa.AsFloat := Na * RapMS;
+      PBK.AsFloat := K * RapMS;
+      PBMg.AsFloat := Mg * RapMS;
+      PBCl.AsFloat := Cl * RapMS;
+      PBS.AsFloat := S * RapMS;
+    end
+  else // %
+    with PAliment.CC do
+    begin
+      PBCa.AsFloat := Ca / 1000 * 100 * RapMS;
+      PBP.AsFloat := P / 1000 * 100 * RapMS;
+      PBNa.AsFloat := Na / 1000 * 100 * RapMS;
+      PBK.AsFloat := K / 1000 * 100 * RapMS;
+      PBMg.AsFloat := Mg / 1000 * 100 * RapMS;
+      PBCl.AsFloat := Cl / 1000 * 100 * RapMS;
+      PBS.AsFloat := S / 1000 * 100 * RapMS;
+    end ;
+  // Oligo-�l�ments
+  if ConfTOligo = 0
+  then // mg/kg
+    with PAliment.CC do
+    begin
+      PBCu.AsFloat := Cu * RapMS;
+      PBZn.AsFloat := Zn * RapMS;
+      PBMn.AsFloat := Mn * RapMS;
+      PBFe.AsFloat := Fe * RapMS;
+      PBSe.AsFloat := Se * RapMS;
+      PBCo.AsFloat := Co * RapMS;
+      PBMb.AsFloat := Mb * RapMS;
+      PBI.AsFloat := I * RapMS;
+    end
+  else // %
+    with PAliment.CC do
+    begin
+      PBCu.AsFloat := Cu / 1000000 * 100 * RapMS;
+      PBZn.AsFloat := Zn / 1000000 * 100 * RapMS;
+      PBMn.AsFloat := Mn / 1000000 * 100 * RapMS;
+      PBFe.AsFloat := Fe / 1000000 * 100 * RapMS;
+      PBSe.AsFloat := Se / 1000000 * 100 * RapMS;
+      PBCo.AsFloat := Co / 1000000 * 100 * RapMS;
+      PBMb.AsFloat := Mb / 1000000 * 100 * RapMS;
+      PBI.AsFloat := I / 1000000 * 100 * RapMS;
+    end ;
+  // Phosphore
+  PBPtot.AsFloat := PBP.AsFloat;
+  if ConfTMacro = 0
+  then // g/kg
+    with PAliment.CC do
+    begin
+      PBPdigG.AsFloat := PdigG * RapMS;
+      PBPdigF.AsFloat := PdigF * RapMS;
+    end
+  else // %
+    with PAliment.CC do
+    begin
+      PBPdigG.AsFloat := PdigG / 1000 * 100 * RapMS;
+      PBPdigF.AsFloat := PdigF / 1000 * 100 * RapMS;
+    end;
+  with PAliment.CC do
+  begin
+    PBPhytase.AsFloat := Phytase;
+    PBActPhytE.AsFloat := ActPhytE * RapMS;
+    PBActPhytM.AsFloat := ActPhytM * RapMS;
+  end;
+end;
+
+procedure TFAliment.CalculMineraux;
+begin
+  // Ca / P
+  if PAliment.CC.P = 0
+  then
+    PBCasP.Text := 'infini'
+  else
+    with PAliment.CC do
+      PBCasP.AsFloat := Ca / P;
+  // Bilan cations-anions
+  with PAliment.CC do
+    PBBilanCA.AsFloat := 1000 * (K / 39 + Na / 23 - Cl / 35.5 - S / 16);
+  // Bilan �lectrolytique
+  with PAliment.CC do
+    PBBilanE.AsFloat := 1000 * (K / 39 + Na / 23 - Cl / 35.5);
+end;
+
+procedure TFAliment.PBCaChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        Ca := PBCa.AsFloat / RapMS
+      else // %
+        Ca := PBCa.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFAliment.PBPChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        P := PBP.AsFloat / RapMS
+      else // %
+        P := PBP.AsFloat * 1000 / 100 / RapMS ;
+    PBPtot.AsFloat := PBP.AsFloat;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFAliment.PBNaChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        Na := PBNa.AsFloat / RapMS
+      else // %
+        Na := PBNa.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFAliment.PBKChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        K := PBK.AsFloat / RapMS
+      else // %
+        K := PBK.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFAliment.PBMgChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        Mg := PBMg.AsFloat / RapMS
+      else // %
+        Mg := PBMg.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBClChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        Cl := PBCl.AsFloat / RapMS
+      else // %
+        Cl := PBCl.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFAliment.PBSChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        S := PBS.AsFloat / RapMS
+      else // %
+        S := PBS.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFAliment.PBCuChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Cu := PBCu.AsFloat / RapMS
+      else // %
+        Cu := PBCu.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBZnChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Zn := PBZn.AsFloat / RapMS
+      else // %
+        Zn := PBZn.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBMnChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Mn := PBMn.AsFloat / RapMS
+      else // %
+        Mn := PBMn.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBFeChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Fe := PBFe.AsFloat / RapMS
+      else // %
+        Fe := PBFe.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBSeChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Se := PBSe.AsFloat / RapMS
+      else // %
+        Se := PBSe.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBCoChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Co := PBCo.AsFloat / RapMS
+      else // %
+        Co := PBCo.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBMbChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Mb := PBMb.AsFloat / RapMS
+      else // %
+        Mb := PBMb.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBIChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        I := PBI.AsFloat / RapMS
+      else // %
+        I := PBI.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBPdigGChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        PdigG := PBPdigG.AsFloat / RapMS
+      else // %
+        PdigG := PBPdigG.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBPdigFChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        PdigF := PBPdigF.AsFloat / RapMS
+      else // %
+        PdigF := PBPdigF.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBPhytaseChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      Phytase := PBPhytase.AsFloat ;
+  end ;
+end ;
+
+procedure TFAliment.PBActPhytEChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      ActPhytE := PBActPhytE.AsFloat / RapMS ;
+  end ;
+end ;
+
+procedure TFAliment.PBActPhytMChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      ActPhytM := PBActPhytM.AsFloat / RapMS ;
+  end ;
+end ;
+
+////////////////////////////////////////////////////////////////////////////////
+// Fibres
+////////////////////////////////////////////////////////////////////////////////
+
+// Affichage de la teneur en fonction de la configuration
+procedure TFAliment.AffichTFibres ;
+begin
+  if ConfTFibres = 0
+  then // g/kg
+    with PAliment.CC do
+    begin
+      PBCB.AsFloat := CB * RapMS ;
+      PBNDF.AsFloat := NDF * RapMS ;
+      PBADF.AsFloat := ADF * RapMS ;
+      PBADL.AsFloat := ADL * RapMS ;
+      PBParois.AsFloat := Parois * RapMS ;
+    end
+  else // %
+    with PAliment.CC do
+    begin
+      PBCB.AsFloat := CB / 1000 * 100 * RapMS ;
+      PBNDF.AsFloat := NDF / 1000 * 100 * RapMS ;
+      PBADF.AsFloat := ADF / 1000 * 100 * RapMS ;
+      PBADL.AsFloat := ADL / 1000 * 100 * RapMS ;
+      PBParois.AsFloat := Parois / 1000 * 100 * RapMS ;
+    end ;
+end ;
+
+procedure TFAliment.PBCBChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTFibres = 0
+      then // g/kg
+        CB := PBCB.AsFloat / RapMS
+      else // %
+        CB := PBCB.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculResidu ;
+    AffichResidu ;
+  end ;
+end ;
+
+procedure TFAliment.PBNDFChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTFibres = 0
+      then // g/kg
+        NDF := PBNDF.AsFloat / RapMS
+      else // %
+        NDF := PBNDF.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end;
+
+procedure TFAliment.PBADFChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTFibres = 0
+      then // g/kg
+        ADF := PBADF.AsFloat / RapMS
+      else // %
+        ADF := PBADF.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end;
+
+procedure TFAliment.PBADLChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTFibres = 0
+      then // g/kg
+        ADL := PBADL.AsFloat / RapMS
+      else // %
+        ADL := PBADL.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end;
+
+procedure TFAliment.PBParoisChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.CC do
+      if ConfTFibres = 0
+      then // g/kg
+        Parois := PBParois.AsFloat / RapMS
+      else // %
+        Parois := PBParois.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end;
+
+////////////////////////////////////////////////////////////////////////////////
+// Mati�res premi�res
+////////////////////////////////////////////////////////////////////////////////
+
+procedure TFAliment.CBTypeChange (Sender : TObject) ;
+begin
+  StringsMatiere (LBGauche.Items, CBType.ItemIndex, FALSE, TRUE) ;
+  LBGaucheClick (nil) ;
+end ;
+
+procedure TFAliment.SBMoinsClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  if LBDroite.ItemIndex = -1
+  then
+    Exit ;
+  Modified := TRUE ;
+  with PAliment.MP do
+  begin
+    // Total = Total - Quantit�
+    PBTotal.AsFloat := PBTotal.AsFloat - Qte[LBDroite.ItemIndex] ;
+    Dec (NbMat) ;
+    if LBDroite.ItemIndex < NbMat
+    then
+      // D�calage des �l�ments suivants vers le bas
+      for i := LBDroite.ItemIndex to NbMat - 1 do
+      begin
+        NumMat[i] := NumMat[i + 1] ;
+        Qte[i] := Qte[i + 1] ;
+        MS[i] := MS[i + 1] ;
+      end ;
+    // Effacement du dernier �l�ment
+    NumMat[NbMat] := 0 ;
+    Qte[NbMat] := 0 ;
+    MS[NbMat] := 0 ;
+  end ;
+  LBDroite.DeleteSelected ;
+  LBDroiteClick (nil) ;
+  if PAliment.MP.NbMat = 0
+  then
+  begin
+    SBMoins.Enabled := FALSE ;
+    BBGraph.Enabled := FALSE ;
+    BBCalcul.Enabled := FALSE ;
+  end ;
+  SBPlus.Enabled := TRUE ;
+  VerifyMP ;
+end ;
+
+procedure TFAliment.SBPlusClick (Sender : TObject) ;
+begin
+  if LBGauche.ItemIndex = -1
+  then
+    Exit ;
+  Modified := TRUE ;
+  PMatiere := ListMatiere[FindIdxMatiere (LBGauche.Items[LBGauche.ItemIndex])] ;
+  with PAliment.MP do
+  begin
+    NumMat[NbMat] := PMatiere.Num ;
+    Qte[NbMat] := 0 ;
+    MS[NbMat] := PMatiere.CC.MS ;
+    Inc (NbMat) ;
+  end ;
+  LBDroite.Items.Add (LBGauche.Items[LBGauche.ItemIndex]) ;
+  LBDroite.ItemIndex := LBDroite.Count - 1 ;
+  LBDroiteClick (nil) ;
+  SBMoins.Enabled := TRUE ;
+  BBGraph.Enabled := TRUE ;
+  BBCalcul.Enabled := TRUE ;
+  if PAliment.MP.NbMat > MAX_MP
+  then
+    SBPlus.Enabled := FALSE ;
+  ActiveControl := PBQte ;
+end ;
+
+procedure TFAliment.SBReplaceClick(Sender: TObject);
+begin
+  if (LBGauche.ItemIndex = -1) or (LBDroite.ItemIndex = -1)
+  then
+    Exit ;
+  Modified := TRUE ;
+  PMatiere := ListMatiere[FindIdxMatiere (LBGauche.Items[LBGauche.ItemIndex])] ;
+  with PAliment.MP do
+  begin
+    NumMat[LBDroite.ItemIndex] := PMatiere.Num ;
+    MS[LBDroite.ItemIndex] := PMatiere.CC.MS ;
+  end ;
+  LBDroite.Items[LBDroite.ItemIndex] := LBGauche.Items[LBGauche.ItemIndex] ;
+  LBDroiteClick (nil) ;
+  ActiveControl := PBQte ;
+  VerifyMP ;
+end;
+
+procedure TFAliment.LBGaucheClick (Sender : TObject) ;
+begin
+  if LBGauche.ItemIndex = -1
+  then
+  begin
+    PBMSG.Text := '' ;
+    PBMATG.Text := '' ;
+    PBdLysG.Text := '' ;
+    PBEDG.Text := '' ;
+    PBEMG.Text := '' ;
+    PBENG.Text := '' ;
+  end
+  else
+  begin
+    PMatiere := ListMatiere[FindIdxMatiere (LBGauche.Items[LBGauche.ItemIndex])] ;
+    // Informations
+    PBMSG.AsFloat := PMatiere.CC.MS ;
+    PBMATG.AsFloat := PMatiere.CC.MAT * PMatiere.CC.MS / 1000 ;
+    PBdLysG.AsFloat := PMatiere.AAtotal[1] * PMatiere.CUDAA[1] / 100 * PMatiere.CC.MS / 1000 ;
+    case PAliment.Typ of
+      1 : // Porc croissance
+      begin
+        PBEDG.AsFloat := PMatiere.CC.ED_C * PMatiere.CC.MS / 1000 ;
+        PBEMG.AsFloat := PMatiere.CC.EM_C * PMatiere.CC.MS / 1000 ;
+        PBENG.AsFloat := PMatiere.CC.EN_C * PMatiere.CC.MS / 1000 ;
+      end ;
+      2 : // Truie reproductrice
+      begin
+        PBEDG.AsFloat := PMatiere.CC.ED_T * PMatiere.CC.MS / 1000 ;
+        PBEMG.AsFloat := PMatiere.CC.EM_T * PMatiere.CC.MS / 1000 ;
+        PBENG.AsFloat := PMatiere.CC.EN_T * PMatiere.CC.MS / 1000 ;
+      end ;
+      else
+      begin
+        PBEDG.Text := '' ;
+        PBEMG.Text := '' ;
+        PBENG.Text := '' ;
+      end ;
+    end ;
+//    if (LBDroite.ItemIndex <> -1) and (LBDroite.Items[LBDroite.ItemIndex] <> LBGauche.Items[LBGauche.ItemIndex])
+//    then
+//    begin
+//      LBDroite.ItemIndex := -1 ;
+//      LBDroiteClick (nil) ;
+//    end ;
+  end ;
+end ;
+
+procedure TFAliment.LBGaucheDblClick (Sender : TObject) ;
+begin
+  SBPlusClick (nil) ;
+end ;
+
+procedure TFAliment.LBDroiteClick (Sender : TObject) ;
+begin
+  if LBDroite.ItemIndex = -1
+  then
+  begin
+    PBQte.Enabled := FALSE ;
+    PBMSD.Enabled := FALSE ;
+    Update := TRUE ;
+    PBQte.Text := '' ;
+    PBMSD.Text := '' ;
+    Update := FALSE ;
+  end
+  else
+  begin
+    PBMSD.Enabled := TRUE ;
+    PBQte.Enabled := TRUE ;
+    Update := TRUE ;
+    PBQte.AsFloat := PAliment.MP.Qte[LBDroite.ItemIndex] ;
+    PBMSD.AsFloat := PAliment.MP.MS[LBDroite.ItemIndex] ;
+    Update := FALSE ;
+    LBGauche.ItemIndex := LBGauche.Items.IndexOf (LBDroite.Items[LBDroite.ItemIndex]) ;
+    LBGaucheClick (nil) ;
+    ActiveControl := PBQte ;
+    PBQte.SelectAll ;
+  end ;
+end ;
+
+procedure TFAliment.LBDroiteDblClick (Sender : TObject) ;
+begin
+  SBMoinsClick (nil) ;
+end ;
+
+procedure TFAliment.LBDroiteDrawItem (Control : TWinControl ; Index : Integer ;
+  Rect : TRect ; State : TOwnerDrawState) ;
+begin
+  with (Control as TListBox).Canvas do
+  begin
+    // Cadre principal
+    FillRect (Rect) ;
+    // Nom
+    SetTextAlign (Handle, TA_LEFT) ;
+    TextRect (Rect, Rect.Left + 2, Rect.Top, LBDroite.Items[Index]) ;
+    // Quantit�
+    Rect.Left := 216 ;
+    if (LBDroite.Items.Count > 20)
+    then
+      Rect.Right := Rect.Right - 1
+    else
+      // L'ascensseur fait 17 pixels
+      Rect.Right := Rect.Right - 18 ;
+    SetTextAlign (Handle, TA_RIGHT) ;
+    TextRect (Rect, Rect.Right - 2, Rect.Top, Format ('%7.3f', [PAliment.MP.Qte[Index]])) ;
+  end ;
+end ;
+
+procedure TFAliment.SBHautClick (Sender : TObject) ;
+var
+  BakNumMat, OldPos : integer ;
+  BakQte, BakMS : double ;
+begin
+  if LBDroite.ItemIndex = -1
+  then
+    Exit ;
+  if LBDroite.ItemIndex > 0
+  then
+  begin
+    OldPos := LBDroite.ItemIndex;
+    Modified := TRUE ;
+    with PAliment.MP do
+    begin
+      BakNumMat := NumMat[LBDroite.ItemIndex] ;
+      BakQte := Qte[LBDroite.ItemIndex] ;
+      BakMS := MS[LBDroite.ItemIndex] ;
+      NumMat[LBDroite.ItemIndex] := NumMat[LBDroite.ItemIndex - 1] ;
+      Qte[LBDroite.ItemIndex] := Qte[LBDroite.ItemIndex - 1] ;
+      MS[LBDroite.ItemIndex] := MS[LBDroite.ItemIndex - 1] ;
+      NumMat[LBDroite.ItemIndex - 1] := BakNumMat ;
+      Qte[LBDroite.ItemIndex - 1] := BakQte ;
+      MS[LBDroite.ItemIndex - 1] := BakMS ;
+    end ;
+    LBDroite.Items.Move (LBDroite.ItemIndex, LBDroite.ItemIndex - 1) ;
+//    LBDroite.ItemIndex := LBDroite.ItemIndex - 1 ;
+    LBDroite.ItemIndex := OldPos - 1;
+    LBDroiteClick (nil) ;
+  end
+  else
+    MessageBeep (0) ;
+end ;
+
+procedure TFAliment.SBBasClick (Sender : TObject) ;
+var
+  BakNumMat, OldPos : integer ;
+  BakQte, BakMS : double ;
+begin
+  if LBDroite.ItemIndex = -1
+  then
+    Exit ;
+  if LBDroite.ItemIndex < PAliment.MP.NbMat - 1
+  then
+  begin
+    OldPos := LBDroite.ItemIndex;
+    Modified := TRUE ;
+    with PAliment.MP do
+    begin
+      BakNumMat := NumMat[LBDroite.ItemIndex] ;
+      BakQte := Qte[LBDroite.ItemIndex] ;
+      BakMS := MS[LBDroite.ItemIndex] ;
+      NumMat[LBDroite.ItemIndex] := NumMat[LBDroite.ItemIndex + 1] ;
+      Qte[LBDroite.ItemIndex] := Qte[LBDroite.ItemIndex + 1] ;
+      MS[LBDroite.ItemIndex] := MS[LBDroite.ItemIndex + 1] ;
+      NumMat[LBDroite.ItemIndex + 1] := BakNumMat ;
+      Qte[LBDroite.ItemIndex + 1] := BakQte ;
+      MS[LBDroite.ItemIndex + 1] := BakMS ;
+    end ;
+    LBDroite.Items.Move (LBDroite.ItemIndex, LBDroite.ItemIndex + 1) ;
+//    LBDroite.ItemIndex := LBDroite.ItemIndex + 1 ;
+    LBDroite.ItemIndex := OldPos + 1;
+    LBDroiteClick (nil) ;
+  end
+  else
+    MessageBeep (0) ;
+end ;
+
+procedure TFAliment.SBSortQteClick(Sender: TObject);
+var
+  i, OldPos, NewPos : integer ;
+begin
+  if PAliment.MP.NbMat = 0
+  then
+    Exit ;
+  with JvSGSort do
+  begin
+    OldPos := LBDroite.ItemIndex;
+    Clear ;
+    RowCount := PAliment.MP.NbMat ;
+    Height := RowCount * DefaultRowHeight + RowCount + 1 ;
+    for i := 0 to RowCount - 1 do
+    begin
+      Cells[0, i] := IntToStr (i) ;
+      Cells[1, i] := IntToStr (PAliment.MP.NumMat[i]) ;
+      Cells[2, i] := LBDroite.Items[i] ;
+      Cells[3, i] := FloatToStr (PAliment.MP.Qte[i]) ;
+      Cells[4, i] := FloatToStr (PAliment.MP.MS[i]) ;
+    end ;
+    SortGrid(3, FALSE, FALSE, stNumeric, TRUE) ;
+    Modified := TRUE ;
+    LBDroite.Items.Clear ;
+    NewPos := -1;
+    for i := 0 to RowCount - 1 do
+    begin
+      PAliment.MP.NumMat[i] := StrToInt (Cells[1, i]) ;
+      PAliment.MP.Qte[i] := StrToFloat (Cells[3, i]) ;
+      PAliment.MP.MS[i] := StrToFloat (Cells[4, i]) ;
+      LBDroite.Items.Add (Cells[2, i]) ;
+      if StrToInt(Cells[0, i]) = OldPos then NewPos := i;
+    end ;
+    LBDroite.ItemIndex := NewPos;
+    LBDroiteClick (nil) ;
+  end ;
+end;
+
+procedure TFAliment.SBSortNomClick(Sender: TObject);
+var
+  i, OldPos, NewPos : integer ;
+begin
+  if PAliment.MP.NbMat = 0
+  then
+    Exit ;
+  with JvSGSort do
+  begin
+    OldPos := LBDroite.ItemIndex;
+    Clear ;
+    RowCount := PAliment.MP.NbMat ;
+    Height := RowCount * DefaultRowHeight + RowCount + 1 ;
+    for i := 0 to RowCount - 1 do
+    begin
+      Cells[0, i] := IntToStr (i) ;
+      Cells[1, i] := IntToStr (PAliment.MP.NumMat[i]) ;
+      Cells[2, i] := LBDroite.Items[i] ;
+      Cells[3, i] := FloatToStr (PAliment.MP.Qte[i]) ;
+      Cells[4, i] := FloatToStr (PAliment.MP.MS[i]) ;
+    end ;
+    SortGrid(2, TRUE, FALSE, stClassic, TRUE) ;
+    Modified := TRUE ;
+    LBDroite.Items.Clear ;
+    NewPos := -1;
+    for i := 0 to RowCount - 1 do
+    begin
+      PAliment.MP.NumMat[i] := StrToInt (Cells[1, i]) ;
+      PAliment.MP.Qte[i] := StrToFloat (Cells[3, i]) ;
+      PAliment.MP.MS[i] := StrToFloat (Cells[4, i]) ;
+      LBDroite.Items.Add (Cells[2, i]) ;
+      if StrToInt(Cells[0, i]) = OldPos then NewPos := i;
+    end ;
+    LBDroite.ItemIndex := NewPos;
+    LBDroiteClick (nil) ;
+  end ;
+end;
+
+procedure TFAliment.PBQteKeyPress (Sender : TObject ; var Key : Char) ;
+begin
+  if Key = #13
+  then
+    if LBDroite.ItemIndex < PAliment.MP.NbMat - 1
+    then
+    begin
+      LBDroite.ItemIndex := LBDroite.ItemIndex + 1 ;
+      LBDroiteClick (nil) ;
+      Key := #0 ;
+    end ;
+end ;
+
+procedure TFAliment.PBTotalChange (Sender : TObject) ;
+begin
+  if PBTotal.AsFloat = 1000
+  then // Vert
+    PBTotal.Font.Color := clLime
+  else
+    if (PBTotal.AsFloat < 999) or (PBTotal.AsFloat > 1001)
+    then // Rouge
+      PBTotal.Font.Color := clRed
+    else // Orange
+      PBTotal.Font.Color := TColor($0080FF) ;
+end ;
+
+procedure TFAliment.PBMSDChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PAliment.MP do
+      MS[LBDroite.ItemIndex] := PBMSD.AsFloat ;
+  end ;
+end ;
+
+procedure TFAliment.PBQteChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Total = Total - AcienneQuantit� + NouvelleQuantit�
+    with PAliment.MP do
+      PBTotal.AsFloat := PBTotal.AsFloat - Qte[LBDroite.ItemIndex] + PBQte.AsFloat ;
+    // Nouvelle valeur
+    with PAliment.MP do
+      Qte[LBDroite.ItemIndex] := PBQte.AsFloat ;
+    LBDroite.Repaint ;
+  end ;
+end ;
+
+procedure TFAliment.VerifyMP ;
+var
+  i : integer ;
+  ok : boolean ;
+begin
+  ok := TRUE ;
+  if PAliment.MP.NbMat > 0
+  then
+    for i := 0 to PAliment.MP.NbMat - 1 do
+      if PAliment.MP.NumMat[i] = 0 then ok := FALSE ;
+  BBCalcul.Enabled := ok ;
+  BBGraph.Enabled := ok ;
+end ;
+
+procedure TFAliment.BBCalculClick (Sender : TObject) ;
+var
+  i, j : integer ;
+begin
+  if AffCalcAli
+  then
+  begin
+    FWarning := TFWarning.Create (Self) ;
+    with FWarning do
+    begin
+      Msg := 'CalcAli';
+      ShowModal ;
+      Release ;
+      AffCalcAli := FALSE ;
+    end ;
+  end ;
+  if MessageDlg (MsgCalcul, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+  then
+  begin
+    Modified := TRUE ;
+    with PAliment^ do
+    begin
+      // Initialisation
+      CC := CCVide ;
+      for j := 0 to 12 do
+        AAtotal[j] := 0 ;
+      for j := 0 to 12 do
+        CUDAA[j] := 0 ;
+      with MP do
+        if PBTotal.AsFloat > 0
+        then
+        begin
+          CC.MS := 0 ; // CCVide initialise MS � 1000
+          // Total
+          for i := 0 to NbMat - 1 do
+          begin
+            PMatiere := ListMatiere[FindIdxMatiere (LBDroite.Items[i])] ;
+            CC.MS := CC.MS + (Qte[i] * MS[i]) ;
+            CC.MM := CC.MM + (Qte[i] * MS[i] * PMatiere.CC.MM) ;
+            CC.MO := CC.MO + (Qte[i] * MS[i] * PMatiere.CC.MO) ;
+            CC.Lip := CC.Lip + (Qte[i] * MS[i] * PMatiere.CC.Lip) ;
+            CC.MAT := CC.MAT + (Qte[i] * MS[i] * PMatiere.CC.MAT) ;
+            CC.Amidon := CC.Amidon + (Qte[i] * MS[i] * PMatiere.CC.Amidon) ;
+            CC.Sucres := CC.Sucres + (Qte[i] * MS[i] * PMatiere.CC.Sucres) ;
+            CC.dMO_T := CC.dMO_T + (Qte[i] * MS[i] * PMatiere.CC.MO * PMatiere.CC.dMO_T) ;
+            CC.dMO_C := CC.dMO_C + (Qte[i] * MS[i] * PMatiere.CC.MO * PMatiere.CC.dMO_C) ;
+            CC.dLip_T := CC.dLip_T + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.dLip_T) ;
+            CC.dLip_C := CC.dLip_C + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.dLip_C) ;
+            CC.dMAT_T := CC.dMAT_T + (Qte[i] * MS[i] * PMatiere.CC.MAT * PMatiere.CC.dMAT_T) ;
+            CC.dMAT_C := CC.dMAT_C + (Qte[i] * MS[i] * PMatiere.CC.MAT * PMatiere.CC.dMAT_C) ;
+            CC.Ca := CC.Ca + (Qte[i] * MS[i] * PMatiere.CC.Ca) ;
+            CC.P := CC.P + (Qte[i] * MS[i] * PMatiere.CC.P) ;
+            CC.Na := CC.Na + (Qte[i] * MS[i] * PMatiere.CC.Na) ;
+            CC.K := CC.K + (Qte[i] * MS[i] * PMatiere.CC.K) ;
+            CC.Cl := CC.Cl + (Qte[i] * MS[i] * PMatiere.CC.Cl) ;
+            CC.Mg := CC.Mg + (Qte[i] * MS[i] * PMatiere.CC.Mg) ;
+            CC.Cu := CC.Cu + (Qte[i] * MS[i] * PMatiere.CC.Cu) ;
+            CC.Zn := CC.Zn + (Qte[i] * MS[i] * PMatiere.CC.Zn) ;
+            CC.Fe := CC.Fe + (Qte[i] * MS[i] * PMatiere.CC.Fe) ;
+            CC.Mn := CC.Mn + (Qte[i] * MS[i] * PMatiere.CC.Mn) ;
+            CC.S := CC.S + (Qte[i] * MS[i] * PMatiere.CC.S) ;
+            CC.Se := CC.Se + (Qte[i] * MS[i] * PMatiere.CC.Se) ;
+            CC.Co := CC.Co + (Qte[i] * MS[i] * PMatiere.CC.Co) ;
+            CC.Mb := CC.Mb + (Qte[i] * MS[i] * PMatiere.CC.Mb) ;
+            CC.I := CC.I + (Qte[i] * MS[i] * PMatiere.CC.I) ;
+            CC.Phytase := CC.Phytase + (Qte[i] * MS[i] * PMatiere.CC.P * PMatiere.CC.Phytase) ;
+            CC.ActPhytE := CC.ActPhytE + (Qte[i] * MS[i] * PMatiere.CC.ActPhytE) ;
+            CC.ActPhytM := CC.ActPhytM + (Qte[i] * MS[i] * PMatiere.CC.ActPhytM) ;
+            CC.PdigG := CC.PdigG + (Qte[i] * MS[i] * PMatiere.CC.PdigG) ;
+            CC.PdigF := CC.PdigF + (Qte[i] * MS[i] * PMatiere.CC.PdigF) ;
+            CC.AGsLip := CC.AGsLip + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip) ;
+            CC.C6C8C10 := CC.C6C8C10 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C6C8C10) ;
+            CC.C12_0 := CC.C12_0 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C12_0) ;
+            CC.C14_0 := CC.C14_0 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C14_0) ;
+            CC.C16_0 := CC.C16_0 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C16_0) ;
+            CC.C16_1 := CC.C16_1 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C16_1) ;
+            CC.C18_0 := CC.C18_0 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C18_0) ;
+            CC.C18_1 := CC.C18_1 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C18_1) ;
+            CC.C18_2 := CC.C18_2 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C18_2) ;
+            CC.C18_3 := CC.C18_3 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C18_3) ;
+            CC.C18_4 := CC.C18_4 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C18_4) ;
+            CC.C20_0 := CC.C20_0 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C20_0) ;
+            CC.C20_1 := CC.C20_1 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C20_1) ;
+            CC.C20_4 := CC.C20_4 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C20_4) ;
+            CC.C20_5 := CC.C20_5 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C20_5) ;
+            CC.C22_0 := CC.C22_0 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C22_0) ;
+            CC.C22_1 := CC.C22_1 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C22_1) ;
+            CC.C22_5 := CC.C22_5 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C22_5) ;
+            CC.C22_6 := CC.C22_6 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C22_6) ;
+            CC.C24_0 := CC.C24_0 + (Qte[i] * MS[i] * PMatiere.CC.Lip * PMatiere.CC.AGsLip * PMatiere.CC.C24_0) ;
+            CC.CB := CC.CB + (Qte[i] * MS[i] * PMatiere.CC.CB) ;
+            CC.dCB_T := CC.dCB_T + (Qte[i] * MS[i] * PMatiere.CC.CB * PMatiere.CC.dCB_T) ;
+            CC.dCB_C := CC.dCB_C + (Qte[i] * MS[i] * PMatiere.CC.CB * PMatiere.CC.dCB_C) ;
+            CC.Residu := CC.Residu + (Qte[i] * MS[i] * PMatiere.CC.Residu) ;
+            CC.dResidu_T := CC.dResidu_T + (Qte[i] * MS[i] * PMatiere.CC.Residu * PMatiere.CC.dResidu_T) ;
+            CC.dResidu_C := CC.dResidu_C + (Qte[i] * MS[i] * PMatiere.CC.Residu * PMatiere.CC.dResidu_C) ;
+            CC.NDF := CC.NDF + (Qte[i] * MS[i] * PMatiere.CC.NDF) ;
+            CC.ADF := CC.ADF + (Qte[i] * MS[i] * PMatiere.CC.ADF) ;
+            CC.ADL := CC.ADL + (Qte[i] * MS[i] * PMatiere.CC.ADL) ;
+            CC.Parois := CC.Parois + (Qte[i] * MS[i] * PMatiere.CC.Parois) ;
+            for j := 0 to 12 do
+              AAtotal[j] := AAtotal[j] + (Qte[i] * MS[i] * PMatiere.AAtotal[j]) ;
+            for j := 0 to 12 do
+              CUDAA[j] := CUDAA[j] + (Qte[i] * MS[i] * PMatiere.AAtotal[j] * PMatiere.CUDAA[j]) ;
+          end ;
+          // Moyenne
+          CC.MS := CC.MS / PBTotal.AsFloat ;
+          CC.MM := CC.MM / (PBTotal.AsFloat * CC.MS) ;
+          CC.MO := CC.MO / (PBTotal.AsFloat * CC.MS) ;
+          CC.Lip := CC.Lip / (PBTotal.AsFloat * CC.MS) ;
+          CC.MAT := CC.MAT / (PBTotal.AsFloat * CC.MS) ;
+          CC.Amidon := CC.Amidon / (PBTotal.AsFloat * CC.MS) ;
+          CC.Sucres := CC.Sucres / (PBTotal.AsFloat * CC.MS) ;
+          CC.dMO_T := CC.dMO_T / (PBTotal.AsFloat * CC.MO * CC.MS) ;
+          CC.dMO_C := CC.dMO_C / (PBTotal.AsFloat * CC.MO * CC.MS) ;
+          CC.dLip_T := CC.dLip_T / (PBTotal.AsFloat * CC.Lip * CC.MS) ;
+          CC.dLip_C := CC.dLip_C / (PBTotal.AsFloat * CC.Lip * CC.MS) ;
+          CC.dMAT_T := CC.dMAT_T / (PBTotal.AsFloat * CC.MAT * CC.MS) ;
+          CC.dMAT_C := CC.dMAT_C / (PBTotal.AsFloat * CC.MAT * CC.MS) ;
+          CC.Ca := CC.Ca / (PBTotal.AsFloat * CC.MS) ;
+          CC.P := CC.P / (PBTotal.AsFloat * CC.MS) ;
+          CC.Na := CC.Na / (PBTotal.AsFloat * CC.MS) ;
+          CC.K := CC.K / (PBTotal.AsFloat * CC.MS) ;
+          CC.Cl := CC.Cl / (PBTotal.AsFloat * CC.MS) ;
+          CC.Mg := CC.Mg / (PBTotal.AsFloat * CC.MS) ;
+          CC.Cu := CC.Cu / (PBTotal.AsFloat * CC.MS) ;
+          CC.Zn := CC.Zn / (PBTotal.AsFloat * CC.MS) ;
+          CC.Fe := CC.Fe / (PBTotal.AsFloat * CC.MS) ;
+          CC.Mn := CC.Mn / (PBTotal.AsFloat * CC.MS) ;
+          CC.S := CC.S / (PBTotal.AsFloat * CC.MS) ;
+          CC.Se := CC.Se / (PBTotal.AsFloat * CC.MS) ;
+          CC.Co := CC.Co / (PBTotal.AsFloat * CC.MS) ;
+          CC.Mb := CC.Mb / (PBTotal.AsFloat * CC.MS) ;
+          CC.I := CC.I / (PBTotal.AsFloat * CC.MS) ;
+          if CC.P = 0
+          then
+            CC.Phytase := 0
+          else
+            CC.Phytase := CC.Phytase / (PBTotal.AsFloat * CC.MS * CC.P) ;
+          CC.ActPhytE := CC.ActPhytE / (PBTotal.AsFloat * CC.MS) ;
+          CC.ActPhytM := CC.ActPhytM / (PBTotal.AsFloat * CC.MS) ;
+          CC.PdigG := CC.PdigG / (PBTotal.AsFloat * CC.MS) ;
+          CC.PdigF := CC.PdigF / (PBTotal.AsFloat * CC.MS) ;
+          if CC.Lip = 0
+          then
+            CC.AGsLip := 0
+          else
+            CC.AGsLip := CC.AGsLip / (PBTotal.AsFloat * CC.MS * CC.Lip) ;
+          if CC.AGsLip = 0
+          then
+          begin
+            CC.C6C8C10 := 0 ;
+            CC.C12_0 := 0 ;
+            CC.C14_0 := 0 ;
+            CC.C16_0 := 0 ;
+            CC.C16_1 := 0 ;
+            CC.C18_0 := 0 ;
+            CC.C18_1 := 0 ;
+            CC.C18_2 := 0 ;
+            CC.C18_3 := 0 ;
+            CC.C18_4 := 0 ;
+            CC.C20_0 := 0 ;
+            CC.C20_1 := 0 ;
+            CC.C20_4 := 0 ;
+            CC.C20_5 := 0 ;
+            CC.C22_0 := 0 ;
+            CC.C22_1 := 0 ;
+            CC.C22_5 := 0 ;
+            CC.C22_6 := 0 ;
+            CC.C24_0 := 0 ;
+          end
+          else
+          begin
+            CC.C6C8C10 := CC.C6C8C10 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C12_0 := CC.C12_0 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C14_0 := CC.C14_0 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C16_0 := CC.C16_0 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C16_1 := CC.C16_1 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C18_0 := CC.C18_0 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C18_1 := CC.C18_1 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C18_2 := CC.C18_2 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C18_3 := CC.C18_3 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C18_4 := CC.C18_4 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C20_0 := CC.C20_0 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C20_1 := CC.C20_1 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C20_4 := CC.C20_4 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C20_5 := CC.C20_5 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C22_0 := CC.C22_0 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C22_1 := CC.C22_1 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C22_5 := CC.C22_5 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C22_6 := CC.C22_6 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+            CC.C24_0 := CC.C24_0 / (PBTotal.AsFloat * CC.MS * CC.Lip * CC.AGsLip) ;
+          end ;
+          CC.CB := CC.CB / (PBTotal.AsFloat * CC.MS) ;
+          if CC.CB = 0
+          then
+          begin
+            CC.dCB_T := 0 ;
+            CC.dCB_C := 0 ;
+          end
+          else
+          begin
+            CC.dCB_T := CC.dCB_T / (PBTotal.AsFloat * CC.CB * CC.MS) ;
+            CC.dCB_C := CC.dCB_C / (PBTotal.AsFloat * CC.CB * CC.MS) ;
+          end ;
+          CC.Residu := CC.Residu / (PBTotal.AsFloat * CC.MS) ;
+          if CC.Residu = 0
+          then
+          begin
+            CC.dResidu_T := 0 ;
+            CC.dResidu_C := 0 ;
+          end
+          else
+          begin
+            CC.dResidu_T := CC.dResidu_T / (PBTotal.AsFloat * CC.Residu * CC.MS) ;
+            CC.dResidu_C := CC.dResidu_C / (PBTotal.AsFloat * CC.Residu * CC.MS) ;
+          end ;
+          CC.NDF := CC.NDF / (PBTotal.AsFloat * CC.MS) ;
+          CC.ADF := CC.ADF / (PBTotal.AsFloat * CC.MS) ;
+          CC.ADL := CC.ADL / (PBTotal.AsFloat * CC.MS) ;
+          CC.Parois := CC.Parois / (PBTotal.AsFloat * CC.MS) ;
+          for j := 0 to 12 do
+            AAtotal[j] := AAtotal[j] / (PBTotal.AsFloat * CC.MS) ;
+          for j := 0 to 12 do
+            if AAtotal[j] = 0
+            then
+              CUDAA[j] := 0
+            else
+              CUDAA[j] := CUDAA[j] / (PBTotal.AsFloat * AAtotal[j] * CC.MS) ;
+        end ;
+    end ;
+    // Affichage
+    CBAlimentChange (nil) ;
+  end ;
+end ;
+
+procedure TFAliment.BBGraphClick (Sender : TObject) ;
+begin
+  if AffGraphAli
+  then
+  begin
+    FWarning := TFWarning.Create(Self);
+    with FWarning do
+    begin
+      Msg := 'GraphAli';
+      ShowModal;
+      Release;
+      AffGraphAli := FALSE;
+    end;
+  end;
+  FGraphAli := TFGraphAli.Create(nil);
+  FGraphAli.ShowModal;
+  FGraphAli.Release;
+end;
+
+procedure TFAliment.PCChange(Sender: TObject);
+begin
+  if PC.ActivePageIndex = 5
+  then // Mati�res premi�res
+    JvEnterAsTab.EnterAsTab := FALSE
+  else
+    JvEnterAsTab.EnterAsTab := TRUE ;
+end;
+
+end.
Index: UFAbout.dfm
===================================================================
--- UFAbout.dfm	(révision 0)
+++ UFAbout.dfm	(révision 3)
@@ -0,0 +1,193 @@
+object FAbout: TFAbout
+  Left = 342
+  Top = 104
+  Caption = 'About InraPorc'
+  ClientHeight = 320
+  ClientWidth = 360
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poMainFormCenter
+  Scaled = False
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PBoutons: TPanel
+    Left = 0
+    Top = 280
+    Width = 360
+    Height = 40
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 0
+    DesignSize = (
+      360
+      40)
+    object LURL: TLabel
+      Left = 8
+      Top = 16
+      Width = 157
+      Height = 13
+      Caption = 'http://w3.rennes.inra.fr/inraporc/'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBlue
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsUnderline]
+      ParentFont = False
+      Transparent = False
+      OnClick = LURLClick
+      OnMouseEnter = LURLMouseEnter
+      OnMouseLeave = LURLMouseLeave
+    end
+    object BBOk: TBitBtn
+      Left = 272
+      Top = 8
+      Width = 80
+      Height = 25
+      Anchors = [akTop, akRight]
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      NumGlyphs = 2
+      TabOrder = 0
+    end
+  end
+  object PTitle: TPanel
+    Left = 0
+    Top = 0
+    Width = 360
+    Height = 120
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 1
+    object LProduct: TLabel
+      Left = 88
+      Top = 8
+      Width = 241
+      Height = 55
+      Caption = 'InraPorc'#174
+      Font.Charset = ANSI_CHARSET
+      Font.Color = clGreen
+      Font.Height = -48
+      Font.Name = 'Arial Rounded MT Bold'
+      Font.Style = []
+      ParentFont = False
+      IsControl = True
+    end
+    object LVersion: TLabel
+      Left = 128
+      Top = 66
+      Width = 18
+      Height = 24
+      Caption = '...'
+      Font.Charset = ANSI_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -21
+      Font.Name = 'Arial'
+      Font.Style = []
+      ParentFont = False
+      IsControl = True
+    end
+    object ILogo: TImage
+      Left = 8
+      Top = 8
+      Width = 70
+      Height = 60
+      Picture.Data = {
+        0954474946496D61676547494638396146003C00F7000004820484BE8444A244
+        C4DEC4249224E4EEE464B264A4D2A4148E148CCA8CD4EAD4F4FAF474BE7454AA
+        54349A34148A140C8A0C84C6842C9A2C74BA74B4DAB49CCE9CDCEADCFCFAFC0C
+        860C4CAA4CCCE6CC2C962CECF6EC6CB66C1C8E1C7CBE7C5CAE5C04860484C284
+        4CA64CC4E2C4249624E4F2E464B664ACD6AC94CA94D4EED4F4FEF454AE543C9E
+        3C8CC68CBCDEBC9CD29CDCEEDCFCFEFC1C921C7CC27CE502B112000500000018
+        4500EE09009192007C7C00704E100509019292007C7C00FFCC03FFE954FF1215
+        FF00006D24000500009202007C000015B82E0AE7B18212057C00000002000000
+        001600000000006090FF0341FF0092FF007CFFF800FFB1F0FF19FDFF007F7FB0
+        0501691000169100007C0000600000E6000012000000007E00F4000001000000
+        C0000000309800E701001200000000FF1809FFEE00FF9100FF7C00FF7014FF09
+        00FF9200FF7C0000C00500E454009815007C00006F00003E00009200007C0000
+        62C6003E48169200007C00C6081248029F00008000007CD84C68E5EA40121217
+        0000002F00000E00008200007C0000DB4E070500008200007C0000403800E5E6
+        004F1200000000B0EC0069E6400112170000006CAC0000D50000D10000770014
+        C600E5480012000000000034F00000E600001200C00000F88300F72A00128200
+        007C00180018EE009F9100807C007C7000FF0500FF9200FF7C00FFFF0012FF00
+        9FFF0080FF007C6D00510501009200007C00004AE751F62A008082007C7C0000
+        145C00E7F016121200000000C2FF002AFF0082FF007CFFB00000690000160000
+        00000000681C0140E800171200000000BE0E003ECF00824B007C0057FFFCF6FF
+        E780FF127CFF0000185BE7E8E212124E000000B0F730693EE8168212007C0060
+        B8BE00EF3E004E8200007C7410EDE719E8124F120000002000AD0301FFA400FF
+        00007F27149C10E7E80112129F0000F000680101400000170000001E16BE003F
+        3E008282007C7C0101680000400000170000000000C63E004834000000720024
+        61003E7000346F0000720000637E005C55004947016D0021F90401000032002C
+        0000000046003C000008FF0065081C48B0A0C18306070C40C8B0A1C38710095E
+        00E0E042C48B18330EBC10000080001A438A3C786180478F032C8E5C99F1C285
+        162701B470C9B266439701028C88E9514000972A6DDAE42880A751001800B8A0
+        2974A58BA447A37A5C1AB4E9C50145A56A45AAC12A460D50B76E6D50D52BC214
+        61C58E35DBD0820B11014E7470A096E7880E1D44B878517625D0BF8001737850
+        D76303198113FF7D78C08387072D1C3868D1A00188061D264CC899A2420A0B17
+        521406A0E0C20BCF15366B3660B9C108C9911F3C205000E1050FA37BBAC4ADB6
+        838C02B93D1A6878203800143250A8C550DB4070E637E9E6DEE052BAD60F172C
+        18FFF0F085F10AA6B73EFF5870A141F0F110B38EF6E052FDD114324C06870F51
+        8171901AA41220EFBEEE86051781701E07329877D4013250601C72179990565D
+        DC59F02000D4C9605D612D68F4C1803238C7D30B099E4742482F343061540EA0
+        E05205465920030722F02696071D28B09206061026D5061510B8C0013AC6D402
+        883258304190471120426D36194980511EB860026228C01415060D7425830220
+        4CE840054CD6A40168BFB9B081470F4C1083405825E58100066CE64207203840
+        D80306B8280309199C24000AE45DA0254B013C00424A177070408D166960A207
+        20BC005A600B2870C0081878F0416D175060005F2E1D50944D1B223502057F59
+        D0816C1F4C2AE8000774FF76C000050035807904A4C08145171450C1991ED9D4
+        919007685028451AB864A49D46419642AD17344661051604F0644C7D69781454
+        0D9067419733BAB0AB02D74625AC5402EC8A42B96A39009A05ECC6F400A95179
+        B06B71C179009A82478154530C515510DF896A11B0AB873C7157D3444611E012
+        B0C60130C19647096C93803C4DEC5DC427D56625B64289C6534A18737C1C473C
+        8160558B17F467DCC4F89E449F50069E0420C43C098024062E7B3441B4F27AA5
+        5D4CC9EED46C012884256EBC53C920B247FE5A65B447C895CA1305027948567C
+        47A584F003367A259F6117C4302193F82E25C3024802E0F005411A90AD5FC376
+        7C01C27EF60A1573771BF5A5A27231B1853700722F7021D41F5304784CBE5D80
+        3300738FC4F0D5BF1DAE96DC174CE0B759DBA6C4410704374BD5D331FD6455CC
+        3C6180E80B02840EC00327B888F251BE5955F75113EC2A83062E8CE0986C1E10
+        600098885930F551916BE4F85604881B140726140020AF46BA0E00804DD58527
+        B51C2CE0FD021CF07EFC754D71902F01927960BD5151D7747B540FA490826C47
+        C9D6C0FC625548AF56871194820BF203E0CC048296AD342571761954460A1815
+        AC2D2C2A2350A048C67792F68D64633119C1888442020A2A8C25566B9A5948D0
+        9FFD0140046C2108094F62138FA030850611014A6AF242182244043478484000
+        003B}
+    end
+    object LIDDN: TLabel
+      Left = 88
+      Top = 96
+      Width = 227
+      Height = 13
+      Caption = 'IDDN.FR.001.180002.001.R.P.2005.000.30100'
+    end
+  end
+  object PContent: TPanel
+    Left = 0
+    Top = 120
+    Width = 360
+    Height = 160
+    Align = alClient
+    BevelOuter = bvNone
+    BorderWidth = 8
+    TabOrder = 2
+    object MConfig: TMemo
+      Left = 8
+      Top = 8
+      Width = 344
+      Height = 144
+      Align = alClient
+      BevelInner = bvNone
+      BevelOuter = bvNone
+      BorderStyle = bsNone
+      Color = clBtnFace
+      ReadOnly = True
+      TabOrder = 0
+    end
+  end
+end
Index: UFSeqAliP.pas
===================================================================
--- UFSeqAliP.pas	(révision 0)
+++ UFSeqAliP.pas	(révision 3)
@@ -0,0 +1,799 @@
+unit UFSeqAliP ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, ExtCtrls, Buttons, PBNumEdit, JvExControls, JvComponent, 
+  JvEnterTab, UVariables, gnugettext;
+
+type
+  TFSeqAliP = class(TForm)
+    GBAli: TGroupBox;
+    CBSeqAli: TComboBox;
+    LBRule: TListBox;
+    LNo: TLabel;
+    LModeFin: TLabel;
+    CBTwoAli: TCheckBox;
+    CBTransit: TCheckBox;
+    CBAli1: TComboBox;
+    LInit: TLabel;
+    LFin: TLabel;
+    PBAli1Init: TPBNumEdit;
+    PBAli1Fin: TPBNumEdit;
+    PBAli2Init: TPBNumEdit;
+    PBAli2Fin: TPBNumEdit;
+    GBSeqAli: TGroupBox;
+    CBAli2: TComboBox;
+    GBRule: TGroupBox;
+    SBAddRule: TSpeedButton;
+    SBDelRule: TSpeedButton;
+    SBAddSeqAli: TSpeedButton;
+    SBDelSeqAli: TSpeedButton;
+    LAli: TLabel;
+    LAli1: TLabel;
+    LAli2: TLabel;
+    LAli1Init: TLabel;
+    LAli1Fin: TLabel;
+    LAli2Init: TLabel;
+    LAli2Fin: TLabel;
+    PInit: TPanel;
+    PFin: TPanel;
+    SBRename: TSpeedButton;
+    SBComment: TSpeedButton;
+    GBEnd: TGroupBox;
+    LUnitFin: TLabel;
+    PBValFin: TPBNumEdit;
+    CBModeFin: TComboBox;
+    PSeqAli: TPanel;
+    GBParam: TGroupBox;
+    SBSave: TSpeedButton;
+    SBPrint: TSpeedButton;
+    JvEnterAsTab: TJvEnterAsTab;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure LBRuleDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure CBSeqAliChange(Sender: TObject);
+    procedure SBAddSeqAliClick(Sender: TObject);
+    procedure SBDelSeqAliClick(Sender: TObject);
+    procedure SBAddRuleClick(Sender: TObject);
+    procedure SBDelRuleClick(Sender: TObject);
+    procedure LBRuleClick(Sender: TObject);
+    procedure CBTwoAliClick(Sender: TObject);
+    procedure CBTransitClick(Sender: TObject);
+    procedure PBAli1InitChange(Sender: TObject);
+    procedure PBAli1FinChange(Sender: TObject);
+    procedure CBAli1Change(Sender: TObject);
+    procedure CBAli2Change(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure FormDeactivate(Sender: TObject);
+    procedure SBRenameClick(Sender: TObject);
+    procedure SBCommentClick(Sender: TObject);
+    procedure CBModeFinChange(Sender: TObject);
+    procedure PBValFinChange(Sender: TObject);
+    procedure SBSaveClick(Sender: TObject);
+    procedure SBPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified : boolean ;
+    IdxSeqAliP, NumRule : integer ;
+    procedure Save ;
+  public
+    { D�clarations publiques }
+    function StrModeFin (n : integer) : string ;
+    function StrAliment (n : integer) : string ;
+  end;
+
+var
+  FSeqAliP: TFSeqAliP;
+
+implementation
+
+uses
+  UStrings, UInit, UUtil, UFindRec, UEchelle, UFComment, UFRapSeqAliP ;
+
+{$R *.dfm}
+
+{ TFSeqAliP }
+
+procedure TFSeqAliP.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 616 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 432 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+end;
+
+procedure TFSeqAliP.FormShow (Sender : TObject) ;
+begin
+  Modified := FALSE ;
+  StringsSeqAliP (CBSeqAli.Items, TRUE) ;
+  SBAddSeqAli.Enabled := IsComplete or (ListSeqAliP.Count < 5) ;
+  SBSave.Enabled := IsComplete or IsEducation ;
+  IdxSeqAliP := -1 ;
+//  CBSeqAliChange (nil) ;
+end ;
+
+procedure TFSeqAliP.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+begin
+  if Modified then Save ;
+  Action := caFree ;
+  NumWinSeqAliP := -1 ;
+end ;
+
+procedure TFSeqAliP.FormActivate (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  CBAli1.Clear ;
+  CBAli2.Clear ;
+  if ListAliment.Count > 0
+  then
+    for i := 0 to ListAliment.Count - 1 do
+    begin
+      PAliment := ListAliment[i] ;
+      if AlimentValid (PAliment) and (PAliment.Typ <> 2)
+      then
+      begin
+        CBAli1.Items.Add (PAliment.Nom) ;
+        CBAli2.Items.Add (PAliment.Nom) ;
+      end ;
+    end ;
+//  if IdxSeqAliP <> -1
+//  then
+//  begin
+//    PSeqAliP := ListSeqAliP[IdxSeqAliP] ;
+//    with PSeqAliP.Rule[NumRule] do
+//    begin
+//      if NumAli1 <> -1
+//      then
+//        CBAli1.ItemIndex := CBAli1.Items.IndexOf (FindNomAliment (NumAli1)) ;
+//      if NumAli2 <> -1
+//      then
+//        CBAli2.ItemIndex := CBAli2.Items.IndexOf (FindNomAliment (NumAli2)) ;
+//    end ;
+//  end ;
+  CBSeqAliChange (nil) ;
+  PSeqAli.Enabled := IsComplete or IsEducation or IsEvaluation ;
+  SBAddRule.Visible := PSeqAli.Enabled ;
+  SBDelRule.Visible := PSeqAli.Enabled ;
+end ;
+
+procedure TFSeqAliP.FormDeactivate (Sender : TObject) ;
+begin
+  if Modified then Save ;
+end ;
+
+procedure TFSeqAliP.Save ;
+var
+  s : string ;
+begin
+  Modified := FALSE ;
+  if IsComplete or IsEducation
+  then
+    if MessageDlg (Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      SaveSeqAliP ;
+      if not SeqAliPValid (PSeqAliP)
+      then
+        MessageDlg(Format (MsgInvalidData, [Caption, PSeqAliP.Nom]), mtWarning, [mbOK], 0) ;
+    end
+    else
+    begin
+      LoadSeqAliP ;
+      s := CBSeqAli.Text ;
+      StringsSeqAliP (CBSeqAli.Items, TRUE) ;
+      if FindIdxSeqAliP (s) = -1
+      then
+      begin
+        IdxSeqAliP := -1 ;
+        CBSeqAliChange (nil) ;
+      end
+      else
+        CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (s) ;
+    end ;
+end ;
+
+procedure TFSeqAliP.CBSeqAliChange (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  if (IdxSeqAliP <> -1) and (CBSeqAli.Text <> PSeqAliP.Nom)
+  then
+    if Modified then Save ;
+  IdxSeqAliP := FindIdxSeqAliP (CBSeqAli.Text) ;
+  LBRule.Clear ;
+  if IdxSeqAliP = -1
+  then
+  begin
+    CBSeqAli.Repaint ;
+    SBDelSeqAli.Enabled := FALSE ;
+    SBRename.Enabled := FALSE ;
+    SBComment.Enabled := FALSE ;
+    SBSave.Enabled := FALSE ;
+    SBPrint.Enabled := FALSE ;
+    PSeqAli.Visible := FALSE ;
+  end
+  else // Affichage de l'enregistrement
+  begin
+    SBDelSeqAli.Enabled := TRUE ;
+    SBRename.Enabled := TRUE ;
+    SBComment.Enabled := TRUE ;
+    SBSave.Enabled := TRUE ;
+    SBPrint.Enabled := TRUE ;
+    PSeqAli.Visible := TRUE ;
+    PSeqAliP := ListSeqAliP[IdxSeqAliP] ;
+    with PSeqAliP^ do
+      CBSeqAli.Hint := Memo ;
+    with PSeqAliP^ do
+      for i := 1 to NbRule do
+        LBRule.Items.Add ('') ;
+    LBRule.ItemIndex := 0 ;
+    LBRuleClick (nil) ;
+  end ;
+end ;
+
+procedure TFSeqAliP.SBAddSeqAliClick (Sender : TObject) ;
+var
+  i, n, q : integer ;
+  s : string ;
+  ok : boolean ;
+  PBackup : PRecSeqAliP ;
+begin
+  if Modified then Save ;
+  if IdxSeqAliP = -1
+  then
+    q := mrNo
+  else
+    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
+  // Saisie du nouveau nom
+  s := '' ;
+  repeat
+    if InputQuery (FSeqAliP.Caption, MsgName, s)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListSeqAliP.Count) do
+          begin
+            PSeqAliP := ListSeqAliP[i] ;
+            if PSeqAliP.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      if (IdxSeqAliP <> -1)
+      then
+        PSeqAliP := ListSeqAliP[IdxSeqAliP] ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  if s <> ''
+  then // Cr�ation du nouvel enregistrement
+  begin
+    // Recherche du premier num�ro libre
+    n := 0 ;
+    repeat
+      Inc (n) ;
+      ok := TRUE ;
+      i := 0 ;
+      while ok and (i < ListSeqAliP.Count) do
+      begin
+        PSeqAliP := ListSeqAliP[i] ;
+        if PSeqAliP.Num = n
+        then
+          ok := FALSE
+        else
+          Inc (i) ;
+      end ;
+    until ok ;
+    New (PSeqAliP) ;
+    with PSeqAliP^ do
+    begin
+      Nom := s ;
+      Num := n ;
+      if q = mrYes
+      then
+      begin
+        PBackup := ListSeqAliP[IdxSeqAliP] ;
+        Memo := PBackup.Memo ;
+        NbRule := PBackup.NbRule ;
+        Rule := PBackup.Rule ;
+      end
+      else
+      begin
+        Memo := '' ;
+        NbRule := 1 ;
+        for i := 1 to MAX_RULE do
+          with Rule[i] do
+          begin
+            ModeFin := -1 ;
+            ValFin := 0 ;
+            NumAli1 := -1 ;
+            NumAli2 := -1 ;
+            PctAli1Init := 100 ;
+            PctAli1Fin := 100 ;
+          end ;
+      end ;
+    end ;
+    ListSeqAliP.Add (PSeqAliP) ;
+    CBSeqAli.Items.Add (PSeqAliP.Nom) ;
+    CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (PSeqAliP.Nom) ;
+    CBSeqAliChange (nil) ;
+    Modified := TRUE ;
+    SBAddSeqAli.Enabled := IsComplete or (ListSeqAliP.Count < 5) ;
+    SBCommentClick (nil) ;
+  end ;
+end ;
+
+procedure TFSeqAliP.SBDelSeqAliClick (Sender : TObject) ;
+begin
+  if SeqAliPUsed (PSeqAliP.Num)
+  then // Enregistrement utilis�
+    MessageDlg (MsgDelErr, mtWarning, [mbOk], 0)
+  else // Suppression de l'enregistrement
+    if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      Dispose (PSeqAliP) ;
+      ListSeqAliP.Delete (IdxSeqAliP) ;
+      SaveSeqAliP ; // Sauvegarde !
+      Modified := FALSE ;
+      CBSeqAli.DeleteSelected ;
+      IdxSeqAliP := -1 ;
+      CBSeqAli.ItemIndex := -1 ;
+      CBSeqAliChange (nil) ;
+      SBAddSeqAli.Enabled := IsComplete or (ListSeqAliP.Count < 5) ;
+    end ;
+end ;
+
+procedure TFSeqAliP.SBRenameClick (Sender : TObject) ;
+var
+  i : integer ;
+  s : string ;
+  ok : boolean ;
+begin
+  // Saisie du nouveau nom
+  s := CBSeqAli.Text ;
+  repeat
+    if InputQuery (FSeqAliP.Caption, MsgRename, s) and (s <> CBSeqAli.Text)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListSeqAliP.Count) do
+          begin
+            PSeqAliP := ListSeqAliP[i] ;
+            if PSeqAliP.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  PSeqAliP := ListSeqAliP[IdxSeqAliP] ;
+  if s <> ''
+  then // Renommer l'enregistrement
+  begin
+    PSeqAliP.Nom := s ;
+    Modified := TRUE ;
+    StringsSeqAliP (CBSeqAli.Items, TRUE) ;
+    CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (s) ;
+  end ;
+end ;
+
+procedure TFSeqAliP.SBCommentClick (Sender : TObject) ;
+begin
+  // Saisie du commentaire
+  FComment := TFComment.Create (Self) ;
+  with FComment do
+  begin
+    Memo.Text := PSeqAliP.Memo ;
+    if ShowModal = mrOk
+    then // Commenter l'enregistrement
+    begin
+      PSeqAliP.Memo := Memo.Text ;
+      Modified := TRUE ;
+      CBSeqAli.Hint := PSeqAliP.Memo ;
+    end ;
+    Release ;
+  end ;
+end ;
+
+procedure TFSeqAliP.SBSaveClick(Sender: TObject);
+begin
+  SaveSeqAliP ;
+  if not SeqAliPValid (PSeqAliP)
+  then
+    MessageDlg(Format (MsgInvalidData, [Caption, PSeqAliP.Nom]), mtWarning, [mbOK], 0) ;
+  Modified := FALSE ;
+end;
+
+procedure TFSeqAliP.SBPrintClick(Sender: TObject);
+begin
+  FRapSeqAliP := TFRapSeqAliP.Create (Self) ;
+  FRapSeqAliP.QRRapport.PreviewModal ;
+  FRapSeqAliP.Release ;
+end;
+
+procedure TFSeqAliP.LBRuleClick (Sender : TObject) ;
+begin
+  NumRule := LBRule.ItemIndex + 1 ;
+  if LBRule.Items.Count < MAX_RULE
+  then
+    SBAddRule.Enabled := TRUE
+  else
+    SBAddRule.Enabled := FALSE ;
+  if NumRule = PSeqAliP.NbRule
+  then // Fin de simulation
+  begin
+    SBDelRule.Enabled := FALSE ;
+    GBEnd.Visible := FALSE ;
+    CBTwoAli.Enabled := TRUE ;
+  end
+  else // Mode de fin
+  begin
+    SBDelRule.Enabled := TRUE ;
+    GBEnd.Visible := TRUE ;
+  end ;
+  with PSeqAliP.Rule[NumRule] do
+  begin
+    Update := TRUE ;
+    CBModeFin.ItemIndex := ModeFin ;
+    CBModeFinChange (nil) ;
+    PBValFin.AsFloat := ValFin ;
+    if NumAli1 = -1
+    then
+      CBAli1.ItemIndex := -1
+    else
+      CBAli1.ItemIndex := CBAli1.Items.IndexOf (FindNomAliment (NumAli1)) ;
+    if CBAli1.ItemIndex = -1
+    then
+      CBAli1.Hint := ''
+    else
+    begin
+      PAliment := ListAliment[FindIdxAliment (CBAli1.Text)] ;
+      CBAli1.Hint := PAliment.Memo ;
+    end ;
+    if NumAli2 = -1
+    then
+    begin
+      CBAli2.ItemIndex := -1 ;
+      if CBTwoAli.Checked
+      then
+        CBTwoAli.Checked := FALSE
+      else
+        CBTwoAliClick (nil) ;
+    end
+    else // 2 aliments
+    begin
+      CBAli2.ItemIndex := CBAli2.Items.IndexOf (FindNomAliment (NumAli2)) ;
+      PBAli1Init.AsInteger := PctAli1Init ;
+      if PctAli1Init = PctAli1Fin
+      then
+        if CBTransit.Checked
+        then
+          CBTransit.Checked := FALSE
+        else
+          CBTransitClick (nil)
+      else // transition
+      begin
+        PBAli1Fin.AsInteger := PctAli1Fin ;
+        CBTransit.Checked := TRUE ;
+      end ;
+      CBTwoAli.Checked := TRUE ;
+    end ;
+    if CBAli2.ItemIndex = -1
+    then
+      CBAli2.Hint := ''
+    else
+    begin
+      PAliment := ListAliment[FindIdxAliment (CBAli2.Text)] ;
+      CBAli1.Hint := PAliment.Memo ;
+    end ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFSeqAliP.LBRuleDrawItem(Control: TWinControl; Index: Integer;
+  Rect: TRect; State: TOwnerDrawState);
+begin
+  with (Control as TListBox).Canvas do
+  begin
+    // Cadre principal
+    FillRect(Rect);
+    // Texte
+    SetTextAlign(Handle, TA_LEFT);
+    Rect.Left := 22;
+    TextRect(Rect, Rect.Left, Rect.Top, StrModeFin(Index + 1));
+    Rect.Left := 150 ;
+    TextRect(Rect, Rect.Left, Rect.Top, StrAliment(Index + 1));
+    Rect.Left := 0;
+    // Num�ro
+    SetTextAlign(Handle, TA_RIGHT);
+    Rect.Right := 14;
+    TextRect(Rect, Rect.Right, Rect.Top, Format('%d', [Index + 1]));
+  end;
+end;
+
+procedure TFSeqAliP.SBAddRuleClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  for i := PSeqAliP.NbRule downto NumRule do
+    PSeqAliP.Rule[i + 1] := PSeqAliP.Rule[i] ;
+  with PSeqAliP.Rule[NumRule] do
+  begin
+    ModeFin := -1 ;
+    ValFin := 0 ;
+  end ;
+  Inc (PSeqAliP.NbRule) ;
+  LBRule.Items.Add ('') ;
+  LBRule.ItemIndex := NumRule - 1 ;
+  LBRuleClick (nil) ;
+  Modified := TRUE ;
+  ActiveControl := CBModeFin ;
+end ;
+
+procedure TFSeqAliP.SBDelRuleClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  Dec (PSeqAliP.NbRule) ;
+  for i := NumRule to PSeqAliP.NbRule do
+    PSeqAliP.Rule[i] := PSeqAliP.Rule[i + 1] ;
+  i := NumRule ; // Position courante
+  LBRule.DeleteSelected ;
+  LBRule.ItemIndex := i - 1 ;
+  LBRuleClick (nil) ;
+  ActiveControl := LBRule ;
+  Modified := TRUE ;
+end ;
+
+procedure TFSeqAliP.CBModeFinChange (Sender : TObject) ;
+begin
+  if CBModeFin.ItemIndex = 3
+  then
+  begin
+    CBTwoAli.Enabled := FALSE ;
+    if CBTwoAli.Checked
+    then
+      CBTwoAli.Checked := FALSE
+    else
+      CBTwoAliClick (nil) ;
+  end
+  else
+    CBTwoAli.Enabled := TRUE ;
+  case CBModeFin.ItemIndex of
+    0, 1 : // Dur�e ou Age
+      LUnitFin.Caption := StrJ ;
+    2, 3 : // Poids vif ou Cumul aliment
+      LUnitFin.Caption := StrKg ;
+    else
+      LUnitFin.Caption := '' ;
+  end ;
+  if CBModeFin.ItemIndex = -1
+  then
+    PBValFin.Visible := FALSE
+  else
+    PBValFin.Visible := TRUE ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSeqAliP.Rule[NumRule].ModeFin := CBModeFin.ItemIndex ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFSeqAliP.PBValFinChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSeqAliP.Rule[NumRule].ValFin := PBValFin.AsFloat ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFSeqAliP.CBTwoAliClick (Sender : TObject) ;
+begin
+  if CBTwoAli.Checked
+  then
+  begin
+    if CBAli1.ItemIndex = -1
+    then
+      CBAli2.Enabled := FALSE
+    else
+      CBAli2.Enabled := TRUE ;
+    PInit.Visible := TRUE ;
+    CBTransit.Visible := TRUE
+  end
+  else
+  begin
+    if CBAli2.Text <> ''
+    then
+    begin
+      Modified := TRUE ;
+      CBAli2.ItemIndex := -1 ;
+      PSeqAliP.Rule[NumRule].NumAli2 := -1 ;
+    end ;
+    CBAli2.Enabled := FALSE ;
+    PInit.Visible := FALSE ;
+    CBTransit.Visible := FALSE ;
+    PBAli1Init.AsInteger := 100 ;
+    if CBTransit.Checked
+    then
+      CBTransit.Checked := FALSE
+    else
+      CBTransitClick (nil) ;
+  end ;
+end ;
+
+procedure TFSeqAliP.CBTransitClick (Sender : TObject) ;
+begin
+  if CBTransit.Checked
+  then
+  begin
+    PFin.Visible := TRUE ;
+    LInit.Visible := TRUE ;
+    PBAli1Init.Hint := HintAli1Init ;
+  end
+  else
+  begin
+    PFin.Visible := FALSE ;
+    LInit.Visible := FALSE ;
+    PBAli1Init.Hint := HintAli1Const ;
+    PBAli1Fin.AsInteger := PBAli1Init.AsInteger ;
+  end ;
+end ;
+
+procedure TFSeqAliP.CBAli1Change (Sender : TObject) ;
+begin
+  if CBAli1.ItemIndex > -1
+  then
+    CBAli2.Enabled := CBTwoAli.Checked ;
+  if not Update and (CBAli1.Text <> '')
+  then
+  begin
+    Modified := TRUE ;
+    PSeqAliP.Rule[NumRule].NumAli1 := FindNumAliment (CBAli1.Text) ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFSeqAliP.CBAli2Change (Sender : TObject) ;
+begin
+  if not Update and (CBAli2.Text <> '')
+  then
+  begin
+    Modified := TRUE ;
+    PSeqAliP.Rule[NumRule].NumAli2 := FindNumAliment (CBAli2.Text) ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFSeqAliP.PBAli1InitChange (Sender : TObject) ;
+begin
+  PBAli2Init.AsInteger := 100 - PBAli1Init.AsInteger ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSeqAliP.Rule[NumRule].PctAli1Init := PBAli1Init.AsInteger ;
+    if not CBTransit.Checked
+    then // Pas de transition
+      PBAli1Fin.AsInteger := PBAli1Init.AsInteger ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFSeqAliP.PBAli1FinChange (Sender : TObject) ;
+begin
+  PBAli2Fin.AsInteger := 100 - PBAli1Fin.AsInteger ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PSeqAliP.Rule[NumRule].PctAli1Fin := PBAli1Fin.AsInteger ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+function TFSeqAliP.StrModeFin (n : integer) : string ;
+begin
+  if n = PSeqAliP.NbRule
+  then // Fin de simulation
+    result := _('End of simulation')
+  else
+    with PSeqAliP.Rule[n] do
+      case ModeFin of
+        0, 1 : // Dur�e ou Age
+          result := Format ('%s = %1.0f %s', [CBModeFin.Items[ModeFin], ValFin, StrJ]) ;
+        2, 3 : // Poids vif ou Cumul aliment
+          result := Format ('%s = %1.0f %s', [CBModeFin.Items[ModeFin], ValFin, StrKg]) ;
+        else
+          result := '' ;
+      end ;
+end ;
+
+function TFSeqAliP.StrAliment (n : integer) : string ;
+begin
+  with PSeqAliP.Rule[n] do
+    if NumAli1 = -1
+    then
+      result := ''
+    else
+      if NumAli2 = -1
+      then // 1 aliment
+        result := FindNomAliment (NumAli1)
+      else // 2 aliments
+        if PctAli1Init = PctAli1Fin
+        then
+          result := Format ('%s (%d %%) - %s (%d %%)', [FindNomAliment (NumAli1), PctAli1Init, FindNomAliment (NumAli2), 100 - PctAli1Init])
+        else // Transition
+          result := Format ('%s : %s (%d-%d %%) - %s (%d-%d %%)', [_('Transition'), FindNomAliment (NumAli1), PctAli1Init, PctAli1Fin, FindNomAliment (NumAli2), 100 - PctAli1Init, 100 - PctAli1Fin]) ;
+end ;
+
+end.
Index: UFSeqAliT.pas
===================================================================
--- UFSeqAliT.pas	(révision 0)
+++ UFSeqAliT.pas	(révision 3)
@@ -0,0 +1,1030 @@
+unit UFSeqAliT ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, ExtCtrls, Buttons, ComCtrls, PBNumEdit, JvExControls, 
+  JvComponent, JvEnterTab, UVariables, gnugettext;
+
+type
+  TFSeqAliT = class(TForm)
+    GBAli: TGroupBox;
+    CBSeqAli: TComboBox;
+    LBRule: TListBox;
+    LNo: TLabel;
+    LModeFin: TLabel;
+    CBTwoAli: TCheckBox;
+    CBTransit: TCheckBox;
+    CBAli1: TComboBox;
+    LInit: TLabel;
+    LFin: TLabel;
+    PBAli1Init: TPBNumEdit;
+    PBAli1Fin: TPBNumEdit;
+    PBAli2Init: TPBNumEdit;
+    PBAli2Fin: TPBNumEdit;
+    GBSeqAli: TGroupBox;
+    CBAli2: TComboBox;
+    GBRule: TGroupBox;
+    SBAddRule: TSpeedButton;
+    SBDelRule: TSpeedButton;
+    SBAddSeqAli: TSpeedButton;
+    SBDelSeqAli: TSpeedButton;
+    LAli: TLabel;
+    LAli1: TLabel;
+    LAli2: TLabel;
+    LAli1Init: TLabel;
+    LAli1Fin: TLabel;
+    LAli2Init: TLabel;
+    LAli2Fin: TLabel;
+    PInit: TPanel;
+    PFin: TPanel;
+    SBRename: TSpeedButton;
+    SBComment: TSpeedButton;
+    GBEnd: TGroupBox;
+    LUnitFin: TLabel;
+    PBValFin: TPBNumEdit;
+    CBModeFin: TComboBox;
+    TC: TTabControl;
+    SBSave: TSpeedButton;
+    SBPrint: TSpeedButton;
+    GBParam: TGroupBox;
+    PSeqAli: TPanel;
+    JvEnterAsTab: TJvEnterAsTab;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure LBRuleDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure CBSeqAliChange(Sender: TObject);
+    procedure SBAddSeqAliClick(Sender: TObject);
+    procedure SBDelSeqAliClick(Sender: TObject);
+    procedure SBAddRuleClick(Sender: TObject);
+    procedure SBDelRuleClick(Sender: TObject);
+    procedure LBRuleClick(Sender: TObject);
+    procedure CBTwoAliClick(Sender: TObject);
+    procedure CBTransitClick(Sender: TObject);
+    procedure PBAli1InitChange(Sender: TObject);
+    procedure PBAli1FinChange(Sender: TObject);
+    procedure CBAli1Change(Sender: TObject);
+    procedure CBAli2Change(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure FormDeactivate(Sender: TObject);
+    procedure SBRenameClick(Sender: TObject);
+    procedure SBCommentClick(Sender: TObject);
+    procedure PBValFinChange(Sender: TObject);
+    procedure TCChange(Sender: TObject);
+    procedure SBSaveClick(Sender: TObject);
+    procedure SBPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified : boolean ;
+    IdxSeqAliT, NbRule, NumRule : integer ;
+    Rule : array[1..MAX_RULE] of RecRuleSeqAliT ;
+    procedure Save ;
+  public
+    { D�clarations publiques }
+    function StrModeFin (etat, regle : integer) : string ;
+    function StrAliment (etat, regle : integer) : string ;
+  end;
+
+var
+  FSeqAliT: TFSeqAliT;
+
+implementation
+
+uses
+  UStrings, UInit, UUtil, UFindRec, UEchelle, UFComment, UFRapSeqAliT ;
+
+{$R *.dfm}
+
+{ TFSeqAliT }
+
+procedure TFSeqAliT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 616 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 460 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  CBModeFin.ItemIndex := 0;
+end;
+
+procedure TFSeqAliT.FormShow (Sender : TObject) ;
+begin
+  Modified := FALSE ;
+  StringsSeqAliT (CBSeqAli.Items, TRUE) ;
+  SBAddSeqAli.Enabled := IsComplete or (ListSeqAliT.Count < 5) ;
+  SBSave.Enabled := IsComplete or IsEducation ;
+  IdxSeqAliT := -1 ;
+//  CBSeqAliChange (nil) ;
+end ;
+
+procedure TFSeqAliT.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+begin
+  if Modified then Save ;
+  Action := caFree ;
+  NumWinSeqAliT := -1 ;
+end ;
+
+procedure TFSeqAliT.FormActivate (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  CBAli1.Clear ;
+  CBAli2.Clear ;
+  if ListAliment.Count > 0
+  then
+    for i := 0 to ListAliment.Count - 1 do
+    begin
+      PAliment := ListAliment[i] ;
+      if AlimentValid (PAliment) and (PAliment.Typ <> 1)
+      then
+      begin
+        CBAli1.Items.Add (PAliment.Nom) ;
+        CBAli2.Items.Add (PAliment.Nom) ;
+      end ;
+    end ;
+//  if IdxSeqAliT <> -1
+//  then
+//  begin
+//    PSeqAliT := ListSeqAliT[IdxSeqAliT] ;
+//    with Rule[NumRule] do
+//    begin
+//      if NumAli1 <> -1
+//      then
+//        CBAli1.ItemIndex := CBAli1.Items.IndexOf (FindNomAliment (NumAli1)) ;
+//      if NumAli2 <> -1
+//      then
+//        CBAli2.ItemIndex := CBAli2.Items.IndexOf (FindNomAliment (NumAli2)) ;
+//    end ;
+//  end ;
+  CBSeqAliChange (nil) ;
+  GBParam.Enabled := IsComplete or IsEducation or IsEvaluation ;
+  SBAddRule.Visible := GBParam.Enabled ;
+  SBDelRule.Visible := GBParam.Enabled ;
+end ;
+
+procedure TFSeqAliT.FormDeactivate (Sender : TObject) ;
+begin
+  if Modified then Save ;
+end ;
+
+procedure TFSeqAliT.Save ;
+var
+  s : string ;
+begin
+  Modified := FALSE ;
+  if IsComplete or IsEducation
+  then
+    if MessageDlg (Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      SaveSeqAliT ;
+      if not SeqAliTValid (PSeqAliT)
+      then
+        MessageDlg(Format (MsgInvalidData, [Caption, PSeqAliT.Nom]), mtWarning, [mbOK], 0) ;
+    end
+    else
+    begin
+      LoadSeqAliT ;
+      s := CBSeqAli.Text ;
+      StringsSeqAliT (CBSeqAli.Items, TRUE) ;
+      if FindIdxSeqAliT (s) = -1
+      then
+      begin
+        IdxSeqAliT := -1 ;
+        CBSeqAliChange (nil) ;
+      end
+      else
+        CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (s) ;
+    end ;
+end ;
+
+procedure TFSeqAliT.CBSeqAliChange (Sender : TObject) ;
+begin
+  if (IdxSeqAliT <> -1) and (CBSeqAli.Text <> PSeqAliT.Nom)
+  then
+    if Modified then Save ;
+  IdxSeqAliT := FindIdxSeqAliT (CBSeqAli.Text) ;
+  if IdxSeqAliT = -1
+  then
+  begin
+    CBSeqAli.Repaint ;
+    SBDelSeqAli.Enabled := FALSE ;
+    SBRename.Enabled := FALSE ;
+    SBComment.Enabled := FALSE ;
+    SBSave.Enabled := FALSE ;
+    SBPrint.Enabled := FALSE ;
+    TC.Visible := FALSE ;
+  end
+  else // Affichage de l'enregistrement
+  begin
+    SBDelSeqAli.Enabled := TRUE ;
+    SBRename.Enabled := TRUE ;
+    SBComment.Enabled := TRUE ;
+    SBSave.Enabled := TRUE ;
+    SBPrint.Enabled := TRUE ;
+    TC.Visible := TRUE ;
+    PSeqAliT := ListSeqAliT[IdxSeqAliT] ;
+    with PSeqAliT^ do
+      CBSeqAli.Hint := Memo ;
+    TCChange (nil) ;
+  end ;
+end ;
+
+procedure TFSeqAliT.SBAddSeqAliClick (Sender : TObject) ;
+var
+  i, n, q : integer ;
+  s : string ;
+  ok : boolean ;
+  PBackup : PRecSeqAliT ;
+begin
+  if Modified then Save ;
+  if IdxSeqAliT = -1
+  then
+    q := mrNo
+  else
+    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
+  // Saisie du nouveau nom
+  s := '' ;
+  repeat
+    if InputQuery (FSeqAliT.Caption, MsgName, s)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListSeqAliT.Count) do
+          begin
+            PSeqAliT := ListSeqAliT[i] ;
+            if PSeqAliT.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      if (IdxSeqAliT <> -1)
+      then
+        PSeqAliT := ListSeqAliT[IdxSeqAliT] ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  if s <> ''
+  then // Cr�ation du nouvel enregistrement
+  begin
+    // Recherche du premier num�ro libre
+    n := 0 ;
+    repeat
+      Inc (n) ;
+      ok := TRUE ;
+      i := 0 ;
+      while ok and (i < ListSeqAliT.Count) do
+      begin
+        PSeqAliT := ListSeqAliT[i] ;
+        if PSeqAliT.Num = n
+        then
+          ok := FALSE
+        else
+          Inc (i) ;
+      end ;
+    until ok ;
+    New (PSeqAliT) ;
+    with PSeqAliT^ do
+    begin
+      Nom := s ;
+      Num := n ;
+      if q = mrYes
+      then
+      begin
+        PBackup := ListSeqAliT[IdxSeqAliT] ;
+        Memo := PBackup.Memo ;
+        NbRuleGest := PBackup.NbRuleGest ;
+        RuleGest := PBackup.RuleGest ;
+        NbRuleLact := PBackup.NbRuleLact ;
+        RuleLact := PBackup.RuleLact ;
+        NbRuleISSF := PBackup.NbRuleISSF ;
+        RuleISSF := PBackup.RuleISSF ;
+      end
+      else
+      begin
+        Memo := '' ;
+        NbRuleGest := 1 ;
+        for i := 1 to MAX_RULE do
+          with RuleGest[i] do
+          begin
+            ModeFin := -1 ;
+            ValFin := 0 ;
+            NumAli1 := -1 ;
+            NumAli2 := -1 ;
+            PctAli1Init := 100 ;
+            PctAli1Fin := 100 ;
+          end ;
+        NbRuleLact := 1 ;
+        for i := 1 to MAX_RULE do
+          with RuleLact[i] do
+          begin
+            ModeFin := -1 ;
+            ValFin := 0 ;
+            NumAli1 := -1 ;
+            NumAli2 := -1 ;
+            PctAli1Init := 100 ;
+            PctAli1Fin := 100 ;
+          end ;
+        NbRuleISSF := 1 ;
+        for i := 1 to MAX_RULE do
+          with RuleISSF[i] do
+          begin
+            ModeFin := -1 ;
+            ValFin := 0 ;
+            NumAli1 := -1 ;
+            NumAli2 := -1 ;
+            PctAli1Init := 100 ;
+            PctAli1Fin := 100 ;
+          end ;
+      end ;
+    end ;
+    ListSeqAliT.Add (PSeqAliT) ;
+    CBSeqAli.Items.Add (PSeqAliT.Nom) ;
+    CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (PSeqAliT.Nom) ;
+    CBSeqAliChange (nil) ;
+    Modified := TRUE ;
+    SBAddSeqAli.Enabled := IsComplete or (ListSeqAliT.Count < 5) ;
+    SBCommentClick (nil) ;
+  end ;
+end ;
+
+procedure TFSeqAliT.SBDelSeqAliClick (Sender : TObject) ;
+var
+  i, j : integer ;
+begin
+  if SeqAliTUsed (PSeqAliT.Num)
+  then // Enregistrement utilis�
+    MessageDlg (MsgDelErr, mtWarning, [mbOk], 0)
+  else // Suppression de l'enregistrement
+    if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      // Mise � jour du 30/11/2006
+      // Suppression des r�f�rences masqu�es dans des simulations
+      if ListSimulT.Count > 0
+      then
+        for i := 0 to ListSimulT.Count - 1 do
+        begin
+          PSimulT := ListSimulT[i] ;
+          for j := 1 to NB_CYCLES do
+            if PSimulT.SeqAli[j] = PSeqAliT.Num
+            then
+              PSimulT.SeqAli[j] := -1 ;
+        end ;
+      SaveSimulT ; // Sauvegarde !
+      // Fin de mise � jour
+      Dispose (PSeqAliT) ;
+      ListSeqAliT.Delete (IdxSeqAliT) ;
+      SaveSeqAliT ; // Sauvegarde !
+      Modified := FALSE ;
+      CBSeqAli.DeleteSelected ;
+      IdxSeqAliT := -1 ;
+      CBSeqAli.ItemIndex := -1 ;
+      CBSeqAliChange (nil) ;
+      SBAddSeqAli.Enabled := IsComplete or (ListSeqAliT.Count < 5) ;
+    end ;
+end ;
+
+procedure TFSeqAliT.SBRenameClick (Sender : TObject) ;
+var
+  i : integer ;
+  s : string ;
+  ok : boolean ;
+begin
+  // Saisie du nouveau nom
+  s := CBSeqAli.Text ;
+  repeat
+    if InputQuery (FSeqAliT.Caption, MsgRename, s) and (s <> CBSeqAli.Text)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListSeqAliT.Count) do
+          begin
+            PSeqAliT := ListSeqAliT[i] ;
+            if PSeqAliT.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  PSeqAliT := ListSeqAliT[IdxSeqAliT] ;
+  if s <> ''
+  then // Renommer l'enregistrement
+  begin
+    PSeqAliT.Nom := s ;
+    Modified := TRUE ;
+    StringsSeqAliT (CBSeqAli.Items, TRUE) ;
+    CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (s) ;
+  end ;
+end ;
+
+procedure TFSeqAliT.SBCommentClick (Sender : TObject) ;
+begin
+  // Saisie du commentaire
+  FComment := TFComment.Create (Self) ;
+  with FComment do
+  begin
+    Memo.Text := PSeqAliT.Memo ;
+    if ShowModal = mrOk
+    then // Commenter l'enregistrement
+    begin
+      PSeqAliT.Memo := Memo.Text ;
+      Modified := TRUE ;
+      CBSeqAli.Hint := PSeqAliT.Memo ;
+    end ;
+    Release ;
+  end ;
+end ;
+
+procedure TFSeqAliT.SBSaveClick(Sender: TObject);
+begin
+  SaveSeqAliT ;
+  if not SeqAliTValid (PSeqAliT)
+  then
+    MessageDlg(Format (MsgInvalidData, [Caption, PSeqAliT.Nom]), mtWarning, [mbOK], 0) ;
+  Modified := FALSE ;
+end;
+
+procedure TFSeqAliT.SBPrintClick(Sender: TObject);
+begin
+  FRapSeqAliT := TFRapSeqAliT.Create (Self) ;
+  FRapSeqAliT.QRRapport.PreviewModal ;
+  FRapSeqAliT.Release ;
+end;
+
+procedure TFSeqAliT.TCChange (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  case TC.TabIndex of
+    0 : // Gestation
+      with PSeqAliT^ do
+      begin
+        NbRule := NbRuleGest ;
+        for i := 1 to MAX_RULE do
+          Rule[i] := RuleGest[i] ;
+      end ;
+    1 : // Lactation
+      with PSeqAliT^ do
+      begin
+        NbRule := NbRuleLact ;
+        for i := 1 to MAX_RULE do
+          Rule[i] := RuleLact[i] ;
+      end ;
+    2 : // I.S.S.F.
+      with PSeqAliT^ do
+      begin
+        NbRule := NbRuleISSF ;
+        for i := 1 to MAX_RULE do
+          Rule[i] := RuleISSF[i] ;
+      end ;
+  end ;
+  LBRule.Clear ;
+  with PSeqAliT^ do
+    for i := 1 to NbRule do
+      LBRule.Items.Add ('') ;
+  LBRule.ItemIndex := 0 ;
+  LBRuleClick (nil) ;
+end ;
+
+procedure TFSeqAliT.LBRuleClick (Sender : TObject) ;
+begin
+  NumRule := LBRule.ItemIndex + 1 ;
+  if LBRule.Items.Count < MAX_RULE
+  then
+    SBAddRule.Enabled := TRUE
+  else
+    SBAddRule.Enabled := FALSE ;
+  if NumRule = NbRule
+  then // Fin
+    SBDelRule.Enabled := FALSE
+  else
+    SBDelRule.Enabled := TRUE ;
+  GBEnd.Visible := SBDelRule.Enabled ;
+  with Rule[NumRule] do
+  begin
+    Update := TRUE ;
+    PBValFin.AsInteger := ValFin ;
+    if NumAli1 = -1
+    then
+      CBAli1.ItemIndex := -1
+    else
+      CBAli1.ItemIndex := CBAli1.Items.IndexOf (FindNomAliment (NumAli1)) ;
+    if CBAli1.ItemIndex = -1
+    then
+      CBAli1.Hint := ''
+    else
+    begin
+      PAliment := ListAliment[FindIdxAliment (CBAli1.Text)] ;
+      CBAli1.Hint := PAliment.Memo ;
+    end ;
+    if NumAli2 = -1
+    then
+    begin
+      CBAli2.ItemIndex := -1 ;
+      if CBTwoAli.Checked
+      then
+        CBTwoAli.Checked := FALSE
+      else
+        CBTwoAliClick (nil) ;
+    end
+    else // 2 aliments
+    begin
+      CBAli2.ItemIndex := CBAli2.Items.IndexOf (FindNomAliment (NumAli2)) ;
+      PBAli1Init.AsInteger := PctAli1Init ;
+      if PctAli1Init = PctAli1Fin
+      then
+        if CBTransit.Checked
+        then
+          CBTransit.Checked := FALSE
+        else
+          CBTransitClick (nil)
+      else // transition
+      begin
+        PBAli1Fin.AsInteger := PctAli1Fin ;
+        CBTransit.Checked := TRUE ;
+      end ;
+      CBTwoAli.Checked := TRUE ;
+    end ;
+    if CBAli2.ItemIndex = -1
+    then
+      CBAli2.Hint := ''
+    else
+    begin
+      PAliment := ListAliment[FindIdxAliment (CBAli2.Text)] ;
+      CBAli1.Hint := PAliment.Memo ;
+    end ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFSeqAliT.LBRuleDrawItem(Control: TWinControl; Index: Integer;
+  Rect: TRect; State: TOwnerDrawState);
+begin
+  with (Control as TListBox).Canvas do
+  begin
+    // Cadre principal
+    FillRect(Rect);
+    // Texte
+    SetTextAlign(Handle, TA_LEFT);
+    Rect.Left := 22;
+    TextRect(Rect, Rect.Left, Rect.Top, StrModeFin(TC.TabIndex, Index + 1));
+    Rect.Left := 150;
+    TextRect(Rect, Rect.Left, Rect.Top, StrAliment(TC.TabIndex, Index + 1));
+    Rect.Left := 0;
+    // Num�ro
+    SetTextAlign(Handle, TA_RIGHT);
+    Rect.Right := 14;
+    TextRect(Rect, Rect.Right, Rect.Top, Format('%d', [Index + 1]));
+  end;
+end;
+
+procedure TFSeqAliT.SBAddRuleClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  for i := NbRule downto NumRule do
+    Rule[i + 1] := Rule[i] ;
+  with Rule[NumRule] do
+  begin
+    ModeFin := 0 ;
+    ValFin := 0 ;
+  end ;
+  Inc (NbRule) ;
+  case TC.TabIndex of
+    0 : // Gestation
+      with PSeqAliT^ do
+      begin
+        NbRuleGest := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleGest[i] := Rule[i] ;
+      end ;
+    1 : // Lactation
+      with PSeqAliT^ do
+      begin
+        NbRuleLact := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleLact[i] := Rule[i] ;
+      end ;
+    2 : // I.S.S.F.
+      with PSeqAliT^ do
+      begin
+        NbRuleISSF := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleISSF[i] := Rule[i] ;
+      end ;
+  end ;
+  LBRule.Items.Add ('') ;
+  LBRule.ItemIndex := NumRule - 1 ;
+  LBRuleClick (nil) ;
+  Modified := TRUE ;
+  ActiveControl := PBValFin ;
+end ;
+
+procedure TFSeqAliT.SBDelRuleClick (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  Dec (NbRule) ;
+  for i := NumRule to NbRule do
+    Rule[i] := Rule[i + 1] ;
+  case TC.TabIndex of
+    0 : // Gestation
+      with PSeqAliT^ do
+      begin
+        NbRuleGest := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleGest[i] := Rule[i] ;
+      end ;
+    1 : // Lactation
+      with PSeqAliT^ do
+      begin
+        NbRuleLact := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleLact[i] := Rule[i] ;
+      end ;
+    2 : // I.S.S.F.
+      with PSeqAliT^ do
+      begin
+        NbRuleISSF := NbRule ;
+        for i := 1 to MAX_RULE do
+          RuleISSF[i] := Rule[i] ;
+      end ;
+  end ;
+  i := NumRule ; // Position courante
+  LBRule.DeleteSelected ;
+  LBRule.ItemIndex := i - 1 ;
+  LBRuleClick (nil) ;
+  ActiveControl := LBRule ;
+  Modified := TRUE ;
+end ;
+
+procedure TFSeqAliT.PBValFinChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].ValFin := PBValFin.AsInteger ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PSeqAliT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PSeqAliT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PSeqAliT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFSeqAliT.CBTwoAliClick (Sender : TObject) ;
+begin
+  if CBTwoAli.Checked
+  then
+  begin
+    if CBAli1.ItemIndex = -1
+    then
+      CBAli2.Enabled := FALSE
+    else
+      CBAli2.Enabled := TRUE ;
+    PInit.Visible := TRUE ;
+    CBTransit.Visible := TRUE
+  end
+  else
+  begin
+    if CBAli2.Text <> ''
+    then
+    begin
+      Modified := TRUE ;
+      CBAli2.ItemIndex := -1 ;
+      Rule[NumRule].NumAli2 := -1 ;
+      case TC.TabIndex of
+        0 : // Gestation
+          with PSeqAliT^ do
+          begin
+            NbRuleGest := NbRule ;
+            RuleGest[NumRule] := Rule[NumRule] ;
+          end ;
+        1 : // Lactation
+          with PSeqAliT^ do
+          begin
+            NbRuleLact := NbRule ;
+            RuleLact[NumRule] := Rule[NumRule] ;
+          end ;
+        2 : // I.S.S.F.
+          with PSeqAliT^ do
+          begin
+            NbRuleISSF := NbRule ;
+            RuleISSF[NumRule] := Rule[NumRule] ;
+          end ;
+      end ;
+    end ;
+    CBAli2.Enabled := FALSE ;
+    PInit.Visible := FALSE ;
+    CBTransit.Visible := FALSE ;
+    PBAli1Init.AsInteger := 100 ;
+    if CBTransit.Checked
+    then
+      CBTransit.Checked := FALSE
+    else
+      CBTransitClick (nil) ;
+  end ;
+  LBRule.Repaint ;
+end ;
+
+procedure TFSeqAliT.CBTransitClick (Sender : TObject) ;
+begin
+  if CBTransit.Checked
+  then
+  begin
+    PFin.Visible := TRUE ;
+    LInit.Visible := TRUE ;
+  end
+  else
+  begin
+    PFin.Visible := FALSE ;
+    LInit.Visible := FALSE ;
+    PBAli1Fin.AsInteger := PBAli1Init.AsInteger ;
+  end ;
+  LBRule.Repaint ;
+end ;
+
+procedure TFSeqAliT.CBAli1Change (Sender : TObject) ;
+begin
+  if CBAli1.ItemIndex > -1
+  then
+    CBAli2.Enabled := CBTwoAli.Checked ;
+  if not Update and (CBAli1.Text <> '')
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].NumAli1 := FindNumAliment (CBAli1.Text) ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PSeqAliT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PSeqAliT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PSeqAliT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFSeqAliT.CBAli2Change (Sender : TObject) ;
+begin
+  if not Update and (CBAli2.Text <> '')
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].NumAli2 := FindNumAliment (CBAli2.Text) ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PSeqAliT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PSeqAliT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PSeqAliT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFSeqAliT.PBAli1InitChange (Sender : TObject) ;
+begin
+  PBAli2Init.AsInteger := 100 - PBAli1Init.AsInteger ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].PctAli1Init := PBAli1Init.AsInteger ;
+    if not CBTransit.Checked
+    then // Pas de transition
+      PBAli1Fin.AsInteger := PBAli1Init.AsInteger ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PSeqAliT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PSeqAliT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PSeqAliT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+procedure TFSeqAliT.PBAli1FinChange (Sender : TObject) ;
+begin
+  PBAli2Fin.AsInteger := 100 - PBAli1Fin.AsInteger ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    Rule[NumRule].PctAli1Fin := PBAli1Fin.AsInteger ;
+    case TC.TabIndex of
+      0 : // Gestation
+        with PSeqAliT^ do
+        begin
+          NbRuleGest := NbRule ;
+          RuleGest[NumRule] := Rule[NumRule] ;
+        end ;
+      1 : // Lactation
+        with PSeqAliT^ do
+        begin
+          NbRuleLact := NbRule ;
+          RuleLact[NumRule] := Rule[NumRule] ;
+        end ;
+      2 : // I.S.S.F.
+        with PSeqAliT^ do
+        begin
+          NbRuleISSF := NbRule ;
+          RuleISSF[NumRule] := Rule[NumRule] ;
+        end ;
+    end ;
+    LBRule.Repaint ;
+  end ;
+end ;
+
+function TFSeqAliT.StrModeFin (etat, regle : integer) : string ;
+var
+  Nb : integer ;
+  Rec : RecRuleSeqAliT ;
+begin
+  case etat of
+    0 : // Gestation
+      Nb := PSeqAliT.NbRuleGest ;
+    1 : // Lactation
+      Nb := PSeqAliT.NbRuleLact ;
+    else // I.S.S.F.
+      Nb := PSeqAliT.NbRuleISSF ;
+  end ;
+  if regle = Nb
+  then // Fin
+    case etat of
+      0 : // Gestation
+        result := StrMiseBas ;
+      1 : // Lactation
+        result := StrSevrage ;
+      2 : // I.S.S.F.
+        result := StrSaillie ;
+    end
+  else
+  begin
+    case etat of
+      0 : // Gestation
+        Rec := PSeqAliT.RuleGest[regle] ;
+      1 : // Lactation
+        Rec := PSeqAliT.RuleLact[regle] ;
+      2 : // I.S.S.F.
+        Rec := PSeqAliT.RuleISSF[regle] ;
+    end ;
+    with Rec do
+      case ModeFin of
+        0 : // Dur�e
+          result := Format ('%s = %d %s', [CBModeFin.Items[ModeFin], ValFin, StrJ]) ;
+        else
+          result := '' ;
+      end ;
+  end ;
+end ;
+
+function TFSeqAliT.StrAliment (etat, regle : integer) : string ;
+var
+  Rec : RecRuleSeqAliT ;
+begin
+  case etat of
+    0 : // Gestation
+      Rec := PSeqAliT.RuleGest[regle] ;
+    1 : // Lactation
+      Rec := PSeqAliT.RuleLact[regle] ;
+    2 : // I.S.S.F.
+      Rec := PSeqAliT.RuleISSF[regle] ;
+  end ;
+  with Rec do
+    if NumAli1 = -1
+    then
+      result := ''
+    else
+      if NumAli2 = -1
+      then // 1 aliment
+        result := FindNomAliment (NumAli1)
+      else // 2 aliments
+        if PctAli1Init = PctAli1Fin
+        then
+          result := Format ('%s (%d %%) - %s (%d %%)', [FindNomAliment (NumAli1), PctAli1Init, FindNomAliment (NumAli2), 100 - PctAli1Init])
+        else // Transition
+          result := Format ('%s : %s (%d-%d %%) - %s (%d-%d %%)', [_('Transition'), FindNomAliment (NumAli1), PctAli1Init, PctAli1Fin, FindNomAliment (NumAli2), 100 - PctAli1Init, 100 - PctAli1Fin]) ;
+end ;
+
+end.
Index: UFConfig.pas
===================================================================
--- UFConfig.pas	(révision 0)
+++ UFConfig.pas	(révision 3)
@@ -0,0 +1,1045 @@
+unit UFConfig;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Messages, Dialogs, ComCtrls, StdCtrls,
+  Buttons, ExtCtrls, ExtDlgs, PBNumEdit, PBEdit, PBSuperSpin;
+
+type
+  TFConfig = class(TForm)
+    PC: TPageControl;
+    TSAliment: TTabSheet;
+    PBoutons: TPanel;
+    BBOk: TBitBtn;
+    BBCancel: TBitBtn;
+    GBFolder: TGroupBox;
+    TSGeneral: TTabSheet;
+    LGal: TLabel;
+    GBTeneur: TGroupBox;
+    GBDigest: TGroupBox;
+    CBRap: TComboBox;
+    CBTCompo: TComboBox;
+    CBTAA: TComboBox;
+    CBTAG: TComboBox;
+    CBTMacro: TComboBox;
+    CBTOligo: TComboBox;
+    CBTFibres: TComboBox;
+    CBDig: TComboBox;
+    CBdCompo: TComboBox;
+    CBdAA: TComboBox;
+    CBAffMP: TCheckBox;
+    LCompo: TLabel;
+    LAA: TLabel;
+    LAG: TLabel;
+    LMacro: TLabel;
+    LOligo: TLabel;
+    LFibres: TLabel;
+    GBExpr: TGroupBox;
+    GBWindow: TGroupBox;
+    PBHeight: TPBNumEdit;
+    LWidth: TLabel;
+    SBWindow: TSpeedButton;
+    PBWidth: TPBNumEdit;
+    LHeight: TLabel;
+    PBTop: TPBNumEdit;
+    LTop: TLabel;
+    PBLeft: TPBNumEdit;
+    LLeft: TLabel;
+    TSTruie: TTabSheet;
+    GBAliGest: TGroupBox;
+    LAliDuree: TLabel;
+    LAliQuantite: TLabel;
+    GBAli1: TGroupBox;
+    PBDuree1: TPBSuperSpin;
+    PBQuantite1: TPBSuperSpin;
+    GBAli3: TGroupBox;
+    PBDuree3: TPBSuperSpin;
+    PBQuantite3: TPBSuperSpin;
+    CBTypeAliGest: TComboBox;
+    PBAugment: TPBSuperSpin;
+    LAugment: TLabel;
+    GBAli2: TGroupBox;
+    PBDuree2: TPBNumEdit;
+    PBQuantite2: TPBSuperSpin;
+    TSMessages: TTabSheet;
+    CBAffCorrCUD: TCheckBox;
+    TSPorc: TTabSheet;
+    GBXCrois: TGroupBox;
+    GBCarcasse: TGroupBox;
+    GBXTruie: TGroupBox;
+    CBXCrois: TComboBox;
+    LXCrois: TLabel;
+    CBXTruie: TComboBox;
+    LXTruie: TLabel;
+    CBTete: TCheckBox;
+    CBLangue: TCheckBox;
+    CBPieds: TCheckBox;
+    CBQueue: TCheckBox;
+    CBHampe: TCheckBox;
+    CBPanne: TCheckBox;
+    CBAffUnitProfilP: TCheckBox;
+    CBAffPDMoy: TCheckBox;
+    CBAffPrecocite: TCheckBox;
+    CBAffEntretien: TCheckBox;
+    GBProfilP: TGroupBox;
+    GBAliMat: TGroupBox;
+    CBAffCalcAli: TCheckBox;
+    CBAffGraphAli: TCheckBox;
+    GBLocal: TGroupBox;
+    LLanguage: TLabel;
+    LMonnaie: TLabel;
+    PBMonnaie: TPBEdit;
+    EFolder: TEdit;
+    SBFolder: TSpeedButton;
+    GBSimulT: TGroupBox;
+    CBAffOptInit: TCheckBox;
+    CBAffSimulT: TCheckBox;
+    GBLogo: TGroupBox;
+    SBLogo: TSpeedButton;
+    ELogo: TEdit;
+    OPDLogo: TOpenPictureDialog;
+    GBExcelFile: TGroupBox;
+    SBExcelFile: TSpeedButton;
+    EExcelFile: TEdit;
+    ODExcelFile: TOpenDialog;
+    GBWarning: TGroupBox;
+    SBWarning: TSpeedButton;
+    CBLanguage: TComboBox;
+    GBIntake: TGroupBox;
+    GBFat: TGroupBox;
+    GBLean: TGroupBox;
+    RBIC: TRadioButton;
+    RBEA: TRadioButton;
+    RBP2: TRadioButton;
+    RBUserFat: TRadioButton;
+    RBTMP: TRadioButton;
+    RBUserLean: TRadioButton;
+    SBUserFat: TSpeedButton;
+    SBUserLean: TSpeedButton;
+    CheckBoxUpdates: TCheckBox;
+    procedure FormShow(Sender: TObject);
+    procedure CBLanguageChange(Sender: TObject);
+    procedure CBRapChange(Sender: TObject);
+    procedure CBDigChange(Sender: TObject);
+    procedure CBTCompoChange(Sender: TObject);
+    procedure CBTAAChange(Sender: TObject);
+    procedure CBTAGChange(Sender: TObject);
+    procedure CBTMacroChange(Sender: TObject);
+    procedure CBTOligoChange(Sender: TObject);
+    procedure CBTFibresChange(Sender: TObject);
+    procedure CBdCompoChange(Sender: TObject);
+    procedure CBdAAChange(Sender: TObject);
+    procedure CBAffMPClick(Sender: TObject);
+    procedure PBMonnaieChange(Sender: TObject);
+    procedure SBWindowClick(Sender: TObject);
+    procedure CBTypeAliGestChange(Sender: TObject);
+    procedure PBDuree1Change(Sender: TObject);
+    procedure PBDuree3Change(Sender: TObject);
+    procedure PBQuantite1Change(Sender: TObject);
+    procedure PBQuantite2Change(Sender: TObject);
+    procedure PBQuantite3Change(Sender: TObject);
+    procedure PBAugmentChange(Sender: TObject);
+    procedure CBXTruieChange(Sender: TObject);
+    procedure CBXCroisChange(Sender: TObject);
+    procedure CBTeteClick(Sender: TObject);
+    procedure CBLangueClick(Sender: TObject);
+    procedure CBPiedsClick(Sender: TObject);
+    procedure CBQueueClick(Sender: TObject);
+    procedure CBHampeClick(Sender: TObject);
+    procedure CBPanneClick(Sender: TObject);
+    procedure SBFolderClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure CBLanguageDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure SBLogoClick(Sender: TObject);
+    procedure EFolderChange(Sender: TObject);
+    procedure ELogoChange(Sender: TObject);
+    procedure SBExcelFileClick(Sender: TObject);
+    procedure EExcelFileChange(Sender: TObject);
+    procedure SBWarningClick(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+    procedure RBFeedInfoClick(Sender: TObject);
+    procedure RBFatInfoClick(Sender: TObject);
+    procedure RBLeanInfoClick(Sender: TObject);
+    procedure SBUserFatClick(Sender: TObject);
+    procedure SBUserLeanClick(Sender: TObject);
+    procedure CheckBoxUpdatesClick(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update: boolean;
+    function StrEquation(Name: String; PVV: Boolean; a, b, c: Double): String;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FConfig: TFConfig;
+
+implementation
+
+uses
+  FileCtrl, Graphics, SysUtils, gnugettext, UVariables, UStrings, UUtil,
+  UFUserEquation, UFMenu;
+
+{$R *.dfm}
+
+{ TFConfig }
+
+procedure TFConfig.FormCreate(Sender: TObject);
+var
+  BorderSize: Integer;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 480 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 436 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  // Initialisation
+  BorderSize := (FMenu.Width - FMenu.ClientWidth) div 2;
+  PBWidth.MaxValue := Screen.WorkAreaWidth + BorderSize * 2;
+  PBWidth.MinValue := FMenu.Constraints.MinWidth;
+  PBHeight.MaxValue := Screen.WorkAreaHeight + BorderSize * 2;
+  PBHeight.MinValue := FMenu.Constraints.MinHeight;
+  PBLeft.MaxValue := PBWidth.MaxValue - PBWidth.MinValue;
+  PBLeft.MinValue := - BorderSize;
+  PBTop.MaxValue := PBHeight.MaxValue - PBHeight.MinValue;
+  PBTop.MinValue := - BorderSize;
+  DefaultInstance.GetListOfLanguages('default', CBLanguage.Items);
+  CBLanguage.Items.Add('en_US');
+  RBIC.Caption := Format('%s = %s / %s', [_('F:G'), _('Feed usage'), _('Body weight gain')]);
+  RBEA.Caption := Format('%s = %s / %s', [_('G:F'), _('Body weight gain'), _('Feed usage')]);
+  RBP2.Caption := StrEquation(StrP2, False, 6.96, 0, 0.375);
+  if Length(UserFatShortName) = 0
+  then
+    RBUserFat.Caption := StrEquation(_('UserP2'), UserFatPVV, UserFatA, UserFatB, UserFatC)
+  else
+    RBUserFat.Caption := StrEquation(UserFatShortName, UserFatPVV, UserFatA, UserFatB, UserFatC);
+  if Length(UserFatLongName) = 0
+  then
+    RBUserFat.Hint := _('User backfat thickness')
+  else
+    RBUserFat.Hint := UserFatLongName;
+  RBTMP.Caption := StrEquation(StrTMP, True, 57.43, 95.68, -62.68);
+  if Length(UserLeanShortName) = 0
+  then
+    RBUserLean.Caption := StrEquation(_('UserLean'), UserLeanPVV, UserLeanA, UserLeanB, UserLeanC)
+  else
+    RBUserLean.Caption := StrEquation(UserLeanShortName, UserLeanPVV, UserLeanA, UserLeanB, UserLeanC);
+  if Length(UserLeanLongName) = 0
+  then
+    RBUserLean.Hint := _('User lean')
+  else
+    RBUserLean.Hint := UserLeanLongName;
+  PC.ActivePageIndex := 0;
+end;
+
+procedure TFConfig.FormShow(Sender: TObject);
+begin
+  NewFolder := Folder;
+  NewLogo := Logo;
+  NewLanguageCode := LanguageCode;
+  Update := TRUE;
+  // G�n�ral
+  EFolder.Text := Folder;
+  EExcelFile.Text := ExcelFile;
+  PBWidth.AsInteger := FMenu.Width;
+  PBHeight.AsInteger := FMenu.Height;
+  PBLeft.AsInteger := FMenu.Left;
+  PBTop.AsInteger := FMenu.Top;
+  ELogo.Text := Logo;
+  CBLanguage.ItemIndex := CBLanguage.Items.IndexOf(LanguageCode);
+  PBMonnaie.Text := CurrencySign;
+  CheckBoxUpdates.Checked := CheckForUpdates;
+  // Mati�res premi�res et aliments
+  CBRap.ItemIndex := ConfRap;
+  CBDig.ItemIndex := ConfDig;
+  CBDigChange(nil);
+  CBTCompo.ItemIndex := ConfTCompo;
+  CBTAA.ItemIndex := ConfTAA;
+  CBTAG.ItemIndex := ConfTAG;
+  CBTMacro.ItemIndex := ConfTMacro;
+  CBTOligo.ItemIndex := ConfTOligo;
+  CBTFibres.ItemIndex := ConfTFibres;
+  CBdCompo.ItemIndex := ConfdCompo;
+  CBdAA.ItemIndex := ConfdAA;
+  CBAffMP.Checked := ConfAffMP;
+  // Truie
+  CBXTruie.ItemIndex := XTruie;
+  CBTypeAliGest.ItemIndex := TypeAliGest;
+  CBTypeAliGestChange(nil);
+  // Porc croissance
+  CBXCrois.ItemIndex := XCrois;
+  CBTete.Checked := CarTete;
+  CBTeteClick(nil);
+  CBLangue.Checked := CarLangue;
+  CBPieds.Checked := CarPieds;
+  CBQueue.Checked := CarQueue;
+  CBHampe.Checked := CarHampe;
+  CBPanne.Checked := CarPanne;
+  if FeedInfo = 0
+  then // Indice de consommation
+    RBIC.Checked := True
+  else // Efficacit� alimentaire
+    RBEA.Checked := True;
+  if FatInfo = 0
+  then // P2
+    RBP2.Checked := True
+  else // User defined
+    RBUserFat.Checked := True;
+  if LeanInfo = 0
+  then // TMP
+    RBTMP.Checked := True
+  else // User defined
+    RBUserLean.Checked := True;
+  Update := False;
+  PC.ActivePageIndex := 0;
+end ;
+
+procedure TFConfig.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+// G�n�ral
+
+procedure TFConfig.SBFolderClick(Sender: TObject);
+var
+  NewDir: String;
+begin
+  NewDir := NewFolder;
+  if SelectDirectory(StrSelectDir, '', NewDir)
+  and DirectoryExists(NewDir)
+  and (NewDir <> NewFolder)
+  then
+    EFolder.Text := NewDir;
+end;
+
+procedure TFConfig.EFolderChange(Sender: TObject);
+begin
+  ConfigChanged := TRUE;
+  NewFolder := EFolder.Text;
+end;
+
+procedure TFConfig.SBExcelFileClick(Sender: TObject);
+begin
+  ODExcelFile.FileName := ExcelFile;
+  if ODExcelFile.Execute and (ODExcelFile.FileName <> ExcelFile)
+  then
+    EExcelFile.Text := ODExcelFile.FileName;
+end;
+
+procedure TFConfig.EExcelFileChange(Sender: TObject);
+begin
+  ConfigChanged := TRUE;
+  ExcelFile := EExcelFile.Text;
+end;
+
+procedure TFConfig.SBWindowClick(Sender: TObject);
+begin
+  ConfigChanged := TRUE;
+  MainLeft := PBLeft.AsInteger;
+  MainTop := PBTop.AsInteger;
+  MainWidth := PBWidth.AsInteger;
+  MainHeight := PBHeight.AsInteger;
+  with FMenu do
+  if (PBWidth.AsInteger <> Width)
+  or (PBHeight.AsInteger <> Height)
+  or (PBLeft.AsInteger <> Left)
+  or (PBTop.AsInteger <> Top)
+  then // Taille et position de la fen�tre principale
+  begin
+    SetBounds(MainLeft, MainTop, MainWidth, MainHeight);
+    FormResize(nil);
+  end;
+end;
+
+procedure TFConfig.SBLogoClick(Sender: TObject);
+begin
+  OPDLogo.FileName := NewLogo;
+  if OPDLogo.Execute and (OPDLogo.FileName <> NewLogo)
+  then
+    ELogo.Text := OPDLogo.FileName;
+end;
+
+procedure TFConfig.ELogoChange(Sender: TObject);
+begin
+  ConfigChanged := TRUE;
+  NewLogo := ELogo.Text;
+end;
+
+procedure TFConfig.CBLanguageDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  LanguageName: String;
+begin
+  with Control as TComboBox do
+  begin
+    // Conversion du code ISO en nom (d�j� traduit)
+    LanguageName := dgettext('languagecodes', Items[Index]);
+    // Cadre
+    Canvas.FillRect(Rect);
+    // Texte
+    Canvas.TextOut(Rect.Left + 2, Rect.Top, LanguageName);
+  end;
+end;
+
+procedure TFConfig.CBLanguageChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    NewLanguageCode := CBLanguage.Items[CBLanguage.ItemIndex];
+    ConfigChanged := TRUE;
+  end;
+end;
+
+procedure TFConfig.PBMonnaieChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    CurrencySign := PBMonnaie.Text;
+    ConfigChanged := TRUE;
+  end;
+end;
+
+procedure TFConfig.SBWarningClick(Sender: TObject);
+begin
+  // R�activation pour la session courante
+  AffCorrCUD := True;
+  AffCalcAli := True;
+  AffGraphAli := True;
+  AffUnitProfilP := True;
+  AffPDMoy := True;
+  AffPrecocite := True;
+  AffEntretien := True;
+  AffOptInit := True;
+  AffSimulT := True;
+  AffBesoin := True;
+  // R�activation globale
+  BdRWriteBoolean('\Software\InraPorc\Config\Messages', 'CorrCUD', True);
+  BdRWriteBoolean('\Software\InraPorc\Config\Messages', 'CalcAli', True);
+  BdRWriteBoolean('\Software\InraPorc\Config\Messages', 'GraphAli', True);
+  BdRWriteBoolean('\Software\InraPorc\Config\Messages', 'UnitProfilP', True);
+  BdRWriteBoolean('\Software\InraPorc\Config\Messages', 'PDMoy', True);
+  BdRWriteBoolean('\Software\InraPorc\Config\Messages', 'Precocite', True);
+  BdRWriteBoolean('\Software\InraPorc\Config\Messages', 'Entretien', True);
+  BdRWriteBoolean('\Software\InraPorc\Config\Messages', 'OptInit', True);
+  BdRWriteBoolean('\Software\InraPorc\Config\Messages', 'SimulT', True);
+  BdRWriteBoolean('\Software\InraPorc\Config\Messages', 'Besoin', True);
+end;
+
+// Mati�res premi�res et aliments
+
+procedure TFConfig.CBRapChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    ConfRap := CBRap.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end ;
+
+procedure TFConfig.CBDigChange (Sender : TObject) ;
+begin
+  if CBDig.ItemIndex = 0
+  then // CUD
+  begin
+    CBDCompo.Enabled := FALSE ;
+    CBDAA.Enabled := FALSE ;
+  end
+  else // Teneur digestible
+  begin
+    CBDCompo.Enabled := TRUE ;
+    CBDAA.Enabled := TRUE ;
+  end ;
+  if not Update
+  then
+  begin
+    ConfDig := CBDig.ItemIndex ;
+    if CBDig.ItemIndex = 0
+    then // CUD
+    begin
+      Update := TRUE ;
+      CBdCompo.ItemIndex := 1; // %
+      CBdAA.ItemIndex := 1; // %
+      Update := FALSE ;
+    end ;
+    ConfDCompo := CBDCompo.ItemIndex ;
+    ConfDAA := CBDAA.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end ;
+
+procedure TFConfig.CBTCompoChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    ConfTCompo := CBTCompo.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end ;
+
+procedure TFConfig.CBTAAChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    ConfTAA := CBTAA.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end ;
+
+procedure TFConfig.CBTAGChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    ConfTAG := CBTAG.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end ;
+
+procedure TFConfig.CBTMacroChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    ConfTMacro := CBTMacro.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end ;
+
+procedure TFConfig.CBTOligoChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    ConfTOligo := CBTOligo.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end ;
+
+procedure TFConfig.CBTFibresChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    ConfTFibres := CBTFibres.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end ;
+
+procedure TFConfig.CBdCompoChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    ConfdCompo := CBdCompo.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end ;
+
+procedure TFConfig.CBdAAChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    ConfdAA := CBdAA.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end ;
+
+procedure TFConfig.CBAffMPClick (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    ConfAffMP := CBAffMP.Checked ;
+    ConfigChanged := TRUE ;
+  end ;
+end ;
+
+// Truie
+
+procedure TFConfig.CBXTruieChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    XTruie := CBXTruie.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.CheckBoxUpdatesClick(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    CheckForUpdates := CheckBoxUpdates.Checked;
+    ConfigChanged := TRUE;
+  end;
+end;
+
+procedure TFConfig.CBTypeAliGestChange(Sender: TObject);
+var
+  etat : boolean ;
+begin
+  etat := Update ;
+  Update := TRUE ;
+  case CBTypeAliGest.ItemIndex of
+    0 : // Une p�riode - Quantit� constante
+    begin
+      PBDuree1.Visible := FALSE ;
+      PBDuree3.Visible := FALSE ;
+      PBQuantite1.Visible := FALSE ;
+      PBQuantite2.Visible := FALSE ;
+      PBQuantite3.Visible := FALSE ;
+      PBAugment.Visible := FALSE ;
+      PBDuree2.AsInteger := DureeGest ;
+    end ;
+    1 : // Deux p�riodes - Quantit� finale fix�e
+    begin
+      PBDuree1.Visible := FALSE ;
+      PBDuree3.Visible := TRUE ;
+      PBQuantite1.Visible := FALSE ;
+      PBQuantite2.Visible := FALSE ;
+      PBQuantite3.Visible := TRUE ;
+      PBAugment.Visible := FALSE ;
+      PBDuree2.AsInteger := DureeGest - Duree3 ;
+      if ActiveControl <> PBDuree3
+      then
+        PBDuree3.AsInteger := Duree3 ;
+      if ActiveControl <> PBQuantite3
+      then
+        PBQuantite3.AsFloat := Quantite3 ;
+    end ;
+    2 : // Deux p�riodes - Augmentation fix�e
+    begin
+      PBDuree1.Visible := FALSE ;
+      PBDuree3.Visible := TRUE ;
+      PBQuantite1.Visible := FALSE ;
+      PBQuantite2.Visible := FALSE ;
+      PBQuantite3.Visible := FALSE ;
+      PBAugment.Visible := TRUE ;
+      PBDuree2.AsInteger := DureeGest - Duree3 ;
+      if ActiveControl <> PBDuree3
+      then
+        PBDuree3.AsInteger := Duree3 ;
+      if ActiveControl <> PBAugment
+      then
+        PBAugment.AsFloat := Augment ;
+    end ;
+    3 : // Trois p�riodes - Augmentation et quantit� finale fix�es
+    begin
+      PBDuree1.Visible := TRUE ;
+      PBDuree3.Visible := TRUE ;
+      PBQuantite1.Visible := FALSE ;
+      PBQuantite2.Visible := FALSE ;
+      PBQuantite3.Visible := TRUE ;
+      PBAugment.Visible := TRUE ;
+      if ActiveControl <> PBDuree1
+      then
+        PBDuree1.AsInteger := Duree1 ;
+      PBDuree2.AsInteger := DureeGest - Duree1 - Duree3 ;
+      if ActiveControl <> PBDuree3
+      then
+        PBDuree3.AsInteger := Duree3 ;
+      if ActiveControl <> PBAugment
+      then
+        PBAugment.AsFloat := Augment ;
+      if ActiveControl <> PBQuantite3
+      then
+        PBQuantite3.AsFloat := Quantite3 ;
+    end ;
+    4 : // Trois p�riodes - Quantit�s des p�riodes 2 et 3 fix�es
+    begin
+      PBDuree1.Visible := TRUE ;
+      PBDuree3.Visible := TRUE ;
+      PBQuantite1.Visible := FALSE ;
+      PBQuantite2.Visible := TRUE ;
+      PBQuantite3.Visible := TRUE ;
+      PBAugment.Visible := FALSE ;
+      if ActiveControl <> PBDuree1
+      then
+        PBDuree1.AsInteger := Duree1 ;
+      PBDuree2.AsInteger := DureeGest - Duree1 - Duree3 ;
+      if ActiveControl <> PBDuree3
+      then
+        PBDuree3.AsInteger := Duree3 ;
+      if ActiveControl <> PBQuantite2
+      then
+        PBQuantite2.AsFloat := Quantite2 ;
+      if ActiveControl <> PBQuantite3
+      then
+        PBQuantite3.AsFloat := Quantite3 ;
+    end ;
+    5 : // Trois p�riodes - Augmentation et quantit� initiale fix�es
+    begin
+      PBDuree1.Visible := TRUE ;
+      PBDuree3.Visible := TRUE ;
+      PBQuantite1.Visible := TRUE ;
+      PBQuantite2.Visible := FALSE ;
+      PBQuantite3.Visible := FALSE ;
+      PBAugment.Visible := TRUE ;
+      if ActiveControl <> PBDuree1
+      then
+        PBDuree1.AsInteger := Duree1 ;
+      PBDuree2.AsInteger := DureeGest - Duree1 - Duree3 ;
+      if ActiveControl <> PBDuree3
+      then
+        PBDuree3.AsInteger := Duree3 ;
+      if ActiveControl <> PBAugment
+      then
+        PBAugment.AsFloat := Augment ;
+      if ActiveControl <> PBQuantite1
+      then
+        PBQuantite1.AsFloat := Quantite1 ;
+    end ;
+  end ;
+  Update := etat ;
+  if not Update
+  then
+  begin
+    TypeAliGest := CBTypeAliGest.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.PBDuree1Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Duree1 := PBDuree1.AsInteger ;
+    CBTypeALiGestChange (nil) ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.PBDuree3Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Duree3 := PBDuree3.AsInteger ;
+    CBTypeALiGestChange (nil) ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.PBQuantite1Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Quantite1 := PBQuantite1.AsFloat ;
+    CBTypeALiGestChange (nil) ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.PBQuantite2Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Quantite2 := PBQuantite2.AsFloat ;
+    CBTypeALiGestChange (nil) ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.PBQuantite3Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Quantite3 := PBQuantite3.AsFloat ;
+    CBTypeALiGestChange (nil) ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.PBAugmentChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Augment := PBAugment.AsFloat ;
+    CBTypeAliGestChange (nil) ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+// Porc croissance
+
+procedure TFConfig.CBXCroisChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    XCrois := CBXCrois.ItemIndex ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.CBTeteClick(Sender: TObject);
+begin
+  if CBTete.Checked
+  then
+    CBLangue.Enabled := TRUE
+  else
+  begin
+    CarLangue := FALSE ;
+    CBLangue.Checked := FALSE ;
+    CBLangue.Enabled := FALSE ;
+  end ;
+  if not Update
+  then
+  begin
+    CarTete := CBTete.Checked ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.CBLangueClick(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    CarLangue := CBLangue.Checked ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.CBPiedsClick(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    CarPieds := CBPieds.Checked ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.CBQueueClick(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    CarQueue := CBQueue.Checked ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.CBHampeClick(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    CarHampe := CBHampe.Checked ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.CBPanneClick(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    CarPanne := CBPanne.Checked ;
+    ConfigChanged := TRUE ;
+  end ;
+end;
+
+procedure TFConfig.RBFeedInfoClick(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    ConfigChanged := True;
+    if RBIC.Checked
+    then // Indice de consommation
+      FeedInfo := 0
+    else // Efficacit� alimentaire
+      FeedInfo := 1;
+  end;
+end;
+
+procedure TFConfig.RBFatInfoClick(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    ConfigChanged := True;
+    if RBP2.Checked
+    then // P2
+      FatInfo := 0
+    else // User defined
+      FatInfo := -1;
+  end;
+end;
+
+procedure TFConfig.SBUserFatClick(Sender: TObject);
+begin
+  FUserEquation := TFUserEquation.Create(Self);
+  with FUserEquation do
+  begin
+    EShortName.Text := UserFatShortName;
+    ELongName.Text := UserFatLongName;
+    if UserFatPVV then RBRatioPVV.Checked := True;
+    VEA.AsFloat := UserFatA;
+    VEB.AsFloat := UserFatB;
+    VEC.AsFloat := UserFatC;
+    if ShowModal = mrOk
+    then
+    begin
+      ConfigChanged := True;
+      UserFatShortName := Trim(EShortName.Text);
+      UserFatLongName := Trim(ELongName.Text);
+      UserFatPVV := RBRatioPVV.Checked;
+      UserFatA := VEA.AsFloat;
+      UserFatB := VEB.AsFloat;
+      UserFatC := VEC.AsFloat;
+      if Length(UserFatShortName) = 0
+      then
+        RBUserFat.Caption := StrEquation(_('UserP2'), UserFatPVV, UserFatA, UserFatB, UserFatC)
+      else
+        RBUserFat.Caption := StrEquation(UserFatShortName, UserFatPVV, UserFatA, UserFatB, UserFatC);
+      if Length(UserFatLongName) = 0
+      then
+        RBUserFat.Hint := _('User backfat thickness')
+      else
+        RBUserFat.Hint := UserFatLongName;
+    end;
+    Release;
+  end;
+end;
+
+procedure TFConfig.RBLeanInfoClick(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    ConfigChanged := True;
+    if RBTMP.Checked
+    then // TMP
+      LeanInfo := 0
+    else // User defined
+      LeanInfo := -1;
+  end;
+end;
+
+procedure TFConfig.SBUserLeanClick(Sender: TObject);
+begin
+  FUserEquation := TFUserEquation.Create(Self);
+  with FUserEquation do
+  begin
+    EShortName.Text := UserLeanShortName;
+    ELongName.Text := UserLeanLongName;
+    if UserLeanPVV then RBRatioPVV.Checked := True;
+    VEA.AsFloat := UserLeanA;
+    VEB.AsFloat := UserLeanB;
+    VEC.AsFloat := UserLeanC;
+    if ShowModal = mrOk
+    then
+    begin
+      ConfigChanged := True;
+      UserLeanShortName := Trim(EShortName.Text);
+      UserLeanLongName := Trim(ELongName.Text);
+      UserLeanPVV := RBRatioPVV.Checked;
+      UserLeanA := VEA.AsFloat;
+      UserLeanB := VEB.AsFloat;
+      UserLeanC := VEC.AsFloat;
+      if Length(UserLeanShortName) = 0
+      then
+        RBUserLean.Caption := StrEquation(_('UserLean'), UserLeanPVV, UserLeanA, UserLeanB, UserLeanC)
+      else
+        RBUserLean.Caption := StrEquation(UserLeanShortName, UserLeanPVV, UserLeanA, UserLeanB, UserLeanC);
+      if Length(UserLeanLongName) = 0
+      then
+        RBUserLean.Hint := _('User lean')
+      else
+        RBUserLean.Hint := UserLeanLongName;
+    end;
+    Release;
+  end;
+end;
+
+function TFConfig.StrEquation(Name: String; PVV: Boolean; a, b, c: Double): String;
+var
+  BUnit, CUnit: String;
+begin
+  if PVV
+  then
+    BUnit := Format('%s/%s', [StrP, StrPVV])
+  else
+    BUnit := StrP;
+  if PVV
+  then
+    CUnit := Format('%s/%s', [StrL, StrPVV])
+  else
+    CUnit := StrL;
+  if c = 0
+  then
+    if b = 0
+    then
+      Result := Format('%s = %s', [Name, DblToStr(a, 5)])
+    else
+      if a = 0
+      then
+        Result := Format('%s = %s %s', [Name, DblToStr(b, 5), BUnit])
+      else
+        if b < 0
+        then
+          Result := Format('%s = %s - %s %s', [Name, DblToStr(a, 5), DblToStr(Abs(b), 5), BUnit])
+        else
+          Result := Format('%s = %s + %s %s', [Name, DblToStr(a, 5), DblToStr(b, 5), BUnit])
+  else
+    if b = 0
+    then
+      if a = 0
+      then
+        Result := Format('%s = %s %s', [Name, DblToStr(c, 5), CUnit])
+      else
+        if c < 0
+        then
+          Result := Format('%s = %s - %s %s', [Name, DblToStr(a, 5), DblToStr(Abs(c), 5), CUnit])
+        else
+          Result := Format('%s = %s + %s %s', [Name, DblToStr(a, 5), DblToStr(c, 5), CUnit])
+    else
+      if a = 0
+      then
+        if c < 0
+        then
+          Result := Format('%s = %s %s - %s %s', [Name, DblToStr(b, 5), BUnit, DblToStr(Abs(c), 5), CUnit])
+        else
+          Result := Format('%s = %s %s + %s %s', [Name, DblToStr(b, 5), BUnit, DblToStr(c, 5), CUnit])
+      else
+        if c < 0
+        then
+          if b < 0
+          then
+            Result := Format('%s = %s - %s %s - %s %s', [Name, DblToStr(a, 5), DblToStr(Abs(b), 5), BUnit, DblToStr(Abs(c), 5), CUnit])
+          else
+            Result := Format('%s = %s + %s %s - %s %s', [Name, DblToStr(a, 5), DblToStr(b, 5), BUnit, DblToStr(Abs(c), 5), CUnit])
+        else
+          if b < 0
+          then
+            Result := Format('%s = %s - %s %s + %s %s', [Name, DblToStr(a, 5), DblToStr(Abs(b), 5), BUnit, DblToStr(c, 5), CUnit])
+          else
+            Result := Format('%s = %s + %s %s + %s %s', [Name, DblToStr(a, 5), DblToStr(b, 5), BUnit, DblToStr(c, 5), CUnit]);
+end;
+
+end.
Index: UFRapMatAA.dfm
===================================================================
--- UFRapMatAA.dfm	(révision 0)
+++ UFRapMatAA.dfm	(révision 3)
@@ -0,0 +1,3465 @@
+object FRapMatAA: TFRapMatAA
+  Left = 0
+  Top = 80
+  Caption = 'Feed ingredients composition report - Amino acids'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed ingredient composition: amino acids'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRDBTdMetCysApp: TQRDBText
+        Left = 463
+        Top = 476
+        Width = 97
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1225.020833333333000000
+          1259.416666666667000000
+          256.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMetCys_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdHisApp: TQRDBText
+        Left = 489
+        Top = 436
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1293.812500000000000000
+          1153.583333333333000000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dHis_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdIleApp: TQRDBText
+        Left = 495
+        Top = 396
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1309.687500000000000000
+          1047.750000000000000000
+          171.979166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dIle_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdTyrApp: TQRDBText
+        Left = 490
+        Top = 356
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1296.458333333333000000
+          941.916666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dTyr_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdThrApp: TQRDBText
+        Left = 490
+        Top = 316
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1296.458333333333000000
+          836.083333333333300000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dThr_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdCysApp: TQRDBText
+        Left = 485
+        Top = 276
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1283.229166666667000000
+          730.250000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dCys_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLysApp: TQRDBText
+        Left = 487
+        Top = 236
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1288.520833333333000000
+          624.416666666666700000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLys_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdPheTyrApp: TQRDBText
+        Left = 467
+        Top = 496
+        Width = 93
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1235.604166666667000000
+          1312.333333333333000000
+          246.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dPheTyr_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdArgApp: TQRDBText
+        Left = 488
+        Top = 456
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1291.166666666667000000
+          1206.500000000000000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dArg_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdValApp: TQRDBText
+        Left = 489
+        Top = 416
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1293.812500000000000000
+          1100.666666666667000000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dVal_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLeuApp: TQRDBText
+        Left = 487
+        Top = 376
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1288.520833333333000000
+          994.833333333333300000
+          193.145833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLeu_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdPheApp: TQRDBText
+        Left = 485
+        Top = 336
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1283.229166666667000000
+          889.000000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dPhe_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdTrpApp: TQRDBText
+        Left = 490
+        Top = 296
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1296.458333333333000000
+          783.166666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dTrp_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMetApp: TQRDBText
+        Left = 486
+        Top = 256
+        Width = 74
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1285.875000000000000000
+          677.333333333333300000
+          195.791666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMet_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMAT_App: TQRDBText
+        Left = 481
+        Top = 216
+        Width = 79
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1272.645833333333000000
+          571.500000000000000000
+          209.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMAT_App_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLdAA_App: TQRLabel
+        Left = 501
+        Top = 192
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1325.562500000000000000
+          508.000000000000000000
+          156.104166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Apparent'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMatiere: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRDBMatiere: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          153.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Matiere_'
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTAA: TQRLabel
+        Left = 270
+        Top = 168
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          714.375000000000000000
+          444.500000000000000000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMAT: TQRLabel
+        Left = 40
+        Top = 216
+        Width = 88
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          571.500000000000000000
+          232.833333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Crude protein'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMAT: TQRDBText
+        Left = 271
+        Top = 216
+        Width = 49
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          717.020833333333300000
+          571.500000000000000000
+          129.645833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMAT_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAA: TQRLabel
+        Left = 40
+        Top = 136
+        Width = 220
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          359.833333333333300000
+          582.083333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content and ileal digestibility'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLdAA: TQRLabel
+        Left = 360
+        Top = 168
+        Width = 240
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          952.500000000000000000
+          444.500000000000000000
+          635.000000000000000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Digestibility'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRSdFecale: TQRShape
+        Left = 400
+        Top = 184
+        Width = 160
+        Height = 8
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          21.166666666666700000
+          1058.333333333330000000
+          486.833333333333000000
+          423.333333333333000000)
+        Pen.Width = 4
+        Shape = qrsHorLine
+        VertAdjust = 0
+      end
+      object QRLdAA_Std: TQRLabel
+        Left = 394
+        Top = 192
+        Width = 86
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1042.458333333333000000
+          508.000000000000000000
+          227.541666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Standardized'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCompo: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          254.000000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'StrCompo'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsItalic]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMAT_Std: TQRDBText
+        Left = 404
+        Top = 216
+        Width = 76
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1068.916666666667000000
+          571.500000000000000000
+          201.083333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMAT_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMet: TQRLabel
+        Left = 40
+        Top = 256
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          677.333333333333300000
+          190.500000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMet: TQRDBText
+        Left = 276
+        Top = 256
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          730.250000000000000000
+          677.333333333333300000
+          116.416666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMet_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMetStd: TQRDBText
+        Left = 409
+        Top = 256
+        Width = 71
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1082.145833333333000000
+          677.333333333333300000
+          187.854166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMet_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTrp: TQRLabel
+        Left = 40
+        Top = 296
+        Width = 73
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          783.166666666666700000
+          193.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Tryptophan'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTTrp: TQRDBText
+        Left = 280
+        Top = 296
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          740.833333333333300000
+          783.166666666666700000
+          105.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TTrp_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdTrpStd: TQRDBText
+        Left = 413
+        Top = 296
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1092.729166666667000000
+          783.166666666666700000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dTrp_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPhe: TQRLabel
+        Left = 40
+        Top = 336
+        Width = 93
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          889.000000000000000000
+          246.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTPhe: TQRDBText
+        Left = 275
+        Top = 336
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          727.604166666666700000
+          889.000000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TPhe_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdPheStd: TQRDBText
+        Left = 408
+        Top = 336
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          889.000000000000000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dPhe_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLeu: TQRLabel
+        Left = 40
+        Top = 376
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          994.833333333333300000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Leucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTLeu: TQRDBText
+        Left = 277
+        Top = 376
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          732.895833333333300000
+          994.833333333333300000
+          113.770833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TLeu_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLeuStd: TQRDBText
+        Left = 410
+        Top = 376
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1084.791666666667000000
+          994.833333333333300000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLeu_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLVal: TQRLabel
+        Left = 40
+        Top = 416
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1100.666666666667000000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Valine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTVal: TQRDBText
+        Left = 279
+        Top = 416
+        Width = 41
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          738.187500000000000000
+          1100.666666666667000000
+          108.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TVal_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdValStd: TQRDBText
+        Left = 412
+        Top = 416
+        Width = 68
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1090.083333333333000000
+          1100.666666666667000000
+          179.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dVal_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLArg: TQRLabel
+        Left = 40
+        Top = 456
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1206.500000000000000000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Arginine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTArg: TQRDBText
+        Left = 278
+        Top = 456
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          735.541666666666700000
+          1206.500000000000000000
+          111.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TArg_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdArgStd: TQRDBText
+        Left = 411
+        Top = 456
+        Width = 69
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1087.437500000000000000
+          1206.500000000000000000
+          182.562500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dArg_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPheTyr: TQRLabel
+        Left = 40
+        Top = 496
+        Width = 163
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1312.333333333333000000
+          431.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Phenylalanine + Tyrosine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTPheTyr: TQRDBText
+        Left = 257
+        Top = 496
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          679.979166666666700000
+          1312.333333333333000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TPheTyr_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdPheTyrStd: TQRDBText
+        Left = 390
+        Top = 496
+        Width = 90
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1031.875000000000000000
+          1312.333333333333000000
+          238.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dPheTyr_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLys: TQRLabel
+        Left = 40
+        Top = 236
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          624.416666666666700000
+          111.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lysine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTLys: TQRDBText
+        Left = 277
+        Top = 236
+        Width = 43
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          732.895833333333300000
+          624.416666666666700000
+          113.770833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TLys_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdLysStd: TQRDBText
+        Left = 410
+        Top = 236
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1084.791666666667000000
+          624.416666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dLys_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCys: TQRLabel
+        Left = 40
+        Top = 276
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          730.250000000000000000
+          124.354166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Cystine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCys: TQRDBText
+        Left = 275
+        Top = 276
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          727.604166666666700000
+          730.250000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TCys_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdCysStd: TQRDBText
+        Left = 408
+        Top = 276
+        Width = 72
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          730.250000000000000000
+          190.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dCys_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLThr: TQRLabel
+        Left = 40
+        Top = 316
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          836.083333333333300000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Threonine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTThr: TQRDBText
+        Left = 280
+        Top = 316
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          740.833333333333300000
+          836.083333333333300000
+          105.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TThr_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdThrStd: TQRDBText
+        Left = 413
+        Top = 316
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1092.729166666667000000
+          836.083333333333300000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dThr_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTyr: TQRLabel
+        Left = 40
+        Top = 356
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          941.916666666666700000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Tyrosine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTTyr: TQRDBText
+        Left = 280
+        Top = 356
+        Width = 40
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          740.833333333333300000
+          941.916666666666700000
+          105.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TTyr_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdTyrStd: TQRDBText
+        Left = 413
+        Top = 356
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1092.729166666667000000
+          941.916666666666700000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dTyr_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLIle: TQRLabel
+        Left = 40
+        Top = 396
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1047.750000000000000000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Isoleucine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTIle: TQRDBText
+        Left = 285
+        Top = 396
+        Width = 35
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          754.062500000000000000
+          1047.750000000000000000
+          92.604166666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TIle_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdIleStd: TQRDBText
+        Left = 418
+        Top = 396
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1105.958333333333000000
+          1047.750000000000000000
+          164.041666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dIle_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLHis: TQRLabel
+        Left = 40
+        Top = 436
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1153.583333333333000000
+          148.166666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Histidine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTHis: TQRDBText
+        Left = 279
+        Top = 436
+        Width = 41
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          738.187500000000000000
+          1153.583333333333000000
+          108.479166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_THis_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdHisStd: TQRDBText
+        Left = 412
+        Top = 436
+        Width = 68
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1090.083333333333000000
+          1153.583333333333000000
+          179.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dHis_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMetCys: TQRLabel
+        Left = 40
+        Top = 476
+        Width = 134
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1259.416666666667000000
+          354.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Methionine + Cystine'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMetCys: TQRDBText
+        Left = 253
+        Top = 476
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          669.395833333333300000
+          1259.416666666667000000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMetCys_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTdMetCysStd: TQRDBText
+        Left = 386
+        Top = 476
+        Width = 94
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1021.291666666667000000
+          1259.416666666667000000
+          248.708333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_dMetCys_Std_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFMatiere: TStringField
+      DisplayWidth = 35
+      FieldName = '_Matiere_'
+      Size = 35
+    end
+    object SFTMAT: TStringField
+      FieldName = '_TMAT_'
+      Size = 8
+    end
+    object SFdMATStd: TStringField
+      FieldName = '_dMAT_Std_'
+      Size = 8
+    end
+    object SFdMATApp: TStringField
+      FieldName = '_dMAT_App_'
+      Size = 8
+    end
+    object SFLys: TStringField
+      FieldName = '_TLys_'
+      Size = 8
+    end
+    object SFdLysStd: TStringField
+      FieldName = '_dLys_Std_'
+      Size = 8
+    end
+    object SFdLysApp: TStringField
+      FieldName = '_dLys_App_'
+      Size = 8
+    end
+    object SFTMet: TStringField
+      FieldName = '_TMet_'
+      Size = 8
+    end
+    object SFdMetStd: TStringField
+      FieldName = '_dMet_Std_'
+      Size = 8
+    end
+    object SFdMetApp: TStringField
+      FieldName = '_dMet_App_'
+      Size = 8
+    end
+    object SFTCys: TStringField
+      FieldName = '_TCys_'
+      Size = 8
+    end
+    object SFdCysApp: TStringField
+      FieldName = '_dCys_App_'
+      Size = 8
+    end
+    object SFdCysStd: TStringField
+      FieldName = '_dCys_Std_'
+      Size = 8
+    end
+    object SFTTrp: TStringField
+      FieldName = '_TTrp_'
+      Size = 8
+    end
+    object SFdTrpStd: TStringField
+      FieldName = '_dTrp_Std_'
+      Size = 8
+    end
+    object SFdTrpApp: TStringField
+      FieldName = '_dTrp_App_'
+      Size = 8
+    end
+    object SFTThr: TStringField
+      FieldName = '_TThr_'
+      Size = 8
+    end
+    object SFdThrStd: TStringField
+      FieldName = '_dThr_Std_'
+      Size = 8
+    end
+    object SFdThrApp: TStringField
+      FieldName = '_dThr_App_'
+      Size = 8
+    end
+    object SFTPhe: TStringField
+      FieldName = '_TPhe_'
+      Size = 8
+    end
+    object SFdPheStd: TStringField
+      FieldName = '_dPhe_Std_'
+      Size = 8
+    end
+    object SFdPheApp: TStringField
+      FieldName = '_dPhe_App_'
+      Size = 8
+    end
+    object SFTTyr: TStringField
+      FieldName = '_TTyr_'
+      Size = 8
+    end
+    object SFdTyrStd_: TStringField
+      FieldName = '_dTyr_Std_'
+      Size = 8
+    end
+    object SFdTyrApp: TStringField
+      FieldName = '_dTyr_App_'
+      Size = 8
+    end
+    object SFTLeu: TStringField
+      FieldName = '_TLeu_'
+      Size = 8
+    end
+    object SFdLeuStd: TStringField
+      FieldName = '_dLeu_Std_'
+      Size = 8
+    end
+    object SFdLeuApp: TStringField
+      FieldName = '_dLeu_App_'
+      Size = 8
+    end
+    object SFTIle: TStringField
+      FieldName = '_TIle_'
+      Size = 8
+    end
+    object SFdIleStd: TStringField
+      FieldName = '_dIle_Std_'
+      Size = 8
+    end
+    object SFdIleApp: TStringField
+      FieldName = '_dIle_App_'
+      Size = 8
+    end
+    object SFTVal: TStringField
+      FieldName = '_TVal_'
+      Size = 8
+    end
+    object SFdValStd: TStringField
+      FieldName = '_dVal_Std_'
+      Size = 8
+    end
+    object SFdValApp: TStringField
+      FieldName = '_dVal_App_'
+      Size = 8
+    end
+    object SFTHis: TStringField
+      FieldName = '_THis_'
+      Size = 8
+    end
+    object SFdHisStd: TStringField
+      FieldName = '_dHis_Std_'
+      Size = 8
+    end
+    object SFdHisApp: TStringField
+      FieldName = '_dHis_App_'
+      Size = 8
+    end
+    object SFTArg: TStringField
+      FieldName = '_TArg_'
+      Size = 8
+    end
+    object SFdArgStd: TStringField
+      FieldName = '_dArg_Std_'
+      Size = 8
+    end
+    object SFdArgApp: TStringField
+      FieldName = '_dArg_App_'
+      Size = 8
+    end
+    object SFTMetCys: TStringField
+      FieldName = '_TMetCys_'
+      Size = 8
+    end
+    object SFdMetCysStd: TStringField
+      FieldName = '_dMetCys_Std_'
+      Size = 8
+    end
+    object SFdMetCysApp: TStringField
+      FieldName = '_dMetCys_App_'
+      Size = 8
+    end
+    object SFTPheTyr: TStringField
+      FieldName = '_TPheTyr_'
+      Size = 8
+    end
+    object SFdPheTyrStd: TStringField
+      FieldName = '_dPheTyr_Std_'
+      Size = 8
+    end
+    object SFdPheTyrApp: TStringField
+      FieldName = '_dPheTyr_App_'
+      Size = 8
+    end
+  end
+end
Index: UFProfilP.pas
===================================================================
--- UFProfilP.pas	(révision 0)
+++ UFProfilP.pas	(révision 3)
@@ -0,0 +1,2309 @@
+unit UFProfilP;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons, ExtCtrls, ComCtrls,
+  Grids, DB, Chart, Series, TeEngine, TeeProcs, PBNumEdit, PBSuperSpin,
+  JvExControls, JvEnterTab, ASGSQLite3, UVariables;
+
+type
+  TFProfilP = class(TForm)
+    GBProfil: TGroupBox;
+    SBAddProfil: TSpeedButton;
+    SBDelProfil: TSpeedButton;
+    CBProfil: TComboBox;
+    PC: TPageControl;
+    TSPerf: TTabSheet;
+    PPerfLeft: TPanel;
+    GBInit: TGroupBox;
+    LPV: TLabel;
+    LAge: TLabel;
+    RBProt: TRadioButton;
+    RBLip: TRadioButton;
+    PBLipInit: TPBSuperSpin;
+    PBProtInit: TPBSuperSpin;
+    PBAgeInit: TPBSuperSpin;
+    PBPVInit: TPBSuperSpin;
+    GBFin: TGroupBox;
+    LCarcasse: TLabel;
+    RBFinDuree: TRadioButton;
+    PBDuree: TPBSuperSpin;
+    PBPVFin: TPBSuperSpin;
+    PBCarcasse: TPBSuperSpin;
+    RBFinPoids: TRadioButton;
+    GBPotential: TGroupBox;
+    LEntretien: TLabel;
+    LComport: TLabel;
+    LPDMoy: TLabel;
+    PBPDMoy: TPBSuperSpin;
+    PBEntretien: TPBSuperSpin;
+    PBComport: TPBSuperSpin;
+    PPerfRight: TPanel;
+    PGraphTop: TPanel;
+    Graph: TChart;
+    LigneAdLib: TLineSeries;
+    LPVmr2: TLabel;
+    SBGraph3D: TSpeedButton;
+    PBPVmr2: TPBSuperSpin;
+    TSConso: TTabSheet;
+    GBAdLib: TGroupBox;
+    LCoefA: TLabel;
+    LUnite: TLabel;
+    RBCoef: TRadioButton;
+    RBIngere: TRadioButton;
+    LEquation: TLabel;
+    CBEquation: TComboBox;
+    CBUnite: TComboBox;
+    LCoefB: TLabel;
+    LIng50: TLabel;
+    LIng100: TLabel;
+    GBGraphY: TGroupBox;
+    CBGraphYD: TComboBox;
+    GBGraphX: TGroupBox;
+    CBGraphXD: TComboBox;
+    SBRename: TSpeedButton;
+    SBComment: TSpeedButton;
+    GBResults: TGroupBox;
+    GBGraphT: TGroupBox;
+    CBGraphT: TComboBox;
+    CBGraphXP: TComboBox;
+    BarreAdLib: TBarSeries;
+    CBGraphYP: TComboBox;
+    SBSave: TSpeedButton;
+    SBPrint: TSpeedButton;
+    PBCoefA: TPBSuperSpin;
+    PBCoefB: TPBSuperSpin;
+    PBIng50: TPBSuperSpin;
+    PBIng100: TPBSuperSpin;
+    JvEnterAsTab: TJvEnterAsTab;
+    PCoef: TPanel;
+    PIngere: TPanel;
+    LSeqAli: TLabel;
+    LRation: TLabel;
+    LSexe: TLabel;
+    CBSeqAli: TComboBox;
+    CBRation: TComboBox;
+    CBSexe: TComboBox;
+    LigneRation: TLineSeries;
+    BarreRation: TBarSeries;
+    GBSimul: TGroupBox;
+    ASQLite3DBInraPorc: TASQLite3DB;
+    ASQLite3TableObservProfilP: TASQLite3Table;
+    ASQLite3TableObservProfilPProfile: TIntegerField;
+    ASQLite3TableObservProfilPLine: TIntegerField;
+    ASQLite3TableObservProfilPAge: TIntegerField;
+    ASQLite3TableObservProfilPFeed: TFloatField;
+    ASQLite3TableObservProfilPWeight: TFloatField;
+    ASQLite3TableObservProfilPBackfat: TFloatField;
+    ASQLite3TableObservProfilPLean: TFloatField;
+    ASQLite3QueryCreate: TASQLite3Query;
+    SBCalibrage: TSpeedButton;
+    GBParameters: TGroupBox;
+    PResults: TPanel;
+    SGResult: TStringGrid;
+    CBGraphYU: TComboBox;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure CBProfilChange(Sender: TObject);
+    procedure SBAddProfilClick(Sender: TObject);
+    procedure SBDelProfilClick(Sender: TObject);
+    procedure PCChange(Sender: TObject);
+    procedure CBUniteChange(Sender: TObject);
+    procedure CBEquationChange(Sender: TObject);
+    procedure RBCoefClick(Sender: TObject);
+    procedure PBCoefAChange(Sender: TObject);
+    procedure PBCoefBChange(Sender: TObject);
+    procedure PBIng50Change(Sender: TObject);
+    procedure PBIng100Change(Sender: TObject);
+    procedure PBAgeInitChange(Sender: TObject);
+    procedure PBPVInitChange(Sender: TObject);
+    procedure RBProtLipClick(Sender: TObject);
+    procedure PBProtInitChange(Sender: TObject);
+    procedure PBLipInitChange(Sender: TObject);
+    procedure RBFinClick(Sender: TObject);
+    procedure PBDureeChange(Sender: TObject);
+    procedure PBPVFinChange(Sender: TObject);
+    procedure PBCarcasseChange(Sender: TObject);
+    procedure PBPDMoyChange(Sender: TObject);
+    procedure PBComportChange(Sender: TObject);
+    procedure PBEntretienChange(Sender: TObject);
+    procedure PBPVmr2Change(Sender: TObject);
+    procedure SBGraph3DClick(Sender: TObject);
+    procedure CBSeqAliChange(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure FormDeactivate(Sender: TObject);
+    procedure SGResultDrawCell(Sender: TObject; ACol, ARow: Integer;
+      Rect: TRect; State: TGridDrawState);
+    procedure SBRenameClick(Sender: TObject);
+    procedure SBCommentClick(Sender: TObject);
+    procedure SGResultMouseMove(Sender: TObject; Shift: TShiftState; X,
+      Y: Integer);
+    procedure CBGraphTChange(Sender: TObject);
+    procedure SBSaveClick(Sender: TObject);
+    procedure SBPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure CBSexeChange(Sender: TObject);
+    procedure CBRationChange(Sender: TObject);
+    procedure SBCalibrageClick(Sender: TObject);
+    procedure CBGraphYUChange(Sender: TObject);
+    procedure CBGraphXPChange(Sender: TObject);
+    procedure CBGraphXDChange(Sender: TObject);
+    procedure CBGraphYPChange(Sender: TObject);
+    procedure CBGraphYDChange(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified, Modal: boolean;
+    IdxProfilP: integer;
+    RCStd: double; // rendement carcasse standardis� (t�te, pieds et queue)
+    PResAdLib, PResRestrict: PTabResSimulP;
+    Tab: array[1..8, 1..2] of double;
+    procedure Save;
+    procedure AffGraph;
+    procedure AffLigne(PResSimul: PTabResSimulP; Serie: TLineSeries);
+    procedure AffBarre(PResSimul: PTabResSimulP; Serie: TBarSeries);
+    procedure CalcTab(Ligne: Integer; PResSimul: PTabResSimulP);
+    procedure AffTab;
+    procedure SuperSpinDecimals(Field: TPBSuperSpin; Count: Shortint);
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FProfilP: TFProfilP;
+
+implementation
+
+uses
+  Dialogs, Graphics, Math, SysUtils, gnugettext, UStrings, UInit, UUtil,
+  UFindRec, UCalcul, UEchelle, UFComment, UFWarning, UCalcSimulP, UFRapProfilP,
+  UFGraph3D, UFObservProfilP, UFCalibrProfilP;
+
+{$R *.dfm}
+
+{ TFProfilP }
+
+procedure TFProfilP.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 776 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 464 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  ASQLite3DBInraPorc.DriverDLL := ExtractFilePath(Application.ExeName) + 'sqlite3.dll';
+  ASQLite3DBInraPorc.DefaultDir := GetCurrentDir;
+  ASQLite3DBInraPorc.Database := 'InraPorc.sqb';
+  if not FileExists(ASQLite3DBInraPorc.DriverDLL)
+  then // Erreur
+    MessageDlg(_('SQLite') + sLineBreak + Format(_('%s: driver missing'), [ASQLite3DBInraPorc.DriverDLL]), mtError, [mbOK], 0)
+  else
+    if not FileExists(IncludeTrailingPathDelimiter(ASQLite3DBInraPorc.DefaultDir) + ASQLite3DBInraPorc.Database)
+    then // Cr�ation
+      with ASQLite3QueryCreate do
+      begin
+        SQL.Clear;
+        SQL.Add('CREATE TABLE ObservProfilP (');
+        SQL.Add('  Profile INTEGER,');
+        SQL.Add('  Line INTEGER,');
+        SQL.Add('  Age INTEGER,');
+        SQL.Add('  Feed REAL,');
+        SQL.Add('  Weight REAL,');
+        SQL.Add('  Backfat REAL,');
+        SQL.Add('  Lean REAL)');
+        StartTransaction;
+        try
+          ExecSQL;
+          Commit;
+        except
+          RollBack;
+        end;
+        Close;
+        SQL.Clear;
+        SQL.Add('CREATE INDEX IdxObservProfilP ON ObservProfilP (Profile, Line)');
+        StartTransaction;
+        try
+          ExecSQL;
+          Commit;
+        except
+          RollBack;
+        end;
+        Close;
+      end;
+  CBGraphT.ItemIndex := 0;
+  CBGraphXD.ItemIndex := XCrois;
+  CBGraphXP.ItemIndex := 1;
+  CBGraphYD.ItemIndex := 0;
+  CBGraphYP.ItemIndex := 0;
+  CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Weight gain'), _('g'), _('d')]));
+  CBGraphYU.Items.Add(Format('%s (%s)', [_('Body weight'), _('kg')]));
+  CBGraphYU.ItemIndex := 0;
+end;
+
+procedure TFProfilP.FormShow(Sender: TObject);
+begin
+  Modified := False;
+  Modal := False;
+  ASQLite3DBInraPorc.Open;
+  ASQLite3TableObservProfilP.Open;
+  // Abscisses par d�faut
+  CBGraphXD.ItemIndex := XCrois;
+  New(PResAdLib);
+  New(PResRestrict);
+  StringsProfilP(CBProfil.Items, True);
+  SBAddProfil.Enabled := IsComplete or (ListProfilP.Count < 5);
+  SBSave.Enabled := IsComplete or IsEducation;
+  IdxProfilP := -1;
+//  CBProfilChange(nil);
+end;
+
+procedure TFProfilP.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if Modified then Save;
+  Dispose(PResRestrict);
+  Dispose(PResAdLib);
+  Action := caFree;
+  NumWinProfilP := -1;
+  ASQLite3TableObservProfilP.Close;
+  ASQLite3DBInraPorc.Close;
+  // Compacter la base
+  with ASQLite3QueryCreate do
+  begin
+    SQL.Clear;
+    SQL.Add('VACUUM');
+    ExecSQL;
+  end;
+end;
+
+procedure TFProfilP.FormActivate(Sender: TObject);
+var
+  i: integer;
+begin
+  if not Modal
+  then
+  begin
+    StringsSeqAliP(CBSeqAli.Items, False);
+    StringsRationP(CBRation.Items, False);
+//    if IdxProfilP <> -1
+//    then
+//    begin
+//      PProfilP := ListProfilP[IdxProfilP] ;
+//      with PProfilP^ do
+//        if SeqAli <> -1
+//        then
+//          CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliP (SeqAli)) ;
+//    end ;
+    CBProfilChange(nil);
+    for i := 0 to PC.PageCount - 1 do
+      PC.Pages[i].Enabled := IsComplete or IsEducation or IsEvaluation;
+  end;
+end;
+
+procedure TFProfilP.FormDeactivate(Sender: TObject);
+begin
+  if Modified and not Modal then Save;
+end;
+
+procedure TFProfilP.Save;
+var
+  s: string;
+  n: Integer;
+begin
+  Modified := False;
+  if IsComplete or IsEducation
+  then
+    if MessageDlg (Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      SaveProfilP;
+      if not ProfilPValid(PProfilP)
+      then
+        MessageDlg(Format(MsgInvalidData, [Caption, PProfilP.Nom]), mtWarning, [mbOK], 0);
+    end
+    else
+    begin
+      n := PProfilP.Num;
+      LoadProfilP;
+      s := CBProfil.Text;
+      StringsProfilP(CBProfil.Items, True);
+      if FindIdxProfilP(s) = -1
+      then
+      begin
+        IdxProfilP := -1;
+        // Supprimer les observations
+        with ASQLite3QueryCreate do
+        begin
+          SQL.Clear;
+          SQL.Add(Format('DELETE FROM ObservProfilP WHERE Profile = ''%d''', [n]));
+          StartTransaction;
+          try
+            ExecSQL;
+            Commit;
+          except
+            RollBack;
+          end;
+          Close;
+        end;
+        CBProfilChange(nil);
+      end
+      else
+        CBProfil.ItemIndex := CBProfil.Items.IndexOf(s);
+    end;
+end;
+
+procedure TFProfilP.CBProfilChange(Sender: TObject);
+begin
+  if (IdxProfilP <> -1) and (CBProfil.Text <> PProfilP.Nom)
+  then
+    if Modified then Save;
+  IdxProfilP := FindIdxProfilP(CBProfil.Text);
+  if IdxProfilP = -1
+  then // Pas d'enregistrement
+  begin
+    CBProfil.Repaint;
+    SBDelProfil.Enabled := False;
+    SBRename.Enabled := False;
+    SBComment.Enabled := False;
+    SBSave.Enabled := False;
+    SBPrint.Enabled := False;
+    PC.ActivePageIndex := 0;
+    PC.Visible := False;
+    if not ASQLite3TableObservProfilP.Active then ASQLite3TableObservProfilP.Open;
+    ASQLite3TableObservProfilP.Filtered := False;
+    ASQLite3TableObservProfilP.Filter := '';
+    ASQLite3TableObservProfilP.Refresh;
+  end
+  else // Affichage de l'enregistrement
+  begin
+    SBDelProfil.Enabled := True;
+    SBRename.Enabled := True;
+    SBComment.Enabled := True;
+    SBSave.Enabled := True;
+    SBPrint.Enabled := True;
+    PC.Visible := True;
+    PProfilP := ListProfilP[IdxProfilP];
+    with PProfilP^ do
+    begin
+      if not ASQLite3TableObservProfilP.Active then ASQLite3TableObservProfilP.Open;
+      ASQLite3TableObservProfilP.Filter := Format('Profile = %d', [Num]);
+      ASQLite3TableObservProfilP.Filtered := True;
+      ASQLite3TableObservProfilP.Refresh;
+      Update := True;
+      CBProfil.Hint := Memo;
+      // Conditions d'�levage
+      CBSexe.ItemIndex := Sexe;
+      if SeqAli = -1
+      then
+        CBSeqAli.ItemIndex := -1
+      else
+        CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf(FindNomSeqAliP(SeqAli));
+      if CBSeqAli.ItemIndex = -1
+      then
+        CBSeqAli.Hint := ''
+      else
+      begin
+        PSeqAliP := ListSeqAliP[FindIdxSeqAliP(CBSeqAli.Text)];
+        CBSeqAli.Hint := PSeqAliP.Memo;
+      end;
+      if Ration = -1
+      then
+        CBRation.ItemIndex := -1
+      else
+        CBRation.ItemIndex := CBRation.Items.IndexOf(FindNomRationP(Ration));
+      if CBRation.ItemIndex = -1
+      then
+        CBRation.Hint := ''
+      else
+      begin
+        PRationP := ListRationP[FindIdxRationP(CBRation.Text)];
+        CBRation.Hint := PRationP.Memo;
+      end;
+      PBAgeInit.AsInteger := AgeInit;
+      PBPVInit.AsFloat := PVInit;
+      PBProtInit.MinValue := 0;
+      PBProtInit.MaxValue := 0;
+      PBProtInit.AsFloat := ProtInit;
+      PBProtInit.MaxValue := 0.18 * CalcPVV(PVInit);
+      PBProtInit.MinValue := 0.14 * CalcPVV(PVInit);
+      PBLipInit.MinValue := 0;
+      PBLipInit.MaxValue := 0;
+      PBLipInit.AsFloat := LipInit;
+      PBLipInit.MaxValue := CalcLipProt(PVInit, PBProtInit.MinValue);
+      PBLipInit.MinValue := CalcLipProt(PVInit, PBProtInit.MaxValue);
+      if ModeFin = 0
+      then // Dur�e
+        RBFinDuree.Checked := True
+      else // poids vif
+        RBFinPoids.Checked := True;
+      PBDuree.AsInteger := Duree ;
+      PBPVFin.MinValue := PBPVInit.AsFloat;
+      PBPVFin.AsFloat := PVFin;
+      PBCarcasse.AsFloat := Carcasse * 100;
+      // Consommation et performances AdLib
+      CBUnite.ItemIndex := Unite;
+      CBUniteChange(nil);
+      CBEquation.ItemIndex := Equation;
+      CBEquationChange(nil);
+      PBCoefA.AsFloat := a;
+      PBCoefB.AsFloat := b;
+      PBIng50.AsFloat := CalcIngere(Equation, Unite, a, b, 50);
+      PBIng100.AsFloat := CalcIngere(Equation, Unite, a, b, 100);
+      PBPDMoy.AsFloat := PDMoy;
+      PBComport.AsFloat := BGompertz;
+      PBEntretien.AsFloat := Entretien;
+      // R�ponse � une restriction alimentaire
+      PBPVmr2.AsFloat := PVmr2;
+      Update := False;
+      PCChange(nil);
+    end;
+  end;
+end;
+
+procedure TFProfilP.SBAddProfilClick (Sender : TObject) ;
+var
+  i, n, q : integer ;
+  s : string ;
+  ok : boolean ;
+  PBackup : PRecProfilP ;
+begin
+  if Modified then Save ;
+  if IdxProfilP = -1
+  then
+    q := mrNo
+  else
+    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
+  // saisie du nouveau nom
+  s := '' ;
+  repeat
+    if InputQuery (FProfilP.Caption, MsgName, s)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListProfilP.Count) do
+          begin
+            PProfilP := ListProfilP[i] ;
+            if PProfilP.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      if (IdxProfilP <> -1)
+      then
+        PProfilP := ListProfilP[IdxProfilP] ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  if s <> ''
+  then // Cr�ation du nouvel enregistrement
+  begin
+    // recherche du premier num�ro libre
+    n := 0 ;
+    repeat
+      Inc (n) ;
+      ok := TRUE ;
+      i := 0 ;
+      while ok and (i < ListProfilP.Count) do
+      begin
+        PProfilP := ListProfilP[i] ;
+        if PProfilP.Num = n
+        then
+          ok := FALSE
+        else
+          Inc (i) ;
+      end ;
+    until ok ;
+    New (PProfilP) ;
+    with PProfilP^ do
+    begin
+      Nom := s ;
+      Num := n ;
+      if q = mrYes
+      then
+      begin
+        PBackup := ListProfilP[IdxProfilP] ;
+        Memo := PBackup.Memo ;
+        Sexe := PBackup.Sexe;
+        // Conditions d'�levage
+        SeqAli := PBackup.SeqAli ;
+        Ration := PBackup.Ration;
+        AgeInit := PBackup.AgeInit ;
+        PVInit := PBackup.PVInit ;
+        ProtInit := PBackup.ProtInit;
+        LipInit := PBackup.LipInit;
+        ModeFin := PBackup.ModeFin ;
+        Duree := PBackup.Duree ;
+        PVFin := PBackup.PVFin ;
+        Carcasse := PBackup.Carcasse ;
+        // Consommation et performances ad libitum
+        Unite := PBackup.Unite ;
+        Equation := PBackup.Equation ;
+        a := PBackup.a;
+        b := PBackup.b;
+        PDMoy := PBackup.PDMoy ;
+        BGompertz := PBackup.BGompertz ;
+        Entretien := PBackup.Entretien ;
+        // R�ponse � une restriction alimentaire
+        PVmr2 := PBackup.PVmr2 ;
+      end
+      else
+      begin
+        Memo := '' ;
+        Sexe := -1;
+        // Conditions d'�levage
+        SeqAli := -1 ;
+        Ration := -1;
+        AgeInit := 60 ;
+        PVInit := 25 ;
+        ProtInit := CalcProt(PVInit);
+        LipInit := CalcLipProt(PVInit, ProtInit);
+        ModeFin := 0 ;
+        Duree := 100 ;
+        PVFin := 120 ;
+        Carcasse := 0.79 ;
+        // Consommation et performances ad libitum
+        Unite := 0 ;
+        Equation := 1 ;
+        a := 0.203;
+        b := 0.5850;
+        PDMoy := 150 ;
+        BGompertz := 0.014 ;
+        Entretien := 1 ;
+        // R�ponse � une restriction alimentaire
+        PVmr2 := 70 ;
+      end ;
+    end ;
+    ListProfilP.Add (PProfilP) ;
+    CBProfil.Items.Add (PProfilP.Nom) ;
+    CBProfil.ItemIndex := CBProfil.Items.IndexOf (PProfilP.Nom) ;
+    CBProfilChange (nil) ;
+    Modified := TRUE ;
+    SBAddProfil.Enabled := IsComplete or (ListProfilP.Count < 5) ;
+    SBCommentClick (nil) ;
+  end ;
+end ;
+
+procedure TFProfilP.SBDelProfilClick(Sender: TObject);
+begin
+  if ProfilPUsed (PProfilP.Num)
+  then // Enregistrement utilis�
+    MessageDlg (MsgDelErr, mtWarning, [mbOk], 0)
+  else // Suppression de l'enregistrement
+    if MessageDlg(MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      // Supprimer les observations
+      with ASQLite3QueryCreate do
+      begin
+        SQL.Clear;
+        SQL.Add(Format('DELETE FROM ObservProfilP WHERE Profile = ''%d''', [PProfilP.Num]));
+        StartTransaction;
+        try
+          ExecSQL;
+          Commit;
+        except
+          RollBack;
+        end;
+        Close;
+      end;
+      // Supprimer le profil
+      Dispose(PProfilP);
+      ListProfilP.Delete(IdxProfilP);
+      SaveProfilP; // Sauvegarde !
+      Modified := FALSE;
+      CBProfil.DeleteSelected;
+      IdxProfilP := -1;
+      CBProfil.ItemIndex := -1;
+      CBProfilChange(nil);
+      SBAddProfil.Enabled := IsComplete or (ListProfilP.Count < 5);
+    end;
+end;
+
+procedure TFProfilP.SBRenameClick (Sender : TObject) ;
+var
+  i : integer ;
+  s : string ;
+  ok : boolean ;
+begin
+  // Saisie du nouveau nom
+  s := CBProfil.Text ;
+  repeat
+    if InputQuery (FProfilP.Caption, MsgRename, s) and (s <> CBProfil.Text)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListProfilP.Count) do
+          begin
+            PProfilP := ListProfilP[i] ;
+            if PProfilP.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  PProfilP := ListProfilP[IdxProfilP] ;
+  if s <> ''
+  then // Renommer l'enregistrement
+  begin
+    PProfilP.Nom := s ;
+    Modified := TRUE ;
+    StringsProfilP (CBProfil.Items, TRUE) ;
+    CBProfil.ItemIndex := CBProfil.Items.IndexOf (s) ;
+  end ;
+end ;
+
+procedure TFProfilP.SBCommentClick (Sender : TObject) ;
+begin
+  // Saisie du commentaire
+  FComment := TFComment.Create (Self) ;
+  with FComment do
+  begin
+    Memo.Text := PProfilP.Memo ;
+    if ShowModal = mrOk
+    then // Commenter l'enregistrement
+    begin
+      PProfilP.Memo := Memo.Text ;
+      Modified := TRUE ;
+      CBProfil.Hint := PProfilP.Memo ;
+    end ;
+    Release ;
+  end ;
+end ;
+
+procedure TFProfilP.SBSaveClick(Sender: TObject);
+begin
+  SaveProfilP ;
+  if not ProfilPValid (PProfilP)
+  then
+    MessageDlg(Format (MsgInvalidData, [Caption, PProfilP.Nom]), mtWarning, [mbOK], 0) ;
+  Modified := FALSE ;
+end;
+
+procedure TFProfilP.SBPrintClick(Sender: TObject);
+begin
+  FRapProfilP := TFRapProfilP.Create (Self) ;
+  FRapProfilP.QRRapport.PreviewModal ;
+  FRapProfilP.Release ;
+end;
+
+procedure TFProfilP.PCChange(Sender: TObject);
+var
+  i, j: integer;
+begin
+  if PC.ActivePageIndex = 1
+  then // Graphiques et tableaux de r�sultats
+  begin
+    for i := 1 to 8 do
+      for j := 1 to 2 do
+        Tab[i, j] := 0;
+    for i := 1 to NB_COL_PORC do
+      for j := 1 to MAX_LIG_PORC do
+        PResAdLib.TabResult[i, j] := 0;
+    PResAdLib.NbJSim := 0;
+    for i := 1 to NB_COL_PORC do
+      for j := 1 to MAX_LIG_PORC do
+        PResRestrict.TabResult[i, j] := 0;
+    PResRestrict.NbJSim := 0;
+    LigneAdLib.Clear;
+    LigneRation.Clear;
+    BarreAdLib.Clear;
+    BarreRation.Clear;
+    SBCalibrage.Enabled := False;
+    SBGraph3D.Enabled := False;
+    if ProfilPValid(PProfilP)
+    then
+    begin
+      if PProfilP.SeqAli <> -1
+      then
+      begin
+        PSeqAliP := ListSeqAliP[FindIdxSeqAliP(FindNomSeqAliP(PProfilP.SeqAli))];
+        if SeqAliPValid(PSeqAliP)
+        then
+        begin
+          Screen.Cursor := crHourGlass;
+          try
+            CalcSimulP(-1, PProfilP.Num, PProfilP.SeqAli, -1, -1, 1, PResAdLib);
+            if PProfilP.ModeFin = 0
+            then // Dur�e
+              PProfilP.PVFin := PResAdLib.TabResult[2, PResAdLib.NbJSim];
+            CalcTab(1, PResAdLib);
+          finally
+            Screen.Cursor := crDefault;
+          end;
+          if PProfilP.Ration <> -1
+          then
+          begin
+            PRationP := ListRationP[FindIdxRationP(FindNomRationP(PProfilP.Ration))];
+            if RationPValid(PRationP)
+            then
+            begin
+              SBCalibrage.Enabled := True;
+              SBGraph3D.Enabled := True;
+              Screen.Cursor := crHourGlass;
+              try
+                CalcSimulP(-1, PProfilP.Num, PProfilP.SeqAli, PProfilP.Ration, -1, 1, PResRestrict);
+                if PProfilP.ModeFin = 0
+                then // Dur�e
+                  PProfilP.PVFin := PResRestrict.TabResult[2, PResRestrict.NbJSim];
+                CalcTab(2, PResRestrict);
+              finally
+                Screen.Cursor := crDefault;
+              end;
+            end;
+          end;
+          if PProfilP.ModeFin = 0
+          then // Dur�e
+          begin
+            Update := True;
+            PBPVFin.AsFloat := PProfilP.PVFin;
+            Update := False;
+          end;
+          RCStd := CalcRCStd(PProfilP.PVFin, PProfilP.Carcasse);
+        end;
+      end;
+    end;
+    AffTab;
+    AffGraph;
+  end;
+end;
+
+// Conditions d'�levage
+
+procedure TFProfilP.CBSexeChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PProfilP.Sexe := CBSexe.ItemIndex;
+  end;
+end;
+
+procedure TFProfilP.PBAgeInitChange(Sender: TObject);
+begin
+  if not Update and (PBAgeInit.AsInteger >= PBAgeInit.MinValue)
+  then
+  begin
+    Modified := True;
+    PProfilP.AgeInit := PBAgeInit.AsInteger;
+  end;
+end;
+
+procedure TFProfilP.PBPVInitChange(Sender: TObject);
+begin
+  if not Update and (PBPVInit.AsFloat >= PBPVInit.MinValue)
+  then
+  begin
+    Modified := True;
+    PProfilP.PVInit := PBPVInit.AsFloat;
+    PProfilP.ProtInit := CalcProt(PProfilP.PVInit);
+    PProfilP.LipInit := CalcLipProt(PProfilP.PVInit, PProfilP.ProtInit);
+    Update := True;
+    PBProtInit.MinValue := 0;
+    PBProtInit.MaxValue := 0;
+    PBProtInit.AsFloat :=  PProfilP.ProtInit;
+    PBProtInit.MaxValue := 0.18 * CalcPVV(PProfilP.PVInit);
+    PBProtInit.MinValue := 0.14 * CalcPVV(PProfilP.PVInit);
+    PBLipInit.MinValue := 0;
+    PBLipInit.MaxValue := 0;
+    PBLipInit.AsFloat := PProfilP.LipInit;
+    PBLipInit.MaxValue := CalcLipProt(PProfilP.PVInit, PBProtInit.MinValue);
+    PBLipInit.MinValue := CalcLipProt(PProfilP.PVInit, PBProtInit.MaxValue);
+    PBPVFin.MinValue := PProfilP.PVInit;
+    Update := False;
+  end;
+end;
+
+procedure TFProfilP.RBProtLipClick(Sender: TObject);
+begin
+  PBProtInit.Enabled := RBProt.Checked;
+  PBLipInit.Enabled := RBLip.Checked;
+end;
+
+procedure TFProfilP.PBProtInitChange(Sender: TObject);
+begin
+  if not Update and (PBProtInit.AsFloat >= PBProtInit.MinValue)
+  then
+  begin
+    Modified := True;
+    PProfilP.ProtInit := PBProtInit.AsFloat;
+    PProfilP.LipInit := CalcLipProt(PProfilP.PVInit, PProfilP.ProtInit);
+    Update := True;
+    PBLipInit.AsFloat := PProfilP.LipInit;
+    Update := False;
+  end;
+end;
+
+procedure TFProfilP.PBLipInitChange(Sender: TObject);
+begin
+  if not Update and (PBLipInit.AsFloat >= PBLipInit.MinValue)
+  then
+  begin
+    Modified := True;
+    PProfilP.LipInit := PBLipInit.AsFloat;
+    PProfilP.ProtInit := CalcProtLip(PProfilP.PVInit, PProfilP.LipInit);
+    Update := True;
+    PBProtInit.AsFloat := PProfilP.ProtInit;
+    Update := False;
+  end;
+end;
+
+procedure TFProfilP.RBFinClick(Sender: TObject);
+begin
+  PBDuree.Enabled := RBFinDuree.Checked;
+  PBPVFin.Enabled := RBFinPoids.Checked;
+  if not Update
+  then
+  begin
+    Modified := True;
+    if RBFinDuree.Checked
+    then // Dur�e
+      PProfilP.ModeFin := 0
+    else // Poids vif
+      PProfilP.ModeFin := 1;
+  end;
+end;
+
+procedure TFProfilP.PBDureeChange(Sender: TObject);
+begin
+  if not Update and (PBDuree.AsFloat > 1)
+  then
+  begin
+    Modified := True;
+    PProfilP.Duree := PBDuree.AsInteger;
+  end;
+end;
+
+procedure TFProfilP.PBPVFinChange(Sender: TObject);
+begin
+  if not Update and (PBPVFin.AsFloat > PBPVInit.AsFloat)
+  then
+  begin
+    Modified := True;
+    PProfilP.PVFin := PBPVFin.AsFloat;
+  end;
+end;
+
+procedure TFProfilP.PBCarcasseChange(Sender: TObject);
+begin
+  if not Update and (PBCarcasse.AsFloat >= PBCarcasse.MinValue)
+  then
+  begin
+    Modified := True;
+    PProfilP.Carcasse := PBCarcasse.AsFloat / 100;
+  end;
+end;
+
+// Consommation et performances ad libitum
+
+procedure TFProfilP.CBUniteChange(Sender: TObject);
+var
+  etat: boolean;
+  d, m: Double;
+begin
+  etat := Update;
+  Update := True;
+  // Ajustement de la pr�cision de l'ing�r� � 50 et 100 kg
+  if (CBUnite.ItemIndex = 0) or (CBUnite.ItemIndex = 4)
+  then // kg (QI ou MS)
+  begin
+    SuperSpinDecimals(PBIng50, 3);
+    SuperSpinDecimals(PBIng100, 3);
+  end
+  else // MJ (ED, EM ou EN)
+  begin
+    SuperSpinDecimals(PBIng50, 2);
+    SuperSpinDecimals(PBIng100, 2);
+  end ;
+  Update := etat;
+  if not Update
+  then
+  begin
+    Update := True;
+    CBEquationChange(nil);
+    Update := False;
+    // Ancienne unit� (diviseur)
+    case PProfilP.Unite of
+      0: // Quantit� (kg/j)
+        d := cGammaFrais;
+      1: // ED (MJ/j)
+        d := cGammaED;
+      2: // EM (MJ/j)
+        d := cGammaEM;
+      3: // EN (MJ/j)
+        d := cGammaEN;
+      4: // MS (kg/j)
+        d := cGammaMS;
+      else
+        d := 1;
+    end;
+    // Nouvelle unit� (multiplicateur)
+    case CBUnite.ItemIndex of
+      0: // Quantit� (kg/j)
+        m := cGammaFrais;
+      1: // ED (MJ/j)
+        m := cGammaED;
+      2: // EM (MJ/j)
+        m := cGammaEM;
+      3: // EN (MJ/j)
+        m := cGammaEN;
+      4: // MS (kg/j)
+        m := cGammaMS;
+      else
+        m := 1;
+    end;
+    Modified := True;
+    PProfilP.Unite := CBUnite.ItemIndex;
+    if d <> m
+    then // Conversion
+    begin
+      Update := True;
+      RBIngere.Checked := True;
+      PBIng50.AsFloat := m * PBIng50.AsFloat / d;
+      PBIng100.AsFloat := m * PBIng100.AsFloat / d;
+      with PProfilP^ do
+      begin
+        CalcCoef(Equation, Unite, PBIng50.AsFloat, PBIng100.AsFloat, a, b);
+        PBCoefA.AsFloat := a;
+        PBCoefB.AsFloat := b;
+      end;
+      Update := False;
+    end;
+    PCChange(nil);
+    if AffUnitProfilP
+    then
+    begin
+      Modal := True;
+      FWarning := TFWarning.Create(Self);
+      with FWarning do
+      begin
+        Msg := 'UnitProfilP';
+        ShowModal;
+        Release;
+        AffUnitProfilP := False;
+      end;
+      Modal := False;
+    end;
+  end;
+end;
+
+procedure TFProfilP.CBEquationChange(Sender: TObject);
+var
+  etat: boolean;
+begin
+  etat := Update;
+  Update := True;
+  // Ajustement de la pr�cision des coefficients a et b
+  case CBEquation.ItemIndex of
+    0: // a+b*PV
+      if (CBUnite.ItemIndex = 0) or (CBUnite.ItemIndex = 4)
+      then // kg (QI ou MS)
+      begin
+        SuperSpinDecimals(PBCoefA, 3);
+        SuperSpinDecimals(PBCoefB, 3);
+      end
+      else // MJ (ED, EM ou EN)
+      begin
+        SuperSpinDecimals(PBCoefA, 2);
+        SuperSpinDecimals(PBCoefB, 2);
+      end;
+    1: // a*PV^b
+    begin
+      if (CBUnite.ItemIndex = 0) or (CBUnite.ItemIndex = 4)
+      then // kg (QI ou MS)
+        SuperSpinDecimals(PBCoefA, 4)
+      else // MJ (ED, EM ou EN)
+        SuperSpinDecimals(PBCoefA, 3);
+      SuperSpinDecimals(PBCoefB, 4);
+    end;
+    2: // a*(1-exp(-b*PV))
+    begin
+      if (CBUnite.ItemIndex = 0) or (CBUnite.ItemIndex = 4)
+      then // kg (QI ou MS)
+        SuperSpinDecimals(PBCoefA, 3)
+      else // MJ (ED, EM ou EN)
+        SuperSpinDecimals(PBCoefA, 2);
+      SuperSpinDecimals(PBCoefB, 5);
+    end;
+    3: // Gamma(entretien)
+    begin
+      SuperSpinDecimals(PBCoefA, 4);
+      SuperSpinDecimals(PBCoefB, 4);
+    end;
+  end;
+  Update := etat;
+  if not Update
+  then
+  begin
+    Modified := True;
+    PProfilP.Equation := CBEquation.ItemIndex;
+    Update := True;
+    RBIngere.Checked := True;
+    with PProfilP^ do
+    begin
+      CalcCoef(Equation, Unite, PBIng50.AsFloat, PBIng100.AsFloat, a, b);
+      PBCoefA.AsFloat := a;
+      PBCoefB.AsFloat := b;
+    end;
+    Update := False;
+    PCChange(nil);
+  end;
+end;
+
+procedure TFProfilP.RBCoefClick(Sender: TObject);
+begin
+  PCoef.Enabled := RBCoef.Checked;
+  PBCoefA.Enabled := RBCoef.Checked;
+  PBCoefB.Enabled := RBCoef.Checked;
+  PIngere.Enabled := RBIngere.Checked;
+  PBIng50.Enabled := RBIngere.Checked;
+  PBIng100.Enabled := RBIngere.Checked;
+end;
+
+procedure TFProfilP.PBCoefAChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PProfilP.a := PBCoefA.AsFloat;
+    Update := True;
+    with PProfilP^ do
+    begin
+      PBIng50.AsFloat := CalcIngere(Equation, Unite, a, b, 50);
+      PBIng100.AsFloat := CalcIngere(Equation, Unite, a, b, 100);
+    end;
+    Update := False;
+    PCChange(nil);
+  end;
+end;
+
+procedure TFProfilP.PBCoefBChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PProfilP.b := PBCoefB.AsFloat;
+    Update := True;
+    with PProfilP^ do
+    begin
+      PBIng50.AsFloat := CalcIngere(Equation, Unite, a, b, 50);
+      PBIng100.AsFloat := CalcIngere(Equation, Unite, a, b, 100);
+    end;
+    Update := False;
+    PCChange(nil);
+  end;
+end;
+
+procedure TFProfilP.PBIng50Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    Update := True;
+    with PProfilP^ do
+    begin
+      CalcCoef(Equation, Unite, PBIng50.AsFloat, PBIng100.AsFloat, a, b);
+      PBCoefA.AsFloat := a;
+      PBCoefB.AsFloat := b;
+    end;
+    Update := False;
+    PCChange(nil);
+  end;
+end;
+
+procedure TFProfilP.PBIng100Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    Update := True;
+    with PProfilP^ do
+    begin
+      CalcCoef(Equation, Unite, PBIng50.AsFloat, PBIng100.AsFloat, a, b);
+      PBCoefA.AsFloat := a;
+      PBCoefB.AsFloat := b;
+    end;
+    Update := False;
+    PCChange(nil);
+  end;
+end;
+
+procedure TFProfilP.PBPDMoyChange(Sender: TObject);
+begin
+  if not Update and (PBPDMoy.AsFloat >= PBPDMoy.MinValue)
+  then
+  begin
+    Modified := True;
+    PProfilP.PDMoy := PBPDMoy.AsFloat;
+    PCChange(nil);
+    if AffPDMoy
+    then
+    begin
+      Modal := True;
+      FWarning := TFWarning.Create(Self);
+      with FWarning do
+      begin
+        Msg := 'PDMoy';
+        ShowModal;
+        Release;
+        AffPDMoy := False;
+      end;
+      Modal := False;
+    end;
+  end;
+end;
+
+procedure TFProfilP.PBComportChange(Sender: TObject);
+begin
+  if not Update and (PBComport.AsFloat >= PBComport.MinValue)
+  then
+  begin
+    Modified := True;
+    PProfilP.BGompertz := PBComport.AsFloat;
+    PCChange(nil);
+    if AffPrecocite
+    then
+    begin
+      Modal := True;
+      FWarning := TFWarning.Create(Self);
+      with FWarning do
+      begin
+        Msg := 'Precocite';
+        ShowModal;
+        Release;
+        AffPrecocite := False;
+      end;
+      Modal := False;
+    end;
+  end;
+end;
+
+procedure TFProfilP.PBEntretienChange(Sender: TObject);
+begin
+  if not Update and (PBEntretien.AsFloat >= PBEntretien.MinValue)
+  then
+  begin
+    Modified := True;
+    PProfilP.Entretien := PBEntretien.AsFloat;
+    PCChange(nil);
+    if AffEntretien
+    then
+    begin
+      Modal := True;
+      FWarning := TFWarning.Create(Self);
+      with FWarning do
+      begin
+        Msg := 'Entretien';
+        ShowModal;
+        Release;
+        AffEntretien := False;
+      end;
+      Modal := False;
+    end;
+  end;
+end;
+
+procedure TFProfilP.CBSeqAliChange(Sender: TObject);
+begin
+  PSeqAliP := ListSeqAliP[FindIdxSeqAliP(CBSeqAli.Text)];
+  CBSeqAli.Hint := PSeqAliP.Memo;
+  if not Update
+  then
+  begin
+    Modified := True;
+    PProfilP.SeqAli := FindNumSeqAliP(CBSeqAli.Text);
+    PCChange(nil);
+  end;
+end;
+
+procedure TFProfilP.CBRationChange(Sender: TObject);
+begin
+  PRationP := ListRationP[FindIdxRationP(CBRation.Text)];
+  CBRation.Hint := PRationP.Memo;
+  if not Update
+  then
+  begin
+    Modified := True;
+    PProfilP.Ration := FindNumRationP(CBRation.Text);
+    PCChange(nil);
+  end ;
+end;
+
+procedure TFProfilP.PBPVmr2Change(Sender: TObject);
+begin
+  if not Update and (PBPVmr2.AsFloat >= PBPVmr2.MinValue)
+  then
+  begin
+    Modified := True;
+    PProfilP.PVmr2 := PBPVmr2.AsFloat;
+    PCChange(nil);
+  end;
+end;
+
+procedure TFProfilP.SBGraph3DClick(Sender: TObject);
+begin
+  Modal := True;
+  FGraph3D := TFGraph3D.Create(Self);
+  FGraph3D.ShowModal;
+  if (PBCoefA.Text <> FGraph3D.SuperSpinA.Text)
+  or (PBCoefB.Text <> FGraph3D.SuperSpinB.Text)
+  or (PBPDMoy.Text <> FGraph3D.SuperSpinPDMoy.Text)
+  or (PBComport.Text <> FGraph3D.SuperSpinPrecocite.Text)
+  or (PBEntretien.Text <> FGraph3D.SuperSpinEntretien.Text)
+  or (PBPVmr2.Text <> FGraph3D.SuperSpinPVPDmax.Text)
+  then
+    if MessageDlg(MsgKeepValues, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then // Prise en compte des nouvelles valeurs du profil
+    begin
+      Modified := True;
+      Update := True;
+      with PProfilP^ do
+      begin
+        PBCoefA.AsFloat := a;
+        PBCoefB.AsFloat := b;
+        PBIng50.AsFloat := CalcIngere(Equation, Unite, a, b, 50);
+        PBIng100.AsFloat := CalcIngere(Equation, Unite, a, b, 100);
+        PBPDMoy.AsFloat := PDMoy;
+        PBComport.AsFloat := BGompertz;
+        PBEntretien.AsFloat := Entretien;
+        PBPVmr2.AsFloat := PVmr2;
+      end;
+      Update := False;
+    end
+    else // Restauration des valeurs de l'enregistrement
+      with PProfilP^ do
+      begin
+        a := PBCoefA.AsFloat;
+        b := PBCoefB.AsFloat;
+        PDMoy := PBPDMoy.AsFloat;
+        BGompertz := PBComport.AsFloat;
+        Entretien := PBEntretien.AsFloat;
+        PVmr2 := PBPVmr2.AsFloat;
+      end;
+  FGraph3D.Release;
+  Modal := False;
+end;
+
+procedure TFProfilP.SBCalibrageClick(Sender: TObject);
+var
+  i: Integer;
+  AdLib, Other: Boolean;
+begin
+  Modal := True;
+  // Contr�ler le plan de rationnement
+  AdLib := False;
+  Other := False;
+  with PRationP^ do
+    for i := 1 to NbRule do
+      if Rule[i].RuleType = 0
+      then
+        AdLib := True
+      else
+        Other := True;
+  if not AdLib
+  then // Il est n�cessaire d'avoir au moins une r�gle bas�e sur l'ad libitum
+    MessageDlg(MsgCalibrAdLib, mtError, [mbOK], 0)
+  else
+  begin
+    if Other
+    then // Si une r�gle autre est pr�sente, afficher un avertissement
+      MessageDlg(MsgCalibrOther, mtWarning, [mbOK], 0);
+    FObservProfilP := TFObservProfilP.Create(Self);
+    ASQLite3TableObservProfilP.StartTransaction;
+    if FObservProfilP.ShowModal = mrOK
+    then // Valider les observations
+    begin
+      ASQLite3TableObservProfilP.Commit;
+      FCalibrProfilP := TFCalibrProfilP.Create(Self);
+      if FCalibrProfilP.ShowModal = mrOK
+      then
+        Modified := True;
+      FCalibrProfilP.Release;
+      CBProfilChange(nil);
+    end
+    else // Annuler les observations
+    begin
+      ASQLite3TableObservProfilP.RollBack;
+      ASQLite3TableObservProfilP.Refresh;
+    end;
+    FObservProfilP.Release;
+  end;
+  Modal := False;
+end;
+
+procedure TFProfilP.CBGraphTChange(Sender: TObject);
+begin
+  CBGraphXD.Visible := CBGraphT.ItemIndex = 0;
+  CBGraphYD.Visible := CBGraphT.ItemIndex = 0;
+  CBGraphXP.Visible := CBGraphT.ItemIndex = 1;
+  CBGraphYP.Visible := CBGraphT.ItemIndex = 1;
+  if CBGraphYD.Visible then CBGraphYDChange(nil);
+  if CBGraphYP.Visible then CBGraphYPChange(nil);
+end;
+
+procedure TFProfilP.CBGraphXDChange(Sender: TObject);
+begin
+  AffGraph;
+end;
+
+procedure TFProfilP.CBGraphXPChange(Sender: TObject);
+begin
+  AffGraph;
+end;
+
+procedure TFProfilP.CBGraphYDChange(Sender: TObject);
+begin
+  CBGraphYU.Items.Clear;
+  case CBGraphYD.ItemIndex of
+    0: // Body weight
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Weight gain'), _('g'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Body weight'), _('kg')]));
+    end;
+    1: // Time
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Age'), _('d')]));
+    2: // Feed usage
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg DM'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ DE'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ ME'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ NE'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg DM')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ DE')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ ME')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ NE')]));
+    end;
+    3: // Feed wastage
+    begin
+      CBGraphYU.Items.Add(Format('%s (%%)', [_('Feed wastage')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed wastage'), _('kg')]));
+    end;
+    4: // Feed intake
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg DM'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ DE'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ ME'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ NE'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg DM')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ DE')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ ME')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ NE')]));
+    end;
+    5: // Feed:Gain
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg DM'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ DE'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ ME'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ NE'), _('kg')]));
+    end;
+    6: // Gain:Feed
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg DM')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ DE')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ ME')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ NE')]));
+    end;
+    7: // Protein
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Protein deposition'), _('g'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Protein mass'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Protein content'), _('% BW gain')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Protein content'), _('% BW')]));
+    end;
+    8: // Lipid
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Lipid deposition'), _('g'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Lipid mass'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Lipid content'), _('% BW gain')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Lipid content'), _('% BW')]));
+    end;
+    9: // Carcass
+    begin
+      CBGraphYU.Items.Add(_('Dressing percentage'));
+      if FatInfo = 0
+      then // P2
+        CBGraphYU.Items.Add(Format('%s (%s)', [_('Backfat thickness'), _('mm')]))
+      else // User defined
+        if Length(UserFatLongName) = 0
+        then
+          CBGraphYU.Items.Add(Format('%s (%s)', [_('User-defined backfat thickness'), _('mm')]))
+        else
+          CBGraphYU.Items.Add(Format('%s (%s)', [UserFatLongName, _('mm')]));
+      if LeanInfo = 0
+      then // TMP
+        CBGraphYU.Items.Add(Format('%s (%%)', [_('Lean meat')]))
+      else // User defined
+        if Length(UserLeanLongName) = 0
+        then
+          CBGraphYU.Items.Add(Format('%s (%%)', [_('User-defined lean meat')]))
+        else
+          CBGraphYU.Items.Add(Format('%s (%%)', [UserLeanLongName]));
+    end;
+  end;
+  CBGraphYU.ItemIndex := 0;
+  AffGraph;
+end;
+
+procedure TFProfilP.CBGraphYPChange(Sender: TObject);
+begin
+  CBGraphYU.Items.Clear;
+  case CBGraphYP.ItemIndex of
+    0: // Body weight
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Weight gain'), _('g'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Weight gain'), _('kg')]));
+    end;
+    1: // Time
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Duration'), _('d')]));
+    2: // Feed usage
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg DM'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ DE'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ ME'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ NE'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg DM')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ DE')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ ME')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ NE')]));
+    end;
+    3: // Feed wastage
+    begin
+      CBGraphYU.Items.Add(Format('%s (%%)', [_('Feed wastage')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed wastage'), _('kg')]));
+    end;
+    4: // Feed intake
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg DM'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ DE'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ ME'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ NE'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg DM')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ DE')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ ME')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ NE')]));
+    end;
+    5: // Feed:Gain
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg DM'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ DE'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ ME'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ NE'), _('kg')]));
+    end;
+    6: // Gain:Feed
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg DM')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ DE')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ ME')]));
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ NE')]));
+    end;
+    7: // Protein
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Protein deposition'), _('g'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Protein deposition'), _('kg')]));
+    end;
+    8: // Lipid
+    begin
+      CBGraphYU.Items.Add(Format('%s (%s/%s)', [_('Lipid deposition'), _('g'), _('d')]));
+      CBGraphYU.Items.Add(Format('%s (%s)', [_('Lipid deposition'), _('kg')]));
+    end;
+  end;
+  CBGraphYU.ItemIndex := 0;
+  AffGraph;
+end;
+
+procedure TFProfilP.CBGraphYUChange(Sender: TObject);
+begin
+  AffGraph;
+end;
+
+// Graphiques
+
+procedure TFProfilP.AffGraph;
+begin
+  LigneAdLib.Active := CBGraphT.ItemIndex = 0;
+  LigneRation.Active := CBGraphT.ItemIndex = 0;
+  BarreAdLib.Active := CBGraphT.ItemIndex = 1;
+  BarreRation.Active := CBGraphT.ItemIndex = 1;
+  case CBGraphT.ItemIndex of
+    0: // Affichage dynamique
+    begin
+      Graph.BottomAxis.Title.Caption := CBGraphXD.Text;
+      Graph.LeftAxis.Title.Caption := CBGraphYU.Text;
+      // Courbe AdLib
+      AffLigne(PResAdLib, LigneAdLib);
+      // Courbe Ration
+      AffLigne(PResRestrict, LigneRation);
+      if CBGraphXD.ItemIndex = 3
+      then // Semaines
+        Graph.BottomAxis.Increment := 1
+      else // Jours
+        Graph.BottomAxis.Increment := 10;
+    end;
+    1: // Affichage par p�riode
+    begin
+      Graph.BottomAxis.Title.Caption := CBGraphXP.Text;
+      Graph.LeftAxis.Title.Caption := CBGraphYU.Text;
+      // Barre AdLib
+      AffBarre(PResAdLib, BarreAdLib);
+      // Barre Ration
+      AffBarre(PResRestrict, BarreRation);
+      Graph.BottomAxis.Increment := 1;
+    end;
+  end;
+  Graph.BottomAxis.Grid.Visible := CBGraphT.ItemIndex = 0;
+  Graph.LeftAxis.Grid.Visible := CBGraphT.ItemIndex = 0;
+  AjustEchelle(Graph);
+end;
+
+procedure TFProfilP.AffLigne(PResSimul: PTabResSimulP; Serie: TLineSeries);
+var
+  j: Integer;
+  cumul: Double;
+  // Abscisse
+  function LigneX: Double;
+  begin
+    case CBGraphXD.ItemIndex of
+      0: // Poids vif
+        result := PResSimul.TabResult[2, j];
+      1: // Age
+        result := PResSimul.TabResult[1, j];
+      2: // Jours
+        result := j;
+      3: // Semaines
+        result := j / 7;
+      else
+        result := 0;
+    end;
+  end;
+  // Ordonn�e
+  function LigneY: Double;
+  begin
+    case CBGraphYD.ItemIndex of
+      0: // Body weight
+        case CBGraphYU.ItemIndex of
+          0: // Weight gain (g/d)
+            result := PResSimul.TabResult[84, j] * 1000;
+          1: // Body weight (kg)
+            result := PResSimul.TabResult[2, j];
+          else
+            result := 0;
+        end;
+      1: // Time
+        case CBGraphYU.ItemIndex of
+          0: // Age (d)
+            result := PResSimul.TabResult[1, j];
+          else
+            result := 0;
+        end;
+      2: // Feed usage
+        case CBGraphYU.ItemIndex of
+          0: // Feed usage (kg/d)
+            result := PResSimul.TabResult[113, j];
+          1: // Feed usage (kg DM/d)
+            result := PResSimul.TabResult[106, j] * PResSimul.TabResult[113, j];
+          2: // Feed usage (MJ DE/d)
+            result := PResSimul.TabResult[109, j] * PResSimul.TabResult[113, j];
+          3: // Feed usage (MJ ME/d)
+            result := PResSimul.TabResult[89, j] * PResSimul.TabResult[113, j];
+          4: // Feed usage (MJ NE/d)
+            result := PResSimul.TabResult[90, j] * PResSimul.TabResult[113, j];
+          5: // Total feed usage (kg)
+          begin
+            cumul := cumul + PResSimul.TabResult[113, j];
+            result := cumul;
+          end;
+          6: // Total feed usage (kg DM)
+          begin
+            cumul := cumul + PResSimul.TabResult[106, j] * PResSimul.TabResult[113, j];
+            result := cumul;
+          end;
+          7: // Total feed usage (MJ DE)
+          begin
+            cumul := cumul + PResSimul.TabResult[109, j] * PResSimul.TabResult[113, j];
+            result := cumul;
+          end;
+          8: // Total feed usage (MJ ME)
+          begin
+            cumul := cumul + PResSimul.TabResult[89, j] * PResSimul.TabResult[113, j];
+            result := cumul;
+          end;
+          9: // Total feed usage (MJ NE)
+          begin
+            cumul := cumul + PResSimul.TabResult[90, j] * PResSimul.TabResult[113, j];
+            result := cumul;
+          end;
+          else
+            result := 0;
+        end;
+      3: // Feed wastage
+        case CBGraphYU.ItemIndex of
+          0: // Feed wastage (%)
+            result := PResSimul.TabResult[112, j] * 100;
+          1: // Total feed wastage (kg)
+          begin
+            cumul := cumul + PResSimul.TabResult[113, j] - PResSimul.TabResult[11, j];
+            result := cumul;
+          end;
+          else
+            result := 0;
+        end;
+      4: // Feed intake
+        case CBGraphYU.ItemIndex of
+          0: // Feed intake (kg/d)
+            result := PResSimul.TabResult[11, j];
+          1: // Feed intake (kg DM/d)
+            result := PResSimul.TabResult[106, j] * PResSimul.TabResult[11, j];
+          2: // Feed intake (MJ DE/d)
+            result := PResSimul.TabResult[109, j] * PResSimul.TabResult[11, j];
+          3: // Feed intake (MJ ME/d)
+            result := PResSimul.TabResult[89, j] * PResSimul.TabResult[11, j];
+          4: // Feed intake (MJ NE/d)
+            result := PResSimul.TabResult[90, j] * PResSimul.TabResult[11, j];
+          5: // Total feed intake (kg)
+          begin
+            cumul := cumul + PResSimul.TabResult[11, j];
+            result := cumul;
+          end;
+          6: // Total feed intake (kg DM)
+          begin
+            cumul := cumul + PResSimul.TabResult[106, j] * PResSimul.TabResult[11, j];
+            result := cumul;
+          end;
+          7: // Total feed intake (MJ DE)
+          begin
+            cumul := cumul + PResSimul.TabResult[109, j] * PResSimul.TabResult[11, j];
+            result := cumul;
+          end;
+          8: // Total feed intake (MJ ME)
+          begin
+            cumul := cumul + PResSimul.TabResult[89, j] * PResSimul.TabResult[11, j];
+            result := cumul;
+          end;
+          9: // Total feed intake (MJ NE)
+          begin
+            cumul := cumul + PResSimul.TabResult[90, j] * PResSimul.TabResult[11, j];
+            result := cumul;
+          end;
+          else
+            result := 0;
+        end;
+      5: // Feed:Gain
+        if PResSimul.TabResult[84, j] <> 0
+        then
+          case CBGraphYU.ItemIndex of
+            0: // Feed:Gain (kg/kg)
+              result := PResSimul.TabResult[113, j] / PResSimul.TabResult[84, j];
+            1: // Feed:Gain (kg DM/kg)
+              result := (PResSimul.TabResult[106, j] * PResSimul.TabResult[113, j]) / PResSimul.TabResult[84, j];
+            2: // Feed:Gain (MJ DE/kg)
+              result := (PResSimul.TabResult[109, j] * PResSimul.TabResult[113, j]) / PResSimul.TabResult[84, j];
+            3: // Feed:Gain (MJ ME/kg)
+              result := (PResSimul.TabResult[89, j] * PResSimul.TabResult[113, j]) / PResSimul.TabResult[84, j];
+            4: // Feed:Gain (MJ NE/kg)
+              result := (PResSimul.TabResult[90, j] * PResSimul.TabResult[113, j]) / PResSimul.TabResult[84, j];
+            else
+              result := 0;
+          end
+        else
+          result := 0;
+      6: // Gain:Feed
+        case CBGraphYU.ItemIndex of
+          0: // Gain:Feed (kg/kg)
+            if PResSimul.TabResult[113, j] <> 0
+            then
+              result := PResSimul.TabResult[84, j] / PResSimul.TabResult[113, j]
+            else
+              result := 0;
+          1: // Gain:Feed (kg/kg DM)
+            if (PResSimul.TabResult[113, j] <> 0) and (PResSimul.TabResult[106, j] <> 0)
+            then
+              result := PResSimul.TabResult[84, j] / (PResSimul.TabResult[106, j] * PResSimul.TabResult[113, j])
+            else
+              result := 0;
+          2: // Gain:Feed (kg/MJ DE)
+            if (PResSimul.TabResult[113, j] <> 0) and (PResSimul.TabResult[109, j] <> 0)
+            then
+              result := PResSimul.TabResult[84, j] / (PResSimul.TabResult[109, j] * PResSimul.TabResult[113, j])
+            else
+              result := 0;
+          3: // Gain:Feed (kg/MJ ME)
+            if (PResSimul.TabResult[113, j] <> 0) and (PResSimul.TabResult[89, j] <> 0)
+            then
+              result := PResSimul.TabResult[84, j] / (PResSimul.TabResult[89, j] * PResSimul.TabResult[113, j])
+            else
+              result := 0;
+          4: // Gain:Feed (kg/MJ NE)
+            if (PResSimul.TabResult[113, j] <> 0) and (PResSimul.TabResult[90, j] <> 0)
+            then
+              result := PResSimul.TabResult[84, j] / (PResSimul.TabResult[90, j] * PResSimul.TabResult[113, j])
+            else
+              result := 0;
+          else
+            result := 0;
+        end;
+      7: // Protein
+        case CBGraphYU.ItemIndex of
+          0: // Protein deposition (g/d)
+            result := PResSimul.TabResult[79, j];
+          1: // Protein mass (kg)
+            result := PResSimul.TabResult[49, j];
+          2: // Protein content (% of BW gain)
+            if PResSimul.TabResult[84, j] <> 0
+            then
+              result := (PResSimul.TabResult[79, j] / 1000) / PResSimul.TabResult[84, j] * 100
+            else
+              result := 0;
+          3: // Protein content (% in BW)
+            if PResSimul.TabResult[2, j] <> 0
+            then
+              result := PResSimul.TabResult[49, j] / PResSimul.TabResult[2, j] * 100
+            else
+              result := 0;
+          else
+            result := 0;
+        end;
+      8: // Lipid
+        case CBGraphYU.ItemIndex of
+          0: // Lipid deposition (g/d)
+            result := PResSimul.TabResult[80, j];
+          1: // Lipid mass (kg)
+            result := PResSimul.TabResult[50, j];
+          2: // Lipid content (% of BW gain)
+            if PResSimul.TabResult[84, j] <> 0
+            then
+              result := (PResSimul.TabResult[80, j] / 1000) / PResSimul.TabResult[84, j] * 100
+            else
+              result := 0;
+          3: // Lipid content (% in BW)
+            if PResSimul.TabResult[2, j] <> 0
+            then
+              result := PResSimul.TabResult[50, j] / PResSimul.TabResult[2, j] * 100
+            else
+              result := 0;
+          else
+            result := 0;
+        end;
+      9: // Carcass
+        case CBGraphYU.ItemIndex of
+          0: // Dressing percentage
+            result := CalcRC(PResSimul.TabResult[2, PResSimul.NbJSim], RCStd, PResSimul.TabResult[2, j]) * 100;
+          1: // Backfat thickness
+            if FatInfo = 0
+            then // P2
+              result := CalcP2(PResSimul.TabResult[50, j])
+            else // User defined
+              result := CalcUserFat(PResSimul.TabResult[48, j], PResSimul.TabResult[49, j], PResSimul.TabResult[50, j]);
+          2: // Lean meat percentage
+            if LeanInfo = 0
+            then // TMP
+              result := CalcTMP(PResSimul.TabResult[48, j], PResSimul.TabResult[49, j], PResSimul.TabResult[50, j])
+            else // User defined
+              result := CalcUserLean(PResSimul.TabResult[48, j], PResSimul.TabResult[49, j], PResSimul.TabResult[50, j]);
+          else
+            result := 0;
+        end;
+      else
+        result := 0;
+    end;
+  end;
+// AffLigne
+begin
+  cumul := 0;
+  Serie.Clear;
+  for j := 1 to PResSimul.NbJSim do
+    Serie.AddXY (LigneX, LigneY, '', clTeeColor);
+end;
+
+procedure TFProfilP.AffBarre(PResSimul: PTabResSimulP; Serie: TBarSeries);
+var
+  j, k: Integer;
+  c, p: Double;
+  s: string;
+  // Abscisse
+  function BarreX: Double;
+  begin
+    case CBGraphXP.ItemIndex of
+      0: // Semaine
+        result := (j - 1) div 7 + 1;
+      1: // R�gle qualit�
+        result := PResSimul.TabResult[3, j];
+      2: // R�gle quantit�
+        result := PResSimul.TabResult[5, j];
+      else
+        result := 0;
+      end;
+  end;
+  // Ordonn�e
+  function BarreY: Double;
+  var
+    h: Integer;
+    v, conso, gain: Double;
+  begin
+    v := 0;
+    case CBGraphYP.ItemIndex of
+      0: // Body weight
+        case CBGraphYU.ItemIndex of
+          0: // Weight gain (g/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[84, h] * 1000 / (j - k);
+          1: // Weight gain (kg)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[84, h];
+        end;
+      1: // Time
+        case CBGraphYU.ItemIndex of
+          0: // Duration (d)
+            v := j - k;
+        end;
+      2: // Feed usage
+        case CBGraphYU.ItemIndex of
+          0: // Feed usage (kg/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[113, h] / (j - k);
+          1: // Feed usage (kg DM/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[106, h] * PResSimul.TabResult[113, h] / (j - k);
+          2: // Feed usage (MJ DE/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[109, h] * PResSimul.TabResult[113, h] / (j - k);
+          3: // Feed usage (MJ ME/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[89, h] * PResSimul.TabResult[113, h] / (j - k);
+          4: // Feed usage (MJ NE/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[90, h] * PResSimul.TabResult[113, h] / (j - k);
+          5: // Total feed usage (kg)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[113, h];
+          6: // Total feed usage (kg DM)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[106, h] * PResSimul.TabResult[113, h];
+          7: // Total feed usage (MJ DE)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[109, h] * PResSimul.TabResult[113, h];
+          8: // Total feed usage (MJ ME)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[89, h] * PResSimul.TabResult[113, h];
+          9: // Total feed usage (MJ NE)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[90, h] * PResSimul.TabResult[113, h];
+        end;
+      3: // Feed wastage
+        case CBGraphYU.ItemIndex of
+          0: // Feed wastage (%)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[112, h] * 100 / (j - k);
+          1: // Total feed wastage (kg)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[113, h] - PResSimul.TabResult[11, h];
+        end;
+      4: // Feed intake
+        case CBGraphYU.ItemIndex of
+          0: // Feed intake (kg/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[11, h] / (j - k);
+          1: // Feed intake (kg DM/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[106, h] * PResSimul.TabResult[11, h] / (j - k);
+          2: // Feed intake (MJ DE/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[109, h] * PResSimul.TabResult[11, h] / (j - k);
+          3: // Feed intake (MJ ME/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[89, h] * PResSimul.TabResult[11, h] / (j - k);
+          4: // Feed intake (MJ NE/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[90, h] * PResSimul.TabResult[11, h] / (j - k);
+          5: // Total feed intake (kg)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[11, h];
+          6: // Total feed intake (kg DM)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[106, h] * PResSimul.TabResult[11, h];
+          7: // Total feed intake (MJ DE)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[109, h] * PResSimul.TabResult[11, h];
+          8: // Total feed intake (MJ ME)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[89, h] * PResSimul.TabResult[11, h];
+          9: // Total feed intake (MJ NE)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[90, h] * PResSimul.TabResult[11, h];
+        end;
+      5: // Feed:Gain
+      begin
+        conso := 0;
+        for h := k to j - 1 do
+          case CBGraphYU.ItemIndex of
+            0: // Feed:Gain (kg/kg)
+              conso := conso + PResSimul.TabResult[113, h];
+            1: // Feed:Gain (kg DM/kg)
+              conso := conso + PResSimul.TabResult[106, h] * PResSimul.TabResult[113, h];
+            2: // Feed:Gain (MJ DE/kg)
+              conso := conso + PResSimul.TabResult[109, h] * PResSimul.TabResult[113, h];
+            3: // Feed:Gain (MJ ME/kg)
+              conso := conso + PResSimul.TabResult[89, h] * PResSimul.TabResult[113, h];
+            4: // Feed:Gain (MJ NE/kg)
+              conso := conso + PResSimul.TabResult[90, h] * PResSimul.TabResult[113, h];
+          end;
+        gain := 0;
+        for h := k to j - 1 do
+          gain := gain + PResSimul.TabResult[84, h];
+        if gain <> 0
+        then
+          v := conso / gain;
+      end;
+      6: // Gain:Feed
+      begin
+        gain := 0;
+        for h := k to j - 1 do
+          gain := gain + PResSimul.TabResult[84, h];
+        conso := 0;
+        for h := k to j - 1 do
+          case CBGraphYU.ItemIndex of
+            0: // Gain:Feed (kg/kg)
+              conso := conso + PResSimul.TabResult[113, h];
+            1: // Gain:Feed (kg/kg DM)
+              conso := conso + PResSimul.TabResult[106, h] * PResSimul.TabResult[113, h];
+            2: // Gain:Feed (kg/MJ DE)
+              conso := conso + PResSimul.TabResult[109, h] * PResSimul.TabResult[113, h];
+            3: // Gain:Feed (kg/MJ ME)
+              conso := conso + PResSimul.TabResult[89, h] * PResSimul.TabResult[113, h];
+            4: // Gain:Feed (kg/MJ NE)
+              conso := conso + PResSimul.TabResult[90, h] * PResSimul.TabResult[113, h];
+          end;
+        if conso <> 0
+        then
+          v := gain / conso;
+      end;
+      7: // Protein
+        case CBGraphYU.ItemIndex of
+          0: // Protein deposition (g/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[79, h] / (j - k);
+          1: // Protein deposition (kg)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[79, h] / 1000;
+        end;
+      8: // Lipid
+        case CBGraphYU.ItemIndex of
+          0: // Lipid deposition (g/d)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[80, h] / (j - k);
+          1: // Lipid deposition (kg)
+            for h := k to j - 1 do
+              v := v + PResSimul.TabResult[80, h] / 1000;
+        end;
+    end;
+    result := v;
+  end;
+// AffBarre
+begin
+  Serie.Clear;
+  j := 1;
+  c := BarreX;
+  k := 1;
+  if PResSimul.NbJSim > 1
+  then
+    for j := 2 to PResSimul.NbJSim do
+    begin
+      p := BarreX;
+      if (c <> p)
+      then // Changement de p�riode
+      begin
+        s := Format('%1.0f', [c]);
+        Serie.AddBar(BarreY, s, clTeeColor);
+        c := p;
+        k := j;
+      end;
+    end;
+  j := PResSimul.NbJSim + 1;
+  s := Format('%1.0f', [c]);
+  Serie.AddBar(BarreY, s, clTeeColor);
+  with Serie do
+    ValueFormat := AjustFormat(AjustPas(MaxYValue - MinYValue) / 10);
+end;
+
+// Tableau
+
+procedure TFProfilP.CalcTab(Ligne: Integer; PResSimul: PTabResSimulP);
+var
+  i, t: integer;
+  gain, usage, intake, PD, LD, PVVFin, pFin, lFin: double;
+begin
+  t := PResSimul.NbJSim;
+  // GMQ
+  // gain = gain de poids
+  gain := 0;
+  for i := 1 to t do
+    gain := gain + PResSimul.TabResult[84, i] * 1000;
+  Tab[1, Ligne] := gain / t;
+  // Consommation moyenne
+  // usage = aliment distribu� total
+  usage := 0;
+  for i := 1 to t do
+    usage := usage + PResSimul.TabResult[113, i];
+  usage := usage * 1000; // kg -> g
+  Tab[2, Ligne] := usage / t;
+  // Gaspillage
+  // intake = aliment ing�r� total
+  intake := 0;
+  for i := 1 to t do
+    intake := intake + PResSimul.TabResult[11, i];
+  intake := intake * 1000; // kg -> g
+  if usage = 0
+  then
+    Tab[3, Ligne] := 0
+  else
+    Tab[3, Ligne] := (1 - intake / usage) * 100;
+  if FeedInfo = 0
+  then // Indice de consommation
+    if gain = 0
+    then
+      Tab[4, Ligne] := 0
+    else
+      Tab[4, Ligne] := usage / gain
+  else // Efficacit� alimentaire
+    if usage = 0
+    then
+      Tab[4, Ligne] := 0
+    else
+      Tab[4, Ligne] := gain / usage;
+  // D�pot de prot�ines moyen
+  PD := 0;
+  for i := 1 to t do
+    PD := PD + PResSimul.TabResult[79, i];
+  Tab[5, Ligne] := PD / t;
+  // D�pot de lipides moyen
+  LD := 0;
+  for i := 1 to t do
+    LD := LD + PResSimul.TabResult[80, i];
+  Tab[6, Ligne] := LD / t;
+  PVVFin := CalcPVV(PResSimul.TabResult[2, t] + PResSimul.TabResult[84, t]);
+  pFin := PResSimul.TabResult[49, t] + PResSimul.TabResult[79, t] / 1000;
+  lFin := PResSimul.TabResult[50, t] + PResSimul.TabResult[80, t] / 1000;
+  if FatInfo = 0
+  then // P2
+    Tab[7, Ligne] := CalcP2(lFin)
+  else // User defined
+    Tab[7, Ligne] := CalcUserFat(PVVFin, pFin, lFin);
+  if LeanInfo = 0
+  then // TMP
+    Tab[8, Ligne] := CalcTMP(PVVFin, pFin, lFin)
+  else // User defined
+    Tab[8, Ligne] := CalcUserLean(PVVFin, pFin, lFin);
+end;
+
+procedure TFProfilP.AffTab;
+var
+  i: Integer;
+begin
+  SGResult.Hint := '';
+  // Titres
+  SGResult.Cells[0, 0] := _('Gain');
+  SGResult.Cells[1, 0] := _('Feed usage (wastage)');
+  if FeedInfo = 0
+  then // Indice de consommation
+    SGResult.Cells[2, 0] := _('F:G')
+  else // Efficacit� alimentaire
+    SGResult.Cells[2, 0] := _('G:F');
+  SGResult.Cells[3, 0] := _('PD');
+  SGResult.Cells[4, 0] := _('LD');
+  if FatInfo = 0
+  then // P2
+    SGResult.Cells[5, 0] := _('Backfat')
+  else // User defined
+    if Length(UserFatShortName) = 0
+    then
+      SGResult.Cells[5, 0] := _('Backfat') + '*'
+    else
+      SGResult.Cells[5, 0] := UserFatShortName + '*';
+  if LeanInfo = 0
+  then // TMP
+    SGResult.Cells[6, 0] := _('Lean meat')
+  else // User defined
+    if Length(UserLeanShortName) = 0
+    then
+      SGResult.Cells[6, 0] := _('Lean meat') + '*'
+    else
+      SGResult.Cells[6, 0] := UserLeanShortName + '*';
+  // Donn�es
+  for i := 1 to 2 do
+  begin
+    SGResult.Cells[0, i] := FloatToStrF(Tab[1, i], ffFixed, 15, 0);
+    SGResult.Cells[1, i] := Format('%1.0f (%1.0f%%)', [Tab[2, i], Tab[3, i]]);
+    SGResult.Cells[2, i] := FloatToStrF(Tab[4, i], ffFixed, 15, 2);
+    SGResult.Cells[3, i] := FloatToStrF(Tab[5, i], ffFixed, 15, 0);
+    SGResult.Cells[4, i] := FloatToStrF(Tab[6, i], ffFixed, 15, 0);
+    SGResult.Cells[5, i] := FloatToStrF(Tab[7, i], ffFixed, 15, 1);
+    SGResult.Cells[6, i] := FloatToStrF(Tab[8, i], ffFixed, 15, 1);
+  end;
+end;
+
+procedure TFProfilP.SGResultDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
+var
+  i: integer;
+begin
+  with (Sender as TStringGrid).Canvas do
+  begin
+    if ARow = 0
+    then // Titre
+      Brush.Color := clBtnFace
+    else // Donn�es
+      Brush.Color := clWhite;
+    // Fond
+    FillRect(Rect);
+    case ARow of
+      1:
+        Font.Color := clBlack;
+      2:
+        Font.Color := clRed;
+      else
+        Font.Color := clDefault;
+    end;
+    SetTextAlign(Handle, TA_CENTER);
+    i := Rect.Left + (Rect.Right - Rect.Left) div 2;
+    TextRect(Rect, i, Rect.Top + 2, (Sender as TStringGrid).Cells[ACol, ARow]);
+  end;
+end;
+
+procedure TFProfilP.SGResultMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+var
+  Col, Lig: integer;
+  Unite, s: String;
+begin
+  SGResult.MouseToCell(X, Y, Col, Lig);
+  if (Col < 0) or (Lig < 0) then Exit;
+  // Unit�
+  case Col of
+    0, 1, 3, 4: Unite := Format('%s/%s', [_('g'), _('d')]);
+    2: // Affichage en fonction de la configuration
+      if FeedInfo = 0
+      then // Indice de consommation
+        Unite := Format('%s/%s', [_('kg feed'), _('kg gain')])
+      else // Efficacit� alimentaire
+        Unite := Format('%s/%s', [_('kg gain'), _('kg feed')]);
+    5: Unite := _('mm');
+    6: Unite := '%';
+  end;
+  // Hint
+  case Col of
+    0: s := Format('%s (%s)', [_('Average daily gain'), Unite]);
+    1: s := Format('%s (%s)', [_('Average daily feed usage and wastage'), Unite]);
+    2: // Affichage en fonction de la configuration
+      if FeedInfo = 0
+      then // Indice de consommation
+        s := Format('%s (%s)', [_('Average feed-to-gain ratio'), Unite])
+      else // Efficacit� alimentaire
+        s := Format('%s (%s)', [_('Average gain-to-feed ratio'), Unite]);
+    3: s := Format('%s (%s)', [_('Average protein deposition'), Unite]);
+    4: s := Format('%s (%s)', [_('Average lipid deposition'), Unite]);
+    5: // Affichage en fonction de la configuration
+      if FatInfo = 0
+      then // P2
+        s := Format('%s (%s)', [_('Backfat thickness at slaughter'), Unite])
+      else // User defined
+        if Length(UserFatLongName) = 0
+        then
+          s := Format('%s (%s)', [_('User-defined backfat thickness'), Unite])
+        else
+          s := Format('%s (%s)', [UserFatLongName, Unite]);
+    6: // Affichage en fonction de la configuration
+      if LeanInfo = 0
+      then // TMP
+        s := Format('%s (%s)', [_('Lean meat at slaughter'), Unite])
+      else // User defined
+        if Length(UserLeanLongName) = 0
+        then
+          s := Format('%s (%s)', [_('User-defined lean meat'), Unite])
+        else
+          s := Format('%s (%s)', [UserLeanLongName, Unite]);
+  end;
+  if SGResult.Hint <> s
+  then // Changement de cellule
+  begin
+    SGResult.Hint := s;
+    Application.ActivateHint(Mouse.CursorPos);
+  end;
+end;
+
+procedure TFProfilP.SuperSpinDecimals(Field: TPBSuperSpin; Count: Shortint);
+begin
+  Field.Decimals := Count;
+  Field.Increment := Power(10, -Count);
+end;
+
+end.
Index: UFRapportMat.dfm
===================================================================
--- UFRapportMat.dfm	(révision 0)
+++ UFRapportMat.dfm	(révision 3)
@@ -0,0 +1,442 @@
+object FRapportMat: TFRapportMat
+  Left = 200
+  Top = 200
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Report of the composition of feed ingredients'
+  ClientHeight = 168
+  ClientWidth = 240
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object SBRapMatElem: TSpeedButton
+    Left = 208
+    Top = 8
+    Width = 24
+    Height = 24
+    Hint = 'View the report for the elementary composition'
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000030000000100000000100
+      18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+      808080808080808080808080808080808080808080808080808080FF00FFFF00
+      FF808080808080FF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+      00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+      00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+      80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+      00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+      C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+      FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+      C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+      8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+      C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+      808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBRapMatElemClick
+  end
+  object SBRapMatAA: TSpeedButton
+    Left = 208
+    Top = 40
+    Width = 24
+    Height = 24
+    Hint = 'View the report for the amino acids'
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000030000000100000000100
+      18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+      808080808080808080808080808080808080808080808080808080FF00FFFF00
+      FF808080808080FF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+      00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+      00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+      80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+      00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+      C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+      FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+      C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+      8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+      C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+      808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBRapMatAAClick
+  end
+  object SBRapMatAG: TSpeedButton
+    Left = 208
+    Top = 72
+    Width = 24
+    Height = 24
+    Hint = 'View the report for the fatty acids'
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000030000000100000000100
+      18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+      808080808080808080808080808080808080808080808080808080FF00FFFF00
+      FF808080808080FF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+      00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+      00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+      80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+      00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+      C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+      FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+      C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+      8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+      C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+      808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBRapMatAGClick
+  end
+  object SBRapMatMin: TSpeedButton
+    Left = 208
+    Top = 104
+    Width = 24
+    Height = 24
+    Hint = 'View the report for the minerals'
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000030000000100000000100
+      18000000000000090000C40E0000C40E00000000000000000000FF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      808080808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF808080808080
+      808080808080808080808080808080808080808080808080808080FF00FFFF00
+      FF808080808080FF00FF00000000000000000000000000000000000000000000
+      0000000000000000000000808080FF00FF000000000000FF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000008080800000
+      00808080000000FF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080808080808080FF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000
+      00000000000000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000000000000000000000000000808080000000FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+      80808080FF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000000000000000000000000000000000000000FF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C08080800000000000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FF808080FF
+      00FFFF00FFFF00FF808080808080808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C00000008080808080808080800000000000000000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0C0
+      C0C0C0C0C0FFFF00808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8080808080808000000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0C0C0C0C0C0C0C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808080808080808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF000000C0C0C0FF
+      FF00C0C0C0C0C0C0808080FF00FF000000FF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FF8080
+      80FF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C000000080808080
+      8000808080808080000000FF00FF000000FF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFF000000C0C0C0FFFF00FFFF00C0C0C0808080FF00FF0000
+      00FF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FF808080FF00FFFF
+      00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0000000808080808000808000808080000000FF00FF0000
+      00FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000C0
+      C0C0C0C0C0C0C0C0808080000000FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF808080808080FF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000000080
+      8080808080808080000000000000FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000808080FF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFF000000808080FF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+      C0C0C0C0C0C0C0C0000000808080FF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000000000000000FF00FFFF00
+      FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF000000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C000
+      0000808080000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF80
+      8080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000C0C0C0
+      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000000000FF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080
+      808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
+      0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBRapMatMinClick
+  end
+  object ChkRapMatElem: TCheckBox
+    Left = 8
+    Top = 10
+    Width = 200
+    Height = 17
+    Caption = 'Elementary composition'
+    TabOrder = 0
+    OnClick = ChkRapMatClick
+  end
+  object ChkRapMatAA: TCheckBox
+    Left = 8
+    Top = 42
+    Width = 200
+    Height = 17
+    Caption = 'Amino acids'
+    TabOrder = 1
+    OnClick = ChkRapMatClick
+  end
+  object ChkRapMatAG: TCheckBox
+    Left = 8
+    Top = 74
+    Width = 200
+    Height = 17
+    Caption = 'Fatty acids'
+    TabOrder = 2
+    OnClick = ChkRapMatClick
+  end
+  object CHKRapMatMin: TCheckBox
+    Left = 8
+    Top = 106
+    Width = 200
+    Height = 17
+    Caption = 'Minerals'
+    TabOrder = 3
+    OnClick = ChkRapMatClick
+  end
+  object BBPrint: TBitBtn
+    Left = 64
+    Top = 136
+    Width = 80
+    Height = 24
+    Hint = 'Print the selected reports'
+    Caption = 'Print'
+    Enabled = False
+    Glyph.Data = {
+      76010000424D7601000000000000760000002800000020000000100000000100
+      0400000000000001000000000000000000001000000000000000000000000000
+      80000080000000808000800000008000800080800000C0C0C000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDD00000000000DDDDD88888888888DDDD07777777770
+      70DDD8DDDDDDDDD8D8DD000000000000070D8888888888888D8D0777777BBB77
+      000D8DDDDDDDDDDD888D077777788877070D8DDDDDDDDDDD8D8D000000000000
+      07708888888888888DD807777777777070708DDDDDDDDDD8D8D8D00000000007
+      0700D8888888888D8D88DD0FFFFFFFF07070DD8DDDDDDDD8D8D8DDD0F00000F0
+      000DDDD8D88888D8888DDDD0FFFFFFFF0DDDDDD8DDDDDDDD8DDDDDDD0F00000F
+      0DDDDDDD8D88888D8DDDDDDD0FFFFFFFF0DDDDDD8DDDDDDDD8DDDDDDD0000000
+      00DDDDDDD888888888DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+    NumGlyphs = 2
+    TabOrder = 5
+    OnClick = BBPrintClick
+  end
+  object BBClose: TBitBtn
+    Left = 152
+    Top = 136
+    Width = 80
+    Height = 25
+    Cancel = True
+    Caption = 'Close'
+    ModalResult = 2
+    NumGlyphs = 2
+    TabOrder = 4
+  end
+  object PD: TPrintDialog
+    Options = [poPageNums]
+    Left = 88
+    Top = 104
+  end
+end
Index: UFRapCompSimulP.dfm
===================================================================
--- UFRapCompSimulP.dfm	(révision 0)
+++ UFRapCompSimulP.dfm	(révision 3)
@@ -0,0 +1,4794 @@
+object FRapCompSimulP: TFRapCompSimulP
+  Left = 0
+  Top = 80
+  Caption = 'Comparison report for growing pig simulations'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = -8
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Comparison of growing pig simulations'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 396
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        1047.750000000000000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QREFeed_5: TQRExpr
+        Left = 681
+        Top = 280
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1801.812500000000000000
+          740.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREFeed_4: TQRExpr
+        Left = 601
+        Top = 280
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1590.145833333333000000
+          740.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREFeed_3: TQRExpr
+        Left = 521
+        Top = 280
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1378.479166666667000000
+          740.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREFeed_2: TQRExpr
+        Left = 441
+        Top = 280
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1166.812500000000000000
+          740.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREFeed_1: TQRExpr
+        Left = 361
+        Top = 280
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          955.145833333333300000
+          740.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC_5: TQRDBText
+        Left = 671
+        Top = 340
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1775.354166666667000000
+          899.583333333333300000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2_5: TQRDBText
+        Left = 673
+        Top = 300
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1780.645833333333000000
+          793.750000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMP_5: TQRDBText
+        Left = 662
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1751.541666666667000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMP_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliTot_5: TQRDBText
+        Left = 652
+        Top = 220
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1725.083333333333000000
+          582.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Conso_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeFin_5: TQRDBText
+        Left = 648
+        Top = 80
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1714.500000000000000000
+          211.666666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeFin_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeDeb_5: TQRDBText
+        Left = 643
+        Top = 60
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1701.270833333333000000
+          158.750000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeDeb_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsFin_5: TQRDBText
+        Left = 638
+        Top = 140
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1688.041666666667000000
+          370.416666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsFin_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsDeb_5: TQRDBText
+        Left = 633
+        Top = 120
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1674.812500000000000000
+          317.500000000000000000
+          224.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsDeb_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDuree_5: TQRExpr
+        Left = 410
+        Top = 100
+        Width = 308
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1084.791666666667000000
+          264.583333333333300000
+          814.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeFin_5_ - CDSRapport._AgeDeb_5_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREGMQ_5: TQRExpr
+        Left = -196
+        Top = 160
+        Width = 914
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -518.583333333333300000
+          423.333333333333300000
+          2418.291666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_5_ = 0, 0, (CDSRapport._PoidsFin_5_ - CDSR' +
+          'apport._PoidsDeb_5_) * 1000 / (CDSRapport._AgeFin_5_ - CDSRappor' +
+          't._AgeDeb_5_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAliMoy_5: TQRExpr
+        Left = -2
+        Top = 240
+        Width = 720
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -5.291666666666667000
+          635.000000000000000000
+          1905.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_5_ = 0, 0, CDSRapport._Conso_5_ * 1000 / (' +
+          'CDSRapport._AgeFin_5_ - CDSRapport._AgeDeb_5_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPD_5: TQRExpr
+        Left = -144
+        Top = 180
+        Width = 862
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -381.000000000000000000
+          476.250000000000000000
+          2280.708333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_5_ = 0, 0, (CDSRapport._pFin_5_ - CDSRappo' +
+          'rt._pDeb_5_) * 1000 / (CDSRapport._AgeFin_5_ - CDSRapport._AgeDe' +
+          'b_5_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELD_5: TQRExpr
+        Left = -136
+        Top = 200
+        Width = 854
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -359.833333333333300000
+          529.166666666666700000
+          2259.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_5_ = 0, 0, (CDSRapport._lFin_5_ - CDSRappo' +
+          'rt._lDeb_5_) * 1000 / (CDSRapport._AgeFin_5_ - CDSRapport._AgeDe' +
+          'b_5_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREWastage_5: TQRExpr
+        Left = 158
+        Top = 260
+        Width = 560
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          418.041666666666700000
+          687.916666666666700000
+          1481.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._Conso_5_ = 0, 0, (1 - CDSRapport._Ingere_5_ / CDS' +
+          'Rapport._Conso_5_) * 100)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC_4: TQRDBText
+        Left = 591
+        Top = 340
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1563.687500000000000000
+          899.583333333333300000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2_4: TQRDBText
+        Left = 593
+        Top = 300
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1568.979166666667000000
+          793.750000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMP_4: TQRDBText
+        Left = 582
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1539.875000000000000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMP_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliTot_4: TQRDBText
+        Left = 572
+        Top = 220
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1513.416666666667000000
+          582.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Conso_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeFin_4: TQRDBText
+        Left = 568
+        Top = 80
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1502.833333333333000000
+          211.666666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeFin_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeDeb_4: TQRDBText
+        Left = 563
+        Top = 60
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1489.604166666667000000
+          158.750000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeDeb_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsFin_4: TQRDBText
+        Left = 558
+        Top = 140
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1476.375000000000000000
+          370.416666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsFin_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsDeb_4: TQRDBText
+        Left = 553
+        Top = 120
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1463.145833333333000000
+          317.500000000000000000
+          224.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsDeb_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDuree_4: TQRExpr
+        Left = 330
+        Top = 100
+        Width = 308
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          873.125000000000000000
+          264.583333333333300000
+          814.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeFin_4_ - CDSRapport._AgeDeb_4_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREGMQ_4: TQRExpr
+        Left = -276
+        Top = 160
+        Width = 914
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -730.250000000000000000
+          423.333333333333300000
+          2418.291666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_4_ = 0, 0, (CDSRapport._PoidsFin_4_ - CDSR' +
+          'apport._PoidsDeb_4_) * 1000 / (CDSRapport._AgeFin_4_ - CDSRappor' +
+          't._AgeDeb_4_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAliMoy_4: TQRExpr
+        Left = -82
+        Top = 240
+        Width = 720
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -216.958333333333300000
+          635.000000000000000000
+          1905.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_4_ = 0, 0, CDSRapport._Conso_4_ * 1000 / (' +
+          'CDSRapport._AgeFin_4_ - CDSRapport._AgeDeb_4_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPD_4: TQRExpr
+        Left = -224
+        Top = 180
+        Width = 862
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -592.666666666666700000
+          476.250000000000000000
+          2280.708333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_4_ = 0, 0, (CDSRapport._pFin_4_ - CDSRappo' +
+          'rt._pDeb_4_) * 1000 / (CDSRapport._AgeFin_4_ - CDSRapport._AgeDe' +
+          'b_4_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELD_4: TQRExpr
+        Left = -216
+        Top = 200
+        Width = 854
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -571.500000000000000000
+          529.166666666666700000
+          2259.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_4_ = 0, 0, (CDSRapport._lFin_4_ - CDSRappo' +
+          'rt._lDeb_4_) * 1000 / (CDSRapport._AgeFin_4_ - CDSRapport._AgeDe' +
+          'b_4_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREWastage_4: TQRExpr
+        Left = 78
+        Top = 260
+        Width = 560
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          206.375000000000000000
+          687.916666666666700000
+          1481.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._Conso_4_ = 0, 0, (1 - CDSRapport._Ingere_4_ / CDS' +
+          'Rapport._Conso_4_) * 100)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC_3: TQRDBText
+        Left = 511
+        Top = 340
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1352.020833333333000000
+          899.583333333333300000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2_3: TQRDBText
+        Left = 513
+        Top = 300
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1357.312500000000000000
+          793.750000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMP_3: TQRDBText
+        Left = 502
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1328.208333333333000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMP_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliTot_3: TQRDBText
+        Left = 492
+        Top = 220
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1301.750000000000000000
+          582.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Conso_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeFin_3: TQRDBText
+        Left = 488
+        Top = 80
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1291.166666666667000000
+          211.666666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeFin_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeDeb_3: TQRDBText
+        Left = 483
+        Top = 60
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1277.937500000000000000
+          158.750000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeDeb_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsFin_3: TQRDBText
+        Left = 478
+        Top = 140
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1264.708333333333000000
+          370.416666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsFin_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsDeb_3: TQRDBText
+        Left = 473
+        Top = 120
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1251.479166666667000000
+          317.500000000000000000
+          224.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsDeb_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDuree_3: TQRExpr
+        Left = 250
+        Top = 100
+        Width = 308
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          661.458333333333300000
+          264.583333333333300000
+          814.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeFin_3_ - CDSRapport._AgeDeb_3_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREGMQ_3: TQRExpr
+        Left = -356
+        Top = 160
+        Width = 914
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -941.916666666666700000
+          423.333333333333300000
+          2418.291666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_3_ = 0, 0, (CDSRapport._PoidsFin_3_ - CDSR' +
+          'apport._PoidsDeb_3_) * 1000 / (CDSRapport._AgeFin_3_ - CDSRappor' +
+          't._AgeDeb_3_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAliMoy_3: TQRExpr
+        Left = -162
+        Top = 240
+        Width = 720
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -428.625000000000000000
+          635.000000000000000000
+          1905.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_3_ = 0, 0, CDSRapport._Conso_3_ * 1000 / (' +
+          'CDSRapport._AgeFin_3_ - CDSRapport._AgeDeb_3_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPD_3: TQRExpr
+        Left = -304
+        Top = 180
+        Width = 862
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -804.333333333333300000
+          476.250000000000000000
+          2280.708333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_3_ = 0, 0, (CDSRapport._pFin_3_ - CDSRappo' +
+          'rt._pDeb_3_) * 1000 / (CDSRapport._AgeFin_3_ - CDSRapport._AgeDe' +
+          'b_3_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELD_3: TQRExpr
+        Left = -296
+        Top = 200
+        Width = 854
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -783.166666666666700000
+          529.166666666666700000
+          2259.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_3_ = 0, 0, (CDSRapport._lFin_3_ - CDSRappo' +
+          'rt._lDeb_3_) * 1000 / (CDSRapport._AgeFin_3_ - CDSRapport._AgeDe' +
+          'b_3_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREWastage_3: TQRExpr
+        Left = -2
+        Top = 260
+        Width = 560
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -5.291666666666667000
+          687.916666666666700000
+          1481.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._Conso_3_ = 0, 0, (1 - CDSRapport._Ingere_3_ / CDS' +
+          'Rapport._Conso_3_) * 100)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC_2: TQRDBText
+        Left = 431
+        Top = 340
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1140.354166666667000000
+          899.583333333333300000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2_2: TQRDBText
+        Left = 433
+        Top = 300
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1145.645833333333000000
+          793.750000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMP_2: TQRDBText
+        Left = 422
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1116.541666666667000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMP_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliTot_2: TQRDBText
+        Left = 412
+        Top = 220
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1090.083333333333000000
+          582.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Conso_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeFin_2: TQRDBText
+        Left = 408
+        Top = 80
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          211.666666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeFin_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeDeb_2: TQRDBText
+        Left = 403
+        Top = 60
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1066.270833333333000000
+          158.750000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeDeb_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsFin_2: TQRDBText
+        Left = 398
+        Top = 140
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1053.041666666667000000
+          370.416666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsFin_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsDeb_2: TQRDBText
+        Left = 393
+        Top = 120
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1039.812500000000000000
+          317.500000000000000000
+          224.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsDeb_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDuree_2: TQRExpr
+        Left = 170
+        Top = 100
+        Width = 308
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          449.791666666666700000
+          264.583333333333300000
+          814.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeFin_2_ - CDSRapport._AgeDeb_2_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREGMQ_2: TQRExpr
+        Left = -436
+        Top = 160
+        Width = 914
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -1153.583333333333000000
+          423.333333333333300000
+          2418.291666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_2_ = 0, 0, (CDSRapport._PoidsFin_2_ - CDSR' +
+          'apport._PoidsDeb_2_) * 1000 / (CDSRapport._AgeFin_2_ - CDSRappor' +
+          't._AgeDeb_2_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAliMoy_2: TQRExpr
+        Left = -242
+        Top = 240
+        Width = 720
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -640.291666666666700000
+          635.000000000000000000
+          1905.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_2_ = 0, 0, CDSRapport._Conso_2_ * 1000 / (' +
+          'CDSRapport._AgeFin_2_ - CDSRapport._AgeDeb_2_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPD_2: TQRExpr
+        Left = -384
+        Top = 180
+        Width = 862
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -1016.000000000000000000
+          476.250000000000000000
+          2280.708333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_2_ = 0, 0, (CDSRapport._pFin_2_ - CDSRappo' +
+          'rt._pDeb_2_) * 1000 / (CDSRapport._AgeFin_2_ - CDSRapport._AgeDe' +
+          'b_2_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELD_2: TQRExpr
+        Left = -376
+        Top = 200
+        Width = 854
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -994.833333333333300000
+          529.166666666666700000
+          2259.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_2_ = 0, 0, (CDSRapport._lFin_2_ - CDSRappo' +
+          'rt._lDeb_2_) * 1000 / (CDSRapport._AgeFin_2_ - CDSRapport._AgeDe' +
+          'b_2_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREWastage_2: TQRExpr
+        Left = -82
+        Top = 260
+        Width = 560
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -216.958333333333300000
+          687.916666666666700000
+          1481.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._Conso_2_ = 0, 0, (1 - CDSRapport._Ingere_2_ / CDS' +
+          'Rapport._Conso_2_) * 100)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREWastage_1: TQRExpr
+        Left = -162
+        Top = 260
+        Width = 560
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -428.625000000000000000
+          687.916666666666700000
+          1481.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._Conso_1_ = 0, 0, (1 - CDSRapport._Ingere_1_ / CDS' +
+          'Rapport._Conso_1_) * 100)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELD_1: TQRExpr
+        Left = -456
+        Top = 200
+        Width = 854
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -1206.500000000000000000
+          529.166666666666700000
+          2259.541666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_1_ = 0, 0, (CDSRapport._lFin_1_ - CDSRappo' +
+          'rt._lDeb_1_) * 1000 / (CDSRapport._AgeFin_1_ - CDSRapport._AgeDe' +
+          'b_1_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPD_1: TQRExpr
+        Left = -464
+        Top = 180
+        Width = 862
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -1227.666666666667000000
+          476.250000000000000000
+          2280.708333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_1_ = 0, 0, (CDSRapport._pFin_1_ - CDSRappo' +
+          'rt._pDeb_1_) * 1000 / (CDSRapport._AgeFin_1_ - CDSRapport._AgeDe' +
+          'b_1_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAliMoy_1: TQRExpr
+        Left = -322
+        Top = 240
+        Width = 720
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -851.958333333333300000
+          635.000000000000000000
+          1905.000000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_1_ = 0, 0, CDSRapport._Conso_1_ * 1000 / (' +
+          'CDSRapport._AgeFin_1_ - CDSRapport._AgeDeb_1_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREGMQ_1: TQRExpr
+        Left = -516
+        Top = 160
+        Width = 914
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -1365.250000000000000000
+          423.333333333333300000
+          2418.291666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._AgeFin_1_ = 0, 0, (CDSRapport._PoidsFin_1_ - CDSR' +
+          'apport._PoidsDeb_1_) * 1000 / (CDSRapport._AgeFin_1_ - CDSRappor' +
+          't._AgeDeb_1_))'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDuree_1: TQRExpr
+        Left = 90
+        Top = 100
+        Width = 308
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          238.125000000000000000
+          264.583333333333300000
+          814.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeFin_1_ - CDSRapport._AgeDeb_1_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPerf: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 151
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          21.166666666666670000
+          399.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Global performance'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLPoidsDeb: TQRLabel
+        Left = 40
+        Top = 120
+        Width = 119
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          317.500000000000000000
+          314.854166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial body weight'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPoidsFin: TQRLabel
+        Left = 40
+        Top = 140
+        Width = 115
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          370.416666666666700000
+          304.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Final body weight'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsDeb_1: TQRDBText
+        Left = 313
+        Top = 120
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          828.145833333333300000
+          317.500000000000000000
+          224.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsDeb_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsFin_1: TQRDBText
+        Left = 318
+        Top = 140
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          841.375000000000000000
+          370.416666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsFin_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAgeDeb: TQRLabel
+        Left = 40
+        Top = 60
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          158.750000000000000000
+          171.979166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial age'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAgeFin: TQRLabel
+        Left = 40
+        Top = 80
+        Width = 61
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          211.666666666666700000
+          161.395833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Final age'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeDeb_1: TQRDBText
+        Left = 323
+        Top = 60
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          854.604166666666700000
+          158.750000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeDeb_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeFin_1: TQRDBText
+        Left = 328
+        Top = 80
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          867.833333333333300000
+          211.666666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeFin_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLDuree: TQRLabel
+        Left = 40
+        Top = 100
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          264.583333333333300000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Duration'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLGMQ: TQRLabel
+        Left = 40
+        Top = 160
+        Width = 121
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          423.333333333333300000
+          320.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average daily gain'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPD: TQRLabel
+        Left = 40
+        Top = 180
+        Width = 173
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          476.250000000000000000
+          457.729166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average protein deposition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLD: TQRLabel
+        Left = 40
+        Top = 200
+        Width = 156
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          529.166666666666700000
+          412.750000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average lipid deposition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliTot: TQRLabel
+        Left = 40
+        Top = 220
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          582.083333333333300000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total feed usage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliMoy: TQRLabel
+        Left = 40
+        Top = 240
+        Width = 163
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          635.000000000000000000
+          431.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average daily feed usage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliTot_1: TQRDBText
+        Left = 332
+        Top = 220
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          878.416666666666700000
+          582.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Conso_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLWastage: TQRLabel
+        Left = 40
+        Top = 260
+        Width = 90
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          687.916666666666700000
+          238.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed wastage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLFeed: TQRLabel
+        Left = 40
+        Top = 280
+        Width = 98
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          740.833333333333300000
+          259.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed efficiency'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTMP: TQRLabel
+        Left = 40
+        Top = 320
+        Width = 148
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          846.666666666666700000
+          391.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lean meat at slaughter'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMP_1: TQRDBText
+        Left = 342
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMP_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP2: TQRLabel
+        Left = 40
+        Top = 300
+        Width = 189
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          793.750000000000000000
+          500.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Backfat thickness at slaughter'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2_1: TQRDBText
+        Left = 353
+        Top = 300
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          933.979166666666700000
+          793.750000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLRC: TQRLabel
+        Left = 40
+        Top = 340
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          899.583333333333300000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Dressing'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC_1: TQRDBText
+        Left = 351
+        Top = 340
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          928.687500000000000000
+          899.583333333333300000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCaract: TQRLabel
+        Left = 40
+        Top = 372
+        Width = 116
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          984.250000000000000000
+          306.916666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Characteristics'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLSimulNo: TQRLabel
+        Left = 40
+        Top = 40
+        Width = 82
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          105.833333333333300000
+          216.958333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Simulation'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLNo1: TQRLabel
+        Left = 388
+        Top = 40
+        Width = 10
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1026.583333333333000000
+          105.833333333333300000
+          26.458333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '1'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLabel1: TQRLabel
+        Left = 468
+        Top = 40
+        Width = 10
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1238.250000000000000000
+          105.833333333333300000
+          26.458333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '2'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLabel2: TQRLabel
+        Left = 548
+        Top = 40
+        Width = 10
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1449.916666666667000000
+          105.833333333333300000
+          26.458333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '3'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLabel3: TQRLabel
+        Left = 628
+        Top = 40
+        Width = 10
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1661.583333333333000000
+          105.833333333333300000
+          26.458333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '4'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLabel4: TQRLabel
+        Left = 708
+        Top = 40
+        Width = 10
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1873.250000000000000000
+          105.833333333333300000
+          26.458333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '5'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 602
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 27
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          21.166666666666670000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 383
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          63.500000000000000000
+          1013.354166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1711.854166666667000000
+          63.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+    object QRSDRapport: TQRSubDetail
+      Left = 38
+      Top = 514
+      Width = 718
+      Height = 88
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        232.833333333333300000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      Master = QRRapport
+      DataSet = CDSSimul
+      PrintBefore = False
+      PrintIfEmpty = True
+      object QRDBTProfil: TQRDBText
+        Left = 264
+        Top = 28
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          74.083333333333330000
+          116.416666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSSimul
+        DataField = '_Profil_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLProfil: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 91
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          240.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Animal profile'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSeqAli: TQRLabel
+        Left = 40
+        Top = 48
+        Width = 130
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          127.000000000000000000
+          343.958333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed sequence plan'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLRation: TQRLabel
+        Left = 40
+        Top = 68
+        Width = 126
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          179.916666666666700000
+          333.375000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed rationing plan'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSeqAli: TQRDBText
+        Left = 264
+        Top = 48
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          127.000000000000000000
+          140.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSSimul
+        DataField = '_SeqAli_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRation: TQRDBText
+        Left = 264
+        Top = 68
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          179.916666666666700000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSSimul
+        DataField = '_Ration_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSimul: TQRDBText
+        Left = 40
+        Top = 8
+        Width = 62
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          21.166666666666670000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSSimul
+        DataField = '_Simul_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object IFAgeDeb_1: TIntegerField
+      FieldName = '_AgeDeb_1_'
+    end
+    object IFAgeFin_1: TIntegerField
+      FieldName = '_AgeFin_1_'
+    end
+    object FFPoidsDeb_1: TFloatField
+      FieldName = '_PoidsDeb_1_'
+    end
+    object FFPoidsFin_1: TFloatField
+      FieldName = '_PoidsFin_1_'
+    end
+    object FFpDeb_1: TFloatField
+      FieldName = '_pDeb_1_'
+    end
+    object FFpFin_1: TFloatField
+      FieldName = '_pFin_1_'
+    end
+    object FFlDeb_1: TFloatField
+      FieldName = '_lDeb_1_'
+    end
+    object FFlFin_1: TFloatField
+      FieldName = '_lFin_1_'
+    end
+    object FFConso_1: TFloatField
+      FieldName = '_Conso_1_'
+    end
+    object FFIngere_1: TFloatField
+      FieldName = '_Ingere_1_'
+    end
+    object FFP2_1: TFloatField
+      FieldName = '_P2_1_'
+    end
+    object FFTMP_1: TFloatField
+      FieldName = '_TMP_1_'
+    end
+    object FFRC_1: TFloatField
+      FieldName = '_RC_1_'
+    end
+    object IFAgeDeb_2: TIntegerField
+      FieldName = '_AgeDeb_2_'
+    end
+    object IFAgeFin_2: TIntegerField
+      FieldName = '_AgeFin_2_'
+    end
+    object FFPoidsDeb_2: TFloatField
+      FieldName = '_PoidsDeb_2_'
+    end
+    object FFPoidsFin_2: TFloatField
+      FieldName = '_PoidsFin_2_'
+    end
+    object FFpDeb_2: TFloatField
+      FieldName = '_pDeb_2_'
+    end
+    object FFpFin_2: TFloatField
+      FieldName = '_pFin_2_'
+    end
+    object FFlDeb_2: TFloatField
+      FieldName = '_lDeb_2_'
+    end
+    object FFlFin_2: TFloatField
+      FieldName = '_lFin_2_'
+    end
+    object FFConso_2: TFloatField
+      FieldName = '_Conso_2_'
+    end
+    object FFIngere_2: TFloatField
+      FieldName = '_Ingere_2_'
+    end
+    object FFP2_2: TFloatField
+      FieldName = '_P2_2_'
+    end
+    object FFTMP_2: TFloatField
+      FieldName = '_TMP_2_'
+    end
+    object FFRC_2: TFloatField
+      FieldName = '_RC_2_'
+    end
+    object IFAgeDeb_3: TIntegerField
+      FieldName = '_AgeDeb_3_'
+    end
+    object IFAgeFin_3: TIntegerField
+      FieldName = '_AgeFin_3_'
+    end
+    object FFPoidsDeb_3: TFloatField
+      FieldName = '_PoidsDeb_3_'
+    end
+    object FFPoidsFin_3: TFloatField
+      FieldName = '_PoidsFin_3_'
+    end
+    object FFpDeb_3: TFloatField
+      FieldName = '_pDeb_3_'
+    end
+    object FFpFin_3: TFloatField
+      FieldName = '_pFin_3_'
+    end
+    object FFlDeb_3: TFloatField
+      FieldName = '_lDeb_3_'
+    end
+    object FFlFin_3: TFloatField
+      FieldName = '_lFin_3_'
+    end
+    object FFConso_3: TFloatField
+      FieldName = '_Conso_3_'
+    end
+    object FFIngere_3: TFloatField
+      FieldName = '_Ingere_3_'
+    end
+    object FFP2_3: TFloatField
+      FieldName = '_P2_3_'
+    end
+    object FFTMP_3: TFloatField
+      FieldName = '_TMP_3_'
+    end
+    object FFRC_3: TFloatField
+      FieldName = '_RC_3_'
+    end
+    object IFAgeDeb_4: TIntegerField
+      FieldName = '_AgeDeb_4_'
+    end
+    object IFAgeFin_4: TIntegerField
+      FieldName = '_AgeFin_4_'
+    end
+    object FFPoidsDeb_4: TFloatField
+      FieldName = '_PoidsDeb_4_'
+    end
+    object FFPoidsFin_4: TFloatField
+      FieldName = '_PoidsFin_4_'
+    end
+    object FFpDeb_4: TFloatField
+      FieldName = '_pDeb_4_'
+    end
+    object FFpFin_4: TFloatField
+      FieldName = '_pFin_4_'
+    end
+    object FFlDeb_4: TFloatField
+      FieldName = '_lDeb_4_'
+    end
+    object FFlFin_4: TFloatField
+      FieldName = '_lFin_4_'
+    end
+    object FFConso_4: TFloatField
+      FieldName = '_Conso_4_'
+    end
+    object FFIngere_4: TFloatField
+      FieldName = '_Ingere_4_'
+    end
+    object FFP2_4: TFloatField
+      FieldName = '_P2_4_'
+    end
+    object FFTMP_4: TFloatField
+      FieldName = '_TMP_4_'
+    end
+    object FFRC_4: TFloatField
+      FieldName = '_RC_4_'
+    end
+    object IFAgeDeb_5: TIntegerField
+      FieldName = '_AgeDeb_5_'
+    end
+    object IFAgeFin_5: TIntegerField
+      FieldName = '_AgeFin_5_'
+    end
+    object FFPoidsDeb_5: TFloatField
+      FieldName = '_PoidsDeb_5_'
+    end
+    object FFPoidsFin_5: TFloatField
+      FieldName = '_PoidsFin_5_'
+    end
+    object FFpDeb_5: TFloatField
+      FieldName = '_pDeb_5_'
+    end
+    object FFpFin_5: TFloatField
+      FieldName = '_pFin_5_'
+    end
+    object FFlDeb_5: TFloatField
+      FieldName = '_lDeb_5_'
+    end
+    object FFlFin_5: TFloatField
+      FieldName = '_lFin_5_'
+    end
+    object FFConso_5: TFloatField
+      FieldName = '_Conso_5_'
+    end
+    object FFIngere_5: TFloatField
+      FieldName = '_Ingere_5_'
+    end
+    object FFP2_5: TFloatField
+      FieldName = '_P2_5_'
+    end
+    object FFTMP_5: TFloatField
+      FieldName = '_TMP_5_'
+    end
+    object FFRC_5: TFloatField
+      FieldName = '_RC_5_'
+    end
+  end
+  object CDSSimul: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 40
+    Top = 8
+    object SFSimul: TStringField
+      FieldName = '_Simul_'
+      Size = 25
+    end
+    object SFProfil: TStringField
+      FieldName = '_Profil_'
+      Size = 25
+    end
+    object SFSeqAli: TStringField
+      FieldName = '_SeqAli_'
+      Size = 25
+    end
+    object SFRation: TStringField
+      FieldName = '_Ration_'
+      Size = 25
+    end
+  end
+end
Index: UFProfilT.pas
===================================================================
--- UFProfilT.pas	(révision 0)
+++ UFProfilT.pas	(révision 3)
@@ -0,0 +1,4247 @@
+unit UFProfilT;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons, ExtCtrls, ComCtrls,
+  Gauges, Chart, Series, TeEngine, TeeProcs, PBNumEdit, PBSuperSpin,
+  JvExControls, JvEnterTab, UVariables;
+
+type
+  TFProfilT = class(TForm)
+    GBProfil: TGroupBox;
+    SBAddProfil: TSpeedButton;
+    SBDelProfil: TSpeedButton;
+    CBProfil: TComboBox;
+    PC: TPageControl;
+    TSGraph: TTabSheet;
+    TSAlim: TTabSheet;
+    SBRename: TSpeedButton;
+    SBComment: TSpeedButton;
+    TSPortee: TTabSheet;
+    TSTruie: TTabSheet;
+    TSCalibr: TTabSheet;
+    GBMiseBas: TGroupBox;
+    LTruiePt1: TLabel;
+    LTruiePt2: TLabel;
+    LTruiePt3: TLabel;
+    LTruiePt4: TLabel;
+    LTruiePt5: TLabel;
+    LTruiePt6: TLabel;
+    LTruiePt7: TLabel;
+    LTruiePt8: TLabel;
+    LTruieTot: TLabel;
+    PBPdsAvMBPt1: TPBNumEdit;
+    PBPdsApMBPt1: TPBNumEdit;
+    PBPdsAvMBPt2: TPBNumEdit;
+    PBPdsAvMBPt3: TPBNumEdit;
+    PBPdsAvMBPt4: TPBNumEdit;
+    PBPdsAvMBPt5: TPBNumEdit;
+    PBPdsAvMBPt6: TPBNumEdit;
+    PBPdsAvMBPt7: TPBNumEdit;
+    PBPdsAvMBPt8: TPBNumEdit;
+    PBPdsAvMBTot: TPBNumEdit;
+    PBPdsApMBPt2: TPBNumEdit;
+    PBPdsApMBPt3: TPBNumEdit;
+    PBPdsApMBPt4: TPBNumEdit;
+    PBPdsApMBPt5: TPBNumEdit;
+    PBPdsApMBPt6: TPBNumEdit;
+    PBPdsApMBPt7: TPBNumEdit;
+    PBPdsApMBPt8: TPBNumEdit;
+    PBPdsApMBTot: TPBNumEdit;
+    PTopTruie: TPanel;
+    GBEffectif: TGroupBox;
+    RBNbrEff: TRadioButton;
+    RBPctEff: TRadioButton;
+    PBNbrPt1: TPBNumEdit;
+    PBPctPt1: TPBNumEdit;
+    PBNbrPt2: TPBNumEdit;
+    PBNbrPt3: TPBNumEdit;
+    PBNbrPt4: TPBNumEdit;
+    PBNbrPt5: TPBNumEdit;
+    PBNbrPt6: TPBNumEdit;
+    PBNbrPt7: TPBNumEdit;
+    PBNbrPt8: TPBNumEdit;
+    PBNbrTot: TPBNumEdit;
+    PBPctPt2: TPBNumEdit;
+    PBPctPt3: TPBNumEdit;
+    PBPctPt4: TPBNumEdit;
+    PBPctPt5: TPBNumEdit;
+    PBPctPt6: TPBNumEdit;
+    PBPctPt7: TPBNumEdit;
+    PBPctPt8: TPBNumEdit;
+    PBPctTot: TPBNumEdit;
+    LPdsAvMB: TLabel;
+    LP2MB: TLabel;
+    PBP2MBPt1: TPBNumEdit;
+    PBP2MBPt2: TPBNumEdit;
+    PBP2MBPt3: TPBNumEdit;
+    PBP2MBPt4: TPBNumEdit;
+    PBP2MBPt5: TPBNumEdit;
+    PBP2MBPt6: TPBNumEdit;
+    PBP2MBPt7: TPBNumEdit;
+    PBP2MBPt8: TPBNumEdit;
+    PBP2MBTot: TPBNumEdit;
+    GBSaillie: TGroupBox;
+    LAgeSail: TLabel;
+    LPdsSail: TLabel;
+    LP2Sail: TLabel;
+    PBAgeSailPt1: TPBNumEdit;
+    PBPdsSailPt1: TPBNumEdit;
+    PBAgeSailPt2: TPBNumEdit;
+    PBAgeSailPt3: TPBNumEdit;
+    PBAgeSailPt4: TPBNumEdit;
+    PBAgeSailPt5: TPBNumEdit;
+    PBAgeSailPt6: TPBNumEdit;
+    PBAgeSailPt7: TPBNumEdit;
+    PBAgeSailPt8: TPBNumEdit;
+    PBAgeSailTot: TPBNumEdit;
+    PBPdsSailPt2: TPBNumEdit;
+    PBPdsSailPt3: TPBNumEdit;
+    PBPdsSailPt4: TPBNumEdit;
+    PBPdsSailPt5: TPBNumEdit;
+    PBPdsSailPt6: TPBNumEdit;
+    PBPdsSailPt7: TPBNumEdit;
+    PBPdsSailPt8: TPBNumEdit;
+    PBPdsSailTot: TPBNumEdit;
+    PBP2SailPt1: TPBNumEdit;
+    PBP2SailPt2: TPBNumEdit;
+    PBP2SailPt3: TPBNumEdit;
+    PBP2SailPt4: TPBNumEdit;
+    PBP2SailPt5: TPBNumEdit;
+    PBP2SailPt6: TPBNumEdit;
+    PBP2SailPt7: TPBNumEdit;
+    PBP2SailPt8: TPBNumEdit;
+    PBP2SailTot: TPBNumEdit;
+    ChkPdsApMB: TCheckBox;
+    PTopPortee: TPanel;
+    LPorteePt1: TLabel;
+    LPorteePt2: TLabel;
+    LPorteePt3: TLabel;
+    LPorteePt4: TLabel;
+    LPorteePt5: TLabel;
+    LPorteePt6: TLabel;
+    LPorteePt7: TLabel;
+    LPorteePt8: TLabel;
+    LPorteeTot: TLabel;
+    GBNaissance: TGroupBox;
+    LNbTot: TLabel;
+    LNbVif: TLabel;
+    LNbSev: TLabel;
+    PBNbTotPt1: TPBNumEdit;
+    PBNbVifPt1: TPBNumEdit;
+    PBNbTotPt2: TPBNumEdit;
+    PBNbTotPt3: TPBNumEdit;
+    PBNbTotPt4: TPBNumEdit;
+    PBNbTotPt5: TPBNumEdit;
+    PBNbTotPt6: TPBNumEdit;
+    PBNbTotPt7: TPBNumEdit;
+    PBNbTotPt8: TPBNumEdit;
+    PBNbTotTot: TPBNumEdit;
+    PBNbVifPt2: TPBNumEdit;
+    PBNbVifPt3: TPBNumEdit;
+    PBNbVifPt4: TPBNumEdit;
+    PBNbVifPt5: TPBNumEdit;
+    PBNbVifPt6: TPBNumEdit;
+    PBNbVifPt7: TPBNumEdit;
+    PBNbVifPt8: TPBNumEdit;
+    PBNbVifTot: TPBNumEdit;
+    LPVNais: TLabel;
+    PBPVNaisPt1: TPBNumEdit;
+    PBPVNaisPt2: TPBNumEdit;
+    PBPVNaisPt3: TPBNumEdit;
+    PBPVNaisPt4: TPBNumEdit;
+    PBPVNaisPt5: TPBNumEdit;
+    PBPVNaisPt6: TPBNumEdit;
+    PBPVNaisPt7: TPBNumEdit;
+    PBPVNaisPt8: TPBNumEdit;
+    PBPVNaisTot: TPBNumEdit;
+    GBSevrage: TGroupBox;
+    PBNbSevPt1: TPBNumEdit;
+    PBNbSevPt2: TPBNumEdit;
+    PBNbSevPt3: TPBNumEdit;
+    PBNbSevPt4: TPBNumEdit;
+    PBNbSevPt5: TPBNumEdit;
+    PBNbSevPt6: TPBNumEdit;
+    PBNbSevPt7: TPBNumEdit;
+    PBNbSevPt8: TPBNumEdit;
+    PBNbSevTot: TPBNumEdit;
+    PBAgeSevPt1: TPBNumEdit;
+    PBAgeSevPt2: TPBNumEdit;
+    PBAgeSevPt3: TPBNumEdit;
+    PBAgeSevPt4: TPBNumEdit;
+    PBAgeSevPt5: TPBNumEdit;
+    PBAgeSevPt6: TPBNumEdit;
+    PBAgeSevPt7: TPBNumEdit;
+    PBAgeSevPt8: TPBNumEdit;
+    LPVSev: TLabel;
+    PBPVSevPt1: TPBNumEdit;
+    PBPVSevPt2: TPBNumEdit;
+    PBPVSevPt3: TPBNumEdit;
+    PBPVSevPt4: TPBNumEdit;
+    PBPVSevPt5: TPBNumEdit;
+    PBPVSevPt6: TPBNumEdit;
+    PBPVSevPt7: TPBNumEdit;
+    PBPVSevPt8: TPBNumEdit;
+    PBPVSevTot: TPBNumEdit;
+    GBGMQ: TGroupBox;
+    LNaisSev: TLabel;
+    PBGMQPt1: TPBNumEdit;
+    PBGMQPt2: TPBNumEdit;
+    PBGMQPt3: TPBNumEdit;
+    PBGMQPt4: TPBNumEdit;
+    PBGMQPt5: TPBNumEdit;
+    PBGMQPt6: TPBNumEdit;
+    PBGMQPt7: TPBNumEdit;
+    PBGMQPt8: TPBNumEdit;
+    PBGMQTot: TPBNumEdit;
+    GBSeqAli: TGroupBox;
+    CBSeqAli: TComboBox;
+    GraphAli: TChart;
+    GBAliRef: TGroupBox;
+    LUnite: TLabel;
+    CBUnite: TComboBox;
+    LAliGest: TLabel;
+    LAliLact: TLabel;
+    LAliPt1: TLabel;
+    LAliPt2: TLabel;
+    LAliPt3: TLabel;
+    LAliPt4: TLabel;
+    LAliPt5: TLabel;
+    LAliPt6: TLabel;
+    LAliPt7: TLabel;
+    LAliPt8: TLabel;
+    LAliTot: TLabel;
+    PBAliGestPt1: TPBNumEdit;
+    PBAliGestPt2: TPBNumEdit;
+    PBAliGestPt3: TPBNumEdit;
+    PBAliGestPt4: TPBNumEdit;
+    PBAliGestPt5: TPBNumEdit;
+    PBAliGestPt6: TPBNumEdit;
+    PBAliGestPt7: TPBNumEdit;
+    PBAliGestPt8: TPBNumEdit;
+    PBAliGestTot: TPBNumEdit;
+    PBAliLactPt1: TPBNumEdit;
+    PBAliLactPt2: TPBNumEdit;
+    PBAliLactPt3: TPBNumEdit;
+    PBAliLactPt4: TPBNumEdit;
+    PBAliLactPt5: TPBNumEdit;
+    PBAliLactPt6: TPBNumEdit;
+    PBAliLactPt7: TPBNumEdit;
+    PBAliLactPt8: TPBNumEdit;
+    PBAliLactTot: TPBNumEdit;
+    GBConfig: TGroupBox;
+    CBOnglet: TComboBox;
+    CBTruie: TComboBox;
+    Graph: TChart;
+    CBPortee: TComboBox;
+    GBLoge: TGroupBox;
+    CBLoge: TComboBox;
+    LAgeSev: TLabel;
+    PBDureeLact: TPBSuperSpin;
+    TSGTTT: TTabSheet;
+    PLeft: TPanel;
+    GraphCalibr: TChart;
+    SBCalibr: TSpeedButton;
+    LignePds: TLineSeries;
+    LigneP2: TLineSeries;
+    PointPds: TLineSeries;
+    PointP2: TLineSeries;
+    LCoefEntGest: TLabel;
+    LCoefEntLact: TLabel;
+    SBReset: TSpeedButton;
+    GBTruies: TGroupBox;
+    GBPorcelets: TGroupBox;
+    LNbrPorcelets: TLabel;
+    LNbrVifs: TLabel;
+    LNbrMorts: TLabel;
+    LNbrSevres: TLabel;
+    LAgePorcelets: TLabel;
+    LNaissance: TLabel;
+    LSevrage: TLabel;
+    PBNbrVifs: TPBNumEdit;
+    PBNbrMorts: TPBNumEdit;
+    PBNbrSevres: TPBNumEdit;
+    PBPdsNais: TPBNumEdit;
+    PBPdsSev: TPBNumEdit;
+    LNbrTruies: TLabel;
+    PBNbrTruies: TPBNumEdit;
+    LAge1ereMB: TLabel;
+    PBAge1ereMB: TPBNumEdit;
+    LISO2: TLabel;
+    PBISO: TPBNumEdit;
+    LPdsTruies: TLabel;
+    L1ereSaillie: TLabel;
+    LAdulte: TLabel;
+    LPrimipares: TLabel;
+    LMultipares: TLabel;
+    LPerteLactation: TLabel;
+    LP2Truies: TLabel;
+    PBPds1ereSaillie: TPBNumEdit;
+    PBPdsAdulte: TPBNumEdit;
+    PBPertePdsPrim: TPBNumEdit;
+    PBPertePdsMult: TPBNumEdit;
+    LPdsPorcelets: TLabel;
+    PBP21ereSaillie: TPBNumEdit;
+    PBP2Objectif: TPBNumEdit;
+    PBPerteP2Prim: TPBNumEdit;
+    PBPerteP2Mult: TPBNumEdit;
+    LObjectif: TLabel;
+    BBCalcul: TBitBtn;
+    GBAlimentation: TGroupBox;
+    LConsoLact: TLabel;
+    LConsoGest: TLabel;
+    PBConsoLact: TPBNumEdit;
+    PBConsoGest: TPBNumEdit;
+    PBConsoAn: TPBNumEdit;
+    LConsoAn: TLabel;
+    PBAgeSev: TPBSuperSpin;
+    SBSave: TSpeedButton;
+    SBPrint: TSpeedButton;
+    PAlimTop: TPanel;
+    LISO: TLabel;
+    PBISOPt2: TPBNumEdit;
+    PBISOPt3: TPBNumEdit;
+    PBISOPt4: TPBNumEdit;
+    PBISOPt5: TPBNumEdit;
+    PBISOPt6: TPBNumEdit;
+    PBISOPt7: TPBNumEdit;
+    PBISOPt8: TPBNumEdit;
+    PBISOTot: TPBNumEdit;
+    LPdsApMB: TLabel;
+    GBCalGest: TGroupBox;
+    GBCalLact: TGroupBox;
+    LRatioLipProt: TLabel;
+    JvEnterAsTab: TJvEnterAsTab;
+    CBMethod: TComboBox;
+    PBCoefEntGest: TPBSuperSpin;
+    PBCoefEntLact: TPBSuperSpin;
+    PBRatioLipProt: TPBSuperSpin;
+    GaugeCalibr: TGauge;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormActivate(Sender: TObject);
+    procedure FormDeactivate(Sender: TObject);
+    procedure CBProfilChange(Sender: TObject);
+    procedure SBAddProfilClick(Sender: TObject);
+    procedure SBDelProfilClick(Sender: TObject);
+    procedure SBRenameClick(Sender: TObject);
+    procedure SBCommentClick(Sender: TObject);
+    procedure PCChange(Sender: TObject);
+    procedure RBEffectifClick(Sender: TObject);
+    procedure ChkPdsApMBClick(Sender: TObject);
+    procedure PBNbrPt1Change(Sender: TObject);
+    procedure PBNbrPt2Change(Sender: TObject);
+    procedure PBNbrPt3Change(Sender: TObject);
+    procedure PBNbrPt4Change(Sender: TObject);
+    procedure PBNbrPt5Change(Sender: TObject);
+    procedure PBNbrPt6Change(Sender: TObject);
+    procedure PBNbrPt7Change(Sender: TObject);
+    procedure PBNbrPt8Change(Sender: TObject);
+    procedure PBPctChange(Sender: TObject);
+    procedure PBISOPt2Change(Sender: TObject);
+    procedure PBISOPt3Change(Sender: TObject);
+    procedure PBISOPt4Change(Sender: TObject);
+    procedure PBISOPt5Change(Sender: TObject);
+    procedure PBISOPt6Change(Sender: TObject);
+    procedure PBISOPt7Change(Sender: TObject);
+    procedure PBISOPt8Change(Sender: TObject);
+    procedure PBAgeSailPt1Change(Sender: TObject);
+    procedure PBPdsSailPt1Change(Sender: TObject);
+    procedure PBPdsSailPt2Change(Sender: TObject);
+    procedure PBPdsSailPt3Change(Sender: TObject);
+    procedure PBPdsSailPt4Change(Sender: TObject);
+    procedure PBPdsSailPt5Change(Sender: TObject);
+    procedure PBPdsSailPt6Change(Sender: TObject);
+    procedure PBPdsSailPt7Change(Sender: TObject);
+    procedure PBPdsSailPt8Change(Sender: TObject);
+    procedure PBP2SailPt1Change(Sender: TObject);
+    procedure PBP2SailPt2Change(Sender: TObject);
+    procedure PBP2SailPt3Change(Sender: TObject);
+    procedure PBP2SailPt4Change(Sender: TObject);
+    procedure PBP2SailPt5Change(Sender: TObject);
+    procedure PBP2SailPt6Change(Sender: TObject);
+    procedure PBP2SailPt7Change(Sender: TObject);
+    procedure PBP2SailPt8Change(Sender: TObject);
+    procedure PBPdsAvMBPt1Change(Sender: TObject);
+    procedure PBPdsAvMBPt2Change(Sender: TObject);
+    procedure PBPdsAvMBPt3Change(Sender: TObject);
+    procedure PBPdsAvMBPt4Change(Sender: TObject);
+    procedure PBPdsAvMBPt5Change(Sender: TObject);
+    procedure PBPdsAvMBPt6Change(Sender: TObject);
+    procedure PBPdsAvMBPt7Change(Sender: TObject);
+    procedure PBPdsAvMBPt8Change(Sender: TObject);
+    procedure PBPdsApMBPt1Change(Sender: TObject);
+    procedure PBPdsApMBPt2Change(Sender: TObject);
+    procedure PBPdsApMBPt3Change(Sender: TObject);
+    procedure PBPdsApMBPt4Change(Sender: TObject);
+    procedure PBPdsApMBPt5Change(Sender: TObject);
+    procedure PBPdsApMBPt6Change(Sender: TObject);
+    procedure PBPdsApMBPt7Change(Sender: TObject);
+    procedure PBPdsApMBPt8Change(Sender: TObject);
+    procedure PBP2MBPt1Change(Sender: TObject);
+    procedure PBP2MBPt2Change(Sender: TObject);
+    procedure PBP2MBPt3Change(Sender: TObject);
+    procedure PBP2MBPt4Change(Sender: TObject);
+    procedure PBP2MBPt5Change(Sender: TObject);
+    procedure PBP2MBPt6Change(Sender: TObject);
+    procedure PBP2MBPt7Change(Sender: TObject);
+    procedure PBP2MBPt8Change(Sender: TObject);
+    procedure PBNbTotPt1Change(Sender: TObject);
+    procedure PBNbTotPt2Change(Sender: TObject);
+    procedure PBNbTotPt3Change(Sender: TObject);
+    procedure PBNbTotPt4Change(Sender: TObject);
+    procedure PBNbTotPt5Change(Sender: TObject);
+    procedure PBNbTotPt6Change(Sender: TObject);
+    procedure PBNbTotPt7Change(Sender: TObject);
+    procedure PBNbTotPt8Change(Sender: TObject);
+    procedure PBNbVifPt1Change(Sender: TObject);
+    procedure PBNbVifPt2Change(Sender: TObject);
+    procedure PBNbVifPt3Change(Sender: TObject);
+    procedure PBNbVifPt4Change(Sender: TObject);
+    procedure PBNbVifPt5Change(Sender: TObject);
+    procedure PBNbVifPt6Change(Sender: TObject);
+    procedure PBNbVifPt7Change(Sender: TObject);
+    procedure PBNbVifPt8Change(Sender: TObject);
+    procedure PBNbSevPt1Change(Sender: TObject);
+    procedure PBNbSevPt2Change(Sender: TObject);
+    procedure PBNbSevPt3Change(Sender: TObject);
+    procedure PBNbSevPt4Change(Sender: TObject);
+    procedure PBNbSevPt5Change(Sender: TObject);
+    procedure PBNbSevPt6Change(Sender: TObject);
+    procedure PBNbSevPt7Change(Sender: TObject);
+    procedure PBNbSevPt8Change(Sender: TObject);
+    procedure PBPVNaisPt1Change(Sender: TObject);
+    procedure PBPVNaisPt2Change(Sender: TObject);
+    procedure PBPVNaisPt3Change(Sender: TObject);
+    procedure PBPVNaisPt4Change(Sender: TObject);
+    procedure PBPVNaisPt5Change(Sender: TObject);
+    procedure PBPVNaisPt6Change(Sender: TObject);
+    procedure PBPVNaisPt7Change(Sender: TObject);
+    procedure PBPVNaisPt8Change(Sender: TObject);
+    procedure PBPVSevPt1Change(Sender: TObject);
+    procedure PBPVSevPt2Change(Sender: TObject);
+    procedure PBPVSevPt3Change(Sender: TObject);
+    procedure PBPVSevPt4Change(Sender: TObject);
+    procedure PBPVSevPt5Change(Sender: TObject);
+    procedure PBPVSevPt6Change(Sender: TObject);
+    procedure PBPVSevPt7Change(Sender: TObject);
+    procedure PBPVSevPt8Change(Sender: TObject);
+    procedure PBNbrTotChange(Sender: TObject);
+    procedure CBSeqAliChange(Sender: TObject);
+    procedure CBUniteChange(Sender: TObject);
+    procedure PBAliGestPt1Change(Sender: TObject);
+    procedure PBAliGestPt2Change(Sender: TObject);
+    procedure PBAliGestPt3Change(Sender: TObject);
+    procedure PBAliGestPt4Change(Sender: TObject);
+    procedure PBAliGestPt5Change(Sender: TObject);
+    procedure PBAliGestPt6Change(Sender: TObject);
+    procedure PBAliGestPt7Change(Sender: TObject);
+    procedure PBAliGestPt8Change(Sender: TObject);
+    procedure PBAliLactPt1Change(Sender: TObject);
+    procedure PBAliLactPt2Change(Sender: TObject);
+    procedure PBAliLactPt3Change(Sender: TObject);
+    procedure PBAliLactPt4Change(Sender: TObject);
+    procedure PBAliLactPt5Change(Sender: TObject);
+    procedure PBAliLactPt6Change(Sender: TObject);
+    procedure PBAliLactPt7Change(Sender: TObject);
+    procedure PBAliLactPt8Change(Sender: TObject);
+    procedure CBOngletChange(Sender: TObject);
+    procedure CBGraphChange(Sender: TObject);
+    procedure CBLogeChange(Sender: TObject);
+    procedure PBDureeLactChange(Sender: TObject);
+    procedure SBCalibrClick(Sender: TObject);
+    procedure SBResetClick(Sender: TObject);
+    procedure BBCalculClick(Sender: TObject);
+    procedure PBNbrTruiesChange(Sender: TObject);
+    procedure PBAge1ereMBChange(Sender: TObject);
+    procedure PBISOChange(Sender: TObject);
+    procedure PBPds1ereSaillieChange(Sender: TObject);
+    procedure PBPdsAdulteChange(Sender: TObject);
+    procedure PBPertePdsPrimChange(Sender: TObject);
+    procedure PBPertePdsMultChange(Sender: TObject);
+    procedure PBP21ereSaillieChange(Sender: TObject);
+    procedure PBP2ObjectifChange(Sender: TObject);
+    procedure PBPerteP2PrimChange(Sender: TObject);
+    procedure PBPerteP2MultChange(Sender: TObject);
+    procedure PBNbrVifsChange(Sender: TObject);
+    procedure PBNbrMortsChange(Sender: TObject);
+    procedure PBNbrSevresChange(Sender: TObject);
+    procedure PBAgeSevChange(Sender: TObject);
+    procedure PBPdsNaisChange(Sender: TObject);
+    procedure PBPdsSevChange(Sender: TObject);
+    procedure PBConsoLactChange(Sender: TObject);
+    procedure PBConsoGestChange(Sender: TObject);
+    procedure SBSaveClick(Sender: TObject);
+    procedure SBPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure LPdsApMBClick(Sender: TObject);
+    procedure PBCoefEntGestChange(Sender: TObject);
+    procedure PBCoefEntLactChange(Sender: TObject);
+    procedure PBRatioLipProtChange(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified, Modal: boolean;
+    IdxProfilT: integer;
+    NombreTot, ISOTot, AgeSailTot: integer;
+    PdsSailTot, P2SailTot, PdsAvMBTot, PdsApMBTot, P2MBTot: double;
+    NesTotauxTot, NesVivantsTot, PdsNaisTot, SevresTot, PdsSevTot: double;
+    TabISO: array[2..NB_CYCLES] of integer;
+    TabGMQ: array[1..NB_CYCLES] of double;
+    GMQTot: double;
+    BarGest, BarLact: TBarSeries;
+    LinePds, LineP2, LineAjust: TLineSeries;
+    PointAjust: TPointSeries;
+    LineNesTotaux, LineNesVivants, LineSevres: TLineSeries;
+    LinePdsNais, LinePdsSev: TLineSeries;
+    LineGMQ: TLineSeries;
+    procedure Save;
+    procedure CalcNbr;
+    procedure CalcNbrTot;
+    procedure CalcPct;
+    procedure CalcPctTot;
+    procedure CalcISOTot;
+    procedure CalcAgeSail;
+    procedure CalcAgeSailTot;
+    procedure CalcPdsSailTot;
+    procedure CalcP2SailTot;
+    procedure CalcPdsAvMBTot;
+    procedure CalcPdsApMB;
+    procedure CalcPdsApMBTot;
+    procedure CalcP2MBTot;
+    procedure CalcNbTotTot;
+    procedure CalcNbVifTot;
+    procedure CalcPVNaisTot;
+    procedure CalcNbSevTot;
+    procedure CalcPVSevTot;
+    procedure CalcGMQ;
+    procedure CalcAliGestTot;
+    procedure CalcAliLactTot;
+    procedure InitGraphAli;
+    procedure AffGraphAli;
+    procedure InitGraph;
+    procedure AffGraph;
+    procedure AjustPdsApMB;
+    procedure ValidBBCalibre;
+    procedure ValidBBCalcul;
+    procedure CalcConsoAn;
+  public
+    { D�clarations publiques }
+    procedure AffGraphCal;
+  end;
+
+var
+  FProfilT: TFProfilT;
+
+implementation
+
+uses
+  Dialogs, Graphics, Math, SysUtils, gnugettext, UStrings, UInit, UUtil,
+  UFindRec, UEchelle, UFComment, UCalcSimulT, UFRapProfilT, UFCalibrage;
+
+{$R *.dfm}
+
+{ TFProfilT }
+
+procedure TFProfilT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 648 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MinHeight := 412 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  CBUnite.ItemIndex := 0;
+  CBOnglet.ItemIndex := 0;
+  CBTruie.ItemIndex := 0;
+  CBMethod.ItemIndex := 1; // Marquardt
+end;
+
+procedure TFProfilT.FormShow(Sender: TObject);
+begin
+  Modified := False;
+  Modal := False;
+  InitGraphAli;
+  InitGraph;
+  StringsProfilT(CBProfil.Items, True);
+  SBAddProfil.Enabled := IsComplete or (ListProfilT.Count < 5);
+  SBSave.Enabled := IsComplete or IsEducation;
+  IdxProfilT := -1;
+  PC.ActivePage := TSTruie;
+//  CBProfilChange(nil);
+end ;
+
+procedure TFProfilT.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if Modified then Save;
+  Action := caFree;
+  NumWinProfilT := -1;
+  BarGest.Free;
+  BarLact.Free;
+  LinePds.Free;
+  LineP2.Free;
+  LineAjust.Free;
+  PointAjust.Free;
+  LineNesTotaux.Free;
+  LineNesVivants.Free;
+  LineSevres.Free;
+  LinePdsNais.Free;
+  LinePdsSev.Free;
+  LineGMQ.Free;
+end;
+
+procedure TFProfilT.FormActivate(Sender: TObject);
+var
+  i: integer;
+begin
+  if not Modal
+  then
+  begin
+    StringsSeqAliT(CBSeqAli.Items, False);
+    StringsLogeT(CBLoge.Items, False);
+//    if IdxProfilT <> -1
+//    then
+//      PProfilT := ListProfilT[IdxProfilT];
+    CBProfilChange(nil);
+    for i := 0 to PC.PageCount - 1 do
+      PC.Pages[i].Enabled := IsComplete or IsEducation or IsEvaluation;
+  end;
+end;
+
+procedure TFProfilT.FormDeactivate(Sender: TObject);
+begin
+  if Modified and not Modal then Save;
+end;
+
+procedure TFProfilT.Save;
+var
+  s : string ;
+begin
+  Modified := FALSE ;
+  if IsComplete or IsEducation
+  then
+    if MessageDlg (Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      if ProfilTValid (PProfilT)
+      then
+        AjustPdsApMB ;
+      SaveProfilT ;
+      if not ProfilTValid (PProfilT)
+      then
+        MessageDlg(Format (MsgInvalidData, [Caption, PProfilT.Nom]), mtWarning, [mbOK], 0) ;
+    end
+    else
+    begin
+      LoadProfilT ;
+      s := CBProfil.Text ;
+      StringsProfilT (CBProfil.Items, TRUE) ;
+      if FindIdxProfilT (s) = -1
+      then
+      begin
+        IdxProfilT := -1 ;
+        CBProfilChange (nil) ;
+      end
+      else
+        CBProfil.ItemIndex := CBProfil.Items.IndexOf (s) ;
+    end ;
+end;
+
+procedure TFProfilT.CBProfilChange(Sender: TObject);
+var
+  i: integer;
+begin
+  if (IdxProfilT <> -1) and (CBProfil.Text <> PProfilT.Nom)
+  then
+    if Modified then Save ;
+  IdxProfilT := FindIdxProfilT (CBProfil.Text) ;
+  if IdxProfilT = -1
+  then // Pas d'enregistrement
+  begin
+    CBProfil.Repaint ;
+    SBDelProfil.Enabled := FALSE ;
+    SBRename.Enabled := FALSE ;
+    SBComment.Enabled := FALSE ;
+    SBSave.Enabled := FALSE ;
+    SBPrint.Enabled := FALSE ;
+    PC.Visible := FALSE ;
+  end
+  else // Affichage de l'enregistrement
+  begin
+    SBDelProfil.Enabled := TRUE ;
+    SBRename.Enabled := TRUE ;
+    SBComment.Enabled := TRUE ;
+    SBSave.Enabled := TRUE ;
+    SBPrint.Enabled := TRUE ;
+    PC.Visible := TRUE ;
+    PProfilT := ListProfilT[IdxProfilT] ;
+    with PProfilT^ do
+    begin
+      Update := TRUE ;
+      CBProfil.Hint := Memo ;
+      // Truie
+      PBNbrPt1.AsInteger := Truies[1].Nombre ;
+      PBNbrPt2.AsInteger := Truies[2].Nombre ;
+      PBNbrPt3.AsInteger := Truies[3].Nombre ;
+      PBNbrPt4.AsInteger := Truies[4].Nombre ;
+      PBNbrPt5.AsInteger := Truies[5].Nombre ;
+      PBNbrPt6.AsInteger := Truies[6].Nombre ;
+      PBNbrPt7.AsInteger := Truies[7].Nombre ;
+      PBNbrPt8.AsInteger := Truies[8].Nombre ;
+      CalcNbrTot ;
+      CalcPct ;
+      for i := 2 to NB_CYCLES do
+        if (PProfilT.Truies[i].AgeSail = 0) or (PProfilT.Truies[i - 1].AgeSail = 0)
+        then // Information absente
+          TabISO[i] := 0
+        else
+          TabISO[i] := Truies[i].AgeSail - Truies[i - 1].AgeSail - DureeGest - DureeLact ;
+      PBISOPt2.AsInteger := TabISO[2] ;
+      PBISOPt3.AsInteger := TabISO[3] ;
+      PBISOPt4.AsInteger := TabISO[4] ;
+      PBISOPt5.AsInteger := TabISO[5] ;
+      PBISOPt6.AsInteger := TabISO[6] ;
+      PBISOPt7.AsInteger := TabISO[7] ;
+      PBISOPt8.AsInteger := TabISO[8] ;
+      CalcISOTot ;
+      PBAgeSailPt1.AsInteger := Truies[1].AgeSail ;
+      PBAgeSailPt2.AsInteger := Truies[2].AgeSail ;
+      PBAgeSailPt3.AsInteger := Truies[3].AgeSail ;
+      PBAgeSailPt4.AsInteger := Truies[4].AgeSail ;
+      PBAgeSailPt5.AsInteger := Truies[5].AgeSail ;
+      PBAgeSailPt6.AsInteger := Truies[6].AgeSail ;
+      PBAgeSailPt7.AsInteger := Truies[7].AgeSail ;
+      PBAgeSailPt8.AsInteger := Truies[8].AgeSail ;
+      CalcAgeSailTot ;
+      PBPdsSailPt1.AsFloat := Truies[1].PdsSail ;
+      PBPdsSailPt2.AsFloat := Truies[2].PdsSail ;
+      PBPdsSailPt3.AsFloat := Truies[3].PdsSail ;
+      PBPdsSailPt4.AsFloat := Truies[4].PdsSail ;
+      PBPdsSailPt5.AsFloat := Truies[5].PdsSail ;
+      PBPdsSailPt6.AsFloat := Truies[6].PdsSail ;
+      PBPdsSailPt7.AsFloat := Truies[7].PdsSail ;
+      PBPdsSailPt8.AsFloat := Truies[8].PdsSail ;
+      CalcPdsSailTot ;
+      PBP2SailPt1.AsFloat := Truies[1].P2Sail ;
+      PBP2SailPt2.AsFloat := Truies[2].P2Sail ;
+      PBP2SailPt3.AsFloat := Truies[3].P2Sail ;
+      PBP2SailPt4.AsFloat := Truies[4].P2Sail ;
+      PBP2SailPt5.AsFloat := Truies[5].P2Sail ;
+      PBP2SailPt6.AsFloat := Truies[6].P2Sail ;
+      PBP2SailPt7.AsFloat := Truies[7].P2Sail ;
+      PBP2SailPt8.AsFloat := Truies[8].P2Sail ;
+      CalcP2SailTot ;
+      PBPdsAvMBPt1.AsFloat := Truies[1].PdsAvMB ;
+      PBPdsAvMBPt2.AsFloat := Truies[2].PdsAvMB ;
+      PBPdsAvMBPt3.AsFloat := Truies[3].PdsAvMB ;
+      PBPdsAvMBPt4.AsFloat := Truies[4].PdsAvMB ;
+      PBPdsAvMBPt5.AsFloat := Truies[5].PdsAvMB ;
+      PBPdsAvMBPt6.AsFloat := Truies[6].PdsAvMB ;
+      PBPdsAvMBPt7.AsFloat := Truies[7].PdsAvMB ;
+      PBPdsAvMBPt8.AsFloat := Truies[8].PdsAvMB ;
+      CalcPdsAvMBTot ;
+      PBPdsApMBPt1.AsFloat := Truies[1].PdsApMB ;
+      PBPdsApMBPt2.AsFloat := Truies[2].PdsApMB ;
+      PBPdsApMBPt3.AsFloat := Truies[3].PdsApMB ;
+      PBPdsApMBPt4.AsFloat := Truies[4].PdsApMB ;
+      PBPdsApMBPt5.AsFloat := Truies[5].PdsApMB ;
+      PBPdsApMBPt6.AsFloat := Truies[6].PdsApMB ;
+      PBPdsApMBPt7.AsFloat := Truies[7].PdsApMB ;
+      PBPdsApMBPt8.AsFloat := Truies[8].PdsApMB ;
+      CalcPdsApMBTot ;
+      PBP2MBPt1.AsFloat := Truies[1].P2MB ;
+      PBP2MBPt2.AsFloat := Truies[2].P2MB ;
+      PBP2MBPt3.AsFloat := Truies[3].P2MB ;
+      PBP2MBPt4.AsFloat := Truies[4].P2MB ;
+      PBP2MBPt5.AsFloat := Truies[5].P2MB ;
+      PBP2MBPt6.AsFloat := Truies[6].P2MB ;
+      PBP2MBPt7.AsFloat := Truies[7].P2MB ;
+      PBP2MBPt8.AsFloat := Truies[8].P2MB ;
+      CalcP2MBTot ;
+      // Porcelets
+      PBNbTotPt1.AsFloat := Porcelets[1].NesTotaux ;
+      PBNbTotPt2.AsFloat := Porcelets[2].NesTotaux ;
+      PBNbTotPt3.AsFloat := Porcelets[3].NesTotaux ;
+      PBNbTotPt4.AsFloat := Porcelets[4].NesTotaux ;
+      PBNbTotPt5.AsFloat := Porcelets[5].NesTotaux ;
+      PBNbTotPt6.AsFloat := Porcelets[6].NesTotaux ;
+      PBNbTotPt7.AsFloat := Porcelets[7].NesTotaux ;
+      PBNbTotPt8.AsFloat := Porcelets[8].NesTotaux ;
+      CalcNbTotTot ;
+      PBNbVifPt1.AsFloat := Porcelets[1].NesVivants ;
+      PBNbVifPt2.AsFloat := Porcelets[2].NesVivants ;
+      PBNbVifPt3.AsFloat := Porcelets[3].NesVivants ;
+      PBNbVifPt4.AsFloat := Porcelets[4].NesVivants ;
+      PBNbVifPt5.AsFloat := Porcelets[5].NesVivants ;
+      PBNbVifPt6.AsFloat := Porcelets[6].NesVivants ;
+      PBNbVifPt7.AsFloat := Porcelets[7].NesVivants ;
+      PBNbVifPt8.AsFloat := Porcelets[8].NesVivants ;
+      CalcNbVifTot ;
+      PBPVNaisPt1.AsFloat := Porcelets[1].PdsNais ;
+      PBPVNaisPt2.AsFloat := Porcelets[2].PdsNais ;
+      PBPVNaisPt3.AsFloat := Porcelets[3].PdsNais ;
+      PBPVNaisPt4.AsFloat := Porcelets[4].PdsNais ;
+      PBPVNaisPt5.AsFloat := Porcelets[5].PdsNais ;
+      PBPVNaisPt6.AsFloat := Porcelets[6].PdsNais ;
+      PBPVNaisPt7.AsFloat := Porcelets[7].PdsNais ;
+      PBPVNaisPt8.AsFloat := Porcelets[8].PdsNais ;
+      CalcPVNaisTot ;
+      PBNbSevPt1.AsFloat := Porcelets[1].Sevres ;
+      PBNbSevPt2.AsFloat := Porcelets[2].Sevres ;
+      PBNbSevPt3.AsFloat := Porcelets[3].Sevres ;
+      PBNbSevPt4.AsFloat := Porcelets[4].Sevres ;
+      PBNbSevPt5.AsFloat := Porcelets[5].Sevres ;
+      PBNbSevPt6.AsFloat := Porcelets[6].Sevres ;
+      PBNbSevPt7.AsFloat := Porcelets[7].Sevres ;
+      PBNbSevPt8.AsFloat := Porcelets[8].Sevres ;
+      CalcNbSevTot ;
+      PBDureeLact.AsInteger := DureeLact ;
+      PBPVSevPt1.AsFloat := Porcelets[1].PdsSev ;
+      PBPVSevPt2.AsFloat := Porcelets[2].PdsSev ;
+      PBPVSevPt3.AsFloat := Porcelets[3].PdsSev ;
+      PBPVSevPt4.AsFloat := Porcelets[4].PdsSev ;
+      PBPVSevPt5.AsFloat := Porcelets[5].PdsSev ;
+      PBPVSevPt6.AsFloat := Porcelets[6].PdsSev ;
+      PBPVSevPt7.AsFloat := Porcelets[7].PdsSev ;
+      PBPVSevPt8.AsFloat := Porcelets[8].PdsSev ;
+      CalcPVSevTot ;
+      CalcGMQ ;
+      // Alimentation
+      if SeqAli = -1
+      then
+        CBSeqAli.ItemIndex := -1
+      else
+        CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliT (SeqAli)) ;
+      if CBSeqAli.ItemIndex = -1
+      then
+        CBSeqAli.Hint := ''
+      else
+      begin
+        PSeqAliT := ListSeqAliT[FindIdxSeqAliT (CBSeqAli.Text)] ;
+        CBSeqAli.Hint := PSeqAliT.Memo ;
+      end ;
+      if Loge = -1
+      then
+        CBLoge.ItemIndex := -1
+      else
+        CBLoge.ItemIndex := CBLoge.Items.IndexOf (FindNomLogeT (Loge)) ;
+      if CBLoge.ItemIndex = -1
+      then
+        CBLoge.Hint := ''
+      else
+      begin
+        PLogeT := ListLogeT[FindIdxLogeT (CBLoge.Text)] ;
+        CBLoge.Hint := PLogeT.Memo ;
+      end ;
+      CBUnite.ItemIndex := Unite ;
+      PBAliGestPt1.AsFloat := Gest[1] ;
+      PBAliGestPt2.AsFloat := Gest[2] ;
+      PBAliGestPt3.AsFloat := Gest[3] ;
+      PBAliGestPt4.AsFloat := Gest[4] ;
+      PBAliGestPt5.AsFloat := Gest[5] ;
+      PBAliGestPt6.AsFloat := Gest[6] ;
+      PBAliGestPt7.AsFloat := Gest[7] ;
+      PBAliGestPt8.AsFloat := Gest[8] ;
+      CalcAliGestTot ;
+      PBAliLactPt1.AsFloat := Lact[1] ;
+      PBAliLactPt2.AsFloat := Lact[2] ;
+      PBAliLactPt3.AsFloat := Lact[3] ;
+      PBAliLactPt4.AsFloat := Lact[4] ;
+      PBAliLactPt5.AsFloat := Lact[5] ;
+      PBAliLactPt6.AsFloat := Lact[6] ;
+      PBAliLactPt7.AsFloat := Lact[7] ;
+      PBAliLactPt8.AsFloat := Lact[8] ;
+      CalcAliLactTot ;
+      // Calibrage
+      PBCoefEntGest.AsFloat := CoefEntretienGest ;
+      PBCoefEntLact.AsFloat := CoefEntretienLact ;
+      PBRatioLipProt.AsFloat := 1 - RatioLipProt ;
+      // GTTT
+      PBNbrTruies.AsInteger := NbTruies ;
+      PBAge1ereMB.AsInteger := AgeMB1 ;
+      PBISO.AsFloat := ISO ;
+      PBPds1ereSaillie.AsFloat := PVSail1 ;
+      PBPdsAdulte.AsFloat := PVAdulte ;
+      PBPertePdsPrim.AsFloat := PertePVPrim ;
+      PBPertePdsMult.AsFloat := PertePVMult ;
+      PBP21ereSaillie.AsFloat := P2Sail1 ;
+      PBP2Objectif.AsFloat := P2Objectif ;
+      PBPerteP2Prim.AsFloat := PerteP2Prim ;
+      PBPerteP2Mult.AsFloat :=  PerteP2Mult;
+      PBNbrVifs.AsFloat := NbVifs ;
+      PBNbrMorts.AsFloat := NbMorts ;
+      PBNbrSevres.AsFloat := NbSevres ;
+      PBAgeSev.AsInteger := AgeSevr ;
+      PBPdsNais.AsFloat := PVNais ;
+      PBPdsSev.AsFloat := PVSevr ;
+      PBConsoLact.AsFloat := ConsoLact ;
+      PBConsoGest.AsFloat := ConsoGest ;
+      CalcConsoAn ;
+      Update := FALSE ;
+    end ;
+    ValidBBCalcul ;
+  end ;
+  PCChange (nil) ;
+  RBEffectifClick (nil) ;
+end ;
+
+procedure TFProfilT.SBAddProfilClick (Sender : TObject) ;
+var
+  i, n, q : integer ;
+  s : string ;
+  ok : boolean ;
+  PBackup : PRecProfilT ;
+begin
+  if Modified then Save ;
+  if IdxProfilT = -1
+  then
+    q := mrNo
+  else
+    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
+  // saisie du nouveau nom
+  s := '' ;
+  repeat
+    if InputQuery (FProfilT.Caption, MsgName, s)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListProfilT.Count) do
+          begin
+            PProfilT := ListProfilT[i] ;
+            if PProfilT.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      if (IdxProfilT <> -1)
+      then
+        PProfilT := ListProfilT[IdxProfilT] ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  if s <> ''
+  then // Cr�ation du nouvel enregistrement
+  begin
+    // recherche du premier num�ro libre
+    n := 0 ;
+    repeat
+      Inc (n) ;
+      ok := TRUE ;
+      i := 0 ;
+      while ok and (i < ListProfilT.Count) do
+      begin
+        PProfilT := ListProfilT[i] ;
+        if PProfilT.Num = n
+        then
+          ok := FALSE
+        else
+          Inc (i) ;
+      end ;
+    until ok ;
+    New (PProfilT) ;
+    with PProfilT^ do
+    begin
+      Nom := s ;
+      Num := n ;
+      if q = mrYes
+      then
+      begin
+        PBackup := ListProfilT[IdxProfilT] ;
+        Memo := PBackup.Memo ;
+        // Truie
+        Truies := PBackup.Truies ;
+        // Porcelets
+        Porcelets := PBackup.Porcelets ;
+        DureeLact := PBackup.DureeLact ;
+        // Alimentation
+        SeqAli := PBackup.SeqAli ;
+        Loge := PBackup.Loge ;
+        Unite := PBackup.Unite ;
+        Gest := PBackup.Gest ;
+        Lact := PBackup.Lact ;
+        // Calibrage
+        CoefEntretienGest := PBackup.CoefEntretienGest ;
+        CoefEntretienLact := PBackup.CoefEntretienLact ;
+        RatioLipProt := PBackup.RatioLipProt ;
+        CoefNR := PBackup.CoefNR ;
+        // GTTT
+        NbTruies := PBackup.NbTruies ;
+        AgeMB1 := PBackup.AgeMB1 ;
+        ISO := PBackup.ISO ;
+        PVSail1 := PBackup.PVSail1 ;
+        PVAdulte := PBackup.PVAdulte ;
+        PertePVPrim := PBackup.PertePVPrim ;
+        PertePVMult := PBackup.PertePVMult ;
+        P2Sail1 := PBackup.P2Sail1 ;
+        P2Objectif := PBackup.P2Objectif ;
+        PerteP2Prim := PBackup.PerteP2Prim ;
+        PerteP2Mult := PBackup.PerteP2Mult ;
+        NbVifs := PBackup.NbVifs ;
+        NbMorts := PBackup.NbMorts ;
+        NbSevres := PBackup.NbSevres ;
+        AgeSevr := PBackup.AgeSevr ;
+        PVNais := PBackup.PVNais ;
+        PVSevr := PBackup.PVSevr ;
+        ConsoLact := PBackup.ConsoLact ;
+        ConsoGest := PBackup.ConsoGest ;
+        // Ajustement du poids apr�s mise-bas
+        pmax := PBackup.pmax ;
+        a := PBackup.a ;
+        b := PBackup.b ;
+        PC.ActivePage := TSTruie ;
+      end
+      else
+      begin
+        Memo := '' ;
+        // Truie
+        for i := 1 to NB_CYCLES do
+          with Truies[i] do
+          begin
+            Nombre := 0 ;
+            AgeSail := 0 ;
+            PdsSail := 0 ;
+            P2Sail := 0 ;
+            PdsAvMB := 0 ;
+            PdsApMB := 0 ;
+            P2MB := 0 ;
+          end ;
+        // Porcelets
+        for i := 1 to NB_CYCLES do
+          with Porcelets[i] do
+          begin
+            NesTotaux := 0 ;
+            NesVivants := 0 ;
+            Sevres := 0 ;
+            PdsNais := 0 ;
+            PdsSev := 0 ;
+          end ;
+        DureeLact := 28 ;
+        // Alimentation
+        SeqAli := -1 ;
+        Loge := -1 ;
+        Unite := 0 ;
+        for i := 1 to NB_CYCLES do
+          Gest[i] := 0 ;
+        for i := 1 to NB_CYCLES do
+          Lact[i] := 0 ;
+        // Calibrage
+        CoefEntretienGest := 1 ;
+        CoefEntretienLact := 1 ;
+        RatioLipProt := 0.9 ;
+        for i := 1 to NB_CYCLES do
+          CoefNR[i] := DefaultCoefNR[i] ;
+        // GTTT
+        NbTruies := 0 ;
+        AgeMB1 := 0 ;
+        ISO := 0 ;
+        PVSail1 := 0 ;
+        PVAdulte := 0 ;
+        PertePVPrim := 0 ;
+        PertePVMult := 0 ;
+        P2Sail1 := 0 ;
+        P2Objectif := 0 ;
+        PerteP2Prim := 0 ;
+        PerteP2Mult := 0 ;
+        NbVifs := 0 ;
+        NbMorts := 0 ;
+        NbSevres := 0 ;
+        AgeSevr := 28 ;
+        PVNais := 0 ;
+        PVSevr := 0 ;
+        ConsoLact := 0 ;
+        ConsoGest := 0 ;
+        // Ajustement du poids apr�s mise-bas
+        pmax := 0 ;
+        a := 0 ;
+        b := 0 ;
+        PC.ActivePage := TSGTTT ;
+      end ;
+    end ;
+    ListProfilT.Add (PProfilT) ;
+    CBProfil.Items.Add (PProfilT.Nom) ;
+    CBProfil.ItemIndex := CBProfil.Items.IndexOf (PProfilT.Nom) ;
+    CBProfilChange (nil) ;
+    Modified := TRUE ;
+    SBAddProfil.Enabled := IsComplete or (ListProfilT.Count < 5) ;
+    SBCommentClick (nil) ;
+  end ;
+end ;
+
+procedure TFProfilT.SBDelProfilClick (Sender : TObject) ;
+begin
+  if ProfilTUsed (PProfilT.Num)
+  then // Enregistrement utilis�
+    MessageDlg (MsgDelErr, mtWarning, [mbOk], 0)
+  else // Suppression de l'enregistrement
+    if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      Dispose (PProfilT) ;
+      ListProfilT.Delete (IdxProfilT) ;
+      SaveProfilT ; // Sauvegarde !
+      Modified := FALSE ;
+      CBProfil.DeleteSelected ;
+      IdxProfilT := -1 ;
+      CBProfil.ItemIndex := -1 ;
+      CBProfilChange (nil) ;
+      SBAddProfil.Enabled := IsComplete or (ListProfilT.Count < 5) ;
+    end ;
+end ;
+
+procedure TFProfilT.SBRenameClick (Sender : TObject) ;
+var
+  i : integer ;
+  s : string ;
+  ok : boolean ;
+begin
+  // Saisie du nouveau nom
+  s := CBProfil.Text ;
+  repeat
+    if InputQuery (FProfilT.Caption, MsgRename, s) and (s <> CBProfil.Text)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 25
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 25) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListProfilT.Count) do
+          begin
+            PProfilT := ListProfilT[i] ;
+            if PProfilT.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  PProfilT := ListProfilT[IdxProfilT] ;
+  if s <> ''
+  then // Renommer l'enregistrement
+  begin
+    PProfilT.Nom := s ;
+    Modified := TRUE ;
+    StringsProfilT (CBProfil.Items, TRUE) ;
+    CBProfil.ItemIndex := CBProfil.Items.IndexOf (s) ;
+  end ;
+end ;
+
+procedure TFProfilT.SBCommentClick (Sender : TObject) ;
+begin
+  // Saisie du commentaire
+  FComment := TFComment.Create (Self) ;
+  with FComment do
+  begin
+    Memo.Text := PProfilT.Memo ;
+    if ShowModal = mrOk
+    then // Commenter l'enregistrement
+    begin
+      PProfilT.Memo := Memo.Text ;
+      Modified := TRUE ;
+      CBProfil.Hint := PProfilT.Memo ;
+    end ;
+    Release ;
+  end ;
+end ;
+
+procedure TFProfilT.SBSaveClick(Sender: TObject);
+begin
+  if ProfilTValid (PProfilT)
+  then
+    AjustPdsApMB ;
+  SaveProfilT ;
+  if not ProfilTValid (PProfilT)
+  then
+    MessageDlg(Format (MsgInvalidData, [Caption, PProfilT.Nom]), mtWarning, [mbOK], 0) ;
+  Modified := FALSE ;
+end;
+
+procedure TFProfilT.SBPrintClick(Sender: TObject);
+begin
+  FRapProfilT := TFRapProfilT.Create (Self) ;
+  FRapProfilT.QRRapport.PreviewModal ;
+  FRapProfilT.Release ;
+end;
+
+procedure TFProfilT.PCChange (Sender : TObject) ;
+begin
+  case PC.ActivePageIndex of
+//    0 : // Truie
+//    1 : // Porcelets
+    2 : // Alimentation
+      AffGraphAli ;
+    3 : // Graphiques
+      AffGraph ;
+    4 : // Calibrage
+      ValidBBCalibre ;
+  end ;
+end ;
+
+// Truie
+
+procedure TFProfilT.RBEffectifClick (Sender : TObject) ;
+begin
+  PBNbrPt1.Enabled := RBNbrEff.Checked ;
+  PBNbrPt2.Enabled := RBNbrEff.Checked ;
+  PBNbrPt3.Enabled := RBNbrEff.Checked ;
+  PBNbrPt4.Enabled := RBNbrEff.Checked ;
+  PBNbrPt5.Enabled := RBNbrEff.Checked ;
+  PBNbrPt6.Enabled := RBNbrEff.Checked ;
+  PBNbrPt7.Enabled := RBNbrEff.Checked ;
+  PBNbrPt8.Enabled := RBNbrEff.Checked ;
+  PBNbrTot.Enabled := RBPctEff.Checked ;
+  PBPctPt1.Enabled := RBPctEff.Checked ;
+  PBPctPt2.Enabled := RBPctEff.Checked ;
+  PBPctPt3.Enabled := RBPctEff.Checked ;
+  PBPctPt4.Enabled := RBPctEff.Checked ;
+  PBPctPt5.Enabled := RBPctEff.Checked ;
+  PBPctPt6.Enabled := RBPctEff.Checked ;
+  PBPctPt7.Enabled := RBPctEff.Checked ;
+  PBPctPt8.Enabled := RBPctEff.Checked ;
+  if PBNbrTot.AsInteger = 0
+  then
+    if RBNbrEff.Checked
+    then // Nombre
+    begin
+      Update := TRUE ;
+      PBNbrPt1.AsInteger := 0 ;
+      PBNbrPt2.AsInteger := 0 ;
+      PBNbrPt3.AsInteger := 0 ;
+      PBNbrPt4.AsInteger := 0 ;
+      PBNbrPt5.AsInteger := 0 ;
+      PBNbrPt6.AsInteger := 0 ;
+      PBNbrPt7.AsInteger := 0 ;
+      PBNbrPt8.AsInteger := 0 ;
+      CalcPct ;
+      Update := FALSE ;
+    end
+    else // R�partition
+    begin
+      Update := TRUE ;
+      PBPctPt1.AsFloat := 0 ;
+      PBPctPt2.AsFloat := 0 ;
+      PBPctPt3.AsFloat := 0 ;
+      PBPctPt4.AsFloat := 0 ;
+      PBPctPt5.AsFloat := 0 ;
+      PBPctPt6.AsFloat := 0 ;
+      PBPctPt7.AsFloat := 0 ;
+      PBPctPt8.AsFloat := 0 ;
+      CalcPctTot ;
+      CalcNbr ;
+      Update := FALSE ;
+    end ;
+end ;
+
+procedure TFProfilT.PBNbrPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[1].Nombre := PBNbrPt1.AsInteger ;
+    Update := TRUE ;
+    CalcNbrTot ;
+    CalcPct ;
+    Update := FALSE ;
+    CalcISOTot ;
+    CalcAgeSailTot ;
+    CalcPdsSailTot ;
+    CalcP2SailTot ;
+    CalcPdsAvMBTot ;
+    CalcPdsApMBTot ;
+    CalcP2MBTot ;
+    CalcNbTotTot ;
+    CalcNbVifTot ;
+    CalcPVNaisTot ;
+    CalcNbSevTot ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbrPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[2].Nombre := PBNbrPt2.AsInteger ;
+    Update := TRUE ;
+    CalcNbrTot ;
+    CalcPct ;
+    Update := FALSE ;
+    CalcISOTot ;
+    CalcAgeSailTot ;
+    CalcPdsSailTot ;
+    CalcP2SailTot ;
+    CalcPdsAvMBTot ;
+    CalcPdsApMBTot ;
+    CalcP2MBTot ;
+    CalcNbTotTot ;
+    CalcNbVifTot ;
+    CalcPVNaisTot ;
+    CalcNbSevTot ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbrPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[3].Nombre := PBNbrPt3.AsInteger ;
+    Update := TRUE ;
+    CalcNbrTot ;
+    CalcPct ;
+    Update := FALSE ;
+    CalcISOTot ;
+    CalcAgeSailTot ;
+    CalcPdsSailTot ;
+    CalcP2SailTot ;
+    CalcPdsAvMBTot ;
+    CalcPdsApMBTot ;
+    CalcP2MBTot ;
+    CalcNbTotTot ;
+    CalcNbVifTot ;
+    CalcPVNaisTot ;
+    CalcNbSevTot ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbrPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[4].Nombre := PBNbrPt4.AsInteger ;
+    Update := TRUE ;
+    CalcNbrTot ;
+    CalcPct ;
+    Update := FALSE ;
+    CalcISOTot ;
+    CalcAgeSailTot ;
+    CalcPdsSailTot ;
+    CalcP2SailTot ;
+    CalcPdsAvMBTot ;
+    CalcPdsApMBTot ;
+    CalcP2MBTot ;
+    CalcNbTotTot ;
+    CalcNbVifTot ;
+    CalcPVNaisTot ;
+    CalcNbSevTot ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbrPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[5].Nombre := PBNbrPt5.AsInteger ;
+    Update := TRUE ;
+    CalcNbrTot ;
+    CalcPct ;
+    Update := FALSE ;
+    CalcISOTot ;
+    CalcAgeSailTot ;
+    CalcPdsSailTot ;
+    CalcP2SailTot ;
+    CalcPdsAvMBTot ;
+    CalcPdsApMBTot ;
+    CalcP2MBTot ;
+    CalcNbTotTot ;
+    CalcNbVifTot ;
+    CalcPVNaisTot ;
+    CalcNbSevTot ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbrPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[6].Nombre := PBNbrPt6.AsInteger ;
+    Update := TRUE ;
+    CalcNbrTot ;
+    CalcPct ;
+    Update := FALSE ;
+    CalcISOTot ;
+    CalcAgeSailTot ;
+    CalcPdsSailTot ;
+    CalcP2SailTot ;
+    CalcPdsAvMBTot ;
+    CalcPdsApMBTot ;
+    CalcP2MBTot ;
+    CalcNbTotTot ;
+    CalcNbVifTot ;
+    CalcPVNaisTot ;
+    CalcNbSevTot ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbrPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[7].Nombre := PBNbrPt7.AsInteger ;
+    Update := TRUE ;
+    CalcNbrTot ;
+    CalcPct ;
+    Update := FALSE ;
+    CalcISOTot ;
+    CalcAgeSailTot ;
+    CalcPdsSailTot ;
+    CalcP2SailTot ;
+    CalcPdsAvMBTot ;
+    CalcPdsApMBTot ;
+    CalcP2MBTot ;
+    CalcNbTotTot ;
+    CalcNbVifTot ;
+    CalcPVNaisTot ;
+    CalcNbSevTot ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbrPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[8].Nombre := PBNbrPt8.AsInteger ;
+    Update := TRUE ;
+    CalcNbrTot ;
+    CalcPct ;
+    Update := FALSE ;
+    CalcISOTot ;
+    CalcAgeSailTot ;
+    CalcPdsSailTot ;
+    CalcP2SailTot ;
+    CalcPdsAvMBTot ;
+    CalcPdsApMBTot ;
+    CalcP2MBTot ;
+    CalcNbTotTot ;
+    CalcNbVifTot ;
+    CalcPVNaisTot ;
+    CalcNbSevTot ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbrTotChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+    CalcNbr ;
+end ;
+
+procedure TFProfilT.CalcNbr ;
+var
+  etat : boolean ;
+begin
+  NombreTot :=  PBNbrTot.AsInteger;
+  etat := Update ;
+  Update := TRUE ;
+  if NombreTot = 0
+  then
+  begin
+    PBNbrPt1.Text := '' ;
+    PBNbrPt2.Text := '' ;
+    PBNbrPt3.Text := '' ;
+    PBNbrPt4.Text := '' ;
+    PBNbrPt5.Text := '' ;
+    PBNbrPt6.Text := '' ;
+    PBNbrPt7.Text := '' ;
+    PBNbrPt8.Text := '' ;
+  end
+  else
+  begin
+    PBNbrPt1.AsInteger := Round (NombreTot * PBPctPt1.AsFloat / 100) ;
+    PBNbrPt2.AsInteger := Round (NombreTot * PBPctPt2.AsFloat / 100) ;
+    PBNbrPt3.AsInteger := Round (NombreTot * PBPctPt3.AsFloat / 100) ;
+    PBNbrPt4.AsInteger := Round (NombreTot * PBPctPt4.AsFloat / 100) ;
+    PBNbrPt5.AsInteger := Round (NombreTot * PBPctPt5.AsFloat / 100) ;
+    PBNbrPt6.AsInteger := Round (NombreTot * PBPctPt6.AsFloat / 100) ;
+    PBNbrPt7.AsInteger := Round (NombreTot * PBPctPt7.AsFloat / 100) ;
+    PBNbrPt8.AsInteger := Round (NombreTot * PBPctPt8.AsFloat / 100) ;
+  end ;
+  Update := etat ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[1].Nombre := PBNbrPt1.AsInteger ;
+    PProfilT.Truies[2].Nombre := PBNbrPt2.AsInteger ;
+    PProfilT.Truies[3].Nombre := PBNbrPt3.AsInteger ;
+    PProfilT.Truies[4].Nombre := PBNbrPt4.AsInteger ;
+    PProfilT.Truies[5].Nombre := PBNbrPt5.AsInteger ;
+    PProfilT.Truies[6].Nombre := PBNbrPt6.AsInteger ;
+    PProfilT.Truies[7].Nombre := PBNbrPt7.AsInteger ;
+    PProfilT.Truies[8].Nombre := PBNbrPt8.AsInteger ;
+    CalcISOTot ;
+    CalcAgeSailTot ;
+    CalcPdsSailTot ;
+    CalcP2SailTot ;
+    CalcPdsAvMBTot ;
+    CalcPdsApMBTot ;
+    CalcP2MBTot ;
+    CalcNbTotTot ;
+    CalcNbVifTot ;
+    CalcPVNaisTot ;
+    CalcNbSevTot ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcNbrTot ;
+var
+  i : integer ;
+begin
+  NombreTot := 0 ;
+  for i := 1 to NB_CYCLES do
+    NombreTot := NombreTot + PProfilT.Truies[i].Nombre ;
+  PBNbrTot.AsInteger := NombreTot ;
+end ;
+
+procedure TFProfilT.PBPctChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    CalcNbr ;
+    CalcPctTot ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcPct ;
+begin
+  if PBNbrTot.AsInteger = 0
+  then
+  begin
+    PBPctPt1.Text := '' ;
+    PBPctPt2.Text := '' ;
+    PBPctPt3.Text := '' ;
+    PBPctPt4.Text := '' ;
+    PBPctPt5.Text := '' ;
+    PBPctPt6.Text := '' ;
+    PBPctPt7.Text := '' ;
+    PBPctPt8.Text := '' ;
+    PBPctTot.Text := '' ;
+  end
+  else
+  begin
+    PBPctPt1.AsFloat := PBNbrPt1.AsInteger / PBNbrTot.AsInteger * 100 ;
+    PBPctPt2.AsFloat := PBNbrPt2.AsInteger / PBNbrTot.AsInteger * 100 ;
+    PBPctPt3.AsFloat := PBNbrPt3.AsInteger / PBNbrTot.AsInteger * 100 ;
+    PBPctPt4.AsFloat := PBNbrPt4.AsInteger / PBNbrTot.AsInteger * 100 ;
+    PBPctPt5.AsFloat := PBNbrPt5.AsInteger / PBNbrTot.AsInteger * 100 ;
+    PBPctPt6.AsFloat := PBNbrPt6.AsInteger / PBNbrTot.AsInteger * 100 ;
+    PBPctPt7.AsFloat := PBNbrPt7.AsInteger / PBNbrTot.AsInteger * 100 ;
+    PBPctPt8.AsFloat := PBNbrPt8.AsInteger / PBNbrTot.AsInteger * 100 ;
+    PBPctTot.AsFloat := 100 ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcPctTot ;
+begin
+  PBPctTot.AsFloat := PBPctPt1.AsFloat + PBPctPt2.AsFloat + PBPctPt3.AsFloat
+    + PBPctPt4.AsFloat + PBPctPt5.AsFloat + PBPctPt6.AsFloat + PBPctPt7.AsFloat
+    + PBPctPt8.AsFloat ;
+end ;
+
+procedure TFProfilT.PBISOPt2Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    TabISO[2] := PBISOPt2.AsInteger ;
+    CalcISOTot ;
+    CalcAgeSail ;
+  end ;
+end;
+
+procedure TFProfilT.PBISOPt3Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    TabISO[3] := PBISOPt3.AsInteger ;
+    CalcISOTot ;
+    CalcAgeSail ;
+  end ;
+end;
+
+procedure TFProfilT.PBISOPt4Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    TabISO[4] := PBISOPt4.AsInteger ;
+    CalcISOTot ;
+    CalcAgeSail ;
+  end ;
+end;
+
+procedure TFProfilT.PBISOPt5Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    TabISO[5] := PBISOPt5.AsInteger ;
+    CalcISOTot ;
+    CalcAgeSail ;
+  end ;
+end;
+
+procedure TFProfilT.PBISOPt6Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    TabISO[6] := PBISOPt6.AsInteger ;
+    CalcISOTot ;
+    CalcAgeSail ;
+  end ;
+end;
+
+procedure TFProfilT.PBISOPt7Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    TabISO[7] := PBISOPt7.AsInteger ;
+    CalcISOTot ;
+    CalcAgeSail ;
+  end ;
+end;
+
+procedure TFProfilT.PBISOPt8Change(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    TabISO[8] := PBISOPt8.AsInteger ;
+    CalcISOTot ;
+    CalcAgeSail ;
+  end ;
+end;
+
+procedure TFProfilT.CalcISOTot ;
+var
+  i : integer ;
+begin
+  if NombreTot - PProfilT.Truies[1].Nombre = 0
+  then
+    PBISOTot.Text := ''
+  else
+  begin
+    ISOTot := 0 ;
+    for i := 2 to NB_CYCLES do
+      ISOTot := ISOTot + (TabISO[i] * PProfilT.Truies[i].Nombre) ;
+    PBISOTot.AsInteger := Round (ISOTot / (NombreTot - PProfilT.Truies[1].Nombre)) ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcAgeSail ;
+var
+  i : integer ;
+begin
+  for i := 2 to NB_CYCLES do
+    if (PProfilT.Truies[i - 1].AgeSail = 0) or (TabISO[i] = 0)
+    then // Information absente
+      PProfilT.Truies[i].AgeSail := 0
+    else
+      PProfilT.Truies[i].AgeSail := PProfilT.Truies[i - 1].AgeSail + TabISO[i] + DureeGest + PProfilT.DureeLact ;
+  PBAgeSailPt2.AsInteger := PProfilT.Truies[2].AgeSail ;
+  PBAgeSailPt3.AsInteger := PProfilT.Truies[3].AgeSail ;
+  PBAgeSailPt4.AsInteger := PProfilT.Truies[4].AgeSail ;
+  PBAgeSailPt5.AsInteger := PProfilT.Truies[5].AgeSail ;
+  PBAgeSailPt6.AsInteger := PProfilT.Truies[6].AgeSail ;
+  PBAgeSailPt7.AsInteger := PProfilT.Truies[7].AgeSail ;
+  PBAgeSailPt8.AsInteger := PProfilT.Truies[8].AgeSail ;
+  CalcAgeSailTot ;
+end ;
+
+procedure TFProfilT.PBAgeSailPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[1].AgeSail := PBAgeSailPt1.AsInteger ;
+    CalcAgeSailTot ;
+  end ;
+end ;
+
+{
+procedure TFProfilT.PBAgeSailPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[2].AgeSail := PBAgeSailPt2.AsInteger ;
+    CalcAgeSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAgeSailPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[3].AgeSail := PBAgeSailPt3.AsInteger ;
+    CalcAgeSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAgeSailPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[4].AgeSail := PBAgeSailPt4.AsInteger ;
+    CalcAgeSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAgeSailPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[5].AgeSail := PBAgeSailPt5.AsInteger ;
+    CalcAgeSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAgeSailPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[6].AgeSail := PBAgeSailPt6.AsInteger ;
+    CalcAgeSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAgeSailPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[7].AgeSail := PBAgeSailPt7.AsInteger ;
+    CalcAgeSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAgeSailPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[8].AgeSail := PBAgeSailPt8.AsInteger ;
+    CalcAgeSailTot ;
+  end ;
+end ;
+}
+
+procedure TFProfilT.CalcAgeSailTot ;
+var
+  i : integer ;
+begin
+  if NombreTot = 0
+  then
+    PBAgeSailTot.Text := ''
+  else
+  begin
+    AgeSailTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i] do
+        AgeSailTot := AgeSailTot + (AgeSail * Nombre) ;
+    PBAgeSailTot.AsInteger := Round (AgeSailTot / NombreTot) ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsSailPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[1].PdsSail := PBPdsSailPt1.AsFloat ;
+    CalcPdsSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsSailPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[2].PdsSail := PBPdsSailPt2.AsFloat ;
+    CalcPdsSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsSailPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[3].PdsSail := PBPdsSailPt3.AsFloat ;
+    CalcPdsSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsSailPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[4].PdsSail := PBPdsSailPt4.AsFloat ;
+    CalcPdsSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsSailPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[5].PdsSail := PBPdsSailPt5.AsFloat ;
+    CalcPdsSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsSailPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[6].PdsSail := PBPdsSailPt6.AsFloat ;
+    CalcPdsSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsSailPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[7].PdsSail := PBPdsSailPt7.AsFloat ;
+    CalcPdsSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsSailPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[8].PdsSail := PBPdsSailPt8.AsFloat ;
+    CalcPdsSailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcPdsSailTot ;
+var
+  i : integer ;
+begin
+  if NombreTot = 0
+  then
+    PBPdsSailTot.Text := ''
+  else
+  begin
+    PdsSailTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i] do
+        PdsSailTot := PdsSailTot + (PdsSail * Nombre) ;
+    PBPdsSailTot.AsFloat := PdsSailTot / NombreTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2SailPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[1].P2Sail := PBP2SailPt1.AsFloat ;
+    CalcP2SailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2SailPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[2].P2Sail := PBP2SailPt2.AsFloat ;
+    CalcP2SailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2SailPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[3].P2Sail := PBP2SailPt3.AsFloat ;
+    CalcP2SailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2SailPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[4].P2Sail := PBP2SailPt4.AsFloat ;
+    CalcP2SailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2SailPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[5].P2Sail := PBP2SailPt5.AsFloat ;
+    CalcP2SailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2SailPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[6].P2Sail := PBP2SailPt6.AsFloat ;
+    CalcP2SailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2SailPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[7].P2Sail := PBP2SailPt7.AsFloat ;
+    CalcP2SailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2SailPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[8].P2Sail := PBP2SailPt8.AsFloat ;
+    CalcP2SailTot ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcP2SailTot ;
+var
+  i : integer ;
+begin
+  if NombreTot = 0
+  then
+    PBP2SailTot.Text := ''
+  else
+  begin
+    P2SailTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i] do
+        P2SailTot := P2SailTot + (P2Sail * Nombre) ;
+    PBP2SailTot.AsFloat := P2SailTot / NombreTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsAvMBPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[1].PdsAvMB := PBPdsAvMBPt1.AsFloat ;
+    CalcPdsAvMBTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsAvMBPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[2].PdsAvMB := PBPdsAvMBPt2.AsFloat ;
+    CalcPdsAvMBTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsAvMBPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[3].PdsAvMB := PBPdsAvMBPt3.AsFloat ;
+    CalcPdsAvMBTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsAvMBPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[4].PdsAvMB := PBPdsAvMBPt4.AsFloat ;
+    CalcPdsAvMBTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsAvMBPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[5].PdsAvMB := PBPdsAvMBPt5.AsFloat ;
+    CalcPdsAvMBTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsAvMBPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[6].PdsAvMB := PBPdsAvMBPt6.AsFloat ;
+    CalcPdsAvMBTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsAvMBPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[7].PdsAvMB := PBPdsAvMBPt7.AsFloat ;
+    CalcPdsAvMBTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsAvMBPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[8].PdsAvMB := PBPdsAvMBPt8.AsFloat ;
+    CalcPdsAvMBTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcPdsAvMBTot ;
+var
+  i : integer ;
+begin
+  if NombreTot = 0
+  then
+    PBPdsAvMBTot.Text := ''
+  else
+  begin
+    PdsAvMBTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i] do
+        PdsAvMBTot := PdsAvMBTot + (PdsAvMB * Nombre) ;
+    PBPdsAvMBTot.AsFloat := PdsAvMBTot / NombreTot ;
+  end ;
+end ;
+
+procedure TFProfilT.ChkPdsApMBClick (Sender : TObject) ;
+begin
+  PBPdsApMBPt1.Enabled := not ChkPdsApMB.Checked ;
+  PBPdsApMBPt2.Enabled := not ChkPdsApMB.Checked ;
+  PBPdsApMBPt3.Enabled := not ChkPdsApMB.Checked ;
+  PBPdsApMBPt4.Enabled := not ChkPdsApMB.Checked ;
+  PBPdsApMBPt5.Enabled := not ChkPdsApMB.Checked ;
+  PBPdsApMBPt6.Enabled := not ChkPdsApMB.Checked ;
+  PBPdsApMBPt7.Enabled := not ChkPdsApMB.Checked ;
+  PBPdsApMBPt8.Enabled := not ChkPdsApMB.Checked ;
+  CalcPdsApMB ;
+end ;
+
+procedure TFProfilT.LPdsApMBClick(Sender: TObject);
+begin
+  ChkPdsApMB.Checked := not ChkPdsApMB.Checked ;
+end;
+
+procedure TFProfilT.PBPdsApMBPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[1].PdsApMB := PBPdsApMBPt1.AsFloat ;
+    CalcPdsApMBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsApMBPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[2].PdsApMB := PBPdsApMBPt2.AsFloat ;
+    CalcPdsApMBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsApMBPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[3].PdsApMB := PBPdsApMBPt3.AsFloat ;
+    CalcPdsApMBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsApMBPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[4].PdsApMB := PBPdsApMBPt4.AsFloat ;
+    CalcPdsApMBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsApMBPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[5].PdsApMB := PBPdsApMBPt5.AsFloat ;
+    CalcPdsApMBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsApMBPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[6].PdsApMB := PBPdsApMBPt6.AsFloat ;
+    CalcPdsApMBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsApMBPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[7].PdsApMB := PBPdsApMBPt7.AsFloat ;
+    CalcPdsApMBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPdsApMBPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[8].PdsApMB := PBPdsApMBPt8.AsFloat ;
+    CalcPdsApMBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcPdsApMB ;
+var
+  i : integer ;
+begin
+  Modified := TRUE ;
+  for i := 1 to NB_CYCLES do
+    with PProfilT.Truies[i], PProfilT.Porcelets[i] do
+      PdsApMB := PdsAvMB - (0.3 + 1.329 * (NesTotaux * PdsNais)) ;
+  Update := TRUE ;
+  PBPdsApMBPt1.AsFloat := PProfilT.Truies[1].PdsApMB ;
+  PBPdsApMBPt2.AsFloat := PProfilT.Truies[2].PdsApMB ;
+  PBPdsApMBPt3.AsFloat := PProfilT.Truies[3].PdsApMB ;
+  PBPdsApMBPt4.AsFloat := PProfilT.Truies[4].PdsApMB ;
+  PBPdsApMBPt5.AsFloat := PProfilT.Truies[5].PdsApMB ;
+  PBPdsApMBPt6.AsFloat := PProfilT.Truies[6].PdsApMB ;
+  PBPdsApMBPt7.AsFloat := PProfilT.Truies[7].PdsApMB ;
+  PBPdsApMBPt8.AsFloat := PProfilT.Truies[8].PdsApMB ;
+  Update := FALSE ;
+  CalcPdsApMBTot ;
+end ;
+
+procedure TFProfilT.CalcPdsApMBTot ;
+var
+  i : integer ;
+begin
+  if NombreTot = 0
+  then
+    PBPdsApMBTot.Text := ''
+  else
+  begin
+    PdsApMBTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i] do
+        PdsApMBTot := PdsApMBTot + (PdsApMB * Nombre) ;
+    PBPdsApMBTot.AsFloat := PdsApMBTot / NombreTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2MBPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[1].P2MB := PBP2MBPt1.AsFloat ;
+    CalcP2MBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2MBPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[2].P2MB := PBP2MBPt2.AsFloat ;
+    CalcP2MBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2MBPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[3].P2MB := PBP2MBPt3.AsFloat ;
+    CalcP2MBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2MBPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[4].P2MB := PBP2MBPt4.AsFloat ;
+    CalcP2MBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2MBPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[5].P2MB := PBP2MBPt5.AsFloat ;
+    CalcP2MBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2MBPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[6].P2MB := PBP2MBPt6.AsFloat ;
+    CalcP2MBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2MBPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[7].P2MB := PBP2MBPt7.AsFloat ;
+    CalcP2MBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBP2MBPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Truies[8].P2MB := PBP2MBPt8.AsFloat ;
+    CalcP2MBTot ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcP2MBTot ;
+var
+  i : integer ;
+begin
+  if NombreTot = 0
+  then
+    PBP2MBTot.Text := ''
+  else
+  begin
+    P2MBTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i] do
+        P2MBTot := P2MBTot + (P2MB * Nombre) ;
+    PBP2MBTot.AsFloat := P2MBTot / NombreTot ;
+  end ;
+end ;
+
+// Porcelets
+
+procedure TFProfilT.PBNbTotPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[1].NesTotaux := PBNbTotPt1.AsFloat ;
+    CalcNbTotTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbTotPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[2].NesTotaux := PBNbTotPt2.AsFloat ;
+    CalcNbTotTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbTotPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[3].NesTotaux := PBNbTotPt3.AsFloat ;
+    CalcNbTotTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbTotPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[4].NesTotaux := PBNbTotPt4.AsFloat ;
+    CalcNbTotTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbTotPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[5].NesTotaux := PBNbTotPt5.AsFloat ;
+    CalcNbTotTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbTotPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[6].NesTotaux := PBNbTotPt6.AsFloat ;
+    CalcNbTotTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbTotPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[7].NesTotaux := PBNbTotPt7.AsFloat ;
+    CalcNbTotTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbTotPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[8].NesTotaux := PBNbTotPt8.AsFloat ;
+    CalcNbTotTot ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcNbTotTot ;
+var
+  i : integer ;
+begin
+  if NombreTot = 0
+  then
+    PBNbTotTot.Text := ''
+  else
+  begin
+    NesTotauxTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i], PProfilT.Porcelets[i] do
+        NesTotauxTot := NesTotauxTot + (NesTotaux * Nombre) ;
+    PBNbTotTot.AsFloat := NesTotauxTot / NombreTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbVifPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[1].NesVivants := PBNbVifPt1.AsFloat ;
+    CalcNbVifTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbVifPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[2].NesVivants := PBNbVifPt2.AsFloat ;
+    CalcNbVifTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbVifPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[3].NesVivants := PBNbVifPt3.AsFloat ;
+    CalcNbVifTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbVifPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[4].NesVivants := PBNbVifPt4.AsFloat ;
+    CalcNbVifTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbVifPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[5].NesVivants := PBNbVifPt5.AsFloat ;
+    CalcNbVifTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbVifPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[6].NesVivants := PBNbVifPt6.AsFloat ;
+    CalcNbVifTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbVifPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[7].NesVivants := PBNbVifPt7.AsFloat ;
+    CalcNbVifTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbVifPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[8].NesVivants := PBNbVifPt8.AsFloat ;
+    CalcNbVifTot ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcNbVifTot ;
+var
+  i : integer ;
+begin
+  if NombreTot = 0
+  then
+    PBNbVifTot.Text := ''
+  else
+  begin
+    NesVivantsTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i], PProfilT.Porcelets[i] do
+        NesVivantsTot := NesVivantsTot + (NesVivants * Nombre) ;
+    PBNbVifTot.AsFloat := NesVivantsTot / NombreTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVNaisPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[1].PdsNais := PBPVNaisPt1.AsFloat ;
+    CalcPVNaisTot ;
+    CalcGMQ ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVNaisPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[2].PdsNais := PBPVNaisPt2.AsFloat ;
+    CalcPVNaisTot ;
+    CalcGMQ ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVNaisPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[3].PdsNais := PBPVNaisPt3.AsFloat ;
+    CalcPVNaisTot ;
+    CalcGMQ ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVNaisPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[4].PdsNais := PBPVNaisPt4.AsFloat ;
+    CalcPVNaisTot ;
+    CalcGMQ ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVNaisPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[5].PdsNais := PBPVNaisPt5.AsFloat ;
+    CalcPVNaisTot ;
+    CalcGMQ ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVNaisPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[6].PdsNais := PBPVNaisPt6.AsFloat ;
+    CalcPVNaisTot ;
+    CalcGMQ ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVNaisPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[7].PdsNais := PBPVNaisPt7.AsFloat ;
+    CalcPVNaisTot ;
+    CalcGMQ ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVNaisPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[8].PdsNais := PBPVNaisPt8.AsFloat ;
+    CalcPVNaisTot ;
+    CalcGMQ ;
+    if ChkPdsApMB.Checked
+    then
+      CalcPdsApMB ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcPVNaisTot ;
+var
+  i : integer ;
+begin
+  if NesVivantsTot = 0
+  then
+    PBPVNaisTot.Text := ''
+  else
+  begin
+    PdsNaisTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i], PProfilT.Porcelets[i] do
+        PdsNaisTot := PdsNaisTot + (PdsNais * NesVivants * Nombre) ;
+    PBPVNaisTot.AsFloat := PdsNaisTot / NesVivantsTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbSevPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[1].Sevres := PBNbSevPt1.AsFloat ;
+    CalcNbSevTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbSevPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[2].Sevres := PBNbSevPt2.AsFloat ;
+    CalcNbSevTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbSevPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[3].Sevres := PBNbSevPt3.AsFloat ;
+    CalcNbSevTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbSevPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[4].Sevres := PBNbSevPt4.AsFloat ;
+    CalcNbSevTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbSevPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[5].Sevres := PBNbSevPt5.AsFloat ;
+    CalcNbSevTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbSevPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[6].Sevres := PBNbSevPt6.AsFloat ;
+    CalcNbSevTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbSevPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[7].Sevres := PBNbSevPt7.AsFloat ;
+    CalcNbSevTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBNbSevPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[8].Sevres := PBNbSevPt8.AsFloat ;
+    CalcNbSevTot ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcNbSevTot ;
+var
+  i : integer ;
+begin
+  if NombreTot = 0
+  then
+    PBNbSevTot.Text := ''
+  else
+  begin
+    SevresTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i], PProfilT.Porcelets[i] do
+        SevresTot := SevresTot + (Sevres * Nombre) ;
+    PBNbSevTot.AsFloat := SevresTot / NombreTot ;
+  end ;
+end ;
+
+procedure TFProfilT.PBDureeLactChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.DureeLact := PBDureeLact.AsInteger ;
+    CalcAgeSail ;
+    CalcGMQ ;
+  end ;
+  PBAgeSevPt1.AsInteger := PProfilT.DureeLact ;
+  PBAgeSevPt2.AsInteger := PProfilT.DureeLact ;
+  PBAgeSevPt3.AsInteger := PProfilT.DureeLact ;
+  PBAgeSevPt4.AsInteger := PProfilT.DureeLact ;
+  PBAgeSevPt5.AsInteger := PProfilT.DureeLact ;
+  PBAgeSevPt6.AsInteger := PProfilT.DureeLact ;
+  PBAgeSevPt7.AsInteger := PProfilT.DureeLact ;
+  PBAgeSevPt8.AsInteger := PProfilT.DureeLact ;
+end ;
+
+procedure TFProfilT.PBPVSevPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[1].PdsSev := PBPVSevPt1.AsFloat ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVSevPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[2].PdsSev := PBPVSevPt2.AsFloat ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVSevPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[3].PdsSev := PBPVSevPt3.AsFloat ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVSevPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[4].PdsSev := PBPVSevPt4.AsFloat ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVSevPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[5].PdsSev := PBPVSevPt5.AsFloat ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVSevPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[6].PdsSev := PBPVSevPt6.AsFloat ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVSevPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[7].PdsSev := PBPVSevPt7.AsFloat ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.PBPVSevPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Porcelets[8].PdsSev := PBPVSevPt8.AsFloat ;
+    CalcPVSevTot ;
+    CalcGMQ ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcPVSevTot ;
+var
+  i : integer ;
+begin
+  if SevresTot = 0
+  then
+    PBPVSevTot.Text := ''
+  else
+  begin
+    PdsSevTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i], PProfilT.Porcelets[i] do
+        PdsSevTot := PdsSevTot + (PdsSev * Sevres * Nombre) ;
+    PBPVSevTot.AsFloat := PdsSevTot / SevresTot ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcGMQ ;
+var
+  i : integer ;
+begin
+  for i := 1 to NB_CYCLES do
+    with PProfilT.Porcelets[i] do
+      TabGMQ[i] := (PdsSev - PdsNais) * Sevres / PProfilT.DureeLact ;
+  PBGMQPt1.AsFloat := TabGMQ[1] ;
+  PBGMQPt2.AsFloat := TabGMQ[2] ;
+  PBGMQPt3.AsFloat := TabGMQ[3] ;
+  PBGMQPt4.AsFloat := TabGMQ[4] ;
+  PBGMQPt5.AsFloat := TabGMQ[5] ;
+  PBGMQPt6.AsFloat := TabGMQ[6] ;
+  PBGMQPt7.AsFloat := TabGMQ[7] ;
+  PBGMQPt8.AsFloat := TabGMQ[8] ;
+  if NombreTot = 0
+  then
+    PBGMQTot.Text := ''
+  else
+  begin
+    GMQTot := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i], PProfilT.Porcelets[i] do
+        GMQTot := GMQTot + (TabGMQ[i] * Nombre) ;
+    PBGMQTot.AsFloat := GMQTot / NombreTot ;
+  end ;
+end ;
+
+// Alimentation
+
+procedure TFProfilT.CBSeqAliChange (Sender : TObject) ;
+begin
+  PSeqAliT := ListSeqAliT[FindIdxSeqAliT (CBSeqAli.Text)] ;
+  CBSeqAli.Hint := PSeqAliT.Memo ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.SeqAli := FindNumSeqAliT (CBSeqAli.Text) ;
+  end ;
+end ;
+
+procedure TFProfilT.CBLogeChange (Sender : TObject) ;
+begin
+  PLogeT := ListLogeT[FindIdxLogeT (CBLoge.Text)] ;
+  CBLoge.Hint := PLogeT.Memo ;
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Loge := FindNumLogeT (CBLoge.Text) ;
+  end ;
+end ;
+
+procedure TFProfilT.CBUniteChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Unite := CBUnite.ItemIndex ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliGestPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Gest[1] := PBAliGestPt1.AsFloat ;
+    CalcAliGestTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliGestPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Gest[2] := PBAliGestPt2.AsFloat ;
+    CalcAliGestTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliGestPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Gest[3] := PBAliGestPt3.AsFloat ;
+    CalcAliGestTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliGestPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Gest[4] := PBAliGestPt4.AsFloat ;
+    CalcAliGestTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliGestPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Gest[5] := PBAliGestPt5.AsFloat ;
+    CalcAliGestTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliGestPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Gest[6] := PBAliGestPt6.AsFloat ;
+    CalcAliGestTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliGestPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Gest[7] := PBAliGestPt7.AsFloat ;
+    CalcAliGestTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliGestPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Gest[8] := PBAliGestPt8.AsFloat ;
+    CalcAliGestTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcAliGestTot ;
+begin
+  if PBNbrTot.AsInteger = 0
+  then
+    PBAliGestTot.Text := ''
+  else
+    PBAliGestTot.AsFloat := (PBAliGestPt1.AsFloat * PBNbrPt1.AsInteger
+      + PBAliGestPt2.AsFloat * PBNbrPt2.AsInteger
+      + PBAliGestPt3.AsFloat * PBNbrPt3.AsInteger
+      + PBAliGestPt4.AsFloat * PBNbrPt4.AsInteger
+      + PBAliGestPt5.AsFloat * PBNbrPt5.AsInteger
+      + PBAliGestPt6.AsFloat * PBNbrPt6.AsInteger
+      + PBAliGestPt7.AsFloat * PBNbrPt7.AsInteger
+      + PBAliGestPt8.AsFloat * PBNbrPt8.AsInteger) / PBNbrTot.AsInteger ;
+end ;
+
+procedure TFProfilT.PBAliLactPt1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Lact[1] := PBAliLactPt1.AsFloat ;
+    CalcAliLactTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliLactPt2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Lact[2] := PBAliLactPt2.AsFloat ;
+    CalcAliLactTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliLactPt3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Lact[3] := PBAliLactPt3.AsFloat ;
+    CalcAliLactTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliLactPt4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Lact[4] := PBAliLactPt4.AsFloat ;
+    CalcAliLactTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliLactPt5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Lact[5] := PBAliLactPt5.AsFloat ;
+    CalcAliLactTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliLactPt6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Lact[6] := PBAliLactPt6.AsFloat ;
+    CalcAliLactTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliLactPt7Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Lact[7] := PBAliLactPt7.AsFloat ;
+    CalcAliLactTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.PBAliLactPt8Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.Lact[8] := PBAliLactPt8.AsFloat ;
+    CalcAliLactTot ;
+    AffGraphAli ;
+  end ;
+end ;
+
+procedure TFProfilT.CalcAliLactTot ;
+begin
+  if PBNbrTot.AsInteger = 0
+  then
+    PBAliLactTot.Text := ''
+  else
+    PBAliLactTot.AsFloat := (PBAliLactPt1.AsFloat * PBNbrPt1.AsInteger
+      + PBAliLactPt2.AsFloat * PBNbrPt2.AsInteger
+      + PBAliLactPt3.AsFloat * PBNbrPt3.AsInteger
+      + PBAliLactPt4.AsFloat * PBNbrPt4.AsInteger
+      + PBAliLactPt5.AsFloat * PBNbrPt5.AsInteger
+      + PBAliLactPt6.AsFloat * PBNbrPt6.AsInteger
+      + PBAliLactPt7.AsFloat * PBNbrPt7.AsInteger
+      + PBAliLactPt8.AsFloat * PBNbrPt8.AsInteger) / PBNbrTot.AsInteger ;
+end ;
+
+procedure TFProfilT.InitGraphAli ;
+begin
+  // BarGest : s�rie (barre) graphique
+  BarGest := TBarSeries.Create (GraphAli) ;
+  BarGest.ParentChart := GraphAli ;
+  BarGest.Title := LAliGest.Caption ;
+  BarGest.BarPen.Color := BarGest.SeriesColor ;
+  BarGest.Marks.Style := smsValue ;
+  BarGest.Marks.ArrowLength := 0 ;
+  BarGest.Marks.Arrow.Visible := FALSE ;
+  BarGest.Marks.Brush.Style := bsClear ;
+  BarGest.Marks.Frame.Visible := FALSE ;
+  GraphAli.AddSeries (BarGest) ;
+  // BarLact : s�rie (barre) graphique
+  BarLact := TBarSeries.Create (GraphAli) ;
+  BarLact.ParentChart := GraphAli ;
+  BarLact.Title := LAliLact.Caption ;
+  BarLact.BarPen.Color := BarLact.SeriesColor ;
+  BarLact.Marks.Style := smsValue ;
+  BarLact.Marks.ArrowLength := 0 ;
+  BarLact.Marks.Arrow.Visible := FALSE ;
+  BarLact.Marks.Brush.Style := bsClear ;
+  BarLact.Marks.Frame.Visible := FALSE ;
+  GraphAli.AddSeries (BarLact) ;
+end ;
+
+procedure TFProfilT.AffGraphAli ;
+var
+  i : integer ;
+begin
+  with PProfilT^ do
+  begin
+    if Unite = -1
+    then
+      GraphAli.LeftAxis.Title.Caption := ''
+    else
+      GraphAli.LeftAxis.Title.Caption := CBUnite.Items[Unite] ;
+    BarGest.Clear ;
+    BarLact.Clear ;
+    for i := 1 to NB_CYCLES do
+      BarGest.AddBar (Gest[i], IntToStr (i), clTeeColor) ;
+    for i := 1 to NB_CYCLES do
+      BarLact.AddBar (Lact[i], IntToStr (i), clTeeColor) ;
+  end ;
+  AjustEchelle (GraphAli) ;
+end ;
+
+// Graphiques
+
+procedure TFProfilT.CBOngletChange (Sender : TObject) ;
+begin
+  case CBOnglet.ItemIndex of
+    0 : // Truie
+    begin
+      CBTruie.Visible := TRUE ;
+      CBPortee.Visible := FALSE ;
+    end ;
+    1 : // Porcelets
+    begin
+      CBTruie.Visible := FALSE ;
+      CBPortee.Visible := TRUE ;
+    end ;
+  end ;
+  AffGraph ;
+end ;
+
+procedure TFProfilT.CBGraphChange (Sender : TObject) ;
+begin
+  AffGraph ;
+end ;
+
+procedure TFProfilT.InitGraph ;
+begin
+  // LinePds : s�rie (ligne) graphique
+  LinePds := TLineSeries.Create (Graph) ;
+  LinePds.ParentChart := Graph ;
+  LinePds.SeriesColor := clTeal ;
+  LinePds.LinePen.Color := LinePds.SeriesColor ;
+  LinePds.LinePen.Width := 2 ;
+  LinePds.Pointer.Visible := TRUE ;
+  LinePds.Pointer.HorizSize := 2 ;
+  LinePds.Pointer.VertSize := 2 ;
+  Graph.AddSeries (LinePds) ;
+  // LineP2 : s�rie (ligne) graphique
+  LineP2 := TLineSeries.Create (Graph) ;
+  LineP2.ParentChart := Graph ;
+  LineP2.SeriesColor := clTeal ;
+  LineP2.LinePen.Color := LineP2.SeriesColor ;
+  LineP2.LinePen.Width := 2 ;
+  LineP2.Pointer.Visible := TRUE ;
+  LineP2.Pointer.HorizSize := 2 ;
+  LineP2.Pointer.VertSize := 2 ;
+  Graph.AddSeries (LineP2) ;
+  // LineAjust : s�rie (ligne) graphique
+  LineAjust := TLineSeries.Create (Graph) ;
+  LineAjust.ParentChart := Graph ;
+  LineAjust.SeriesColor := clRed ;
+  LineAjust.LinePen.Color := LineAjust.SeriesColor ;
+  LineAjust.LinePen.Width := 2 ;
+  Graph.AddSeries (LineAjust) ;
+  // PointAjust : s�rie (point) graphique
+  PointAjust := TPointSeries.Create (Graph) ;
+  PointAjust.ParentChart := Graph ;
+  PointAjust.SeriesColor := clGreen ;
+  PointAjust.Pointer.HorizSize := 2 ;
+  PointAjust.Pointer.VertSize := 2 ;
+  Graph.AddSeries (PointAjust) ;
+  // LineNesTotaux : s�rie (ligne) graphique
+  LineNesTotaux := TLineSeries.Create (Graph) ;
+  LineNesTotaux.ParentChart := Graph ;
+  LineNesTotaux.Title := LNbTot.Caption ;
+  LineNesTotaux.SeriesColor := clRed ;
+  LineNesTotaux.LinePen.Color := LineNesTotaux.SeriesColor ;
+  LineNesTotaux.LinePen.Width := 2 ;
+  LineNesTotaux.Pointer.Visible := TRUE ;
+  LineNesTotaux.Pointer.HorizSize := 2 ;
+  LineNesTotaux.Pointer.VertSize := 2 ;
+  Graph.AddSeries (LineNesTotaux) ;
+  // LineNesVivants : s�rie (ligne) graphique
+  LineNesVivants := TLineSeries.Create (Graph) ;
+  LineNesVivants.ParentChart := Graph ;
+  LineNesVivants.Title := LNbVif.Caption ;
+  LineNesVivants.SeriesColor := clNavy ;
+  LineNesVivants.LinePen.Color := LineNesVivants.SeriesColor ;
+  LineNesVivants.LinePen.Width := 2 ;
+  LineNesVivants.Pointer.Visible := TRUE ;
+  LineNesVivants.Pointer.HorizSize := 2 ;
+  LineNesVivants.Pointer.VertSize := 2 ;
+  Graph.AddSeries (LineNesVivants) ;
+  // LineSevres : s�rie (ligne) graphique
+  LineSevres := TLineSeries.Create (Graph) ;
+  LineSevres.ParentChart := Graph ;
+  LineSevres.Title := LNbSev.Caption ;
+  LineSevres.SeriesColor := clGreen ;
+  LineSevres.LinePen.Color := LineSevres.SeriesColor ;
+  LineSevres.LinePen.Width := 2 ;
+  LineSevres.Pointer.Visible := TRUE ;
+  LineSevres.Pointer.HorizSize := 2 ;
+  LineSevres.Pointer.VertSize := 2 ;
+  Graph.AddSeries (LineSevres) ;
+  // LinePdsNais : s�rie (ligne) graphique
+  LinePdsNais := TLineSeries.Create (Graph) ;
+  LinePdsNais.ParentChart := Graph ;
+  LinePdsNais.Title := LPVNais.Caption ;
+  LinePdsNais.SeriesColor := clRed ;
+  LinePdsNais.LinePen.Color := LinePdsNais.SeriesColor ;
+  LinePdsNais.LinePen.Width := 2 ;
+  LinePdsNais.Pointer.Visible := TRUE ;
+  LinePdsNais.Pointer.HorizSize := 2 ;
+  LinePdsNais.Pointer.VertSize := 2 ;
+  Graph.AddSeries (LinePdsNais) ;
+  // LinePdsSev : s�rie (ligne) graphique
+  LinePdsSev := TLineSeries.Create (Graph) ;
+  LinePdsSev.ParentChart := Graph ;
+  LinePdsSev.Title := LPVSev.Caption ;
+  LinePdsSev.SeriesColor := clGreen ;
+  LinePdsSev.LinePen.Color := LinePdsSev.SeriesColor ;
+  LinePdsSev.LinePen.Width := 2 ;
+  LinePdsSev.Pointer.Visible := TRUE ;
+  LinePdsSev.Pointer.HorizSize := 2 ;
+  LinePdsSev.Pointer.VertSize := 2 ;
+  Graph.AddSeries (LinePdsSev) ;
+  // LineGMQ : s�rie (ligne) graphique
+  LineGMQ := TLineSeries.Create (Graph) ;
+  LineGMQ.ParentChart := Graph ;
+  LineGMQ.SeriesColor := clTeal ;
+  LineGMQ.LinePen.Color := LineGMQ.SeriesColor ;
+  LineGMQ.LinePen.Width := 2 ;
+  LineGMQ.Pointer.Visible := TRUE ;
+  LineGMQ.Pointer.HorizSize := 2 ;
+  LineGMQ.Pointer.VertSize := 2 ;
+  Graph.AddSeries (LineGMQ) ;
+end ;
+
+procedure TFProfilT.AffGraph;
+var
+  i: integer;
+begin
+  Graph.Title.Text.Clear;
+  Graph.SubTitle.Text.Clear;
+  LinePds.Active := FALSE;
+  LineP2.Active := FALSE;
+  LineAjust.Active := FALSE;
+  PointAjust.Active := FALSE;
+  LineSevres.Active := FALSE;
+  LineNesVivants.Active := FALSE;
+  LineNesTotaux.Active := FALSE;
+  LinePdsNais.Active := FALSE;
+  LinePdsSev.Active := FALSE;
+  LineGMQ.Active := FALSE;
+  case CBOnglet.ItemIndex of
+    0: // Truie
+    begin
+      Graph.Title.Text.Add (Format ('%s : %s', [CBOnglet.Text, CBTruie.Text]));
+      Graph.Legend.Visible := FALSE ;
+      Graph.BottomAxis.Title.Caption := Format('%s (%s)', [_('Age'), _('d')]);
+      case CBTruie.ItemIndex of
+        0: // Poids
+        begin
+          Graph.LeftAxis.Title.Caption := Format('%s (%s)', [_('Body weight'), _('kg')]);
+          LinePds.Active := TRUE ;
+          LinePds.Clear ;
+          for i := 1 to NB_CYCLES do
+            with PProfilT.Truies[i] do
+            begin
+              LinePds.AddXY (AgeSail, PdsSail) ;
+              LinePds.AddXY (AgeSail + DureeGest, PdsAvMB) ;
+              LinePds.AddXY (AgeSail + DureeGest, PdsApMB) ;
+            end;
+        end;
+        1: // Epaisseur de lard
+        begin
+          Graph.LeftAxis.Title.Caption := Format('%s (%s)', [_('Backfat thickness'), _('mm')]);
+          LineP2.Active := TRUE ;
+          LineP2.Clear ;
+          for i := 1 to NB_CYCLES do
+            with PProfilT.Truies[i] do
+            begin
+              LineP2.AddXY (AgeSail, P2Sail) ;
+              LineP2.AddXY (AgeSail + DureeGest, P2MB) ;
+            end;
+        end;
+        2: // Ajustement poids apr�s mise-bas
+        begin
+          Graph.LeftAxis.Title.Caption := '' ;
+          LineAjust.Active := TRUE ;
+          PointAjust.Active := TRUE ;
+          LineAjust.Clear ;
+          PointAjust.Clear ;
+          AjustPdsApMB ;
+          if PProfilT.pmax > 0
+          then
+          begin
+            Graph.SubTitle.Text.Add (Format ('Y = %.1f * (1 - Exp ((- %.2f / 1000) * X^%.2f))', [PProfilT.pmax, PProfilT.a, PProfilT.b])) ;
+            for i := PProfilT.Truies[1].AgeSail + DureeGest to PProfilT.Truies[NB_CYCLES].AgeSail + DureeGest do
+              LineAjust.AddXY (i, PProfilT.pmax * (1 - Exp ((- PProfilT.a / 1000) * Power (i, PProfilT.b)))) ;
+          end;
+          for i := 1 to NB_CYCLES do
+            with PProfilT.Truies[i] do
+              PointAjust.AddXY (AgeSail + DureeGest, PdsApMB) ;
+        end;
+      end;
+    end;
+    1: // Porcelets
+    begin
+      Graph.Title.Text.Add (Format ('%s : %s', [CBOnglet.Text, CBPortee.Text]));
+      Graph.BottomAxis.Title.Caption := _('Litter');
+      case CBPortee.ItemIndex of
+        0: // Nombre
+        begin
+          Graph.Legend.Visible := TRUE ;
+          Graph.LeftAxis.Title.Caption := '' ;
+          LineNesTotaux.Active := TRUE ;
+          LineNesVivants.Active := TRUE ;
+          LineSevres.Active := TRUE ;
+          LineNesTotaux.Clear ;
+          LineNesVivants.Clear ;
+          LineSevres.Clear ;
+          for i := 1 to NB_CYCLES do
+            with PProfilT.Porcelets[i] do
+            begin
+              LineNesTotaux.AddXY (i, NesTotaux) ;
+              LineNesVivants.AddXY (i, NesVivants) ;
+              LineSevres.AddXY (i, Sevres) ;
+            end;
+        end;
+        1: // Poids
+        begin
+          Graph.Legend.Visible := TRUE ;
+          Graph.LeftAxis.Title.Caption := Format('%s (%s)', [_('Body weight'), _('kg')]);
+          LinePdsNais.Active := TRUE ;
+          LinePdsSev.Active := TRUE ;
+          LinePdsNais.Clear ;
+          LinePdsSev.Clear ;
+          for i := 1 to NB_CYCLES do
+            with PProfilT.Porcelets[i] do
+            begin
+              LinePdsNais.AddXY (i, PdsNais) ;
+              LinePdsSev.AddXY (i, PdsSev) ;
+            end;
+        end;
+        2: // GMQ port�e
+        begin
+          Graph.Legend.Visible := FALSE ;
+          Graph.LeftAxis.Title.Caption := '' ;
+          LineGMQ.Active := TRUE ;
+          LineGMQ.Clear ;
+          for i := 1 to NB_CYCLES do
+            LineGMQ.AddXY (i, TabGMQ[i]) ;
+        end;
+      end;
+    end;
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFProfilT.AjustPdsApMB ;
+const
+  DELTA = 0.3 ;
+  SEUIL = 0.001 ;
+  MAX_TOURS = 1000 ;
+var
+  tour, i, j, k, cycle, mini : integer ;
+  delta_pmax, delta_a, delta_b, estim, ecart : double ;
+  tab_pmax, tab_a, tab_b, tab_ecart : array[-13..13] of double ;
+  ok : boolean ;
+begin
+  if PProfilT.pmax = 0
+  then
+  begin
+    tab_pmax[0] := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i] do
+        if PdsApMB > tab_pmax[0]
+        then
+          tab_pmax[0] := PdsApMB ;
+    tab_a[0] := 5.0 ;
+    tab_b[0] := 1.0 ;
+  end
+  else
+  begin
+    tab_pmax[0] := PProfilT.pmax ;
+    tab_a[0] := PProfilT.a ;
+    tab_b[0] := PProfilT.b ;
+  end ;
+  delta_pmax := tab_pmax[0] * DELTA ;
+  delta_a := tab_a[0] * DELTA ;
+  delta_b := tab_b[0] * DELTA ;
+  tour := 0 ;
+  repeat
+    // �value les points
+    for i := -1 to 1 do
+      for j := -1 to 1 do
+        for k := -1 to 1 do
+        begin
+          tab_pmax[i + 3*j + 9*k] := Max (tab_pmax[0] + i * delta_pmax, 0) ;
+          tab_a[i + 3*j + 9*k] := Max (tab_a[0] + j * delta_a, 0) ;
+          tab_b[i + 3*j + 9*k] := Max (tab_b[0] + k * delta_b, 0) ;
+        end ;
+    for i := -13 to 13 do
+      tab_ecart[i] := 0 ;
+    for i := -13 to 13 do
+      for cycle := 1 to NB_CYCLES do
+        with PProfilT.Truies[cycle] do
+        begin
+          estim := tab_pmax[i] * (1 - Exp ((- tab_a[i] / 1000) * Power (AgeSail + DureeGest, tab_b[i]))) ;
+          ecart := estim - PdsApMB ;
+          tab_ecart[i] := tab_ecart[i] + Power (ecart, 2) * Nombre ;
+        end ;
+    // recherche le meilleur point
+    mini := 0 ;
+    for i := -13 to 13 do
+      if tab_ecart[i] < tab_ecart[mini]
+      then
+        mini := i ;
+    // d�termine le point central
+    if mini = 0
+    then
+    begin
+      delta_pmax := delta_pmax * 0.9 ;
+      delta_a := delta_a * 0.9 ;
+      delta_b := delta_b * 0.9 ;
+    end
+    else
+    begin
+      tab_pmax[0] := tab_pmax[mini] ;
+      tab_a[0] := tab_a[mini] ;
+      tab_b[0] := tab_b[mini] ;
+    end ;
+    // �value si les crit�res de sortie sont satisfaits
+    ok := (delta_pmax < Abs (tab_pmax [mini] * SEUIL))
+      and (delta_a < Abs (tab_a [mini] * SEUIL))
+      and (delta_b < Abs (tab_b [mini] * SEUIL)) ;
+    Inc (tour) ;
+  until ok or (tour > MAX_TOURS) ;
+  if ok
+  then
+  begin
+    PProfilT.pmax := tab_pmax[0] ;
+    PProfilT.a := tab_a[0] ;
+    PProfilT.b := tab_b[0] ;
+  end
+  else
+  begin
+    PProfilT.pmax := 0 ;
+    PProfilT.a := 0 ;
+    PProfilT.b := 0 ;
+  end ;
+end ;
+
+// Calibrage
+
+procedure TFProfilT.AffGraphCal ;
+var
+  i, j : integer ;
+begin
+  // LignePds
+  LignePds.Clear ;
+  for j := 1 to PResSimulT.NbJSim do
+  begin
+    if (j > 1) and (PResSimulT.TabResult[3, j] <> PResSimulT.TabResult[3, j - 1])
+    then // Rupture de stade
+      LignePds.AddXY (PResSimulT.TabResult[1, j], PResSimulT.TabResult[60, j], '', clNone) ;
+    LignePds.AddXY (PResSimulT.TabResult[1, j], PResSimulT.TabResult[60, j], '', clTeeColor) ;
+  end ;
+  // PointPds
+  PointPds.Clear ;
+  for i := 1 to NB_CYCLES do
+    with PProfilT.Truies[i] do
+    begin
+      PointPds.AddXY (AgeSail, PdsSail) ;
+      PointPds.AddXY (AgeSail + DureeGest, PdsApMB) ;
+    end ;
+  // LigneP2
+  LigneP2.Clear ;
+  for j := 1 to PResSimulT.NbJSim do
+  begin
+    if (j > 1) and (PResSimulT.TabResult[3, j] <> PResSimulT.TabResult[3, j - 1])
+    then // Rupture de stade
+      LigneP2.AddXY (PResSimulT.TabResult[1, j], PResSimulT.TabResult[67, j], '', clNone) ;
+    LigneP2.AddXY (PResSimulT.TabResult[1, j], PResSimulT.TabResult[67, j], '', clTeeColor) ;
+  end ;
+  // PointP2
+  PointP2.Clear ;
+  for i := 1 to NB_CYCLES do
+    with PProfilT.Truies[i] do
+    begin
+      PointP2.AddXY (AgeSail, P2Sail) ;
+      PointP2.AddXY (AgeSail + DureeGest, P2MB) ;
+    end ;
+end ;
+
+procedure TFProfilT.SBCalibrClick(Sender: TObject);
+begin
+  Modal := True;
+  Modified:= True;
+  Update := True;
+  GraphCalibr.Title.Visible := True;
+  GraphCalibr.SubTitle.Visible := True;
+  FCalibrage := TFCalibrage.Create (Self) ;
+  FCalibrage.ShowModal ;
+  FCalibrage.Release ;
+  GraphCalibr.Title.Visible := False;
+  GraphCalibr.SubTitle.Visible := False;
+  Update := False;
+  Modal := False;
+end;
+
+procedure TFProfilT.SBResetClick(Sender: TObject);
+var
+  cycle : integer ;
+begin
+  Modified := True;
+  PProfilT.CoefEntretienGest := 1;
+  PProfilT.CoefEntretienLact := 1;
+  PProfilT.RatioLipProt := 0.9;
+  for cycle := 1 to NB_CYCLES do
+    PProfilT.CoefNR[cycle] := DefaultCoefNR[cycle];
+  Update := True;
+  PBCoefEntGest.AsFloat := PProfilT.CoefEntretienGest;
+  PBCoefEntLact.AsFloat := PProfilT.CoefEntretienLact;
+  PBRatioLipProt.AsFloat := 1 - PProfilT.RatioLipProt;
+  Update := False;
+  ValidBBCalibre;
+end;
+
+procedure TFProfilT.PBCoefEntGestChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PProfilT.CoefEntretienGest := PBCoefEntGest.AsFloat;
+    ValidBBCalibre;
+  end;
+end;
+
+procedure TFProfilT.PBCoefEntLactChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PProfilT.CoefEntretienLact := PBCoefEntLact.AsFloat;
+    ValidBBCalibre;
+  end;
+end;
+
+procedure TFProfilT.PBRatioLipProtChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := True;
+    PProfilT.RatioLipProt := 1 - PBRatioLipProt.AsFloat;
+    ValidBBCalibre;
+  end;
+end;
+
+procedure TFProfilT.ValidBBCalibre;
+var
+  cycle, jour: Integer;
+  GainProt: double;
+begin
+  SBCalibr.Enabled := ProfilTValid(PProfilT);
+  if SBCalibr.Enabled
+  then // Calcul de la simulation et affichage du graphique
+  begin
+    New(PResSimulT);
+    // calcul des CoefNR
+    for cycle := 1 to NB_CYCLES do
+      PProfilT.CoefNR[cycle] := 1;
+    CalcSimulT(-1, -1, 1, 1, 8, 0, PResSimulT);
+    GainProt := 0;
+    for jour := 1 to PResSimulT.NbJSim do
+      if PResSimulT.TabResult[3, jour] = 0
+      then // Gestation
+        GainProt := GainProt + PResSimulT.TabResult[63, jour]
+      else
+        if (PResSimulT.TabResult[3, jour] = 1) and (PResSimulT.TabResult[3, jour - 1] = 0)
+        then // Mise bas
+        begin
+          cycle := Round(PResSimulT.TabResult[2, jour]);
+          with PProfilT.Truies[cycle] do
+            PProfilT.CoefNR[cycle] := Max((0.178 * (PdsApMB - PdsSail) - 0.333 * (P2MB - P2Sail)) / (GainProt / 1000), 0);
+          GainProt := 0;
+        end;
+    CalcSimulT(-1, -1, 1, 1, 8, 0, PResSimulT);
+    AffGraphCal;
+    Dispose(PResSimulT);
+  end
+  else // Pas de graphique
+  begin
+    LignePds.Clear;
+    PointPds.Clear;
+    LigneP2.Clear;
+    PointP2.Clear;
+  end;
+end;
+
+// GTTT
+
+procedure TFProfilT.PBNbrTruiesChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.NbTruies := PBNbrTruies.AsInteger ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBAge1ereMBChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.AgeMB1 := PBAge1ereMB.AsInteger ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBISOChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.ISO := PBISO.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBPds1ereSaillieChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.PVSail1 := PBPds1ereSaillie.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBPdsAdulteChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.PVAdulte := PBPdsAdulte.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBPertePdsPrimChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.PertePVPrim := PBPertePdsPrim.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBPertePdsMultChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.PertePVMult := PBPertePdsMult.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBP21ereSaillieChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.P2Sail1 := PBP21ereSaillie.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBP2ObjectifChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.P2Objectif := PBP2Objectif.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBPerteP2PrimChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.PerteP2Prim := PBPerteP2Prim.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBPerteP2MultChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.PerteP2Mult := PBPerteP2Mult.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBNbrVifsChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.NbVifs := PBNbrVifs.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBNbrMortsChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.NbMorts := PBNbrMorts.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBNbrSevresChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.NbSevres := PBNbrSevres.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBAgeSevChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.AgeSevr := PBAgeSev.AsInteger ;
+  end ;
+end;
+
+procedure TFProfilT.PBPdsNaisChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.PVNais := PBPdsNais.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBPdsSevChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.PVSevr := PBPdsSev.AsFloat ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBConsoLactChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.ConsoLact := PBConsoLact.AsFloat ;
+    CalcConsoAn ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.PBConsoGestChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    PProfilT.ConsoGest := PBConsoGest.AsFloat ;
+    CalcConsoAn ;
+    ValidBBCalcul ;
+  end ;
+end;
+
+procedure TFProfilT.CalcConsoAn;
+begin
+  with PProfilT^ do
+    PBConsoAn.AsFloat := ((ConsoLact * AgeSevr)
+        + (ConsoGest * (DureeGest + ISO)))
+      * 365 / (AgeSevr + DureeGest + ISO) ;
+end;
+
+procedure TFProfilT.ValidBBCalcul ;
+begin
+  BBCalcul.Enabled := (PBNbrTruies.AsInteger > 0)
+    and (PBAge1ereMB.AsInteger > 0)
+    and (PBISO.AsFloat > 0)
+    and (PBPds1ereSaillie.AsFloat > 0)
+    and (PBPdsAdulte.AsFloat > PBPds1ereSaillie.AsFloat)
+    and (PBPertePdsPrim.AsFloat > 0)
+    and (PBPertePdsMult.AsFloat > 0)
+    and (PBP21ereSaillie.AsFloat > 0)
+    and (PBP2Objectif.AsFloat > PBP21ereSaillie.AsFloat)
+    and (PBPerteP2Prim.AsFloat > 0)
+    and (PBPerteP2Mult.AsFloat > 0)
+    and (PBNbrVifs.AsFloat >= PBNbrSevres.AsFloat)
+    and (PBNbrSevres.AsFloat > 0)
+    and (PBPdsNais.AsFloat > 0)
+    and (PBPdsSev.AsFloat > PBPdsNais.AsFloat)
+    and (PBConsoLact.AsFloat > 0)
+    and (PBConsoGest.AsFloat > 0) ;
+end ;
+
+procedure TFProfilT.BBCalculClick(Sender: TObject);
+const
+  RefNb : array[1..NB_CYCLES] of integer
+    = (215289, 190252, 168459, 143260, 119502, 91709, 63910, 74647) ;
+  RefNV : array[1..NB_CYCLES] of double
+    = (11.7, 12.0, 12.7, 12.8, 12.6, 12.4, 12.1, 11.5) ;
+  RefMN : array[1..NB_CYCLES] of double
+    = (0.7, 0.7, 0.9, 1.0, 1.2, 1.3, 1.3, 1.3) ;
+  RefSv : array[1..NB_CYCLES] of double
+    = (10.1, 10.5, 11.0, 11.0, 10.8, 10.6, 10.3, 9.9) ;
+  RefISO : array[1..NB_CYCLES] of double
+    = (7.33956043956044, 5.3, 4.99010989010989, 4.68021978021978, 4.18021978021978, 4.17032967032967, 4, 4) ;
+  RefGainNet : array[1..NB_CYCLES] of double
+    = (55.0, 45.0, 36.5, 28.0, 23.0, 18.0, 17.0, 15.0) ;
+  RefPerteLact : array[1..NB_CYCLES] of double
+    = (20.0, 17.5, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0) ;
+var
+  i, RefNbTot : integer ;
+  RefNVMoy, RefMNMoy, RefSvMoy, RefISOMoy : double ;
+  MoyLact, MoyGest, Coeff : double ;
+  GainNet, PerteLact : array[1..NB_CYCLES] of double ;
+begin
+  if MessageDlg (MsgGTTT, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+  then
+  begin
+    Modified := TRUE ;
+    // Totaux et moyennes des tableaux de r�f�rence
+    RefNbTot := SumInt (RefNb) ;
+    RefNVMoy := 0 ;
+    for i := 1 to NB_CYCLES do
+      RefNVMoy := RefNVMoy + RefNV[i] * RefNb[i] ;
+    RefNVMoy := RefNVMoy / RefNbTot ;
+    RefMNMoy := 0 ;
+    for i := 1 to NB_CYCLES do
+      RefMNMoy := RefMNMoy + RefMN[i] * RefNb[i] ;
+    RefMNMoy := RefMNMoy / RefNbTot ;
+    RefSvMoy := 0 ;
+    for i := 1 to NB_CYCLES do
+      RefSvMoy := RefSvMoy + RefSv[i] * RefNb[i] ;
+    RefSvMoy := RefSvMoy / RefNbTot ;
+    RefISOMoy := 0 ;
+    for i := 1 to NB_CYCLES do
+      RefISOMoy := RefISOMoy + RefISO[i] * RefNb[i] ;
+    RefISOMoy := RefISOMoy / RefNbTot ;
+    // R�gles de 3
+    with PProfilT^ do
+    begin
+      // Dur�e de lactation
+      DureeLact := AgeSevr ;
+      // Effectif truies
+      for i := 1 to NB_CYCLES do
+        Truies[i].Nombre := Round (NbTruies * (RefNb[i] / RefNbTot)) ;
+      // Porcelets n�s vifs
+      for i := 1 to NB_CYCLES do
+        Porcelets[i].NesVivants := RoundTo (NbVifs * (RefNV[i] / RefNVMoy), -1) ;
+      // Porcelets n�s totaux (morts n�s + n�s vifs)
+      for i := 1 to NB_CYCLES do
+        Porcelets[i].NesTotaux := RoundTo (NbMorts * (RefMN[i] / RefMNMoy) + Porcelets[i].NesVivants, -1) ;
+      // Porcelets sevr�s
+      for i := 1 to NB_CYCLES do
+        Porcelets[i].Sevres := RoundTo (NbSevres * (RefSv[i] / RefSvMoy), -1) ;
+      // Age saillie
+      Truies[1].AgeSail := AgeMB1 - DureeGest ;
+      for i := 2 to NB_CYCLES do
+//        Truies[i].AgeSail := Round (Truies[i-1].AgeSail + DureeGest + DureeLact + ISO * (RefISO[i-1] / RefISOMoy)) ;
+        TabISO[i] := Round (ISO * (RefISO[i-1] / RefISOMoy)) ;
+      CalcAgeSail ;
+      // Poids truies
+      PerteLact[1] := PertePVPrim ;
+      PerteLact[2] := RoundTo ((PertePVPrim + PertePVMult) / 2, -1) ;
+      for i := 3 to NB_CYCLES do
+        PerteLact[i] := PertePVMult ;
+      Coeff := (PVAdulte - PVSail1) / (270 - 145) ;
+      GainNet[1] := RoundTo (RefGainNet[1] * Coeff, -1) ;
+      for i := 2 to NB_CYCLES do
+        GainNet[i] := (RefGainNet[i] - RefPerteLact[i-1]) * Coeff + PerteLact[i-1] ;
+      Truies[1].PdsSail := PVSail1 ;
+      Truies[1].PdsApMB := PVSail1 + GainNet[1] ;
+      for i := 2 to NB_CYCLES do
+      begin
+        Truies[i].PdsSail := Truies[i-1].PdsApMB - PerteLact[i-1] ;
+        Truies[i].PdsApMB := Truies[i].PdsSail + GainNet[i] ;
+      end ;
+      for i := 1 to NB_CYCLES do
+        Truies[i].PdsAvMB := RoundTo (Truies[i].PdsApMB + (0.3 + 1.329 * Porcelets[i].NesTotaux * PVNais), -1) ;
+      // Epaisseur de lard saillie
+      Truies[1].P2Sail := P2Sail1 ;
+      Truies[2].P2Sail := P2Objectif - PerteP2Prim ;
+      Truies[3].P2Sail := P2Objectif - RoundTo ((PerteP2Prim + PerteP2Mult) / 2, -1) ;
+      for i := 4 to NB_CYCLES do
+        Truies[i].P2Sail := P2Objectif - PerteP2Mult ;
+      // Epaisseur de lard mise-bas
+      for i := 1 to NB_CYCLES do
+        Truies[i].P2MB := P2Objectif ;
+      // Poids porcelets
+      for i := 1 to NB_CYCLES do
+        Porcelets[i].PdsNais := PVNais ;
+      for i := 1 to NB_CYCLES do
+        Porcelets[i].PdsSev := PVSevr ;
+      // Ration lactation
+      Lact[1] := ConsoLact * 0.83 ;
+      Lact[2] := ConsoLact * 0.96 ;
+      for i := 3 to NB_CYCLES do
+        Lact[i] := ConsoLact * 1.05 ;
+      MoyLact := 0 ;
+      for i := 1 to NB_CYCLES do
+        MoyLact := MoyLact + Lact[i] * RefNb[i] ;
+      MoyLact := MoyLact / RefNbTot ;
+      for i := 1 to NB_CYCLES do
+        Lact[i] := RoundTo (Lact[i] * ConsoLact / MoyLact, -3) ;
+      // Ration gestation
+      for i := 1 to NB_CYCLES do
+        Gest[i] := (0.440 * Power ((Truies[i].PdsSail + Truies[i].PdsAvMB) / 2, 0.75) + ((13.65 * GainNet[i] + 45.9 * (Truies[i].P2MB - Truies[i].P2Sail)) / 0.77) / DureeGest + (Porcelets[i].NesTotaux * PVNais * 5.4 / 0.48) / DureeGest) / 12.5 ;
+      MoyGest := 0 ;
+      for i := 1 to NB_CYCLES do
+        MoyGest := MoyGest + Gest[i] * RefNb[i] ;
+      MoyGest := MoyGest / RefNbTot ;
+      for i := 1 to NB_CYCLES do
+        Gest[i] := RoundTo (Gest[i] * ConsoGest / MoyGest, -3) ;
+    end ;
+    // Affichage
+    CBProfilChange(nil);
+  end;
+end;
+
+end.
Index: UFRapMatAG.dfm
===================================================================
--- UFRapMatAG.dfm	(révision 0)
+++ UFRapMatAG.dfm	(révision 3)
@@ -0,0 +1,3134 @@
+object FRapMatAG: TFRapMatAG
+  Left = 0
+  Top = 80
+  Caption = 'Feed ingredients composition report - Fatty acids'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    DataSet = CDSRapport
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Feed ingredient composition: fatty acids'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 860
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        2275.416666666667000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QRDBTTC24_Tot: TQRDBText
+        Left = 641
+        Top = 300
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          793.750000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C24_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC20_Tot: TQRDBText
+        Left = 641
+        Top = 260
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          687.916666666666700000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C20_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC16_Tot: TQRDBText
+        Left = 641
+        Top = 220
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          582.083333333333300000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C16_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC12_Tot: TQRDBText
+        Left = 641
+        Top = 180
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          476.250000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C12_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_Tot: TQRDBText
+        Left = 637
+        Top = 320
+        Width = 67
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1685.395833333333000000
+          846.666666666666700000
+          177.270833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC22_Tot: TQRDBText
+        Left = 641
+        Top = 280
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          740.833333333333300000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C22_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_Tot: TQRDBText
+        Left = 641
+        Top = 240
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          635.000000000000000000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC14_Tot: TQRDBText
+        Left = 641
+        Top = 200
+        Width = 63
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1695.979166666667000000
+          529.166666666666700000
+          166.687500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C14_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTot: TQRLabel
+        Left = 662
+        Top = 136
+        Width = 42
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1751.541666666667000000
+          359.833333333333300000
+          111.125000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:m)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC6C8C10_Tot: TQRDBText
+        Left = 609
+        Top = 160
+        Width = 95
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1611.312500000000000000
+          423.333333333333300000
+          251.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C6C8C10_Tot_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_6: TQRDBText
+        Left = 584
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1545.166666666667000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_6_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC22_6: TQRDBText
+        Left = 588
+        Top = 280
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1555.750000000000000000
+          740.833333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C22_6_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL6: TQRLabel
+        Left = 603
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1595.437500000000000000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:6)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC20_5: TQRDBText
+        Left = 524
+        Top = 260
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1386.416666666667000000
+          687.916666666666700000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C20_5_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_5: TQRDBText
+        Left = 520
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1375.833333333333000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_5_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC22_5: TQRDBText
+        Left = 524
+        Top = 280
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1386.416666666667000000
+          740.833333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C22_5_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL5: TQRLabel
+        Left = 539
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1426.104166666667000000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:5)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC20_4: TQRDBText
+        Left = 460
+        Top = 260
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1217.083333333333000000
+          687.916666666666700000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C20_4_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_4: TQRDBText
+        Left = 456
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1206.500000000000000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_4_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_4: TQRDBText
+        Left = 460
+        Top = 240
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1217.083333333333000000
+          635.000000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_4_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL4: TQRLabel
+        Left = 475
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1256.770833333333000000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:4)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_3: TQRDBText
+        Left = 392
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1037.166666666667000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_3_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_3: TQRDBText
+        Left = 396
+        Top = 240
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1047.750000000000000000
+          635.000000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_3_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL3: TQRLabel
+        Left = 411
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1087.437500000000000000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:3)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_2: TQRDBText
+        Left = 328
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          867.833333333333300000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_2_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_2: TQRDBText
+        Left = 332
+        Top = 240
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          878.416666666666700000
+          635.000000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_2_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL2: TQRLabel
+        Left = 347
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          918.104166666666700000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:2)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC20_1: TQRDBText
+        Left = 268
+        Top = 260
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          709.083333333333300000
+          687.916666666666700000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C20_1_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC16_1: TQRDBText
+        Left = 268
+        Top = 220
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          709.083333333333300000
+          582.083333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C16_1_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_1: TQRDBText
+        Left = 264
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_1_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC22_1: TQRDBText
+        Left = 268
+        Top = 280
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          709.083333333333300000
+          740.833333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C22_1_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_1: TQRDBText
+        Left = 275
+        Top = 240
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          727.604166666666700000
+          635.000000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_1'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL1: TQRLabel
+        Left = 283
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          748.770833333333300000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:1)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC24_0: TQRDBText
+        Left = 204
+        Top = 300
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          793.750000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C24_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC20_0: TQRDBText
+        Left = 204
+        Top = 260
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          687.916666666666700000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C20_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC16_0: TQRDBText
+        Left = 204
+        Top = 220
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          582.083333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C16_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC12_0: TQRDBText
+        Left = 204
+        Top = 180
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          476.250000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C12_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTCTot_0: TQRDBText
+        Left = 200
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          529.166666666666700000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_CTot_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC22_0: TQRDBText
+        Left = 204
+        Top = 280
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          740.833333333333300000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C22_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC18_0: TQRDBText
+        Left = 204
+        Top = 240
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          635.000000000000000000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C18_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC14_0: TQRDBText
+        Left = 204
+        Top = 200
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          539.750000000000000000
+          529.166666666666700000
+          137.583333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C14_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRL0: TQRLabel
+        Left = 219
+        Top = 136
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          579.437500000000000000
+          359.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C(n:0)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTC6C8C10_0: TQRDBText
+        Left = 172
+        Top = 160
+        Width = 84
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          455.083333333333300000
+          423.333333333333300000
+          222.250000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_C6C8C10_0_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMatiere: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          21.166666666666670000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 28
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          74.083333333333330000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 28
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          74.083333333333300000
+          1195.916666666670000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+      object QRDBMatiere: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          153.458333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Matiere_'
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTAG: TQRLabel
+        Left = 110
+        Top = 136
+        Width = 50
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          291.041666666666700000
+          359.833333333333300000
+          132.291666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Content'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC6C8C10: TQRLabel
+        Left = 72
+        Top = 160
+        Width = 88
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          190.500000000000000000
+          423.333333333333300000
+          232.833333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C6 + C8 + C10'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCompo: TQRLabel
+        Left = 40
+        Top = 96
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          254.000000000000000000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'StrCompo'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsItalic]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC14: TQRLabel
+        Left = 136
+        Top = 200
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          529.166666666666700000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C14'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC18: TQRLabel
+        Left = 136
+        Top = 240
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          635.000000000000000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C18'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC22: TQRLabel
+        Left = 136
+        Top = 280
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          740.833333333333300000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C22'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCTot: TQRLabel
+        Left = 127
+        Top = 320
+        Width = 33
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          336.020833333333300000
+          846.666666666666700000
+          87.312500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC12: TQRLabel
+        Left = 136
+        Top = 180
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          476.250000000000000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C12'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC16: TQRLabel
+        Left = 136
+        Top = 220
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          582.083333333333300000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C16'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC20: TQRLabel
+        Left = 136
+        Top = 260
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          687.916666666666700000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C20'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLC24: TQRLabel
+        Left = 136
+        Top = 300
+        Width = 24
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          359.833333333333300000
+          793.750000000000000000
+          63.500000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'C24'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLip: TQRLabel
+        Left = 40
+        Top = 352
+        Width = 98
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          931.333333333333300000
+          259.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Crude fat (g/kg)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTLip: TQRDBText
+        Left = 288
+        Top = 352
+        Width = 32
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          762.000000000000000000
+          931.333333333333300000
+          84.666666666666670000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Lip_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAGsLip: TQRLabel
+        Left = 40
+        Top = 376
+        Width = 139
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          994.833333333333300000
+          367.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Fatty acids (% of lipid)'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAGsLip: TQRDBText
+        Left = 262
+        Top = 376
+        Width = 58
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          693.208333333333300000
+          994.833333333333300000
+          153.458333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AGsLip_'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0;;#'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 978
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 57
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          21.166666666666700000
+          150.812500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 480
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333000000
+          63.500000000000000000
+          1270.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666700000
+          1711.854166666670000000
+          63.500000000000000000
+          82.020833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object SFMatiere: TStringField
+      DisplayWidth = 35
+      FieldName = '_Matiere_'
+      Size = 35
+    end
+    object SFC6C8C10_0: TStringField
+      FieldName = '_C6C8C10_0_'
+      Size = 8
+    end
+    object SFC6C8C10_Tot: TStringField
+      FieldName = '_C6C8C10_Tot_'
+      Size = 8
+    end
+    object SFC12_0: TStringField
+      FieldName = '_C12_0_'
+      Size = 8
+    end
+    object SFC12_Tot: TStringField
+      FieldName = '_C12_Tot_'
+      Size = 8
+    end
+    object SFC14_0: TStringField
+      FieldName = '_C14_0_'
+      Size = 8
+    end
+    object SFC14_Tot: TStringField
+      FieldName = '_C14_Tot_'
+      Size = 8
+    end
+    object SFC16_0: TStringField
+      FieldName = '_C16_0_'
+      Size = 8
+    end
+    object SFC16_1: TStringField
+      FieldName = '_C16_1_'
+      Size = 8
+    end
+    object SFC16_Tot: TStringField
+      FieldName = '_C16_Tot_'
+      Size = 8
+    end
+    object SFC18_0: TStringField
+      FieldName = '_C18_0_'
+      Size = 8
+    end
+    object SFC18_1: TStringField
+      FieldName = '_C18_1_'
+      Size = 8
+    end
+    object SFC18_2: TStringField
+      FieldName = '_C18_2_'
+      Size = 8
+    end
+    object SFC18_3: TStringField
+      FieldName = '_C18_3_'
+      Size = 8
+    end
+    object SFC18_4: TStringField
+      FieldName = '_C18_4_'
+      Size = 8
+    end
+    object SFC18_Tot: TStringField
+      FieldName = '_C18_Tot_'
+      Size = 8
+    end
+    object SFC20_0: TStringField
+      FieldName = '_C20_0_'
+      Size = 8
+    end
+    object SFC20_1: TStringField
+      FieldName = '_C20_1_'
+      Size = 8
+    end
+    object SFC20_4: TStringField
+      FieldName = '_C20_4_'
+      Size = 8
+    end
+    object SFC20_5: TStringField
+      FieldName = '_C20_5_'
+      Size = 8
+    end
+    object SFC20_Tot: TStringField
+      FieldName = '_C20_Tot_'
+      Size = 8
+    end
+    object SFC22_0: TStringField
+      FieldName = '_C22_0_'
+      Size = 8
+    end
+    object SFC22_1: TStringField
+      FieldName = '_C22_1_'
+      Size = 8
+    end
+    object SFC22_5: TStringField
+      FieldName = '_C22_5_'
+      Size = 8
+    end
+    object SFC22_6: TStringField
+      FieldName = '_C22_6_'
+      Size = 8
+    end
+    object SFC22_Tot: TStringField
+      FieldName = '_C22_Tot_'
+      Size = 8
+    end
+    object SFC24_0: TStringField
+      FieldName = '_C24_0_'
+      Size = 8
+    end
+    object SFC24_Tot: TStringField
+      FieldName = '_C24_Tot_'
+      Size = 8
+    end
+    object SFCTot_0: TStringField
+      FieldName = '_CTot_0_'
+      Size = 8
+    end
+    object SFCTot_1: TStringField
+      FieldName = '_CTot_1_'
+      Size = 8
+    end
+    object SFCTot_2: TStringField
+      FieldName = '_CTot_2_'
+      Size = 8
+    end
+    object SFCTot_3: TStringField
+      FieldName = '_CTot_3_'
+      Size = 8
+    end
+    object SFCTot_4: TStringField
+      FieldName = '_CTot_4_'
+      Size = 8
+    end
+    object SFCTot_5_: TStringField
+      FieldName = '_CTot_5_'
+      Size = 8
+    end
+    object SFCTot_6: TStringField
+      FieldName = '_CTot_6_'
+      Size = 8
+    end
+    object SFCTot_Tot: TStringField
+      FieldName = '_CTot_Tot_'
+      Size = 8
+    end
+    object SFLip: TStringField
+      FieldName = '_Lip_'
+      Size = 8
+    end
+    object SFAGsLip: TStringField
+      FieldName = '_AGsLip_'
+      Size = 8
+    end
+  end
+end
Index: UFRapRationP.pas
===================================================================
--- UFRapRationP.pas	(révision 0)
+++ UFRapRationP.pas	(révision 3)
@@ -0,0 +1,118 @@
+unit UFRapRationP ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapRationP = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLRation: TQRLabel;
+    QRDBTRation: TQRDBText;
+    CDSRapport: TClientDataSet;
+    SFRation: TStringField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    DSRelation: TDataSource;
+    CDSRegles: TClientDataSet;
+    SFIndex: TStringField;
+    IFNo: TIntegerField;
+    SFModeFin: TStringField;
+    SFConso: TStringField;
+    QRLRegles: TQRLabel;
+    QRLNo: TQRLabel;
+    QRShape2: TQRShape;
+    QRLModeFin: TQRLabel;
+    QRLConso: TQRLabel;
+    QRSDRegles: TQRSubDetail;
+    QRDBTConso: TQRDBText;
+    QRDBTNo: TQRDBText;
+    QRDBTModeFin: TQRDBText;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    QRLabel1: TQRLabel;
+    QRDBText1: TQRDBText;
+    SFGaspillage: TStringField;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapRationP: TFRapRationP;
+
+implementation
+
+uses
+  UStrings, UUtil, UFRationP, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapRationP }
+
+procedure TFRapRationP.FormCreate(Sender: TObject);
+var
+  regle : integer ;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Ration_'] := FRationP.CBRation.Text;
+    Post;
+  end ;
+  QRMMemo.Lines.Add(FRationP.CBRation.Hint);
+  with CDSRegles do
+  begin
+    CreateDataSet;
+    for regle := 1 to PRationP.NbRule do
+    begin
+      Append;
+      FieldValues['_Ration_'] := FRationP.CBRation.Text;
+      FieldValues['_No_'] := regle;
+      FieldValues['_ModeFin_'] := FRationP.StrModeFin(regle);
+      FieldValues['_Conso_'] := FRationP.StrEquation(regle);
+      FieldValues['_Gaspillage_'] := Format('%1.0f%%', [PRationP.Rule[regle].Gaspillage * 100]);
+      Post;
+    end ;
+  end ;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFBesLactE.pas
===================================================================
--- UFBesLactE.pas	(révision 0)
+++ UFBesLactE.pas	(révision 3)
@@ -0,0 +1,360 @@
+unit UFBesLactE ;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons, UVariables;
+
+type
+  TFBesLactE = class(TForm)
+    GBProfil: TGroupBox;
+    CBProfil: TComboBox;
+    GBResult: TGroupBox;
+    BBRapLact: TBitBtn;
+    BBResLact: TBitBtn;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormActivate(Sender: TObject);
+    procedure CBProfilChange(Sender: TObject);
+    procedure BBResLactClick(Sender: TObject);
+    procedure BBRapLactClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modal: boolean;
+    procedure CalcApport;
+    procedure CalcResult;
+  public
+    { D�clarations publiques }
+    AppAliTot, AppEDTot, AppEMTot, AppENTot: array[1..NB_CYCLES] of double;
+    BesEMTot, BesEMEntTot, BesEMLaitTot: array[1..NB_CYCLES] of double;
+    AppAli, AppED, AppEM, AppEN: array[1..NB_CYCLES, 1..28] of double;
+    BesEMEnt, BesEMLait, BesP, BesCa: array[1..NB_CYCLES, 1..28] of double;
+    AppAA, BesAA, BesAAEnt, BesAALait: array[1..NB_CYCLES, 1..14, 1..28] of double;
+  end;
+
+var
+  FBesLactE: TFBesLactE;
+
+implementation
+
+uses
+  Math, gnugettext, UInit, UFindRec, UCalcul, UFResBesLactE, UFRapBesLactE;
+
+{$R *.dfm}
+
+{ TFBesLactE }
+
+procedure TFBesLactE.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 296 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MaxWidth := Constraints.MinWidth;
+  Constraints.MinHeight := 112 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  Constraints.MaxHeight := Constraints.MinHeight;
+end;
+
+procedure TFBesLactE.FormShow(Sender: TObject);
+begin
+  Modal := False;
+end;
+
+procedure TFBesLactE.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  Action := caFree;
+  NumWinBesLactE := -1;
+end;
+
+procedure TFBesLactE.FormActivate(Sender: TObject);
+begin
+  if not Modal
+  then
+    StringsProfilT(CBProfil.Items, False);
+end;
+
+procedure TFBesLactE.CBProfilChange(Sender: TObject);
+begin
+  if CBProfil.ItemIndex = -1
+  then
+    CBProfil.Hint := ''
+  else
+  begin
+    PProfilT := ListProfilT[FindIdxProfilT (CBProfil.Text)] ;
+    CBProfil.Hint := PProfilT.Memo ;
+    Update := TRUE ;
+    CalcApport ;
+    CalcResult ;
+    Update := FALSE ;
+    BBResLact.Enabled := TRUE ;
+    BBRapLact.Enabled := TRUE ;
+  end ;
+end;
+
+procedure TFBesLactE.CalcApport ;
+var
+  i, Cycle, Jour, AA, Unite : integer ;
+  PctAli1, PctAli2, Quantite, Ingere, IngSec1, IngSec2 : double ;
+  NumRuleSeqAli, NumRuleRation : integer ;
+  RuleSeqAli : array[1..MAX_RULE] of RecRuleSeqAliT ;
+  RuleRation : array[1..MAX_RULE] of RecRuleRationT ;
+  RuleSeqAliInit, RuleRationInit, Ecart : integer ;
+  RecCC1, RecCC2 : CompositionChimique ;
+  TabAAtotal1, TabAAtotal2, TabCUDAA1, TabCUDAA2 : array[0..12] of double ;
+  ok : boolean ;
+begin
+  for Cycle := 1 to NB_CYCLES do
+  begin
+    PSeqAliT := ListSeqAliT[FindIdxSeqAliT (FindNomSeqAliT (PProfilT.SeqAli))] ;
+    for i := 1 to PSeqAliT.NbRuleLact do
+      RuleSeqAli[i] := PSeqAliT.RuleLact[i] ;
+    NumRuleSeqAli := 1 ;
+    RuleSeqAliInit := 1 ;
+    with RuleRation[1] do
+    begin
+      ModeFin := -1 ;
+      Equation := 3 ; // Curvilin�aire
+      a := PProfilT.Lact[Cycle] / 2 ; // Initial
+      c := PProfilT.Lact[Cycle] ; // Moyenne
+      d := PProfilT.DureeLact ; // Dur�e
+    end ;
+    Unite := PProfilT.Unite ;
+    NumRuleRation := 1 ;
+    RuleRationInit := 1 ;
+    // Boucle des jours
+    for Jour := 1 to PProfilT.DureeLact do
+    begin
+      // Aliment(s) distribu�(s)
+      repeat
+        ok := TRUE ;
+        with RuleSeqAli[NumRuleSeqAli] do
+          if ModeFin = 0
+          then // Dur�e
+            if (Jour - RuleSeqAliInit + 1 > ValFin) then ok := FALSE ;
+        if not (ok)
+        then // Changement de r�gle
+        begin
+          Inc (NumRuleSeqAli) ;
+          RuleSeqAliInit := Jour ;
+        end ;
+      until ok ;
+      with RuleSeqAli[NumRuleSeqAli] do
+      begin
+        // Composition aliment 1
+        if NumAli1 = -1
+        then
+        begin
+          RecCC1 := CCVide ;
+          for i := 0 to 12 do
+            TabAAtotal1[i] := 0 ;
+          for i := 0 to 12 do
+            TabCUDAA1[i] := 0 ;
+        end
+        else
+        begin
+          PAliment := ListAliment[FindIdxAliment (FindNomAliment (NumAli1))] ;
+          RecCC1 := PAliment.CC ;
+          for i := 0 to 12 do
+            TabAAtotal1[i] := PAliment.AAtotal[i] ;
+          for i := 0 to 12 do
+            TabCUDAA1[i] := PAliment.CUDAA[i] ;
+        end ;
+        // Composition aliment 2
+        if NumAli2 = -1
+        then
+        begin
+          RecCC2 := CCVide ;
+          for i := 0 to 12 do
+            TabAAtotal2[i] := 0 ;
+          for i := 0 to 12 do
+            TabCUDAA2[i] := 0 ;
+        end
+        else
+        begin
+          PAliment := ListAliment[FindIdxAliment (FindNomAliment (NumAli2))] ;
+          RecCC2 := PAliment.CC ;
+          for i := 0 to 12 do
+            TabAAtotal2[i] := PAliment.AAtotal[i] ;
+          for i := 0 to 12 do
+            TabCUDAA2[i] := PAliment.CUDAA[i] ;
+        end ;
+        // Calcul des % aliments
+        if PctAli1Init = PctAli1Fin
+        then
+          PctAli1 := PctAli1Init
+        else // Transition
+        begin
+          Ecart := PctAli1Fin - PctAli1Init ;
+          if ModeFin = 0
+          then // Dur�e
+            PctAli1 := PctAli1Init + (Jour - RuleSeqAliInit) * Ecart / ValFin
+          else // Fin
+            PctAli1 := PctAli1Init + (Jour - RuleSeqAliInit) * Ecart / (PProfilT.DureeLact - RuleSeqAliInit) ;
+        end ;
+      end ;
+      PctAli2 := 100 - PctAli1 ;
+      // Quantit�(s) distribu�e(s)
+      repeat
+        ok := TRUE ;
+        with RuleRation[NumRuleRation] do
+          if ModeFin = 0
+          then // Dur�e
+            if Jour - RuleRationInit + 1 > ValFin then ok := FALSE ;
+        if not (ok)
+        then // Changement de r�gle
+        begin
+          Inc (NumRuleRation) ;
+          RuleRationInit := Jour ;
+        end ;
+      until ok ;
+      with RuleRation[NumRuleRation] do
+      begin
+        // Calcul des quantit�s
+        case Equation of
+          0 : // Constant
+            Quantite := a ;
+          1 : // Lin�aire
+            Quantite := a + b * (Jour - RuleRationInit) ;
+          2 : // Lin�aire-plateau
+            Quantite := LPvaleur (a, b, c, Jour - RuleRationInit + 1, d) ;
+          3 : // Curvilin�aire
+            Quantite := CLvaleur (a, c, Jour - RuleRationInit + 1, d) ;
+          else
+            Quantite := 0 ;
+        end ;
+        // Convertion de ED, EM, EN en quantit� si besoin
+        case Unite of
+          1 : // ED (MJ/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.ED_T * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.ED_T * RecCC2.MS / 1000) ;
+          2 : // EM (MJ/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.EM_T * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.EM_T * RecCC2.MS / 1000) ;
+          3 : // EN (MJ/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.EN_T * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.EN_T * RecCC2.MS / 1000) ;
+          4 : // MS (kg/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.MS / 1000) ;
+          else // QI (kg/j)
+            Ingere := Quantite ;
+        end ;
+      end ;
+      // Aliment ing�r�
+      AppAli[Cycle, Jour] := Ingere ;
+      IngSec1 := Ingere * PctAli1 / 100 * RecCC1.MS / 1000 ;
+      IngSec2 := Ingere * PctAli2 / 100 * RecCC2.MS / 1000 ;
+      // Energie ing�r�e
+      AppED[Cycle, Jour] := IngSec1 * RecCC1.ED_T + IngSec2 * RecCC2.ED_T ;
+      AppEM[Cycle, Jour] := IngSec1 * RecCC1.EM_T + IngSec2 * RecCC2.EM_T ;
+      AppEN[Cycle, Jour] := IngSec1 * RecCC1.EN_T + IngSec2 * RecCC2.EN_T ;
+      // Acides amin�s digestibles
+      for AA := 1 to 12 do
+        AppAA[Cycle, AA, Jour] := IngSec1 * TabAAtotal1[AA] * TabCUDAA1[AA] / 100
+          + IngSec2 * TabAAtotal2[AA] * TabCUDAA2[AA] / 100 ;
+      // met+cys
+      AppAA[Cycle, 13, Jour] := AppAA[Cycle, 2, Jour] + AppAA[Cycle, 3, Jour] ;
+      // phe+tyr
+      AppAA[Cycle, 14, Jour] := AppAA[Cycle, 6, Jour] + AppAA[Cycle, 7, Jour] ;
+    end ;
+    // Totaux
+    AppAliTot[Cycle] := Sum (Slice (AppAli[Cycle], PProfilT.DureeLact)) ;
+    AppEDTot[Cycle] := Sum (Slice (AppED[Cycle], PProfilT.DureeLact)) ;
+    AppEMTot[Cycle] := Sum (Slice (AppEM[Cycle], PProfilT.DureeLact)) ;
+    AppENTot[Cycle] := Sum (Slice (AppEN[Cycle], PProfilT.DureeLact)) ;
+  end ;
+end;
+
+procedure TFBesLactE.CalcResult ;
+var
+  Cycle, Jour, AA : integer ;
+  GMQPort, RA, NRLait : double ;
+begin
+  for Cycle := 1 to NB_CYCLES do
+  begin
+    // GMQ port�e
+    GMQPort := (PProfilT.Porcelets[Cycle].PdsSev - PProfilT.Porcelets[Cycle].PdsNais) * PProfilT.Porcelets[Cycle].Sevres / PProfilT.DureeLact ;
+    //
+    // Besoins �n�rg�tiques
+    //
+    // Energie pour l'entretien
+    BesEMEntTot[Cycle] := Power (PProfilT.Truies[Cycle].PdsApMB, 0.75) * EELact ;
+    for Jour := 1 to PProfilT.DureeLact do
+      BesEMEnt[Cycle, Jour] := BesEMEntTot[Cycle] ;
+    // Energie pour la production de lait
+    RA := 0.0000023096 * Power (PProfilT.DureeLact, 4) - 0.00027619 * Power (PProfilT.DureeLact, 3) + 0.012889 * Power (PProfilT.DureeLact, 2) - 0.28116 * PProfilT.DureeLact + 4.799 ;
+    for Jour := 1 to PProfilT.DureeLact do
+      BesEMLait[Cycle, Jour] := (20.6 * GMQPort * 1000 - 376 * PProfilT.Porcelets[Cycle].Sevres) * RA * Exp (-0.025 * Jour) * Exp (-Exp (0.5 - 0.1 * Jour)) / 1000 / KL ;
+    BesEMLaitTot[Cycle] := Mean (Slice (BesEMLait[Cycle], PProfilT.DureeLact)) ;
+    // Besoin total en �nergie
+    BesEMTot[Cycle] := BesEMEntTot[Cycle] + BesEMLaitTot[Cycle] ;
+    //
+    // Besoins en acides amin�s
+    //
+    for Jour := 1 to PProfilT.DureeLact do
+    begin
+      // Production d'azote dans le lait
+      NRLait := (0.0257 * GMQPort * 1000 + 0.42 * PProfilT.Porcelets[Cycle].Sevres) * RA * Exp (-0.025 * Jour) * Exp (- Exp (0.5 - 0.1 * Jour)) ;
+      // 1) Besoin total
+      BesAA[Cycle, 1, Jour] := (14.2 + 0.629 * NRLait) / 1.335 ;
+      for AA := 2 to 12 do
+        BesAA[Cycle, AA, Jour] := BesAA[Cycle, 1, Jour] * ProtIdLact[AA] / 100 ;
+      // met+cys
+      BesAA[Cycle, 13, Jour] := BesAA[Cycle, 1, Jour] * (ProtIdLact[2] + ProtIdLact[3]) / 100 ;
+      // phe+tyr
+      BesAA[Cycle, 14, Jour] := BesAA[Cycle, 1, Jour] * (ProtIdLact[6] + ProtIdLact[7]) / 100 ;
+      // 2) Besoin d'entretien
+      BesAAEnt[Cycle, 1, Jour] := Power (PProfilT.Truies[Cycle].PdsApMB, 0.75) * 0.036 ;
+      for AA := 2 to 12 do
+        BesAAEnt[Cycle, AA, Jour] := BesAAEnt[Cycle, 1, Jour] * ProtIdEnt[AA] / 100 ;
+      // met+cys
+      BesAAEnt[Cycle, 13, Jour] := BesAAEnt[Cycle, 1, Jour] * (ProtIdEnt[2] + ProtIdEnt[3]) / 100 ;
+      // phe+tyr
+      BesAAEnt[Cycle, 14, Jour] := BesAAEnt[Cycle, 1, Jour] * (ProtIdEnt[6] + ProtIdEnt[7]) / 100 ;
+      // 3) Besoin pour la port�e
+      for AA := 1 to 14 do
+        BesAALait[Cycle, AA, Jour] := BesAA[Cycle, AA, Jour] - BesAAEnt[Cycle, AA, Jour] ;
+    end ;
+    //
+    // Besoins en min�raux
+    //
+    for Jour := 1 to PProfilT.DureeLact do
+    begin
+      // Production d'azote dans le lait
+      NRLait := (0.0257 * GMQPort * 1000 + 0.42 * PProfilT.Porcelets[Cycle].Sevres) * RA * Exp (-0.025 * Jour) * Exp (- Exp (0.5 - 0.1 * Jour)) ;
+      // Phosphore digestible
+      BesP[Cycle, Jour] := 10 * PProfilT.Truies[Cycle].PdsApMB / 1000
+        + NRLait * 6.38 / 0.050 / 1000 * 1.55 ;
+      // Calcium total
+      BesCa[Cycle, Jour] := BesP[Cycle, Jour] * 3.2 ;
+    end ;
+  end ;
+end;
+
+procedure TFBesLactE.BBResLactClick(Sender: TObject);
+begin
+  Modal := True;
+  FResBesLactE := TFResBesLactE.Create (Self) ;
+  FResBesLactE.ShowModal ;
+  FResBesLactE.Release ;
+  Modal := False;
+end;
+
+procedure TFBesLactE.BBRapLactClick(Sender: TObject);
+begin
+  Modal := True;
+  FRapBesLactE := TFRapBesLactE.Create(Self);
+  FRapBesLactE.QRRapport.PreviewModal ;
+  FRapBesLactE.Release;
+  Modal := False;
+end;
+
+end.
Index: UFRapRationT.pas
===================================================================
--- UFRapRationT.pas	(révision 0)
+++ UFRapRationT.pas	(révision 3)
@@ -0,0 +1,136 @@
+unit UFRapRationT ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapRationT = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLRation: TQRLabel;
+    QRDBTRation: TQRDBText;
+    CDSRapport: TClientDataSet;
+    SFRation: TStringField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    DSRelation: TDataSource;
+    CDSRegles: TClientDataSet;
+    SFIndex: TStringField;
+    IFNo: TIntegerField;
+    SFModeFin: TStringField;
+    SFConso: TStringField;
+    QRLRegles: TQRLabel;
+    QRLNo: TQRLabel;
+    QRShape2: TQRShape;
+    QRLModeFin: TQRLabel;
+    QRLConso: TQRLabel;
+    QRSDRegles: TQRSubDetail;
+    QRDBTConso: TQRDBText;
+    QRDBTNo: TQRDBText;
+    QRDBTModeFin: TQRDBText;
+    CDSRapport_StrEtat_: TStringField;
+    CDSRapport_Etat_: TIntegerField;
+    CDSRegles_Etat_: TIntegerField;
+    TBRapport: TQRBand;
+    QRDBTEtat: TQRDBText;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapRationT: TFRapRationT;
+
+implementation
+
+uses
+  UStrings, UUtil, UFRationT, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapRationT }
+
+procedure TFRapRationT.FormCreate(Sender: TObject);
+var
+  etat, regle, nb : integer;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    for etat := 0 to 2 do
+    begin
+      Append;
+      FieldValues['_Ration_'] := FRationT.CBRation.Text;
+      FieldValues['_Etat_'] := etat;
+      FieldValues['_StrEtat_'] := FRationT.TC.Tabs[etat];
+      Post;
+    end;
+  end ;
+  QRMMemo.Lines.Add(FRationT.CBRation.Hint);
+  with CDSRegles do
+  begin
+    CreateDataSet;
+    for etat := 0 to 2 do
+    begin
+      case etat of
+        0 : // Gestation
+          nb := PRationT.NbRuleGest;
+        1 : // Lactation
+          nb := PRationT.NbRuleLact;
+        else // I.S.S.F.
+          nb := PRationT.NbRuleISSF;
+      end;
+      for regle := 1 to nb do
+      begin
+        Append;
+        FieldValues['_Ration_'] := FRationT.CBRation.Text;
+        FieldValues['_Etat_'] := etat;
+        FieldValues['_No_'] := regle;
+        FieldValues['_ModeFin_'] := FRationT.StrModeFin(etat, regle);
+        FieldValues['_Conso_'] := FRationT.StrEquation(etat, regle);
+        Post;
+      end;
+    end;
+  end;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UStrings.pas
===================================================================
--- UStrings.pas	(révision 0)
+++ UStrings.pas	(révision 3)
@@ -0,0 +1,247 @@
+unit UStrings;
+
+interface
+
+uses
+  UVariables;
+
+resourcestring
+  StrInraPorc    = 'InraPorc';
+  StrVersion     = 'Incorrect version number (%d.%d.%d.%d)';
+  StrComplete    = 'Complete';
+  StrEducation   = 'Education';
+  StrEvaluation  = 'Evaluation';
+  StrReadOnly    = 'Read only';
+  StrLicenseType = 'License type: %s';
+  StrLicenseNum  = 'License number: %d';
+  StrFirstName   = 'First name: %s';
+  StrLastName    = 'Last name: %s';
+  StrCompany     = 'Company: %s';
+  StrOrganization = 'University: %s';
+  StrEndValidity = 'License activation key valid until %s';
+  StrNoKey       = 'No license activation key found';
+  StrInvalidKey  = 'Incorrect license activation key';
+  StrSelectDir   = 'Select a data directory';
+  StrPage        = 'Page %d / %d';
+  StrMinimum     = 'Minimum';
+  StrTitreCSV1   = 'Name;Comment;Type;';
+  StrTitreCSV2   = 'DM;Ash;OM;Fat;CP;Starch;Sugars;Dig. OM S;Dig. OM G;Dig. fat S;Dig. fat G;Dig. CP S;Dig. CP G;';
+  StrTitreCSV3   = 'GE;DE S;DE G;ME S;ME G;NE S;NE G;';
+  StrTitreCSV4   = 'Ca;P;Na;K;Mg;Cl;S;Cu;Zn;Mn;Fe;Se;Co;Mo;I;Dig. P (pellets);Dig. P (mash);Phytate P;Endogenous phytase act.;Microbial phytase act.;';
+  StrTitreCSV5   = 'C6-10:0;C12:0;C14:0;C16:0;C16:1;C18:0;C18:1;C18:2;C18:3;C18:4;C20:0;C20:1;C20:4;C20:5;C22:0;C22:1;C22:5;C22:6;C24:0;FA/lipid;';
+  StrTitreCSV6   = 'CF;Dig. CF S;Dig. CF G;Residue;Dig. residu S;Dig. residue G;NDF;ADF;ADL;TDF;';
+  StrTitreCSV7   = 'Lys;Met;Cys;Trp;Thr;Phe;Tyr;Leu;Ile;Val;His;Arg;Dig. N;Dig. Lys;Dig. Met;Dig. Cys;Dig. Trp;Dig. Thr;Dig. Phe;Dig. Tyr;Dig. Leu;Dig. Ile;Dig. Val;Dig. His;Dig. Arg';
+  // Messages (Dialogs)
+  MsgLicense     = 'Three versions of InraPorc are available: ' + sLineBreak
+                 + '- Evaluation ' + sLineBreak
+                 + #9 + ' Free ' + sLineBreak
+                 + #9 + ' Does not require a license activation key ' + sLineBreak
+                 + #9 + ' Limited functionality ' + sLineBreak
+                 + '- Education ' + sLineBreak
+                 + #9 + ' Free ' + sLineBreak
+                 + #9 + ' Reserved for educational purposes ' + sLineBreak
+                 + #9 + ' Requires a license activation key ' + sLineBreak
+                 + #9 + ' Limited number of entries can be saved ' + sLineBreak
+                 + '- Complete ' + sLineBreak
+                 + #9 + ' Purchase required (500 euros) ' + sLineBreak
+                 + #9 + ' Requires a license activation key ' + sLineBreak
+                 + #9 + ' No limitation ' + sLineBreak + sLineBreak
+                 + 'In case of an error (e.g., exceeding the number of data entries that can be saved or invalid license activation key), the software will work in read-only mode. ' + sLineBreak + sLineBreak
+                 + 'To obtain a license activation key, use the following procedure: ' + sLineBreak
+                 + '1. Install InraPorc on the computer on which it will be used and start InraPorc from that computer. ' + sLineBreak
+                 + '2. Fill out all the requested information in the right-hand panel (do not forget to indicate the requested license type). ' + sLineBreak
+                 + '3. You have two options to request a license activation key: automatically and manually. An internet connection is required to request the license activation key automatically. When you click on the "Automatic" button, the information from the license wi'
+                 + 'ndow will be sent to our server. We will then process your request, which may take a few days. If you prefer to request the license activation key manually, a license activation file will be created when you click on the "Manual" button and you will have'
+                 + ' to upload (manually) this file to our server (http://w3.rennes.inra.fr/inraporc/). ' + sLineBreak
+                 + '4. After having received your request, we will generate a license activation key. We will include this key in the license activation file InraPorc.lic and we will send this file to you by e-mail. Copy this file to a location of your choice. To validate y'
+                 + 'ou license, start InraPorc and open the license windows again. Click on the "Import" button and indicate where the license activation file InraPorc.lic is located. ' + sLineBreak + sLineBreak
+                 + 'To obtain a license activation key for the complete version, you must first fill out a purchase order of the InraPorc web site. A license number will be sent to you with the order confirmation.';
+  MsgCorrCUD     = 'In InraPorc, a strict relation is maintained between digestible nutrients and energy values. Although it is possible to calculate energy values from digestible nutrients, the reverse is not true (i.e., it is not possible to calculate the contribution of '
+                 + 'starch, protein from a single energy value). It is therefore recommended that feeds and feed ingredients are characterized by their chemical composition and fecal digestibility; the energy values are then calculated from this information.' + sLineBreak + sLineBreak
+                 + 'By checking the checkbox, a known energy value may be used to adjust the fecal digestibilities. Before using this option, it is important to ensure that the values for chemical composition and digestibility are realistic.';
+  MsgCalcAli     = 'The feed ingredient composition is optional and can be used to calculate the chemical composition of the feed. As this information is not linked dynamically to the chemical composition, the contribution of feed ingredients to the chemical composition wil'
+                 + 'l be not correct when the latter is changed manually.';
+  MsgGraphAli    = 'The contribution of feed ingredients to the chemical composition of the feed shown in these graphs is based on the composition of the feed ingredients and not on the composition of the feed (which may have been modified manually).';
+  MsgUnitProfilP = 'The mechanisms that regulate voluntary feed intake are not fully understood. If gut capacity is limiting, feed intake may be regulated on a dry matter (or ''bulk'') basis. However, if gut capacity is not limiting intake, an energetic regulation of intake'
+                 + ' may be more likely.' + sLineBreak
+                 + 'It is left to the user to express the mode of regulation of ad libitum feed intake (i.e., DM, DE, ME or ME). The choice of expressing ad libitum feed intake has consequences on the way the model predicts the response of feeding a high energy diet. For ex'
+                 +'ample, if ad libitum feed intake capacity is expressed on a DM basis, feeding a high energy diet will improve performance. If intake capacity is expressed on a NE basis, pigs fed a high energy diet will reduce their DM intake (to maintain an equal NE inta'
+                 + 'ke) without affecting performance.';
+  MsgPDMoy       = 'By changing this parameter, the average protein deposition over the simulation period is adjusted. It is recommended adjusting this parameter so that the predicted average daily gain corresponds to the observed value.';
+  MsgPrecocite   = 'This parameter determines the shape of the Gompertz function, which is used to describe protein deposition. Increasing its value results in an early-maturing animal while (approximately) maintaining the average daily gain. A low value of ''precocity'' re'
+                 + 'sults in a late-maturing animal. In the absence of information, it is recommended not to change the value.' + sLineBreak
+                 + 'Information such as average daily gain during the growing and finishing phase may be used to adjust this parameter (i.e., change ''Graph type'' to ''View per period'' and ''X-axis'' to ''Feed sequence rule'').';
+  MsgEntretien   = 'The parameter ''maintenance'' allows changing the maintenance energy requirements relative to the default function (i.e., a function of body weight and feed intake). Changing this parameter will change the lipid deposition, but not (or little) the protei'
+                 + 'n deposition. Together with the lipid deposition, lean percentage and backfat thickness are modified when maintenance is changed. However, the equations used may be little precise and can be modified in the configuration menu of InraPorc.' + sLineBreak
+                 + 'It is recommended to change this value only when information on the actual lipid deposition is available. It is not recommended to change the default value of ''maintenance'' only on the basis of known lean percentage and/or backfat thickness.';
+  MsgOptInit     = 'It is recommended to use this option with caution; deviations may occur if several successive cycles are simulated.';
+  MsgSimulT      = 'In the current version of the software, production performance data (litter size, piglet weight, milk production) are considered user inputs and are therefore not sensitive to the nutrient supply.';
+  MsgBesoin      = 'Nutrient requirements given by InraPorc for growing pigs are probably lower than what you think.' + sLineBreak
+                 + 'In InraPorc, nutrient requirements are given for a single, average pig. If you would feed your herd according to this requireme'
+                 + 'nt, the average performance of your herd would be lower than the performance of this average pig. The reason for this is that approximately half of your herd has a nutrient requirement lower than the average pig, whereas the other half has a requirement '
+                 + 'greater than the average pig. If you feed your herd as an average pig, only pigs with a nutrient requirement lower than average would be able to express their potential, whereas those with a requirement greater than average would be penalized. Studies in'
+                 + ' our laboratory show that the nutrient requirement of the herd is 10-15% higher than the requirement of the average animal. See the publications on the InraPorc website for more information on this topic.';
+  MsgCalibrAdLib = 'The feed rationing plan that you provide does not contain a period in which pigs are offered feed (a percentage of) ad libitum. The calibration procedure can only be used if feed is feed ad libitum during at least one period.';
+  MsgCalibrOther = 'In the current feed rationing plan, pigs are not offered feed ad libitum (or a percentage thereof) throughout the simulation. Because model parameters describe the ad libitum feed intake and corresponding growth, the accuracy of parameter estimation depe'
+                 + 'nds on the duration during which feed was offered ad libitum. For example, the ad libitum feed intake curve requires 2 parameters. In order to obtain reliable estimates of these 2 parameters, the period of ad libitum feeding should cover at least 2 data '
+                 + 'points for the cumulative feed usage.';
+  MsgInraAfz     = 'Errors were found in the links between the feed composition file and the file containing the Inra-AFZ feed ingredients. To solve this issue, reinstall InraPorc or download the file InraAfz.rec from the website and save it in the InraPorc program director'
+                 + 'y ''(by default C:\Program Files\InraPorc).';
+  MsgParamCount  = 'Illegal parameters number (%d)' + sLineBreak
+                 + 'Command: %s' + sLineBreak
+                 + 'Usage: %s <data folder>';
+  MsgFinalDate   = 'The license activation key has expired.';
+  MsgFixedDrive  = 'The complete version has to been installed on a local hard drive.';
+  MsgDiskChanged = 'The disk drive has been reformatted or the program has been moved to another disk (or partition); the license activation key is not valid.';
+  MsgDataDirectory = 'Data directory %s not found.';
+  MsgTooMuchRecords = 'The number of data entries exceeds the authorized maximum; the software will function in read-only mode.';
+  MsgRequiredField = 'The "%s" field is empty; it is required for this type of license.';
+  MsgMissingMail = 'An e-mail address is required to receive a license activation key.';
+  MsgMissingAddress = 'A postal address is required';
+  MsgInvalidLicense = 'The license activation key is absent, has expired or does not correspond to the information provided.';
+  MsgReadOnly    = 'Awaiting a valid license activation key, the software will function in read only mode.';
+  MsgFileNotFound = 'The file %s is missing';
+  MsgRecordErrors = 'The error report has been saved in the file %s' + sLineBreak
+                 + '(directory %s)';
+  MsgConfig      = 'Save the configuration?';
+  MsgSave        = 'Save the modications?';
+  MsgInvalidData = '%s: %s' + sLineBreak
+                 + 'The information you saved is incomplete.' + sLineBreak
+                 + 'You will have to complete it before it can be used.';
+  MsgSaveMat     = 'Save the feed ingredients?';
+  MsgSaveAli     = 'Save the feeds?';
+  MsgName        = 'New name of the entry:';
+  MsgNameEmpty   = 'Enter a name or click on <Cancel>';
+  MsgNameTooLarge = 'This name is too long (maximum %d characters).';
+  MsgNameExists  = 'An entry already exists with this name.';
+  MsgDel         = 'Delete the entry?';
+  MsgDelErr      = 'Impossible to delete; the entry is used.';
+  MsgRename      = 'New name of the entry:';
+  MsgCopy        = 'Copy the current values?';
+  MsgSimulErr    = 'An error occurred during the simulation.';
+  MsgCalcul      = 'The data of the chemical composition will be overwritten' + sLineBreak
+                 + 'Continue?';
+  MsgGTTT        = 'The data of "Sows", "Piglets" and "Feeding" will be overwritten.' + sLineBreak
+                 + 'Continue?';
+  MsgCSVError    = 'Error reading the CSV file' + sLineBreak
+                 + 'line %d' + sLineBreak
+                 + 'column %d';
+  MsgAli2Mat     = '%s is a feed...' + sLineBreak
+                 + 'Import in the list of feed ingredients.';
+  MsgMat2Ali     = '%s is a feed ingredient...' + sLineBreak
+                 + 'Import in the list of feeds.';
+  MsgNoCSV       = 'It is necessary to open a file before carrying out this operation.';
+  MsgNoMat       = 'No feed ingredients to export.' + sLineBreak
+                 + 'As the INRA/AFZ feed ingredients cannot be exported, they do not appear in the list.';
+  MsgNoMatSel    = 'Select first the feed ingredients to export.';
+  MsgNoAli       = 'No feeds to export.';
+  MsgNoAliSel    = 'Select first the feeds to export.';
+  MsgNoImp       = 'No elements to import.';
+  MsgNoImpSel    = 'Select first the elements to import.';
+  MsgKeepValues  = 'Do you want to keep the modified values in the profile?';
+  MsgExcel       = 'Impossible to connect to Excel';
+  MsgConvert     = 'The user data need to be upgraded in order to be used by the new version of InraPorc.' + sLineBreak
+                 + 'The converted data cannot be used by previous versions of the program.' + sLineBreak
+                 + 'Continue?';
+  MsgCheckForUpdates = 'Automatically check for updates?' + sLineBreak
+                 + '(this may not work if you have a firewall installed)';
+  MsgUpdateFound = 'A new version of InraPorc (%s) is available.' + sLineBreak
+                 + 'Do you want to download it now?';
+  MsgLicenseSuccess = 'Your request has been registered.' + sLineBreak
+                 + 'After verification of the information, a license activation file (which includes the license activation key) will be sent to you by e-mail.';
+  MsgServerUnreachable = 'The server is unreachable.' + sLineBreak
+                 + 'Check your network connection.';
+  MsgPDLimit     = 'An amino acid limits protein deposition';
+  // Titres de tableaux (StringGrids)
+  StrGMQ         = 'Gain';
+  StrIngere      = 'Intake';
+  StrFeedUW      = 'Feed usage (wastage)';
+  StrIC          = 'F:G';
+  StrEA          = 'G:F';
+  StrPD          = 'PD';
+  StrPDMarginal  = 'Marginal PD';
+  StrLD          = 'LD';
+  StrLDMarginal  = 'Marginal LD';
+  StrPV          = 'BW';
+  StrAge         = 'Age';
+  StrP2          = 'Backfat';
+  StrTMP         = 'Lean meat';
+  StrP           = 'P';
+  StrL           = 'L';
+  StrPVV         = 'eBW';
+  StrAdLib       = 'Ad libitum';
+  StrRapport     = 'Ratio';
+  StrPDmax       = 'PDmax';
+  StrF           = 'F';
+  StrX           = 'X';
+  // Axes (TeeCharts)
+  StrAutres      = 'Others';
+  StrApport      = 'Supply';
+  StrBesoin      = 'Requirement';
+  StrBesoinMoyen = 'Requirement (average animal)';
+  StrBesoinPopulation = 'Requirement (population)';
+  StrReference   = 'Reference';
+  StrDeficit     = 'Deficiency';
+  Str35j         = 'Start';
+  Str105j        = 'End';
+  StrAANonLim    = 'Amino acids non limiting';
+  StrAAPotLim    = 'Amino acids potentially limiting';
+  StrValCal      = 'Calculated value';
+  StrValSim      = 'Simulated value';
+  StrSimul       = '%s: animal profile "%s" - feed sequence plan "%s" - feed rationing plan "%s"';
+  StrSimulComp   = 'Simulation %d: "%s"';
+  StrSimulProfil = 'Simulation %d: "%s" - animal profile "%s"';
+  StrSimulSeqAli = 'Simulation %d: "%s" - feed sequence plan "%s"';
+  StrSimulRation = 'Simulation %d: "%s" - feed rationing plan "%s"';
+  StrSimulSens   = 'Variation "%s": "%s"';
+  StrSimulNo     = 'Simulation %d';
+  StrVariation   = '%s: %1.0f%%';
+  StrRationProfil = 'Animal profile "%s"';
+  StrRationSeqAli = 'Feed sequence plan "%s"';
+  StrRationRation = 'Feed rationing plan "%s"';
+  StrDigestStd   = 'Standardized digestible';
+  // Param�tres (ComboBoxes)
+  StrSaisieManuelle = '(Manual entry)';
+  StrTotal       = 'Total';
+  StrJ           = 'd';
+  StrG           = 'g';
+  StrKg          = 'kg';
+  StrMg          = 'mg';
+  StrMm          = 'mm';
+  StrAlimentUnit = 'feed';
+  StrGMQUnit     = 'gain';
+  StrMS          = 'DM';
+  StrFrais       = 'as-fed';
+  StrLys         = 'Lys';
+  StrED          = 'DE';
+  StrEM          = 'ME';
+  StrEN          = 'NE';
+  StrMJ          = 'MJ';
+  StrUI          = 'IU';
+  StrEntretien   = 'maintenance';
+  StrGestation   = 'Gestation';
+  StrLactation   = 'Lactation';
+  StrISSF        = 'IWC';
+  StrDegC        = '�C';
+  StrMnDebout    = 'min standing';
+  // Intitul� (Labels)
+  StrSaillie     = 'Service';
+  StrMiseBas     = 'Farrowing';
+  StrSevrage     = 'Weaning';
+  StrPV4Age      = 'Proposed body weight at %d d: %3.1f kg';
+  StrAge4PV      = 'Proposed age for %3.1f kg: %d d';
+  StrModeFin     = 'Termination condition';
+  // Astuces (Hints)
+  StrED_C        = 'Digestible energy growing pigs';
+  StrED_T        = 'Digestible energy sows';
+  StrEM_C        = 'Metabolizable energy growing pigs';
+  StrEM_T        = 'Metabolizable energy sows';
+  StrEN_C        = 'Net energy growing pigs';
+  StrEN_T        = 'Net energy sows';
+  StrTyp0        = 'Type of feed not specified';
+  HintAli1Init   = 'Percentage of feed 1 in the ration at the beginning of the selected rule';
+  HintAli1Const  = 'Percentage of feed 1 in the ration during the selected rule';
+
+implementation
+
+end.
Index: Resources.res
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream
Index: Resources.res
===================================================================
--- Resources.res	(révision 2)
+++ Resources.res	(révision 3)

Modification de propriétés sur Resources.res
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: UFMatiere.pas
===================================================================
--- UFMatiere.pas	(révision 0)
+++ UFMatiere.pas	(révision 3)
@@ -0,0 +1,4742 @@
+unit UFMatiere ;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons, ComCtrls, ExtCtrls,
+  PBNumEdit, JvEnterTab, JvExControls;
+
+type
+  TFMatiere = class(TForm)
+    GBMatiere: TGroupBox;
+    CBMatiere: TComboBox;
+    SBAdd: TSpeedButton;
+    SBDel: TSpeedButton;
+    SBRename: TSpeedButton;
+    SBComment: TSpeedButton;
+    PC: TPageControl;
+    TSElem: TTabSheet;
+    TSAA: TTabSheet;
+    TSAG: TTabSheet;
+    TSMineraux: TTabSheet;
+    GBTFecale: TGroupBox;
+    GBEnergie: TGroupBox;
+    LMS: TLabel;
+    LMM: TLabel;
+    LMO: TLabel;
+    LLip: TLabel;
+    LMAT: TLabel;
+    LAmidon: TLabel;
+    LCB: TLabel;
+    LEB: TLabel;
+    LSucres: TLabel;
+    LNDF: TLabel;
+    LADF: TLabel;
+    LADL: TLabel;
+    LED: TLabel;
+    LEM: TLabel;
+    LEN: TLabel;
+    LEDsEB: TLabel;
+    LENsEM: TLabel;
+    LEVal_C: TLabel;
+    LEVal_T: TLabel;
+    CBCorrCUD: TCheckBox;
+    RBED: TRadioButton;
+    RBEM: TRadioButton;
+    RBEN: TRadioButton;
+    TSFibres: TTabSheet;
+    LParois: TLabel;
+    PBTMS: TPBNumEdit;
+    PBTMM: TPBNumEdit;
+    PBTMO: TPBNumEdit;
+    PBTLip: TPBNumEdit;
+    PBTMAT: TPBNumEdit;
+    PBTAmidon: TPBNumEdit;
+    PBTSucres: TPBNumEdit;
+    GBdFecale: TGroupBox;
+    LdFecale_C: TLabel;
+    LdFecale_T: TLabel;
+    PBdMO_C: TPBNumEdit;
+    PBdLip_C: TPBNumEdit;
+    PBdMAT_C: TPBNumEdit;
+    PBdSucres_C: TPBNumEdit;
+    PBdLip_T: TPBNumEdit;
+    PBdMAT_T: TPBNumEdit;
+    PBdAmidon_T: TPBNumEdit;
+    PBdSucres_T: TPBNumEdit;
+    GBEVal: TGroupBox;
+    BGERap: TGroupBox;
+    GBFecale: TGroupBox;
+    LERap_C: TLabel;
+    LERap_T: TLabel;
+    LCorrCUD: TLabel;
+    CBAAsMAT: TCheckBox;
+    PBEB_C: TPBNumEdit;
+    PBED_C: TPBNumEdit;
+    PBEM_C: TPBNumEdit;
+    PBEN_C: TPBNumEdit;
+    PBEDsEB_C: TPBNumEdit;
+    PBENsEM_C: TPBNumEdit;
+    PBEB_T: TPBNumEdit;
+    PBED_T: TPBNumEdit;
+    PBEM_T: TPBNumEdit;
+    PBEN_T: TPBNumEdit;
+    PBEDsEB_T: TPBNumEdit;
+    PBENsEM_T: TPBNumEdit;
+    PBCB: TPBNumEdit;
+    PBNDF: TPBNumEdit;
+    PBADF: TPBNumEdit;
+    PBADL: TPBNumEdit;
+    PBParois: TPBNumEdit;
+    LLys: TLabel;
+    LMet: TLabel;
+    LCys: TLabel;
+    LTrp: TLabel;
+    LThr: TLabel;
+    LPhe: TLabel;
+    LTyr: TLabel;
+    LLeu: TLabel;
+    LIle: TLabel;
+    LVal: TLabel;
+    LHis: TLabel;
+    LArg: TLabel;
+    PBTMAT2: TPBNumEdit;
+    PBTLys: TPBNumEdit;
+    PBTMet: TPBNumEdit;
+    PBTCys: TPBNumEdit;
+    PBTTrp: TPBNumEdit;
+    PBTThr: TPBNumEdit;
+    PBTPhe: TPBNumEdit;
+    PBTTyr: TPBNumEdit;
+    PBTLeu: TPBNumEdit;
+    PBTIle: TPBNumEdit;
+    PBTArg: TPBNumEdit;
+    PBTHis: TPBNumEdit;
+    PBTVal: TPBNumEdit;
+    LCa: TLabel;
+    LP: TLabel;
+    LZn: TLabel;
+    LCu: TLabel;
+    LMg: TLabel;
+    LCl: TLabel;
+    LK: TLabel;
+    LNa: TLabel;
+    LFe: TLabel;
+    LMn: TLabel;
+    PBC6C8C10_0: TPBNumEdit;
+    PBC12_0: TPBNumEdit;
+    PBC14_0: TPBNumEdit;
+    PBC16_0: TPBNumEdit;
+    PBC18_0: TPBNumEdit;
+    PBC20_0: TPBNumEdit;
+    PBC22_0: TPBNumEdit;
+    PBC24_0: TPBNumEdit;
+    PBC22_1: TPBNumEdit;
+    PBC22_6: TPBNumEdit;
+    PBAG: TPBNumEdit;
+    PBCa: TPBNumEdit;
+    PBP: TPBNumEdit;
+    PBCu: TPBNumEdit;
+    PBZn: TPBNumEdit;
+    PBMg: TPBNumEdit;
+    PBCl: TPBNumEdit;
+    PBK: TPBNumEdit;
+    PBNa: TPBNumEdit;
+    PBMn: TPBNumEdit;
+    PBFe: TPBNumEdit;
+    PBPhytase: TPBNumEdit;
+    PBPdigG: TPBNumEdit;
+    LPhytase: TLabel;
+    LC12: TLabel;
+    LC16: TLabel;
+    LC14: TLabel;
+    LC18: TLabel;
+    LC20: TLabel;
+    LC22: TLabel;
+    LC24: TLabel;
+    PBC16_1: TPBNumEdit;
+    PBC18_1: TPBNumEdit;
+    PBC18_2: TPBNumEdit;
+    PBC18_3: TPBNumEdit;
+    PBC18_4: TPBNumEdit;
+    PBC20_1: TPBNumEdit;
+    PBC20_4: TPBNumEdit;
+    PBC20_5: TPBNumEdit;
+    PBC22_5: TPBNumEdit;
+    LC6C8C10: TLabel;
+    LAG: TLabel;
+    LActPhyt: TLabel;
+    PBActPhytE: TPBNumEdit;
+    LCasP: TLabel;
+    PBCasP: TPBNumEdit;
+    PBdMATStd: TPBNumEdit;
+    PBdLysStd: TPBNumEdit;
+    PBdMetStd: TPBNumEdit;
+    PBdCysStd: TPBNumEdit;
+    PBdTrpStd: TPBNumEdit;
+    PBdThrStd: TPBNumEdit;
+    PBdPheStd: TPBNumEdit;
+    PBdTyrStd: TPBNumEdit;
+    PBdLeuStd: TPBNumEdit;
+    PBdIleStd: TPBNumEdit;
+    PBdValStd: TPBNumEdit;
+    PBdHisStd: TPBNumEdit;
+    PBdArgStd: TPBNumEdit;
+    LMAT2: TLabel;
+    GBTAG: TGroupBox;
+    PBProtLysStd: TPBNumEdit;
+    PBProtMetStd: TPBNumEdit;
+    PBProtCysStd: TPBNumEdit;
+    PBProtTrpStd: TPBNumEdit;
+    PBProtThrStd: TPBNumEdit;
+    PBProtPheStd: TPBNumEdit;
+    PBProtTyrStd: TPBNumEdit;
+    PBProtLeuStd: TPBNumEdit;
+    PBProtIleStd: TPBNumEdit;
+    PBProtValStd: TPBNumEdit;
+    PBProtHisStd: TPBNumEdit;
+    PBProtArgStd: TPBNumEdit;
+    GBFibres: TGroupBox;
+    PBPtot: TPBNumEdit;
+    LPdig: TLabel;
+    LPtot: TLabel;
+    GBP: TGroupBox;
+    GBMacro: TGroupBox;
+    GBOligo: TGroupBox;
+    GBTOligo: TGroupBox;
+    GBTMacro: TGroupBox;
+    LS: TLabel;
+    PBS: TPBNumEdit;
+    LBilanCA: TLabel;
+    PBBilanCA: TPBNumEdit;
+    LBilanE: TLabel;
+    PBBilanE: TPBNumEdit;
+    GBAGtot: TGroupBox;
+    GBAG0: TGroupBox;
+    GBAG1: TGroupBox;
+    GBAG2: TGroupBox;
+    GBAG3: TGroupBox;
+    GBAG4: TGroupBox;
+    GBAG5: TGroupBox;
+    GBAG6: TGroupBox;
+    LCtot: TLabel;
+    PBCtot_0: TPBNumEdit;
+    PBCtot_1: TPBNumEdit;
+    PBCtot_2: TPBNumEdit;
+    PBCtot_3: TPBNumEdit;
+    PBCtot_4: TPBNumEdit;
+    PBCtot_5: TPBNumEdit;
+    PBCtot_6: TPBNumEdit;
+    PBC24_tot: TPBNumEdit;
+    PBC22_tot: TPBNumEdit;
+    PBC20_tot: TPBNumEdit;
+    PBC18_tot: TPBNumEdit;
+    PBC16_tot: TPBNumEdit;
+    PBC14_tot: TPBNumEdit;
+    PBC12_tot: TPBNumEdit;
+    PBC6C8C10_tot: TPBNumEdit;
+    PBCtot_tot: TPBNumEdit;
+    LLip2: TLabel;
+    PBLip2: TPBNumEdit;
+    LSatur: TLabel;
+    PBSatur: TPBNumEdit;
+    LMono: TLabel;
+    PBMono: TPBNumEdit;
+    LPoly: TLabel;
+    PBPoly: TPBNumEdit;
+    LO6sO3: TLabel;
+    PBO6sO3: TPBNumEdit;
+    GBAA: TGroupBox;
+    GBTAA: TGroupBox;
+    GBdAA: TGroupBox;
+    GBProt: TGroupBox;
+    PBdMATApp: TPBNumEdit;
+    PBdLysApp: TPBNumEdit;
+    PBdMetApp: TPBNumEdit;
+    PBdCysApp: TPBNumEdit;
+    PBdTrpApp: TPBNumEdit;
+    PBdThrApp: TPBNumEdit;
+    PBdPheApp: TPBNumEdit;
+    PBdTyrApp: TPBNumEdit;
+    PBdLeuApp: TPBNumEdit;
+    PBdIleApp: TPBNumEdit;
+    PBdValApp: TPBNumEdit;
+    PBdHisApp: TPBNumEdit;
+    PBdArgApp: TPBNumEdit;
+    PBProtLysTot: TPBNumEdit;
+    PBProtMetTot: TPBNumEdit;
+    PBProtCysTot: TPBNumEdit;
+    PBProtTrpTot: TPBNumEdit;
+    PBProtThrTot: TPBNumEdit;
+    PBProtPheTot: TPBNumEdit;
+    PBProtTyrTot: TPBNumEdit;
+    PBProtLeuTot: TPBNumEdit;
+    PBProtIleTot: TPBNumEdit;
+    PBProtValTot: TPBNumEdit;
+    PBProtHisTot: TPBNumEdit;
+    PBProtArgTot: TPBNumEdit;
+    LdAAStd: TLabel;
+    LdAAApp: TLabel;
+    LProtStd: TLabel;
+    LProtTot: TLabel;
+    GBCompAA: TGroupBox;
+    GBMetCys: TGroupBox;
+    GBTrp: TGroupBox;
+    GBPheTyr: TGroupBox;
+    GBEAA: TGroupBox;
+    LTMetCys: TLabel;
+    PBTMetCys: TPBNumEdit;
+    LdMetCys: TLabel;
+    PBdMetCysStd: TPBNumEdit;
+    LProtMetCys: TLabel;
+    PBProtMetCysStd: TPBNumEdit;
+    LTPheTyr: TLabel;
+    PBTPheTyr: TPBNumEdit;
+    LdPheTyr: TLabel;
+    PBdPheTyrStd: TPBNumEdit;
+    LProtPheTyr: TLabel;
+    PBProtPheTyrStd: TPBNumEdit;
+    LTrpTot: TLabel;
+    PBTrpTot: TPBNumEdit;
+    LTrpStd: TLabel;
+    PBTrpStd: TPBNumEdit;
+    LEAATot: TLabel;
+    PBEAATot: TPBNumEdit;
+    LEAAStd: TLabel;
+    PBEAAStd: TPBNumEdit;
+    PBSe: TPBNumEdit;
+    PBI: TPBNumEdit;
+    PBMb: TPBNumEdit;
+    PBCo: TPBNumEdit;
+    LCo: TLabel;
+    LSe: TLabel;
+    LI: TLabel;
+    LMb: TLabel;
+    CBAAsLys: TCheckBox;
+    PBdMO_T: TPBNumEdit;
+    PBdAmidon_C: TPBNumEdit;
+    LBRap: TListBox;
+    LBDig: TListBox;
+    LBdCompo: TListBox;
+    LBdAA: TListBox;
+    LBTCompo: TListBox;
+    LBTAA: TListBox;
+    LBTAG: TListBox;
+    LBTMacro: TListBox;
+    LBTOligo: TListBox;
+    LBTFibres: TListBox;
+    PBPdigF: TPBNumEdit;
+    PBActPhytM: TPBNumEdit;
+    LPdigF: TLabel;
+    LActPhytM: TLabel;
+    LActPhytE: TLabel;
+    LPdigG: TLabel;
+    SBSave: TSpeedButton;
+    SBPrint: TSpeedButton;
+    PBProtMetCysTot: TPBNumEdit;
+    PBdMetCysApp: TPBNumEdit;
+    PBProtPheTyrTot: TPBNumEdit;
+    PBdPheTyrApp: TPBNumEdit;
+    LResidu: TLabel;
+    PBTResidu: TPBNumEdit;
+    PBdResidu_C: TPBNumEdit;
+    PBdResidu_T: TPBNumEdit;
+    JvEnterAsTab: TJvEnterAsTab;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormDeactivate(Sender: TObject);
+    procedure CBMatiereChange(Sender: TObject);
+    procedure SBAddClick(Sender: TObject);
+    procedure SBDelClick(Sender: TObject);
+    procedure SBRenameClick(Sender: TObject);
+    procedure SBCommentClick(Sender: TObject);
+    procedure CBCorrCUDClick(Sender: TObject);
+    procedure RBEDClick(Sender: TObject);
+    procedure RBEMClick(Sender: TObject);
+    procedure RBENClick(Sender: TObject);
+    procedure LEDClick(Sender: TObject);
+    procedure LEMClick(Sender: TObject);
+    procedure LENClick(Sender: TObject);
+    procedure LCorrCUDClick(Sender: TObject);
+    procedure CBAAsLysClick(Sender: TObject);
+    procedure PBTMSChange(Sender: TObject);
+    procedure PBTMMChange(Sender: TObject);
+    procedure PBTLipChange(Sender: TObject);
+    procedure PBTMATChange(Sender: TObject);
+    procedure PBTAmidonChange(Sender: TObject);
+    procedure PBTSucresChange(Sender: TObject);
+    procedure PBdMO_CChange(Sender: TObject);
+    procedure PBdLip_CChange(Sender: TObject);
+    procedure PBdMAT_CChange(Sender: TObject);
+    procedure PBdMO_TChange(Sender: TObject);
+    procedure PBdLip_TChange(Sender: TObject);
+    procedure PBdMAT_TChange(Sender: TObject);
+    procedure PBED_CChange(Sender: TObject);
+    procedure PBEM_CChange(Sender: TObject);
+    procedure PBEN_CChange(Sender: TObject);
+    procedure PBED_TChange(Sender: TObject);
+    procedure PBEM_TChange(Sender: TObject);
+    procedure PBEN_TChange(Sender: TObject);
+    procedure PBCBChange(Sender: TObject);
+    procedure PBTLysChange(Sender: TObject);
+    procedure PBTMetChange(Sender: TObject);
+    procedure PBTCysChange(Sender: TObject);
+    procedure PBTTrpChange(Sender: TObject);
+    procedure PBTThrChange(Sender: TObject);
+    procedure PBTPheChange(Sender: TObject);
+    procedure PBTTyrChange(Sender: TObject);
+    procedure PBTLeuChange(Sender: TObject);
+    procedure PBTIleChange(Sender: TObject);
+    procedure PBTValChange(Sender: TObject);
+    procedure PBTHisChange(Sender: TObject);
+    procedure PBTArgChange(Sender: TObject);
+    procedure PBdMATStdChange(Sender: TObject);
+    procedure PBdLysStdChange(Sender: TObject);
+    procedure PBdMetStdChange(Sender: TObject);
+    procedure PBdCysStdChange(Sender: TObject);
+    procedure PBdTrpStdChange(Sender: TObject);
+    procedure PBdThrStdChange(Sender: TObject);
+    procedure PBdPheStdChange(Sender: TObject);
+    procedure PBdTyrStdChange(Sender: TObject);
+    procedure PBdLeuStdChange(Sender: TObject);
+    procedure PBdIleStdChange(Sender: TObject);
+    procedure PBdValStdChange(Sender: TObject);
+    procedure PBdHisStdChange(Sender: TObject);
+    procedure PBdArgStdChange(Sender: TObject);
+    procedure PBC6C8C10_0Change(Sender: TObject);
+    procedure PBC12_0Change(Sender: TObject);
+    procedure PBC14_0Change(Sender: TObject);
+    procedure PBC16_0Change(Sender: TObject);
+    procedure PBC16_1Change(Sender: TObject);
+    procedure PBC18_0Change(Sender: TObject);
+    procedure PBC18_1Change(Sender: TObject);
+    procedure PBC18_2Change(Sender: TObject);
+    procedure PBC18_3Change(Sender: TObject);
+    procedure PBC18_4Change(Sender: TObject);
+    procedure PBC20_0Change(Sender: TObject);
+    procedure PBC20_1Change(Sender: TObject);
+    procedure PBC20_4Change(Sender: TObject);
+    procedure PBC20_5Change(Sender: TObject);
+    procedure PBC22_0Change(Sender: TObject);
+    procedure PBC22_1Change(Sender: TObject);
+    procedure PBC22_5Change(Sender: TObject);
+    procedure PBC22_6Change(Sender: TObject);
+    procedure PBC24_0Change(Sender: TObject);
+    procedure PBCaChange(Sender: TObject);
+    procedure PBPChange(Sender: TObject);
+    procedure PBNaChange(Sender: TObject);
+    procedure PBKChange(Sender: TObject);
+    procedure PBMgChange(Sender: TObject);
+    procedure PBClChange(Sender: TObject);
+    procedure PBSChange(Sender: TObject);
+    procedure PBCuChange(Sender: TObject);
+    procedure PBZnChange(Sender: TObject);
+    procedure PBMnChange(Sender: TObject);
+    procedure PBFeChange(Sender: TObject);
+    procedure PBSeChange(Sender: TObject);
+    procedure PBCoChange(Sender: TObject);
+    procedure PBMbChange(Sender: TObject);
+    procedure PBIChange(Sender: TObject);
+    procedure PBPdigGChange(Sender: TObject);
+    procedure PBPhytaseChange(Sender: TObject);
+    procedure PBActPhytEChange(Sender: TObject);
+    procedure PBNDFChange(Sender: TObject);
+    procedure PBADFChange(Sender: TObject);
+    procedure PBADLChange(Sender: TObject);
+    procedure PBParoisChange(Sender: TObject);
+    procedure PBAGChange(Sender: TObject);
+    procedure PBTMSExit(Sender: TObject);
+    procedure PBTMMExit(Sender: TObject);
+    procedure PBTMATExit(Sender: TObject);
+    procedure PBTLysExit(Sender: TObject);
+    procedure PBED_CExit(Sender: TObject);
+    procedure PBEM_CExit(Sender: TObject);
+    procedure PBEN_CExit(Sender: TObject);
+    procedure PBED_TExit(Sender: TObject);
+    procedure PBEM_TExit(Sender: TObject);
+    procedure PBEN_TExit(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure PBPdigFChange(Sender: TObject);
+    procedure PBActPhytMChange(Sender: TObject);
+    procedure SBSaveClick(Sender: TObject);
+    procedure SBPrintClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modified : boolean ;
+    RapMS : double ;
+    procedure Save ;
+    procedure CalculTMO ;
+    procedure CalculResidu ;
+    procedure CalculEnergie ;
+    procedure CalculDigEDCrois ;
+    procedure CalculDigEMCrois ;
+    procedure CalculDigENCrois ;
+    procedure CalculDigEDTruie ;
+    procedure CalculDigEMTruie ;
+    procedure CalculDigENTruie ;
+    procedure CalculAA ;
+    procedure CalculAG ;
+    procedure CalculMineraux ;
+    procedure AffichTFecale ;
+    procedure AffichdFecale ;
+    procedure AffichResidu ;
+    procedure AffichEnergie ;
+    procedure AffichTAA ;
+    procedure AffichdAA ;
+    procedure AffichTAG ;
+    procedure AffichTMineraux ;
+    procedure AffichTFibres ;
+  public
+    { D�clarations publiques }
+    IdxMatiere : integer ;
+    procedure AjustCaption ;
+    procedure AjustDecimals ;
+    procedure AjustEnabled ;
+  end;
+
+var
+  FMatiere: TFMatiere;
+
+implementation
+
+uses
+  Dialogs, SysUtils, gnugettext, UVariables, UStrings, UInit, UUtil, UFindRec,
+  UFWarning, UFCommentMat, UFRapportMat;
+
+{$R *.dfm}
+
+{ TFMatiere }
+
+procedure TFMatiere.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 744 + (Width - ClientWidth);
+  Width := Constraints.MinWidth ;
+  Constraints.MinHeight := 463 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+end;
+
+procedure TFMatiere.FormShow (Sender : TObject) ;
+begin
+  AjustCaption ;
+  AjustDecimals ;
+  Modified := FALSE ;
+  StringsMatiere (CBMatiere.Items, 0, TRUE, TRUE) ;
+  SBAdd.Enabled := IsComplete or (ListMatiere.Count < NumMatInraAfz + 10) ;
+  SBSave.Enabled := IsComplete or IsEducation ;
+  IdxMatiere := -1 ;
+//  CBMatiereChange (nil) ;
+end ;
+
+procedure TFMatiere.FormClose (Sender : TObject ; var Action : TCloseAction) ;
+begin
+  if Modified then Save ;
+  Action := caFree ;
+  NumWinMatiere := -1 ;
+end ;
+
+procedure TFMatiere.FormActivate (Sender : TObject) ;
+var
+  i : integer ;
+begin
+//  if IdxMatiere <> -1
+//  then
+//    PMatiere := ListMatiere[IdxMatiere] ;
+  CBMatiereChange (nil) ;
+
+  for i := 0 to PC.PageCount - 1 do
+    PC.Pages[i].Enabled := IsComplete or IsEducation or IsEvaluation ;
+end ;
+
+procedure TFMatiere.FormDeactivate (Sender : TObject) ;
+begin
+  if Modified then Save ;
+end ;
+
+procedure TFMatiere.Save ;
+var
+  s : string ;
+begin
+  Modified := FALSE ;
+  if IsComplete or IsEducation
+  then
+    if MessageDlg (Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      SaveMatiere ;
+      if not MatiereValid (PMatiere)
+      then
+        MessageDlg(Format (MsgInvalidData, [Caption, PMatiere.Nom]), mtWarning, [mbOK], 0) ;
+    end
+    else
+    begin
+      LoadMatiere ;
+      s := CBMatiere.Text ;
+      StringsMatiere (CBMatiere.Items, 0, TRUE, TRUE) ;
+      if FindIdxMatiere (s) = -1
+      then
+      begin
+        IdxMatiere := -1 ;
+        CBMatiereChange (nil) ;
+      end
+      else
+        CBMatiere.ItemIndex := CBMatiere.Items.IndexOf (s) ;
+    end ;
+end ;
+
+// Adaptation des libell�s par rapport � la configuration
+procedure TFMatiere.AjustCaption;
+begin
+  Hint := Format(_('Chemical composition (%s)'), [LBRap.Items[ConfRap]]);
+  GBTFecale.Caption := Format('%s (%s)', [_('Content'), LBTCompo.Items[ConfTCompo]]);
+  GBdFecale.Caption := Format('%s (%s)', [LBDig.Items[ConfDig], LBdCompo.Items[ConfdCompo]]);
+  GBTAA.Caption := Format('%s (%s)', [_('Content'), LBTAA.Items[ConfTAA]]);
+  GBdAA.Caption := Format('%s (%s)', [LBDig.Items[ConfDig], LBdAA.Items[ConfdAA]]);
+  GBTAG.Caption := Format('%s (%s)', [_('Content'), LBTAG.Items[ConfTAG]]);
+  GBTMacro.Caption := Format('%s (%s)', [_('Content'), LBTMacro.Items[ConfTMacro]]);
+  GBTOligo.Caption := Format('%s (%s)', [_('Content'), LBTOligo.Items[ConfTOligo]]);
+  LPtot.Caption := Format('%s (%s)', [_('Total phosphorus'), LBTMacro.Items[ConfTMacro]]);
+  LPdig.Caption := Format('%s (%s)', [_('Digestible phosphorus'), LBTMacro.Items[ConfTMacro]]);
+  GBFibres.Caption := Format('%s (%s)', [_('Content'), LBTFibres.Items[ConfTFibres]]);
+  if ConfDig = 0
+  then // CUD
+  begin
+    LdMetCys.Caption := _('Std. digestibility');
+    LdPheTyr.Caption := _('Std. digestibility');
+  end
+  else // Teneur digestible
+  begin
+    LdMetCys.Caption := _('Std. dig. content');
+    LdPheTyr.Caption := _('Std. dig. content');
+  end;
+end;
+
+// Ajustement du nombre de d�cimales en fonction de la configuration
+procedure TFMatiere.AjustDecimals;
+begin
+  Update := TRUE;
+  // Composition �l�mentaire
+  if ConfTCompo = 0
+  then // g/kg
+    PBTMS.Decimals := 1
+  else // %
+    PBTMS.Decimals := 2;
+  PBTMM.Decimals := PBTMS.Decimals;
+  PBTMO.Decimals := PBTMS.Decimals;
+  PBTLip.Decimals := PBTMS.Decimals;
+  PBTMAT.Decimals := PBTMS.Decimals;
+  PBTAmidon.Decimals := PBTMS.Decimals;
+  PBTSucres.Decimals := PBTMS.Decimals;
+  PBTResidu.Decimals := PBTMS.Decimals;
+  if (ConfDig = 0)
+  then // CUD
+    PBdMO_C.Decimals := 1
+  else // Teneur digestible
+    if ConfdCompo = 0
+    then // g/kg
+      PBdMO_C.Decimals := 1
+    else // %
+      PBdMO_C.Decimals := 2;
+  PBdLip_C.Decimals := PBdMO_C.Decimals;
+  PBdMAT_C.Decimals := PBdMO_C.Decimals;
+  PBdAmidon_C.Decimals := PBdMO_C.Decimals;
+  PBdSucres_C.Decimals := PBdMO_C.Decimals;
+  PBdResidu_C.Decimals := PBdMO_C.Decimals;
+  PBdMO_T.Decimals := PBdMO_C.Decimals;
+  PBdLip_T.Decimals := PBdMO_C.Decimals;
+  PBdMAT_T.Decimals := PBdMO_C.Decimals;
+  PBdAmidon_T.Decimals := PBdMO_C.Decimals;
+  PBdSucres_T.Decimals := PBdMO_C.Decimals;
+  PBdResidu_T.Decimals := PBdMO_C.Decimals;
+  // Acides amin�s
+  if ConfTAA = 1
+  then // %
+    PBTMAT2.Decimals := 3
+  else // %MAT ou g/kg
+    PBTMAT2.Decimals := 2;
+  PBTLys.Decimals := PBTMAT2.Decimals;
+  PBTMet.Decimals := PBTMAT2.Decimals;
+  PBTCys.Decimals := PBTMAT2.Decimals;
+  PBTTrp.Decimals := PBTMAT2.Decimals;
+  PBTThr.Decimals := PBTMAT2.Decimals;
+  PBTPhe.Decimals := PBTMAT2.Decimals;
+  PBTTyr.Decimals := PBTMAT2.Decimals;
+  PBTLeu.Decimals := PBTMAT2.Decimals;
+  PBTIle.Decimals := PBTMAT2.Decimals;
+  PBTVal.Decimals := PBTMAT2.Decimals;
+  PBTHis.Decimals := PBTMAT2.Decimals;
+  PBTArg.Decimals := PBTMAT2.Decimals;
+  PBTMetCys.Decimals := PBTMAT2.Decimals;
+  PBTPheTyr.Decimals := PBTMAT2.Decimals;
+  if ConfDig = 0
+  then // CUD
+    PBdMATStd.Decimals := 1
+  else // Teneur digestible
+    if ConfdAA = 0
+    then // g/kg
+      PBdMATStd.Decimals := 2
+    else // %
+      PBdMATStd.Decimals := 3;
+  PBdLysStd.Decimals := PBdMATStd.Decimals;
+  PBdMetStd.Decimals := PBdMATStd.Decimals;
+  PBdCysStd.Decimals := PBdMATStd.Decimals;
+  PBdTrpStd.Decimals := PBdMATStd.Decimals;
+  PBdThrStd.Decimals := PBdMATStd.Decimals;
+  PBdPheStd.Decimals := PBdMATStd.Decimals;
+  PBdTyrStd.Decimals := PBdMATStd.Decimals;
+  PBdLeuStd.Decimals := PBdMATStd.Decimals;
+  PBdIleStd.Decimals := PBdMATStd.Decimals;
+  PBdValStd.Decimals := PBdMATStd.Decimals;
+  PBdHisStd.Decimals := PBdMATStd.Decimals;
+  PBdArgStd.Decimals := PBdMATStd.Decimals;
+  PBdMATApp.Decimals := PBdMATStd.Decimals;
+  PBdLysApp.Decimals := PBdMATStd.Decimals;
+  PBdMetApp.Decimals := PBdMATStd.Decimals;
+  PBdCysApp.Decimals := PBdMATStd.Decimals;
+  PBdTrpApp.Decimals := PBdMATStd.Decimals;
+  PBdThrApp.Decimals := PBdMATStd.Decimals;
+  PBdPheApp.Decimals := PBdMATStd.Decimals;
+  PBdTyrApp.Decimals := PBdMATStd.Decimals;
+  PBdLeuApp.Decimals := PBdMATStd.Decimals;
+  PBdIleApp.Decimals := PBdMATStd.Decimals;
+  PBdValApp.Decimals := PBdMATStd.Decimals;
+  PBdHisApp.Decimals := PBdMATStd.Decimals;
+  PBdArgApp.Decimals := PBdMATStd.Decimals;
+  PBdMetCysStd.Decimals := PBdMATStd.Decimals;
+  PBdMetCysApp.Decimals := PBdMATStd.Decimals;
+  PBdPheTyrStd.Decimals := PBdMATStd.Decimals;
+  PBdPheTyrApp.Decimals := PBdMATStd.Decimals;
+  // Acides gras
+  case ConfTAG of
+    0: // g/kg
+      PBC6C8C10_0.Decimals := 2;
+    1: // %
+      PBC6C8C10_0.Decimals := 3;
+    else // % acides gras
+      PBC6C8C10_0.Decimals := 1;
+  end;
+  PBC12_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC14_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC16_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC16_1.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_1.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_2.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_3.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_4.Decimals := PBC6C8C10_0.Decimals;
+  PBC20_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC20_1.Decimals := PBC6C8C10_0.Decimals;
+  PBC20_4.Decimals := PBC6C8C10_0.Decimals;
+  PBC20_5.Decimals := PBC6C8C10_0.Decimals;
+  PBC22_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC22_1.Decimals := PBC6C8C10_0.Decimals;
+  PBC22_5.Decimals := PBC6C8C10_0.Decimals;
+  PBC22_6.Decimals := PBC6C8C10_0.Decimals;
+  PBC24_0.Decimals := PBC6C8C10_0.Decimals;
+  PBC6C8C10_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC12_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC14_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC16_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC18_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC20_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC22_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBC24_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_tot.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_0.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_1.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_2.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_3.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_4.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_5.Decimals := PBC6C8C10_0.Decimals;
+  PBCtot_6.Decimals := PBC6C8C10_0.Decimals;
+  // Min�raux
+  if ConfTMacro = 0
+  then // g/kg
+    PBCa.Decimals := 2
+  else // %
+    PBCa.Decimals := 3;
+  PBP.Decimals := PBCa.Decimals;
+  PBNa.Decimals := PBCa.Decimals;
+  PBK.Decimals := PBCa.Decimals;
+  PBMg.Decimals := PBCa.Decimals;
+  PBCl.Decimals := PBCa.Decimals;
+  PBS.Decimals := PBCa.Decimals;
+  if ConfTOligo = 0
+  then // mg/kg
+    PBCu.Decimals := 2
+  else // %
+    PBCu.Decimals := 6;
+  PBZn.Decimals := PBCu.Decimals;
+  PBMn.Decimals := PBCu.Decimals;
+  PBFe.Decimals := PBCu.Decimals;
+  PBSe.Decimals := PBCu.Decimals;
+  PBCo.Decimals := PBCu.Decimals;
+  PBMb.Decimals := PBCu.Decimals;
+  PBI.Decimals := PBCu.Decimals;
+  PBPtot.Decimals := PBCa.Decimals;
+  PBPdigG.Decimals := PBCa.Decimals;
+  PBPdigF.Decimals := PBCa.Decimals;
+  // Fibres
+  if ConfTFibres = 0
+  then // g/kg
+    PBCB.Decimals := 1
+  else // %
+    PBCB.Decimals := 2;
+  PBNDF.Decimals := PBCB.Decimals;
+  PBADF.Decimals := PBCB.Decimals;
+  PBADL.Decimals := PBCB.Decimals;
+  PBParois.Decimals := PBCB.Decimals;
+  Update := FALSE;
+end;
+
+// Activation (ou non) des champs de saisie
+procedure TFMatiere.AjustEnabled ;
+begin
+  if IdxMatiere < NumMatInraAfz
+  then
+    SBDel.Enabled := FALSE
+  else
+    SBDel.Enabled := TRUE ;
+  SBRename.Enabled := SBDel.Enabled ;
+  SBComment.Enabled := SBDel.Enabled ;
+  SBSave.Enabled := SBDel.Enabled ;
+  if IdxMatiere = -1
+  then
+    SBPrint.Enabled := FALSE
+  else
+    SBPrint.Enabled := TRUE ;
+  if PC.Visible
+  then
+  begin
+    PBTMS.Enabled := SBDel.Enabled ;
+    // Composition �l�mentaire
+    if (PMatiere.CC.MS = 0) or (PMatiere.Num < 0)
+    then
+      PBTMM.Enabled := FALSE
+    else
+      PBTMM.Enabled := TRUE ;
+    PBTLip.Enabled := PBTMM.Enabled ;
+    PBTMAT.Enabled := PBTMM.Enabled ;
+    PBTAmidon.Enabled := PBTMM.Enabled ;
+    PBTSucres.Enabled := PBTMM.Enabled ;
+    CBAAsMAT.Enabled := PBTMM.Enabled ;
+    CBCorrCUD.Enabled := PBTMM.Enabled ;
+    PBdMO_C.Enabled := CBCorrCUD.Enabled and not CBCorrCUD.Checked ;
+    PBdLip_C.Enabled := PBdMO_C.Enabled ;
+    PBdMAT_C.Enabled := PBdMO_C.Enabled ;
+    PBdMO_T.Enabled := PBdMO_C.Enabled ;
+    PBdLip_T.Enabled := PBdLip_C.Enabled ;
+    PBdMAT_T.Enabled := PBdMAT_C.Enabled ;
+    RBED.Enabled := CBCorrCUD.Enabled and CBCorrCUD.Checked ;
+    RBEM.Enabled := RBED.Enabled ;
+    RBEN.Enabled := RBED.Enabled ;
+    PBED_C.Enabled := RBED.Enabled and RBED.Checked ;
+    PBED_T.Enabled := PBED_C.Enabled ;
+    PBEM_C.Enabled := RBEM.Enabled and RBEM.Checked ;
+    PBEM_T.Enabled := PBEM_C.Enabled ;
+    PBEN_C.Enabled := RBEN.Enabled and RBEN.Checked ;
+    PBEN_T.Enabled := PBEN_C.Enabled ;
+    // Acides amin�s
+    PBTLys.Enabled := PBTMM.Enabled ;
+    PBTMet.Enabled := PBTMM.Enabled and not CBAAsLys.Checked ;
+    PBTCys.Enabled := PBTMet.Enabled ;
+    PBTTrp.Enabled := PBTMet.Enabled ;
+    PBTThr.Enabled := PBTMet.Enabled ;
+    PBTPhe.Enabled := PBTMet.Enabled ;
+    PBTTyr.Enabled := PBTMet.Enabled ;
+    PBTLeu.Enabled := PBTMet.Enabled ;
+    PBTIle.Enabled := PBTMet.Enabled ;
+    PBTVal.Enabled := PBTMet.Enabled ;
+    PBTHis.Enabled := PBTMet.Enabled ;
+    PBTArg.Enabled := PBTMet.Enabled ;
+    PBdMATStd.Enabled := PBTMM.Enabled ;
+    PBdLysStd.Enabled := PBTMM.Enabled ;
+    PBdMetStd.Enabled := PBTMM.Enabled ;
+    PBdCysStd.Enabled := PBTMM.Enabled ;
+    PBdTrpStd.Enabled := PBTMM.Enabled ;
+    PBdThrStd.Enabled := PBTMM.Enabled ;
+    PBdPheStd.Enabled := PBTMM.Enabled ;
+    PBdTyrStd.Enabled := PBTMM.Enabled ;
+    PBdLeuStd.Enabled := PBTMM.Enabled ;
+    PBdIleStd.Enabled := PBTMM.Enabled ;
+    PBdValStd.Enabled := PBTMM.Enabled ;
+    PBdHisStd.Enabled := PBTMM.Enabled ;
+    PBdArgStd.Enabled := PBTMM.Enabled ;
+    CBAAsLys.Enabled := PBTMM.Enabled ;
+    // Acides gras
+    PBC6C8C10_0.Enabled := PBTMM.Enabled ;
+    PBC12_0.Enabled := PBTMM.Enabled ;
+    PBC14_0.Enabled := PBTMM.Enabled ;
+    PBC16_0.Enabled := PBTMM.Enabled ;
+    PBC16_1.Enabled := PBTMM.Enabled ;
+    PBC18_0.Enabled := PBTMM.Enabled ;
+    PBC18_1.Enabled := PBTMM.Enabled ;
+    PBC18_2.Enabled := PBTMM.Enabled ;
+    PBC18_3.Enabled := PBTMM.Enabled ;
+    PBC18_4.Enabled := PBTMM.Enabled ;
+    PBC20_0.Enabled := PBTMM.Enabled ;
+    PBC20_1.Enabled := PBTMM.Enabled ;
+    PBC20_4.Enabled := PBTMM.Enabled ;
+    PBC20_5.Enabled := PBTMM.Enabled ;
+    PBC22_0.Enabled := PBTMM.Enabled ;
+    PBC22_1.Enabled := PBTMM.Enabled ;
+    PBC22_5.Enabled := PBTMM.Enabled ;
+    PBC22_6.Enabled := PBTMM.Enabled ;
+    PBC24_0.Enabled := PBTMM.Enabled ;
+    PBAG.Enabled := PBTMM.Enabled ;
+    // Min�raux
+    PBCa.Enabled := PBTMM.Enabled ;
+    PBP.Enabled := PBTMM.Enabled ;
+    PBNa.Enabled := PBTMM.Enabled ;
+    PBK.Enabled := PBTMM.Enabled ;
+    PBMg.Enabled := PBTMM.Enabled ;
+    PBCl.Enabled := PBTMM.Enabled ;
+    PBS.Enabled := PBTMM.Enabled ;
+    PBCu.Enabled := PBTMM.Enabled ;
+    PBZn.Enabled := PBTMM.Enabled ;
+    PBMn.Enabled := PBTMM.Enabled ;
+    PBFe.Enabled := PBTMM.Enabled ;
+    PBSe.Enabled := PBTMM.Enabled ;
+    PBCo.Enabled := PBTMM.Enabled ;
+    PBMb.Enabled := PBTMM.Enabled ;
+    PBI.Enabled := PBTMM.Enabled ;
+    PBPdigG.Enabled := PBTMM.Enabled ;
+    PBPdigF.Enabled := PBTMM.Enabled ;
+    PBPhytase.Enabled := PBTMM.Enabled ;
+    PBActPhytE.Enabled := PBTMM.Enabled ;
+    PBActPhytM.Enabled := PBTMM.Enabled ;
+    // Fibres
+    PBCB.Enabled := PBTMM.Enabled ;
+    PBNDF.Enabled := PBTMM.Enabled ;
+    PBADF.Enabled := PBTMM.Enabled ;
+    PBADL.Enabled := PBTMM.Enabled ;
+    PBParois.Enabled := PBTMM.Enabled ;
+  end ;
+end ;
+
+procedure TFMatiere.CBMatiereChange (Sender : TObject) ;
+begin
+  if (IdxMatiere <> -1)
+  and ((PMatiere.Num > 0) and (CBMatiere.Text <> PMatiere.Nom)
+    or (PMatiere.Num < 0) and (CBMatiere.Text <> dgettext('InraAfz', PMatiere.Nom)))
+  then
+    if Modified then Save ;
+  IdxMatiere := FindIdxMatiere (CBMatiere.Text) ;
+  if IdxMatiere = -1
+  then // Pas d'enregistrement
+  begin
+    CBMatiere.Repaint ;
+    PC.ActivePageIndex := 0 ;
+    PC.Visible := FALSE ;
+    AjustEnabled ;
+  end
+  else // Affichage de l'enregistrement
+  begin
+    PC.Visible := TRUE ;
+    PMatiere := ListMatiere[IdxMatiere] ;
+    with PMatiere^ do
+//      CBMatiere.Hint := Memo ;
+      if Num > 0
+      then // Mati�re premi�re utilisateur
+        CBMatiere.Hint := Memo
+      else // Mati�re premi�re INRA-AFZ (traduction)
+        if Memo <> ''
+        then
+          CBMatiere.Hint := dgettext('InraAfz', Memo)
+        else
+          CBMatiere.Hint := '';
+    with PMatiere.CC do
+      if ConfRap = 0
+      then // sur frais
+        RapMS := MS / 1000
+      else // sur mati�re s�che
+        RapMS := 1 ;
+    AjustEnabled ;
+    Update := TRUE ;
+    // Certaines donn�es calcul�es sont stock�es...
+    // On les recalcule tout de m�me avant de les afficher !
+    CalculTMO ;
+    CalculResidu ;
+    CalculEnergie ;
+    // Composition �l�mentaire
+    AffichTFecale ;
+    AffichdFecale ;
+    AffichResidu ;
+    AffichEnergie ;
+    // Acides amin�s
+    AffichTAA ;
+    AffichdAA ;
+    CalculAA ;
+    // Acides gras
+    with PMatiere.CC do
+      PBLip2.AsFloat := Lip * RapMS ;
+    with PMatiere.CC do
+      PBAG.AsFloat := AGsLip ;
+    AffichTAG ;
+    CalculAG ;
+    // Min�raux
+    AffichTMineraux ;
+    CalculMineraux ;
+    // Fibres
+    AffichTFibres ;
+    // Champs calcul�s
+    Update := FALSE ;
+    CBAAsMAT.Checked := TRUE ;
+    CBCorrCUD.Checked := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.SBAddClick (Sender : TObject) ;
+var
+  i, n, q : integer ;
+  s : string ;
+  ok : boolean ;
+  PBackup : PRecMatiere ;
+begin
+  if Modified then Save ;
+  if IdxMatiere = -1
+  then
+    q := mrNo
+  else
+    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
+  // saisie du nouveau nom
+  s := '' ;
+  repeat
+    if InputQuery (FMatiere.Caption, MsgName, s)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 35
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [35]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 35) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListMatiere.Count) do
+          begin
+            PMatiere := ListMatiere[i] ;
+            if PMatiere.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      if (IdxMatiere <> -1)
+      then
+        PMatiere := ListMatiere[IdxMatiere] ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  if s <> ''
+  then // Cr�ation du nouvel enregistrement
+  begin
+    // recherche du premier num�ro libre
+    n := 0 ;
+    repeat
+      Inc (n) ;
+      ok := TRUE ;
+      i := NumMatInraAfz ;
+      while ok and (i < ListMatiere.Count) do
+      begin
+        PMatiere := ListMatiere[i] ;
+        if PMatiere.Num = n
+        then
+          ok := FALSE
+        else
+          Inc (i) ;
+      end ;
+    until ok ;
+    New (PMatiere) ;
+    with PMatiere^ do
+    begin
+      Nom := s ;
+      Num := n ;
+      if q = mrYes
+      then
+      begin
+        PBackup := ListMatiere[IdxMatiere] ;
+        Memo := PBackup.Memo ;
+        Typ := PBackup.Typ ;
+        CC := PBackup.CC ;
+        for i := 0 to 12 do
+          AAtotal[i] := PBackup.AATotal[i] ;
+        for i := 0 to 12 do
+          CUDAA[i] := PBackup.CUDAA[i] ;
+      end
+      else
+      begin
+        Memo := '' ;
+        Typ := 0 ;
+        CC := CCVide ;
+        for i := 0 to 12 do
+          AAtotal[i] := 0 ;
+        for i := 0 to 12 do
+          CUDAA[i] := 0 ;
+      end ;
+    end ;
+    ListMatiere.Add (PMatiere) ;
+    CBMatiere.Items.Add (PMatiere.Nom) ;
+    CBMatiere.ItemIndex := CBMatiere.Items.IndexOf (PMatiere.Nom) ;
+    CBMatiereChange (nil) ;
+    Modified := TRUE ;
+    SBAdd.Enabled := IsComplete or (ListMatiere.Count < NumMatInraAfz + 10) ;
+    SBCommentClick (nil) ;
+  end ;
+end ;
+
+procedure TFMatiere.SBDelClick (Sender : TObject) ;
+begin
+  if MatiereUsed (PMatiere.Num)
+  then // Enregistrement utilis�
+    MessageDlg (MsgDelErr, mtWarning, [mbOk], 0)
+  else // Suppression de l'enregistrement
+    if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+    begin
+      Dispose (PMatiere) ;
+      ListMatiere.Delete (IdxMatiere) ;
+      SaveMatiere ; // Sauvegarde !
+      Modified := FALSE ;
+      CBMatiere.DeleteSelected ;
+      IdxMatiere := -1 ;
+      CBMatiere.ItemIndex := -1 ;
+      CBMatiereChange (nil) ;
+      SBAdd.Enabled := IsComplete or (ListMatiere.Count < NumMatInraAfz + 10) ;
+    end ;
+end ;
+
+procedure TFMatiere.SBRenameClick (Sender : TObject) ;
+var
+  i : integer ;
+  s : string ;
+  ok : boolean ;
+begin
+  // Saisie du nouveau nom
+  s := CBMatiere.Text ;
+  repeat
+    if InputQuery (FMatiere.Caption, MsgRename, s) and (s <> CBMatiere.Text)
+    then // V�rification du nom
+    begin
+      s := Trim (s) ; // Suppression des espaces au d�but et � la fin
+      if s = ''
+      then // Pas de nom
+      begin
+        ok := FALSE ;
+        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
+      end
+      else
+        if Length (s) > 35
+        then // Nom trop long
+        begin
+          ok := FALSE ;
+          MessageDlg (Format (MsgNameTooLarge, [35]), mtWarning, [mbOk], 0) ;
+          s := Copy (s, 1, 35) ;
+        end
+        else
+        begin
+          ok := TRUE ;
+          i := 0 ;
+          while ok and (i < ListMatiere.Count) do
+          begin
+            PMatiere := ListMatiere[i] ;
+            if PMatiere.Nom = s
+            then // Nom d�j� utilis�
+            begin
+              ok := FALSE ;
+              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
+            end
+            else
+              Inc (i) ;
+          end ;
+        end ;
+    end
+    else // Annulation
+    begin
+      s := '' ;
+      ok := TRUE ;
+    end ;
+  until ok ;
+  PMatiere := ListMatiere[IdxMatiere] ;
+  if s <> ''
+  then // Renommer l'enregistrement
+  begin
+    PMatiere.Nom := s ;
+    Modified := TRUE ;
+    StringsMatiere (CBMatiere.Items, 0, TRUE, TRUE) ;
+    CBMatiere.ItemIndex := CBMatiere.Items.IndexOf (s) ;
+  end ;
+end ;
+
+procedure TFMatiere.SBCommentClick (Sender : TObject) ;
+begin
+  // Saisie du commentaire
+  FCommentMat := TFCommentMat.Create (Self) ;
+  with FCommentMat do
+  begin
+    Memo.Text := PMatiere.Memo ;
+    CBType.ItemIndex := PMatiere.Typ ;
+    if ShowModal = mrOk
+    then // Commenter l'enregistrement
+    begin
+      PMatiere.Memo := Memo.Text ;
+      PMatiere.Typ := CBType.ItemIndex ;
+      Modified := TRUE ;
+      CBMatiere.Hint := PMatiere.Memo ;
+    end ;
+    Release ;
+  end ;
+end ;
+
+procedure TFMatiere.SBSaveClick (Sender : TObject) ;
+begin
+  SaveMatiere ;
+  if not MatiereValid (PMatiere)
+  then
+    MessageDlg(Format (MsgInvalidData, [Caption, PMatiere.Nom]), mtWarning, [mbOK], 0) ;
+  Modified := FALSE ;
+end ;
+
+procedure TFMatiere.SBPrintClick (Sender : TObject) ;
+begin
+  FRapportMat := TFRapportMat.Create (Self) ;
+  FRapportMat.ShowModal ;
+  FRapportMat.Release ;
+end ;
+
+////////////////////////////////////////////////////////////////////////////////
+// Composition �l�mentaire
+////////////////////////////////////////////////////////////////////////////////
+
+// Mati�re organique = Mati�re s�che - Mati�res min�rales
+procedure TFMatiere.CalculTMO ;
+begin
+  with PMatiere.CC do
+    MO := 1000 - MM ;
+  // Affichage de la valeur
+  if ConfTCompo = 0
+  then // g/kg
+    with PMatiere.CC do
+      PBTMO.AsFloat := MO * RapMS
+  else // %
+    with PMatiere.CC do
+      PBTMO.AsFloat := MO / 1000 * 100 * RapMS ;
+end ;
+
+procedure TFMatiere.CalculResidu ;
+begin
+  with PMatiere.CC do
+  begin
+    // R�sidu = Mati�re s�che - (Mati�re min�rale + Mati�res azot�es + Mati�res grasses + Amidon + Sucres + Cellulose brute)
+    if MM + MAT + Lip + Amidon + Sucres + CB > 1000
+    then
+      Residu := 0
+    else
+      Residu := 1000 - (MM + MAT + Lip + Amidon + Sucres + CB) ;
+    // CUD R�sidu
+    if CB + Residu > 0
+    then
+    begin
+      dResidu_C := (MO * dMO_C - (MAT * dMAT_C + Lip * dLip_C + Amidon * 100 + Sucres * 100)) / (CB + Residu) ;
+      dResidu_T := (MO * dMO_T - (MAT * dMAT_T + Lip * dLip_T + Amidon * 100 + Sucres * 100)) / (CB + Residu) ;
+    end
+    else
+    begin
+      dResidu_C := 0 ;
+      dResidu_T := 0 ;
+    end ;
+    // CUD Cellulose brute = CUD R�sidu
+    dCB_C := dResidu_C ;
+    dCB_T := dResidu_T ;
+  end ;
+end ;
+
+procedure TFMatiere.AffichResidu ;
+begin
+  with PMatiere.CC do
+  begin
+    // Teneur
+    if ConfTCompo = 0
+    then // g/kg
+      PBTResidu.AsFloat := (Residu + CB) * RapMS
+    else // %
+      PBTResidu.AsFloat := (Residu + CB) / 1000 * 100 * RapMS ;
+    // Digestibilit�
+    if ConfDig = 0
+    then // CUD
+    begin
+      // Croissance
+      PBdResidu_C.AsFloat := dResidu_C ;
+      // Truie
+      PBdResidu_T.AsFloat := dResidu_T ;
+    end
+    else // Teneur digestible
+      if ConfdCompo = 0
+      then // g/kg
+      begin
+        // Croissance
+        PBdResidu_C.AsFloat := (Residu + CB) * dResidu_C / 100 * RapMS ;
+        // Truie
+        PBdResidu_T.AsFloat := (Residu + CB) * dResidu_T / 100 * RapMS ;
+      end
+      else // %
+      begin
+        // Croissance
+        PBdResidu_C.AsFloat := (Residu + CB) / 1000 * dResidu_C * RapMS ;
+        // Truie
+        PBdResidu_T.AsFloat := (Residu + CB) / 1000 * dResidu_T * RapMS ;
+      end ;
+  end ;
+end ;
+
+// Affichage de la teneur en fonction de la configuration
+procedure TFMatiere.AffichTFecale ;
+begin
+  if ConfTCompo = 0
+  then // g/kg
+    with PMatiere.CC do
+    begin
+      if ActiveControl <> PBTMS
+      then
+        PBTMS.AsFloat := MS ;
+      PBTMM.AsFloat := MM * RapMS ;
+      PBTMO.AsFloat := MO * RapMS ;
+      PBTLip.AsFloat := Lip * RapMS ;
+      PBTMAT.AsFloat := MAT * RapMS ;
+      PBTAmidon.AsFloat := Amidon * RapMS ;
+      PBTSucres.AsFloat := Sucres * RapMS ;
+    end
+  else // %
+    with PMatiere.CC do
+    begin
+      if ActiveControl <> PBTMS
+      then
+        PBTMS.AsFloat := MS / 1000 * 100 ;
+      PBTMM.AsFloat := MM / 1000 * 100 * RapMS ;
+      PBTMO.AsFloat := MO / 1000 * 100 * RapMS ;
+      PBTLip.AsFloat := Lip / 1000 * 100 * RapMS ;
+      PBTMAT.AsFloat := MAT / 1000 * 100 * RapMS ;
+      PBTAmidon.AsFloat := Amidon / 1000 * 100 * RapMS ;
+      PBTSucres.AsFloat := Sucres / 1000 * 100 * RapMS ;
+    end ;
+{
+  // Hint (temporaire)
+  with PMatiere.CC do
+  begin
+    PBTMS.Hint := FloatToStr(MS);
+    PBTMM.Hint := FloatToStr(MM * RapMS);
+    PBTLip.Hint := FloatToStr(Lip * RapMS);
+    PBTMAT.Hint := FloatToStr(MAT * RapMS);
+    PBTAmidon.Hint := FloatToStr(Amidon * RapMS);
+    PBTSucres.Hint := FloatToStr(Sucres * RapMS);
+  end;
+}
+end ;
+
+// Affichage de la digestibilit� f�cale en fonction de la configuration
+procedure TFMatiere.AffichdFecale ;
+begin
+  if ConfDig = 0
+  then // CUD
+    with PMatiere.CC do
+    begin
+      // Croissance
+      PBdMO_C.AsFloat := dMO_C ;
+      PBdLip_C.AsFloat := dLip_C ;
+      PBdMAT_C.AsFloat := dMAT_C ;
+      PBdAmidon_C.AsFloat := 100 ; // CUD Amidon = 100 %
+      PBdSucres_C.AsFloat := 100 ; // CUD Sucres = 100 %
+      // Truie
+      PBdMO_T.AsFloat := dMO_T ;
+      PBdLip_T.AsFloat := dLip_T ;
+      PBdMAT_T.AsFloat := dMAT_T ;
+      PBdAmidon_T.AsFloat := 100 ; // CUD Amidon = 100 %
+      PBdSucres_T.AsFloat := 100 ; // CUD Sucres = 100 %
+    end
+  else // Teneur digestible
+    if ConfdCompo = 0
+    then // g/kg
+      with PMatiere.CC do
+      begin
+        // Croissance
+        PBdMO_C.AsFloat := MO * dMO_C / 100 * RapMS ;
+        PBdLip_C.AsFloat := Lip * dLip_C / 100 * RapMS ;
+        PBdMAT_C.AsFloat := MAT * dMAT_C / 100 * RapMS ;
+        PBdAmidon_C.AsFloat := Amidon * RapMS ;
+        PBdSucres_C.AsFloat := Sucres * RapMS ;
+        // Truie
+        PBdMO_T.AsFloat := MO * dMO_T / 100 * RapMS ;
+        PBdLip_T.AsFloat := Lip * dLip_T / 100 * RapMS ;
+        PBdMAT_T.AsFloat := MAT * dMAT_T / 100 * RapMS ;
+        PBdAmidon_T.AsFloat := Amidon * RapMS ;
+        PBdSucres_T.AsFloat := Sucres * RapMS ;
+      end
+    else // %
+      with PMatiere.CC do
+      begin
+        // Croissance
+        PBdMO_C.AsFloat := MO / 1000 * dMO_C * RapMS ;
+        PBdLip_C.AsFloat := Lip / 1000 * dLip_C * RapMS ;
+        PBdMAT_C.AsFloat := MAT / 1000 * dMAT_C * RapMS ;
+        PBdAmidon_C.AsFloat := Amidon / 1000 * 100 * RapMS ;
+        PBdSucres_C.AsFloat := Sucres / 1000 * 100 * RapMS ;
+        // Truie
+        PBdMO_T.AsFloat := MO / 1000 * dMO_T * RapMS ;
+        PBdLip_T.AsFloat := Lip / 1000 * dLip_T * RapMS ;
+        PBdMAT_T.AsFloat := MAT / 1000 * dMAT_T * RapMS ;
+        PBdAmidon_T.AsFloat := Amidon / 1000 * 100 * RapMS ;
+        PBdSucres_T.AsFloat := Sucres / 1000 * 100 * RapMS ;
+      end ;
+{
+  // Hint (temporaire)
+  with PMatiere.CC do
+  begin
+    PBdMO_C.Hint := FloatToStr(dMO_C);
+    PBdLip_C.Hint := FloatToStr(dLip_C);
+    PBdMAT_C.Hint := FloatToStr(dMAT_C);
+    PBdMO_T.Hint := FloatToStr(dMO_T);
+    PBdLip_T.Hint := FloatToStr(dLip_T);
+    PBdMAT_T.Hint := FloatToStr(dMAT_T);
+  end;
+}
+end ;
+
+procedure TFMatiere.CalculEnergie ;
+begin
+  with PMatiere.CC do
+  begin
+{
+    EB := (22.64 * MAT + 38.76 * Lip + 17.54 * Amidon + 16.71 * Sucres + 18.58 * (Residu + CB)) / 1000 ;
+    ED_C := (23.25 * MAT * dMAT_C / 100 + 38.73 * Lip * dLip_C / 100 + 17.45 * Amidon + 16.77 * Sucres + 16.68 * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    ED_T := (23.25 * MAT * dMAT_T / 100 + 38.73 * Lip * dLip_T / 100 + 17.45 * Amidon + 16.77 * Sucres + 16.68 * (Residu + CB) * dResidu_T / 100) / 1000 ;
+    EM_C := (20.40 * MAT * dMAT_C / 100 + 39.28 * Lip * dLip_C / 100 + 17.45 * Amidon + 16.47 * Sucres + 15.45 * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    EM_T := (20.40 * MAT * dMAT_T / 100 + 39.28 * Lip * dLip_T / 100 + 17.45 * Amidon + 16.47 * Sucres + 15.45 * (Residu + CB) * dResidu_T / 100) / 1000 ;
+    EN_C := (12.08 * MAT * dMAT_C / 100 + 35.01 * Lip * dLip_C / 100 + 14.32 * Amidon + 11.94 * Sucres + 8.64 * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    EN_T := (12.08 * MAT * dMAT_T / 100 + 35.01 * Lip * dLip_T / 100 + 14.32 * Amidon + 11.94 * Sucres + 8.64 * (Residu + CB) * dResidu_T / 100) / 1000 ;
+}
+    EB := (ValEnergie[1, 1] * MAT + ValEnergie[2, 1] * Lip
+      + ValEnergie[3, 1] * Amidon + ValEnergie[4, 1] * Sucres
+      + ValEnergie[6, 1] * (Residu + CB)) / 1000 ;
+    ED_C := (ValEnergie[1, 2] * MAT * dMAT_C / 100
+      + ValEnergie[2, 2] * Lip * dLip_C / 100
+      + ValEnergie[3, 2] * Amidon + ValEnergie[4, 2] * Sucres
+      + ValEnergie[6, 2] * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    ED_T := (ValEnergie[1, 2] * MAT * dMAT_T / 100
+      + ValEnergie[2, 2] * Lip * dLip_T / 100
+      + ValEnergie[3, 2] * Amidon + ValEnergie[4, 2] * Sucres
+      + ValEnergie[6, 2] * (Residu + CB) * dResidu_T / 100) / 1000 ;
+    EM_C := (ValEnergie[1, 3] * MAT * dMAT_C / 100
+      + ValEnergie[2, 3] * Lip * dLip_C / 100
+      + ValEnergie[3, 3] * Amidon + ValEnergie[4, 3] * Sucres
+      + ValEnergie[6, 3] * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    EM_T := (ValEnergie[1, 3] * MAT * dMAT_T / 100
+      + ValEnergie[2, 3] * Lip * dLip_T / 100
+      + ValEnergie[3, 3] * Amidon + ValEnergie[4, 3] * Sucres
+      + ValEnergie[6, 3] * (Residu + CB) * dResidu_T / 100) / 1000 ;
+    EN_C := (ValEnergie[1, 6] * MAT * dMAT_C / 100
+      + ValEnergie[2, 6] * Lip * dLip_C / 100
+      + ValEnergie[3, 6] * Amidon + ValEnergie[4, 6] * Sucres
+      + ValEnergie[6, 6] * (Residu + CB) * dResidu_C / 100) / 1000 ;
+    EN_T := (ValEnergie[1, 6] * MAT * dMAT_T / 100
+      + ValEnergie[2, 6] * Lip * dLip_T / 100
+      + ValEnergie[3, 6] * Amidon + ValEnergie[4, 6] * Sucres
+      + ValEnergie[6, 6] * (Residu + CB) * dResidu_T / 100) / 1000 ;
+  end ;
+end ;
+
+procedure TFMatiere.AffichEnergie ;
+begin
+  with PMatiere.CC do
+  begin
+    // Croissance
+    PBEB_C.AsFloat := EB * RapMS ;
+    if ActiveControl <> PBED_C
+    then
+      PBED_C.AsFloat := ED_C * RapMS ;
+    if ActiveControl <> PBEM_C
+    then
+      PBEM_C.AsFloat := EM_C * RapMS ;
+    if ActiveControl <> PBEN_C
+    then
+      PBEN_C.AsFloat := EN_C * RapMS ;
+    // Truie
+    PBEB_T.AsFloat := EB * RapMS ;
+    if ActiveControl <> PBED_T
+    then
+      PBED_T.AsFloat := ED_T * RapMS ;
+    if ActiveControl <> PBEM_T
+    then
+      PBEM_T.AsFloat := EM_T * RapMS ;
+    if ActiveControl <> PBEN_T
+    then
+      PBEN_T.AsFloat := EN_T * RapMS ;
+    // ED / EB
+    if EB = 0
+    then
+    begin
+      PBEDsEB_C.Text := '' ;
+      PBEDsEB_T.Text := '' ;
+    end
+    else
+    begin
+      PBEDsEB_C.AsFloat := ED_C / EB * 100 ;
+      PBEDsEB_T.AsFloat := ED_T / EB * 100 ;
+    end ;
+    // EN / EM
+    if EM_C = 0
+    then
+      PBENsEM_C.Text := ''
+    else
+      PBENsEM_C.AsFloat := EN_C / EM_C * 100 ;
+    if EM_T = 0
+    then
+      PBENsEM_T.Text := ''
+    else
+      PBENsEM_T.AsFloat := EN_T / EM_T * 100 ;
+  end ;
+end ;
+
+procedure TFMatiere.PBTMSChange (Sender : TObject) ;
+begin
+  if (PBTMS.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        MS := PBTMS.AsFloat
+      else // %
+        MS := PBTMS.AsFloat / 100 * 1000 ;
+    // En cas d'affichage sur frais, la valeur de RapMS change...
+    // L'ensemble de l'enregistrement est r�affich� !
+    if ConfRap = 0
+    then // sur frais
+    begin
+      IdxMatiere := -1 ;
+      CBMatiereChange (nil) ;
+    end
+    else
+      AjustEnabled ;
+  end ;
+end ;
+
+procedure TFMatiere.PBTMSExit (Sender : TObject) ;
+begin
+  if (PBTMS.AsFloat = 0) and (PMatiere.CC.MS <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PMatiere.CC do
+      MS := 0 ;
+    // En cas d'affichage sur frais, la valeur de RapMS change...
+    // L'ensemble de l'enregistrement est r�affich� !
+    if ConfRap = 0
+    then // sur frais
+    begin
+      IdxMatiere := -1 ;
+      CBMatiereChange (nil) ;
+    end
+    else
+      AjustEnabled ;
+  end ;
+end ;
+
+procedure TFMatiere.PBTMMChange (Sender : TObject) ;
+begin
+  if (PBTMM.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        MM := PBTMM.AsFloat / RapMS
+      else // %
+        MM := PBTMM.AsFloat / 100 * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculTMO ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBTMMExit (Sender : TObject) ;
+begin
+  if (PBTMM.AsFloat = 0) and (PMatiere.CC.MM <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PMatiere.CC do
+      MM := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculTMO ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBTLipChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        Lip := PBTLip.AsFloat / RapMS
+      else // %
+        Lip := PBTLip.AsFloat / 100 * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    with PMatiere.CC do
+      PBLip2.AsFloat := Lip * RapMS ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    if ConfTAG <> 2
+    then // non % AG
+      AffichTAG ;
+    CalculAG ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBTMATChange (Sender : TObject) ;
+var
+  i : integer ;
+  variation : double ;
+begin
+  if (PBTMAT.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Variation de la teneur en mati�res azot�s
+    with PMatiere.CC do
+      if MAT = 0
+      then
+        variation := 1
+      else
+        if ConfTCompo = 0
+        then // g/kg
+          variation := PBTMAT.AsFloat / RapMS / MAT
+        else // %
+          variation := PBTMAT.AsFloat / 100 * 1000 / RapMS / MAT ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        MAT := PBTMAT.AsFloat / RapMS
+      else // %
+        MAT := PBTMAT.AsFloat / 100 * 1000 / RapMS ;
+    with PMatiere^ do
+      AAtotal[0] := CC.MAT ;
+    // Mise � jour des champs li�s � cette valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          PBTMAT2.AsFloat := AAtotal[0] / 1000 * 100 * RapMS ;
+        2 : // % MAT
+          PBTMAT2.AsFloat := AAtotal[0] / CC.MAT * 100 ;
+        else // g/kg
+          PBTMAT2.AsFloat := AAtotal[0] * RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    if CBAAsMAT.Checked
+    then // Variation des teneur en acides amin�s (r�gle de trois)
+      with PMatiere^ do
+        for i := 1 to 12 do
+          AAtotal[i] := AAtotal[i] * variation ;
+    AffichTAA ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    CalculAA ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBTMATExit (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  if PBTMAT.AsFloat = 0
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PMatiere.CC do
+      MAT := 0 ;
+    with PMatiere^ do
+      AAtotal[0] := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    PBTMAT2.AsFloat := 0 ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    if CBAAsMAT.Checked
+    then
+    begin
+      // Variation des teneur en acides amin�s (r�gle de trois)
+      with PMatiere^ do
+        for i := 1 to 12 do
+          AAtotal[i] := 0 ;
+      AffichTAA ;
+      if ConfDig = 0
+      then // Teneur digestible
+        AffichdAA ;
+    end ;
+    CalculAA ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBTAmidonChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        Amidon := PBTAmidon.AsFloat / RapMS
+      else // %
+        Amidon := PBTAmidon.AsFloat / 100 * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBTSucresChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTCompo = 0
+      then // g/kg
+        Sucres := PBTSucres.AsFloat / RapMS
+      else // %
+        Sucres := PBTSucres.AsFloat / 100 * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdFecale ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBdMO_CChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfDig = 0
+      then // CUD
+        dMO_C := PBdMO_C.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dMO_C := PBdMO_C.AsFloat / MO * 100 / RapMS
+        else // %
+          dMO_C := PBdMO_C.AsFloat / MO * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBdLip_CChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfDig = 0
+      then // CUD
+        dLip_C := PBdLip_C.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dLip_C := PBdLip_C.AsFloat / Lip * 100 / RapMS
+        else // %
+          dLip_C := PBdLip_C.AsFloat / Lip * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBdMAT_CChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfDig = 0
+      then // CUD
+        dMAT_C := PBdMAT_C.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dMAT_C := PBdMAT_C.AsFloat / MAT * 100 / RapMS
+        else // %
+          dMAT_C := PBdMAT_C.AsFloat / MAT * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBdMO_TChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfDig = 0
+      then // CUD
+        dMO_T := PBdMO_T.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dMO_T := PBdMO_T.AsFloat / MO * 100 / RapMS
+        else // %
+          dMO_T := PBdMO_T.AsFloat / MO * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBdLip_TChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfDig = 0
+      then // CUD
+        dLip_T := PBdLip_T.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dLip_T := PBdLip_T.AsFloat / Lip * 100 / RapMS
+        else // %
+          dLip_T := PBdLip_T.AsFloat / Lip * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBdMAT_TChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfDig = 0
+      then // CUD
+        dMAT_T := PBdMAT_T.AsFloat
+      else // Teneur digestible
+        if ConfdCompo = 0
+        then // g/kg
+          dMAT_T := PBdMAT_T.AsFloat / MAT * 100 / RapMS
+        else // %
+          dMAT_T := PBdMAT_T.AsFloat / MAT * 1000 / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculResidu ;
+    AffichResidu ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.CBCorrCUDClick (Sender : TObject) ;
+begin
+  if AffCorrCUD
+  then
+  begin
+    FWarning := TFWarning.Create (Self) ;
+    with FWarning do
+    begin
+      Msg := 'CorrCUD';
+      ShowModal ;
+      Release ;
+      AffCorrCUD := FALSE ;
+    end ;
+  end ;
+  if not CBCorrCUD.Checked
+  then
+  begin
+    RBED.Checked := FALSE ;
+    RBEM.Checked := FALSE ;
+    RBEN.Checked := FALSE ;
+  end ;
+  RBED.Enabled := CBCorrCUD.Checked ;
+  RBEM.Enabled := CBCorrCUD.Checked ;
+  RBEN.Enabled := CBCorrCUD.Checked ;
+  Update := TRUE ;
+  RBEDClick (nil) ;
+  RBEMClick (nil) ;
+  RBENClick (nil) ;
+  Update := FALSE ;
+  PBdMO_C.Enabled := not CBCorrCUD.Checked ;
+  PBdLip_C.Enabled := not CBCorrCUD.Checked ;
+  PBdMAT_C.Enabled := not CBCorrCUD.Checked ;
+  PBdMO_T.Enabled := not CBCorrCUD.Checked ;
+  PBdLip_T.Enabled := not CBCorrCUD.Checked ;
+  PBdMAT_T.Enabled := not CBCorrCUD.Checked ;
+end ;
+
+procedure TFMatiere.LCorrCUDClick (Sender : TObject) ;
+begin
+  if CBCorrCUD.Enabled
+  then
+    CBCorrCUD.Checked := not CBCorrCUD.Checked ;
+end ;
+
+procedure TFMatiere.RBEDClick (Sender : TObject) ;
+begin
+  PBED_C.Enabled := RBED.Checked ;
+  PBED_T.Enabled := RBED.Checked ;
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    RBEMClick (nil) ;
+    RBENClick (nil) ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.LEDClick (Sender : TObject) ;
+begin
+  if RBED.Enabled
+  then
+    RBED.Checked := TRUE ;
+end ;
+
+procedure TFMatiere.PBED_CChange (Sender : TObject) ;
+begin
+  if (PBED_C.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      ED_C := PBED_C.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEDCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBED_CExit (Sender : TObject) ;
+begin
+  if (PBED_C.AsFloat = 0) and (PMatiere.CC.ED_C <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PMatiere.CC do
+      ED_C := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEDCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.CalculDigEDCrois ;
+var
+  x : double ;
+begin
+  with PMatiere.CC do
+  begin
+    x := (ED_C * 1000 - 17.45 * Amidon - 16.77 * Sucres) / (23.25 * MAT * dMAT_C / 100 + 38.73 * Lip * dLip_C / 100 + 16.68 * (Residu + CB) * dResidu_C / 100) ;
+    dLip_C := dLip_C * x ;
+    dMAT_C := dMAT_C * x ;
+    dResidu_C := dResidu_C * x ;
+    dCB_C := dCB_C * x ;
+    dMO_C := ((dMO_C * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+procedure TFMatiere.PBED_TChange (Sender : TObject) ;
+begin
+  if (PBED_T.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      ED_T := PBED_T.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEDTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBED_TExit (Sender : TObject) ;
+begin
+  if (PBED_T.AsFloat = 0) and (PMatiere.CC.ED_T <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PMatiere.CC do
+      ED_T := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEDTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.CalculDigEDTruie ;
+var
+  x : double ;
+begin
+  with PMatiere.CC do
+  begin
+    x := (ED_T * 1000 - 17.45 * Amidon - 16.77 * Sucres) / (23.25 * MAT * dMAT_T / 100 + 38.73 * Lip * dLip_T / 100 + 16.68 * (Residu + CB) * dResidu_T / 100) ;
+    dLip_T := dLip_T * x ;
+    dMAT_T := dMAT_T * x ;
+    dResidu_T := dResidu_T * x ;
+    dCB_T := dCB_T * x ;
+    dMO_T := ((dMO_T * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+procedure TFMatiere.RBEMClick (Sender : TObject) ;
+begin
+  PBEM_C.Enabled := RBEM.Checked ;
+  PBEM_T.Enabled := RBEM.Checked ;
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    RBEDClick (nil) ;
+    RBENClick (nil) ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.LEMClick (Sender : TObject) ;
+begin
+  if RBEM.Enabled
+  then
+    RBEM.Checked := TRUE ;
+end ;
+
+procedure TFMatiere.PBEM_CChange (Sender : TObject) ;
+begin
+  if (PBEM_C.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      EM_C := PBEM_C.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEMCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBEM_CExit (Sender : TObject) ;
+begin
+  if (PBEM_C.AsFloat = 0) and (PMatiere.CC.EM_C <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PMatiere.CC do
+      EM_C := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEMCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.CalculDigEMCrois ;
+var
+  x : double ;
+begin
+  with PMatiere.CC do
+  begin
+    x := (EM_C * 1000 - 17.45 * Amidon - 16.47 * Sucres) / (20.40 * MAT * dMAT_C / 100 + 39.28 * Lip * dLip_C / 100 + 15.45 * (Residu + CB) * dResidu_C / 100) ;
+    dLip_C := dLip_C * x ;
+    dMAT_C := dMAT_C * x ;
+    dResidu_C := dResidu_C * x ;
+    dCB_C := dCB_C * x ;
+    dMO_C := ((dMO_C * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+procedure TFMatiere.PBEM_TChange (Sender : TObject) ;
+begin
+  if (PBEM_T.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      EM_T := PBEM_T.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEMTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBEM_TExit (Sender : TObject) ;
+begin
+  if (PBEM_T.AsFloat = 0) and (PMatiere.CC.EM_T <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PMatiere.CC do
+      EM_T := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigEMTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.CalculDigEMTruie ;
+var
+  x : double ;
+begin
+  with PMatiere.CC do
+  begin
+    x := (EM_T * 1000 - 17.45 * Amidon - 16.47 * Sucres) / (20.40 * MAT * dMAT_T / 100 + 39.28 * Lip * dLip_T / 100 + 15.45 * (Residu + CB) * dResidu_T / 100) ;
+    dLip_T := dLip_T * x ;
+    dMAT_T := dMAT_T * x ;
+    dResidu_T := dResidu_T * x ;
+    dCB_T := dCB_T * x ;
+    dMO_T := ((dMO_T * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+procedure TFMatiere.RBENClick (Sender : TObject) ;
+begin
+  PBEN_C.Enabled := RBEN.Checked ;
+  PBEN_T.Enabled := RBEN.Checked ;
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    RBEDClick (nil) ;
+    RBEMClick (nil) ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.LENClick (Sender : TObject) ;
+begin
+  if RBEN.Enabled
+  then
+    RBEN.Checked := TRUE ;
+end ;
+
+procedure TFMatiere.PBEN_CChange (Sender : TObject) ;
+begin
+  if (PBEN_C.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      EN_C := PBEN_C.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigENCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBEN_CExit (Sender : TObject) ;
+begin
+  if (PBEN_C.AsFloat = 0) and (PMatiere.CC.EN_C <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PMatiere.CC do
+      EN_C := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigENCrois ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.CalculDigENCrois ;
+var
+  x : double ;
+begin
+  with PMatiere.CC do
+  begin
+    x := (EN_C * 1000 - 14.32 * Amidon - 11.94 * Sucres) / (12.08 * MAT * dMAT_C / 100 + 35.01 * Lip * dLip_C / 100 + 8.64 * (Residu + CB) * dResidu_C / 100) ;
+    dLip_C := dLip_C * x ;
+    dMAT_C := dMAT_C * x ;
+    dResidu_C := dResidu_C * x ;
+    dCB_C := dCB_C * x ;
+    dMO_C := ((dMO_C * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+procedure TFMatiere.PBEN_TChange (Sender : TObject) ;
+begin
+  if (PBEN_T.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      EN_T := PBEN_T.AsFloat / RapMS ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigENTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.PBEN_TExit (Sender : TObject) ;
+begin
+  if (PBEN_T.AsFloat = 0) and (PMatiere.CC.EN_T <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PMatiere.CC do
+      EN_T := 0 ;
+    // Mise � jour des champs li�s � cette valeur
+    Update := TRUE ;
+    CalculDigENTruie ;
+    AffichdFecale ;
+    CalculEnergie ;
+    AffichEnergie ;
+    Update := FALSE ;
+  end ;
+end ;
+
+procedure TFMatiere.CalculDigENTruie ;
+var
+  x : double ;
+begin
+  with PMatiere.CC do
+  begin
+    x := (EN_T * 1000 - 14.32 * Amidon - 11.94 * Sucres) / (12.08 * MAT * dMAT_T / 100 + 35.01 * Lip * dLip_T / 100 + 8.64 * (Residu + CB) * dResidu_T / 100) ;
+    dLip_T := dLip_T * x ;
+    dMAT_T := dMAT_T * x ;
+    dResidu_T := dResidu_T * x ;
+    dCB_T := dCB_T * x ;
+    dMO_T := ((dMO_T * MO - Amidon * 100 - Sucres * 100) * x + Amidon * 100 + Sucres * 100) / MO ;
+  end ;
+end ;
+
+////////////////////////////////////////////////////////////////////////////////
+// Acides amin�s
+////////////////////////////////////////////////////////////////////////////////
+
+// Affichage de la teneur en fonction de la configuration
+procedure TFMatiere.AffichTAA ;
+begin
+//  with PMatiere^ do
+//    AAtotal[0] := CC.MAT ;
+  case ConfTAA of
+    1 : // %
+      with PMatiere^ do
+      begin
+        PBTMAT2.AsFloat := AAtotal[0] / 1000 * 100 * RapMS ;
+        if ActiveControl <> PBTLys
+        then
+          PBTLys.AsFloat := AAtotal[1] / 1000 * 100 * RapMS ;
+        PBTMet.AsFloat := AAtotal[2] / 1000 * 100 * RapMS ;
+        PBTCys.AsFloat := AAtotal[3] / 1000 * 100 * RapMS ;
+        PBTTrp.AsFloat := AAtotal[4] / 1000 * 100 * RapMS ;
+        PBTThr.AsFloat := AAtotal[5] / 1000 * 100 * RapMS ;
+        PBTPhe.AsFloat := AAtotal[6] / 1000 * 100 * RapMS ;
+        PBTTyr.AsFloat := AAtotal[7] / 1000 * 100 * RapMS ;
+        PBTLeu.AsFloat := AAtotal[8] / 1000 * 100 * RapMS ;
+        PBTIle.AsFloat := AAtotal[9] / 1000 * 100 * RapMS ;
+        PBTVal.AsFloat := AAtotal[10] / 1000 * 100 * RapMS ;
+        PBTHis.AsFloat := AAtotal[11] / 1000 * 100 * RapMS ;
+        PBTArg.AsFloat := AAtotal[12] / 1000 * 100 * RapMS ;
+      end ;
+    2 : // % MAT
+      if PMatiere.CC.MAT = 0
+      then
+      begin
+        PBTMAT2.AsFloat := 0 ;
+        PBTLys.AsFloat := 0 ;
+        PBTMet.AsFloat := 0 ;
+        PBTCys.AsFloat := 0 ;
+        PBTTrp.AsFloat := 0 ;
+        PBTThr.AsFloat := 0 ;
+        PBTPhe.AsFloat := 0 ;
+        PBTTyr.AsFloat := 0 ;
+        PBTLeu.AsFloat := 0 ;
+        PBTIle.AsFloat := 0 ;
+        PBTVal.AsFloat := 0 ;
+        PBTHis.AsFloat := 0 ;
+        PBTArg.AsFloat := 0 ;
+      end
+      else
+        with PMatiere^ do
+        begin
+          PBTMAT2.AsFloat := AAtotal[0] / CC.MAT * 100 ;
+          if ActiveControl <> PBTLys
+          then
+            PBTLys.AsFloat := AAtotal[1] / CC.MAT * 100 ;
+          PBTMet.AsFloat := AAtotal[2] / CC.MAT * 100 ;
+          PBTCys.AsFloat := AAtotal[3] / CC.MAT * 100 ;
+          PBTTrp.AsFloat := AAtotal[4] / CC.MAT * 100 ;
+          PBTThr.AsFloat := AAtotal[5] / CC.MAT * 100 ;
+          PBTPhe.AsFloat := AAtotal[6] / CC.MAT * 100 ;
+          PBTTyr.AsFloat := AAtotal[7] / CC.MAT * 100 ;
+          PBTLeu.AsFloat := AAtotal[8] / CC.MAT * 100 ;
+          PBTIle.AsFloat := AAtotal[9] / CC.MAT * 100 ;
+          PBTVal.AsFloat := AAtotal[10] / CC.MAT * 100 ;
+          PBTHis.AsFloat := AAtotal[11] / CC.MAT * 100 ;
+          PBTArg.AsFloat := AAtotal[12] / CC.MAT * 100 ;
+        end ;
+    else // g/kg
+      with PMatiere^ do
+      begin
+        PBTMAT2.AsFloat := AAtotal[0] * RapMS ;
+        if ActiveControl <> PBTLys
+        then
+          PBTLys.AsFloat := AAtotal[1] * RapMS ;
+        PBTMet.AsFloat := AAtotal[2] * RapMS ;
+        PBTCys.AsFloat := AAtotal[3] * RapMS ;
+        PBTTrp.AsFloat := AAtotal[4] * RapMS ;
+        PBTThr.AsFloat := AAtotal[5] * RapMS ;
+        PBTPhe.AsFloat := AAtotal[6] * RapMS ;
+        PBTTyr.AsFloat := AAtotal[7] * RapMS ;
+        PBTLeu.AsFloat := AAtotal[8] * RapMS ;
+        PBTIle.AsFloat := AAtotal[9] * RapMS ;
+        PBTVal.AsFloat := AAtotal[10] * RapMS ;
+        PBTHis.AsFloat := AAtotal[11] * RapMS ;
+        PBTArg.AsFloat := AAtotal[12] * RapMS ;
+      end ;
+  end ;
+end ;
+
+// Affichage de la digestibilit� il�ale en fonction de la configuration
+procedure TFMatiere.AffichdAA ;
+begin
+  if ConfDig = 0
+  then // CUD
+    with PMatiere^ do
+    begin
+      PBdMATStd.AsFloat := CUDAA[0] ;
+      PBdLysStd.AsFloat := CUDAA[1] ;
+      PBdMetStd.AsFloat := CUDAA[2] ;
+      PBdCysStd.AsFloat := CUDAA[3] ;
+      PBdTrpStd.AsFloat := CUDAA[4] ;
+      PBdThrStd.AsFloat := CUDAA[5] ;
+      PBdPheStd.AsFloat := CUDAA[6] ;
+      PBdTyrStd.AsFloat := CUDAA[7] ;
+      PBdLeuStd.AsFloat := CUDAA[8] ;
+      PBdIleStd.AsFloat := CUDAA[9] ;
+      PBdValStd.AsFloat := CUDAA[10] ;
+      PBdHisStd.AsFloat := CUDAA[11] ;
+      PBdArgStd.AsFloat := CUDAA[12] ;
+    end
+  else // Teneur digestible
+    if ConfdAA = 0
+    then // g/kg
+      with PMatiere^ do
+      begin
+        PBdMATStd.AsFloat := AAtotal[0] * CUDAA[0] / 100 * RapMS ;
+        PBdLysStd.AsFloat := AAtotal[1] * CUDAA[1] / 100 * RapMS ;
+        PBdMetStd.AsFloat := AAtotal[2] * CUDAA[2] / 100 * RapMS ;
+        PBdCysStd.AsFloat := AAtotal[3] * CUDAA[3] / 100 * RapMS ;
+        PBdTrpStd.AsFloat := AAtotal[4] * CUDAA[4] / 100 * RapMS ;
+        PBdThrStd.AsFloat := AAtotal[5] * CUDAA[5] / 100 * RapMS ;
+        PBdPheStd.AsFloat := AAtotal[6] * CUDAA[6] / 100 * RapMS ;
+        PBdTyrStd.AsFloat := AAtotal[7] * CUDAA[7] / 100 * RapMS ;
+        PBdLeuStd.AsFloat := AAtotal[8] * CUDAA[8] / 100 * RapMS ;
+        PBdIleStd.AsFloat := AAtotal[9] * CUDAA[9] / 100 * RapMS ;
+        PBdValStd.AsFloat := AAtotal[10] * CUDAA[10] / 100 * RapMS ;
+        PBdHisStd.AsFloat := AAtotal[11] * CUDAA[11] / 100 * RapMS ;
+        PBdArgStd.AsFloat := AAtotal[12] * CUDAA[12] / 100 * RapMS ;
+      end
+    else // %
+      with PMatiere^ do
+      begin
+        PBdMATStd.AsFloat := AAtotal[0] / 1000 * CUDAA[0] * RapMS ;
+        PBdLysStd.AsFloat := AAtotal[1] / 1000 * CUDAA[1] * RapMS ;
+        PBdMetStd.AsFloat := AAtotal[2] / 1000 * CUDAA[2] * RapMS ;
+        PBdCysStd.AsFloat := AAtotal[3] / 1000 * CUDAA[3] * RapMS ;
+        PBdTrpStd.AsFloat := AAtotal[4] / 1000 * CUDAA[4] * RapMS ;
+        PBdThrStd.AsFloat := AAtotal[5] / 1000 * CUDAA[5] * RapMS ;
+        PBdPheStd.AsFloat := AAtotal[6] / 1000 * CUDAA[6] * RapMS ;
+        PBdTyrStd.AsFloat := AAtotal[7] / 1000 * CUDAA[7] * RapMS ;
+        PBdLeuStd.AsFloat := AAtotal[8] / 1000 * CUDAA[8] * RapMS ;
+        PBdIleStd.AsFloat := AAtotal[9] / 1000 * CUDAA[9] * RapMS ;
+        PBdValStd.AsFloat := AAtotal[10] / 1000 * CUDAA[10] * RapMS ;
+        PBdHisStd.AsFloat := AAtotal[11] / 1000 * CUDAA[11] * RapMS ;
+        PBdArgStd.AsFloat := AAtotal[12] / 1000 * CUDAA[12] * RapMS ;
+      end ;
+end ;
+
+procedure TFMatiere.CalculAA ;
+begin
+  // Digestibilit� apparente
+  if ConfDig = 0
+  then // CUD
+    with PMatiere^ do
+    begin
+      if AAtotal[0] = 0
+      then
+        PBdMATApp.Text := ''
+      else
+        PBdMATApp.AsFloat := CUDAA[0] - AAendogene[0] * 100 / AAtotal[0] ;
+      if AAtotal[1] = 0
+      then
+        PBdLysApp.Text := ''
+      else
+        PBdLysApp.AsFloat := CUDAA[1] - AAendogene[1] * 100 / AAtotal[1] ;
+      if AAtotal[2] = 0
+      then
+        PBdMetApp.Text := ''
+      else
+        PBdMetApp.AsFloat := CUDAA[2] - AAendogene[2] * 100 / AAtotal[2] ;
+      if AAtotal[3] = 0
+      then
+        PBdCysApp.Text := ''
+      else
+        PBdCysApp.AsFloat := CUDAA[3] - AAendogene[3] * 100 / AAtotal[3] ;
+      if AAtotal[4] = 0
+      then
+        PBdTrpApp.Text := ''
+      else
+        PBdTrpApp.AsFloat := CUDAA[4] - AAendogene[4] * 100 / AAtotal[4] ;
+      if AAtotal[5] = 0
+      then
+        PBdThrApp.Text := ''
+      else
+        PBdThrApp.AsFloat := CUDAA[5] - AAendogene[5] * 100 / AAtotal[5] ;
+      if AAtotal[6] = 0
+      then
+        PBdPheApp.Text := ''
+      else
+        PBdPheApp.AsFloat := CUDAA[6] - AAendogene[6] * 100 / AAtotal[6] ;
+      if AAtotal[7] = 0
+      then
+        PBdTyrApp.Text := ''
+      else
+        PBdTyrApp.AsFloat := CUDAA[7] - AAendogene[7] * 100 / AAtotal[7] ;
+      if AAtotal[8] = 0
+      then
+        PBdLeuApp.Text := ''
+      else
+        PBdLeuApp.AsFloat := CUDAA[8] - AAendogene[8] * 100 / AAtotal[8] ;
+      if AAtotal[9] = 0
+      then
+        PBdIleApp.Text := ''
+      else
+        PBdIleApp.AsFloat := CUDAA[9] - AAendogene[9] * 100 / AAtotal[9] ;
+      if AAtotal[10] = 0
+      then
+        PBdValApp.Text := ''
+      else
+        PBdValApp.AsFloat := CUDAA[10] - AAendogene[10] * 100 / AAtotal[10] ;
+      if AAtotal[11] = 0
+      then
+        PBdHisApp.Text := ''
+      else
+        PBdHisApp.AsFloat := CUDAA[11] - AAendogene[11] * 100 / AAtotal[11] ;
+      if AAtotal[12] = 0
+      then
+        PBdArgApp.Text := ''
+      else
+        PBdArgApp.AsFloat := CUDAA[12] - AAendogene[12] * 100 / AAtotal[12] ;
+    end
+  else // Teneur digestible
+    if ConfdAA = 0
+    then // g/kg
+      with PMatiere^ do
+      begin
+        PBdMATApp.AsFloat := (AAtotal[0] * CUDAA[0] / 100 - AAendogene[0]) * RapMS ;
+        PBdLysApp.AsFloat := (AAtotal[1] * CUDAA[1] / 100 - AAendogene[1]) * RapMS ;
+        PBdMetApp.AsFloat := (AAtotal[2] * CUDAA[2] / 100 - AAendogene[2]) * RapMS ;
+        PBdCysApp.AsFloat := (AAtotal[3] * CUDAA[3] / 100 - AAendogene[3]) * RapMS ;
+        PBdTrpApp.AsFloat := (AAtotal[4] * CUDAA[4] / 100 - AAendogene[4]) * RapMS ;
+        PBdThrApp.AsFloat := (AAtotal[5] * CUDAA[5] / 100 - AAendogene[5]) * RapMS ;
+        PBdPheApp.AsFloat := (AAtotal[6] * CUDAA[6] / 100 - AAendogene[6]) * RapMS ;
+        PBdTyrApp.AsFloat := (AAtotal[7] * CUDAA[7] / 100 - AAendogene[7]) * RapMS ;
+        PBdLeuApp.AsFloat := (AAtotal[8] * CUDAA[8] / 100 - AAendogene[8]) * RapMS ;
+        PBdIleApp.AsFloat := (AAtotal[9] * CUDAA[9] / 100 - AAendogene[9]) * RapMS ;
+        PBdValApp.AsFloat := (AAtotal[10] * CUDAA[10] / 100 - AAendogene[10]) * RapMS ;
+        PBdHisApp.AsFloat := (AAtotal[11] * CUDAA[11] / 100 - AAendogene[11]) * RapMS ;
+        PBdArgApp.AsFloat := (AAtotal[12] * CUDAA[12] / 100 - AAendogene[12]) * RapMS ;
+      end
+    else // %
+      with PMatiere^ do
+      begin
+        PBdMATApp.AsFloat := (AAtotal[0] / 1000 * CUDAA[0] - AAendogene[0] * 100 / 1000) * RapMS ;
+        PBdLysApp.AsFloat := (AAtotal[1] / 1000 * CUDAA[1] - AAendogene[1] * 100 / 1000) * RapMS ;
+        PBdMetApp.AsFloat := (AAtotal[2] / 1000 * CUDAA[2] - AAendogene[2] * 100 / 1000) * RapMS ;
+        PBdCysApp.AsFloat := (AAtotal[3] / 1000 * CUDAA[3] - AAendogene[3] * 100 / 1000) * RapMS ;
+        PBdTrpApp.AsFloat := (AAtotal[4] / 1000 * CUDAA[4] - AAendogene[4] * 100 / 1000) * RapMS ;
+        PBdThrApp.AsFloat := (AAtotal[5] / 1000 * CUDAA[5] - AAendogene[5] * 100 / 1000) * RapMS ;
+        PBdPheApp.AsFloat := (AAtotal[6] / 1000 * CUDAA[6] - AAendogene[6] * 100 / 1000) * RapMS ;
+        PBdTyrApp.AsFloat := (AAtotal[7] / 1000 * CUDAA[7] - AAendogene[7] * 100 / 1000) * RapMS ;
+        PBdLeuApp.AsFloat := (AAtotal[8] / 1000 * CUDAA[8] - AAendogene[8] * 100 / 1000) * RapMS ;
+        PBdIleApp.AsFloat := (AAtotal[9] / 1000 * CUDAA[9] - AAendogene[9] * 100 / 1000) * RapMS ;
+        PBdValApp.AsFloat := (AAtotal[10] / 1000 * CUDAA[10] - AAendogene[10] * 100 / 1000) * RapMS ;
+        PBdHisApp.AsFloat := (AAtotal[11] / 1000 * CUDAA[11] - AAendogene[11] * 100 / 1000) * RapMS ;
+        PBdArgApp.AsFloat := (AAtotal[12] / 1000 * CUDAA[12] - AAendogene[12] * 100 / 1000) * RapMS ;
+      end ;
+  // Prot�ine id�ale standardis�e
+  PBProtLysStd.AsFloat := 100 ;
+  if (PMatiere.AAtotal[1] = 0) or (PMatiere.CUDAA[1] = 0)
+  then
+  begin
+    PBProtMetStd.Text := '' ;
+    PBProtCysStd.Text := '' ;
+    PBProtTrpStd.Text := '' ;
+    PBProtThrStd.Text := '' ;
+    PBProtPheStd.Text := '' ;
+    PBProtTyrStd.Text := '' ;
+    PBProtLeuStd.Text := '' ;
+    PBProtIleStd.Text := '' ;
+    PBProtValStd.Text := '' ;
+    PBProtHisStd.Text := '' ;
+    PBProtArgStd.Text := '' ;
+  end
+  else
+    with PMatiere^ do
+    begin
+      PBProtMetStd.AsFloat := (AAtotal[2] * CUDAA[2]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtCysStd.AsFloat := (AAtotal[3] * CUDAA[3]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtTrpStd.AsFloat := (AAtotal[4] * CUDAA[4]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtThrStd.AsFloat := (AAtotal[5] * CUDAA[5]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtPheStd.AsFloat := (AAtotal[6] * CUDAA[6]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtTyrStd.AsFloat := (AAtotal[7] * CUDAA[7]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtLeuStd.AsFloat := (AAtotal[8] * CUDAA[8]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtIleStd.AsFloat := (AAtotal[9] * CUDAA[9]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtValStd.AsFloat := (AAtotal[10] * CUDAA[10]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtHisStd.AsFloat := (AAtotal[11] * CUDAA[11]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+      PBProtArgStd.AsFloat := (AAtotal[12] * CUDAA[12]) / (AAtotal[1] * CUDAA[1]) * 100 ;
+    end ;
+  // Prot�ine id�ale totale
+  PBProtLysTot.AsFloat := 100 ;
+  if (PMatiere.AAtotal[1] = 0) or (PMatiere.CUDAA[1] = 0)
+  then
+  begin
+    PBProtMetTot.Text := '' ;
+    PBProtCysTot.Text := '' ;
+    PBProtTrpTot.Text := '' ;
+    PBProtThrTot.Text := '' ;
+    PBProtPheTot.Text := '' ;
+    PBProtTyrTot.Text := '' ;
+    PBProtLeuTot.Text := '' ;
+    PBProtIleTot.Text := '' ;
+    PBProtValTot.Text := '' ;
+    PBProtHisTot.Text := '' ;
+    PBProtArgTot.Text := '' ;
+  end
+  else
+    with PMatiere^ do
+    begin
+      PBProtMetTot.AsFloat := AAtotal[2] / AAtotal[1] * 100 ;
+      PBProtCysTot.AsFloat := AAtotal[3] / AAtotal[1] * 100 ;
+      PBProtTrpTot.AsFloat := AAtotal[4] / AAtotal[1] * 100 ;
+      PBProtThrTot.AsFloat := AAtotal[5] / AAtotal[1] * 100 ;
+      PBProtPheTot.AsFloat := AAtotal[6] / AAtotal[1] * 100 ;
+      PBProtTyrTot.AsFloat := AAtotal[7] / AAtotal[1] * 100 ;
+      PBProtLeuTot.AsFloat := AAtotal[8] / AAtotal[1] * 100 ;
+      PBProtIleTot.AsFloat := AAtotal[9] / AAtotal[1] * 100 ;
+      PBProtValTot.AsFloat := AAtotal[10] / AAtotal[1] * 100 ;
+      PBProtHisTot.AsFloat := AAtotal[11] / AAtotal[1] * 100 ;
+      PBProtArgTot.AsFloat := AAtotal[12] / AAtotal[1] * 100 ;
+    end ;
+  // met + cys
+  PBTMetCys.AsFloat := PBTMet.AsFloat + PBTCys.AsFloat ;
+  if ConfDig = 0
+  then // CUD
+    if PBTMetCys.AsFloat = 0
+    then
+    begin
+      PBdMetCysStd.Text := '' ;
+      PBdMetCysApp.Text := '' ;
+    end
+    else
+    begin
+      PBdMetCysStd.AsFloat := (PBTMet.AsFloat * PBdMetStd.AsFloat + PBTCys.AsFloat * PBdCysStd.AsFloat) / PBTMetCys.AsFloat ;
+      PBdMetCysApp.AsFloat := (PBTMet.AsFloat * PBdMetApp.AsFloat + PBTCys.AsFloat * PBdCysApp.AsFloat) / PBTMetCys.AsFloat ;
+    end
+  else // Teneur digestible
+  begin
+    PBdMetCysStd.AsFloat := PBdMetStd.AsFloat + PBdCysStd.AsFloat ;
+    PBdMetCysApp.AsFloat := PBdMetApp.AsFloat + PBdCysApp.AsFloat ;
+  end ;
+  if (PMatiere.AAtotal[1] = 0) or (PMatiere.CUDAA[1] = 0)
+  then
+  begin
+    PBProtMetCysStd.Text := '' ;
+    PBProtMetCysTot.Text := '' ;
+  end
+  else
+  begin
+    PBProtMetCysStd.AsFloat := PBProtMetStd.AsFloat + PBProtCysStd.AsFloat ;
+    PBProtMetCysTot.AsFloat := PBProtMetTot.AsFloat + PBProtCysTot.AsFloat ;
+  end ;
+  // phe + tyr
+  PBTPheTyr.AsFloat := PBTPhe.AsFloat + PBTTyr.AsFloat ;
+  if ConfDig = 0
+  then // CUD
+    if PBTPheTyr.AsFloat = 0
+    then
+    begin
+      PBdPheTyrStd.Text := '' ;
+      PBdPheTyrApp.Text := '' ;
+    end
+    else
+    begin
+      PBdPheTyrStd.AsFloat := (PBTPhe.AsFloat * PBdPheStd.AsFloat + PBTTyr.AsFloat * PBdTyrStd.AsFloat) / PBTPheTyr.AsFloat ;
+      PBdPheTyrApp.AsFloat := (PBTPhe.AsFloat * PBdPheApp.AsFloat + PBTTyr.AsFloat * PBdTyrApp.AsFloat) / PBTPheTyr.AsFloat ;
+    end
+  else // Teneur digestible
+  begin
+    PBdPheTyrStd.AsFloat := PBdPheStd.AsFloat + PBdTyrStd.AsFloat ;
+    PBdPheTyrApp.AsFloat := PBdPheApp.AsFloat + PBdTyrApp.AsFloat ;
+  end ;
+  if (PMatiere.AAtotal[1] = 0) or (PMatiere.CUDAA[1] = 0)
+  then
+  begin
+    PBProtPheTyrStd.Text := '' ;
+    PBProtPheTyrTot.Text := '' ;
+  end
+  else
+  begin
+    PBProtPheTyrStd.AsFloat := PBProtPheStd.AsFloat + PBProtTyrStd.AsFloat ;
+    PBProtPheTyrTot.AsFloat := PBProtPheTot.AsFloat + PBProtTyrTot.AsFloat ;
+  end ;
+  // trp / AA neutres
+  with PMatiere^ do
+    if AAtotal[6] * CUDAA[6] + AAtotal[7] * CUDAA[7] + AAtotal[8] * CUDAA[8] + AAtotal[9] * CUDAA[9] + AAtotal[10] * CUDAA[10] = 0
+    then
+      PBTrpStd.Text := ''
+    else
+      PBTrpStd.AsFloat := AAtotal[4] * CUDAA[4] / (AAtotal[6] * CUDAA[6] + AAtotal[7] * CUDAA[7] + AAtotal[8] * CUDAA[8] + AAtotal[9] * CUDAA[9] + AAtotal[10] * CUDAA[10]) * 100 ;
+  with PMatiere^ do
+    if AAtotal[6] + AAtotal[7] + AAtotal[8] + AAtotal[9] + AAtotal[10] = 0
+    then
+      PBTrpTot.Text := ''
+    else
+      PBTrpTot.AsFloat := AAtotal[4] / (AAtotal[6] + AAtotal[7] + AAtotal[8] + AAtotal[9] + AAtotal[10]) * 100 ;
+  // EAA-N / N
+  if (PMatiere.AAtotal[0] = 0) or (PMatiere.CUDAA[0] = 0)
+  then
+    PBEAAStd.Text := ''
+  else
+    with PMatiere^ do
+      PBEAAStd.AsFloat := 14 * (2/146 * AAtotal[1] * CUDAA[1] + 1/149 * AAtotal[2] * CUDAA[2] + 1/121 * AAtotal[3] * CUDAA[3] + 1/119 * AAtotal[5] * CUDAA[5] + 2/204 * AAtotal[4] * CUDAA[4] + 1/131 * AAtotal[9] * CUDAA[9] + 1/131 * AAtotal[8] * CUDAA[8] + 1/117 * AAtotal[10] * CUDAA[10] + 1/165 * AAtotal[6] * CUDAA[6] + 1/181 * AAtotal[7] * CUDAA[7] + 3/155 * AAtotal[11] * CUDAA[11] + 4/174 * AAtotal[12] * CUDAA[12]) / (AAtotal[0] * CUDAA[0] / 6.25) * 100 ;
+  if PMatiere.AAtotal[0] = 0
+  then
+    PBEAATot.Text := ''
+  else
+    with PMatiere^ do
+      PBEAATot.AsFloat := 14 * (2/146 * AAtotal[1] + 1/149 * AAtotal[2] + 1/121 * AAtotal[3] + 1/119 * AAtotal[5] + 2/204 * AAtotal[4] + 1/131 * AAtotal[9] + 1/131 * AAtotal[8] + 1/117 * AAtotal[10] + 1/165 * AAtotal[6] + 1/181 * AAtotal[7] + 3/155 * AAtotal[11] + 4/174 * AAtotal[12]) / (AAtotal[0] / 6.25) * 100 ;
+end ;
+
+procedure TFMatiere.CBAAsLysClick (Sender : TObject) ;
+begin
+  PBTMet.Enabled := not CBAAsLys.Checked ;
+  PBTCys.Enabled := not CBAAsLys.Checked ;
+  PBTTrp.Enabled := not CBAAsLys.Checked ;
+  PBTThr.Enabled := not CBAAsLys.Checked ;
+  PBTPhe.Enabled := not CBAAsLys.Checked ;
+  PBTTyr.Enabled := not CBAAsLys.Checked ;
+  PBTLeu.Enabled := not CBAAsLys.Checked ;
+  PBTIle.Enabled := not CBAAsLys.Checked ;
+  PBTVal.Enabled := not CBAAsLys.Checked ;
+  PBTHis.Enabled := not CBAAsLys.Checked ;
+  PBTArg.Enabled := not CBAAsLys.Checked ;
+end ;
+
+procedure TFMatiere.PBTLysChange(Sender: TObject);
+var
+  i : integer ;
+  variation : double ;
+begin
+  if (PBTLys.AsFloat <> 0) and not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Variation de la teneur en lysine
+    with PMatiere^ do
+      if AAtotal[1] = 0
+      then
+        variation := 1
+      else
+        case ConfTAA of
+          1 : // %
+            variation := PBTLys.AsFloat / 100 * 1000 / RapMS / AAtotal[1] ;
+          2 : // % MAT
+            variation := PBTLys.AsFloat * CC.MAT / 100 / AAtotal[1] ;
+          else // g/kg
+            variation := PBTLys.AsFloat / RapMS / AAtotal[1] ;
+        end ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[1] := PBTLys.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[1] := PBTLys.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[1] := PBTLys.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if CBAAsLys.Checked
+    then
+    begin
+      // Variation des teneur en acides amin�s (r�gle de trois)
+      with PMatiere^ do
+        for i := 2 to 12 do
+          AAtotal[i] := AAtotal[i] * variation ;
+      // Affichage des valeurs
+      AffichTAA ;
+    end ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBTLysExit (Sender : TObject) ;
+var
+  i : integer ;
+begin
+  if (PBTLys.AsFloat = 0) and (PMatiere.AAtotal[1] <> 0)
+  then
+  begin
+    Modified := TRUE ;
+    // Valeur nulle
+    with PMatiere^ do
+      AAtotal[1] := 0 ;
+    Update := TRUE ;
+    if CBAAsLys.Checked
+    then
+    begin
+      // Variation des teneur en acides amin�s (r�gle de trois)
+      with PMatiere^ do
+        for i := 2 to 12 do
+          AAtotal[i] := 0 ;
+      // Affichage des valeurs
+      AffichTAA ;
+    end ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end ;
+
+procedure TFMatiere.PBTMetChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[2] := PBTMet.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[2] := PBTMet.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[2] := PBTMet.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBTCysChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[3] := PBTCys.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[3] := PBTCys.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[3] := PBTCys.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBTTrpChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[4] := PBTTrp.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[4] := PBTTrp.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[4] := PBTTrp.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBTThrChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[5] := PBTThr.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[5] := PBTThr.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[5] := PBTThr.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBTPheChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[6] := PBTPhe.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[6] := PBTPhe.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[6] := PBTPhe.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBTTyrChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[7] := PBTTyr.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[7] := PBTTyr.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[7] := PBTTyr.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBTLeuChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[8] := PBTLeu.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[8] := PBTLeu.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[8] := PBTLeu.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBTIleChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[9] := PBTIle.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[9] := PBTIle.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[9] := PBTIle.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBTValChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[10] := PBTVal.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[10] := PBTVal.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[10] := PBTVal.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBTHisChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[11] := PBTHis.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[11] := PBTHis.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[11] := PBTHis.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBTArgChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      case ConfTAA of
+        1 : // %
+          AAtotal[12] := PBTArg.AsFloat / 100 * 1000 / RapMS ;
+        2 : // % MAT
+          AAtotal[12] := PBTArg.AsFloat * CC.MAT / 100 ;
+        else // g/kg
+          AAtotal[12] := PBTArg.AsFloat / RapMS ;
+      end ;
+    Update := TRUE ;
+    if ConfDig = 1
+    then // Teneur digestible
+      AffichdAA ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdMATStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[0] := PBdMATStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[0] := PBdMATStd.AsFloat / AATotal[0] * 100 / RapMS
+        else // %
+          CUDAA[0] := PBdMATStd.AsFloat / AATotal[0] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdLysStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[1] := PBdLysStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[1] := PBdLysStd.AsFloat / AATotal[1] * 100 / RapMS
+        else // %
+          CUDAA[1] := PBdLysStd.AsFloat / AATotal[1] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdMetStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[2] := PBdMetStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[2] := PBdMetStd.AsFloat / AATotal[2] * 100 / RapMS
+        else // %
+          CUDAA[2] := PBdMetStd.AsFloat / AATotal[2] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdCysStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[3] := PBdCysStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[3] := PBdCysStd.AsFloat / AATotal[3] * 100 / RapMS
+        else // %
+          CUDAA[3] := PBdCysStd.AsFloat / AATotal[3] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdTrpStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[4] := PBdTrpStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[4] := PBdTrpStd.AsFloat / AATotal[4] * 100 / RapMS
+        else // %
+          CUDAA[4] := PBdTrpStd.AsFloat / AATotal[4] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdThrStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[5] := PBdThrStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[5] := PBdThrStd.AsFloat / AATotal[5] * 100 / RapMS
+        else // %
+          CUDAA[5] := PBdThrStd.AsFloat / AATotal[5] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdPheStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[6] := PBdPheStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[6] := PBdPheStd.AsFloat / AATotal[6] * 100 / RapMS
+        else // %
+          CUDAA[6] := PBdPheStd.AsFloat / AATotal[6] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdTyrStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[7] := PBdTyrStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[7] := PBdTyrStd.AsFloat / AATotal[7] * 100 / RapMS
+        else // %
+          CUDAA[7] := PBdTyrStd.AsFloat / AATotal[7] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdLeuStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[8] := PBdLeuStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[8] := PBdLeuStd.AsFloat / AATotal[8] * 100 / RapMS
+        else // %
+          CUDAA[8] := PBdLeuStd.AsFloat / AATotal[8] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdIleStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[9] := PBdIleStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[9] := PBdIleStd.AsFloat / AATotal[9] * 100 / RapMS
+        else // %
+          CUDAA[9] := PBdIleStd.AsFloat / AATotal[9] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdValStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[10] := PBdValStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[10] := PBdValStd.AsFloat / AATotal[10] * 100 / RapMS
+        else // %
+          CUDAA[10] := PBdValStd.AsFloat / AATotal[10] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdHisStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[11] := PBdHisStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[11] := PBdHisStd.AsFloat / AATotal[11] * 100 / RapMS
+        else // %
+          CUDAA[11] := PBdHisStd.AsFloat / AATotal[11] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+procedure TFMatiere.PBdArgStdChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere^ do
+      if ConfDig = 0
+      then // CUD
+        CUDAA[12] := PBdArgStd.AsFloat
+      else // Teneur digestible
+        if ConfdAA = 0
+        then // g/kg
+          CUDAA[12] := PBdArgStd.AsFloat / AATotal[12] * 100 / RapMS
+        else // %
+          CUDAA[12] := PBdArgStd.AsFloat / AATotal[12] * 1000 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculAA ;
+  end ;
+end;
+
+////////////////////////////////////////////////////////////////////////////////
+// Acides gras
+////////////////////////////////////////////////////////////////////////////////
+
+// Affichage de la teneur en fonction de la configuration
+procedure TFMatiere.AffichTAG ;
+begin
+  case ConfTAG of
+    0 : // g/kg
+      with PMatiere.CC do
+      begin
+        PBC6C8C10_0.AsFloat := C6C8C10 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC12_0.AsFloat := C12_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC14_0.AsFloat := C14_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC16_0.AsFloat := C16_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC16_1.AsFloat := C16_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC18_0.AsFloat := C18_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC18_1.AsFloat := C18_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC18_2.AsFloat := C18_2 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC18_3.AsFloat := C18_3 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC18_4.AsFloat := C18_4 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC20_0.AsFloat := C20_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC20_1.AsFloat := C20_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC20_4.AsFloat := C20_4 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC20_5.AsFloat := C20_5 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC22_0.AsFloat := C22_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC22_1.AsFloat := C22_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC22_5.AsFloat := C22_5 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC22_6.AsFloat := C22_6 / 100 * AGsLip / 100 * Lip * RapMS ;
+        PBC24_0.AsFloat := C24_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+      end ;
+    1 : // %
+      with PMatiere.CC do
+      begin
+        PBC6C8C10_0.AsFloat := C6C8C10 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC12_0.AsFloat := C12_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC14_0.AsFloat := C14_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC16_0.AsFloat := C16_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC16_1.AsFloat := C16_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC18_0.AsFloat := C18_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC18_1.AsFloat := C18_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC18_2.AsFloat := C18_2 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC18_3.AsFloat := C18_3 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC18_4.AsFloat := C18_4 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC20_0.AsFloat := C20_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC20_1.AsFloat := C20_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC20_4.AsFloat := C20_4 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC20_5.AsFloat := C20_5 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC22_0.AsFloat := C22_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC22_1.AsFloat := C22_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC22_5.AsFloat := C22_5 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC22_6.AsFloat := C22_6 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        PBC24_0.AsFloat := C24_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+      end ;
+    else // % acides gras
+      with PMatiere.CC do
+      begin
+        PBC6C8C10_0.AsFloat := C6C8C10 ;
+        PBC12_0.AsFloat := C12_0 ;
+        PBC14_0.AsFloat := C14_0 ;
+        PBC16_0.AsFloat := C16_0 ;
+        PBC16_1.AsFloat := C16_1 ;
+        PBC18_0.AsFloat := C18_0 ;
+        PBC18_1.AsFloat := C18_1 ;
+        PBC18_2.AsFloat := C18_2 ;
+        PBC18_3.AsFloat := C18_3 ;
+        PBC18_4.AsFloat := C18_4 ;
+        PBC20_0.AsFloat := C20_0 ;
+        PBC20_1.AsFloat := C20_1 ;
+        PBC20_4.AsFloat := C20_4 ;
+        PBC20_5.AsFloat := C20_5 ;
+        PBC22_0.AsFloat := C22_0 ;
+        PBC22_1.AsFloat := C22_1 ;
+        PBC22_5.AsFloat := C22_5 ;
+        PBC22_6.AsFloat := C22_6 ;
+        PBC24_0.AsFloat := C24_0 ;
+      end ;
+  end ;
+end ;
+
+procedure TFMatiere.CalculAG ;
+var
+  Omega3, Omega6 : double ;
+begin
+  // Teneurs totales
+  PBC6C8C10_tot.AsFloat := PBC6C8C10_0.AsFloat ;
+  PBC12_tot.AsFloat := PBC12_0.AsFloat ;
+  PBC14_tot.AsFloat := PBC14_0.AsFloat ;
+  PBC16_tot.AsFloat := PBC16_0.AsFloat + PBC16_1.AsFloat ;
+  PBC18_tot.AsFloat := PBC18_0.AsFloat + PBC18_1.AsFloat + PBC18_2.AsFloat + PBC18_3.AsFloat + PBC18_4.AsFloat ;
+  PBC20_tot.AsFloat := PBC20_0.AsFloat + PBC20_1.AsFloat + PBC20_4.AsFloat + PBC20_5.AsFloat ;
+  PBC22_tot.AsFloat := PBC22_0.AsFloat + PBC22_1.AsFloat + PBC22_5.AsFloat + PBC22_6.AsFloat ;
+  PBC24_tot.AsFloat := PBC24_0.AsFloat ;
+  PBCtot_tot.AsFloat := PBC6C8C10_tot.AsFloat + PBC12_tot.AsFloat + PBC14_tot.AsFloat + PBC16_tot.AsFloat + PBC18_tot.AsFloat + PBC20_tot.AsFloat + PBC22_tot.AsFloat + PBC24_tot.AsFloat ;
+  PBCtot_0.AsFloat := PBC6C8C10_0.AsFloat + PBC12_0.AsFloat + PBC14_0.AsFloat + PBC16_0.AsFloat + PBC18_0.AsFloat + PBC20_0.AsFloat + PBC22_0.AsFloat + PBC24_0.AsFloat ;
+  PBCtot_1.AsFloat := PBC16_1.AsFloat + PBC18_1.AsFloat + PBC20_1.AsFloat + PBC22_1.AsFloat ;
+  PBCtot_2.AsFloat := PBC18_2.AsFloat ;
+  PBCtot_3.AsFloat := PBC18_3.AsFloat ;
+  PBCtot_4.AsFloat := PBC18_4.AsFloat + PBC20_4.AsFloat ;
+  PBCtot_5.AsFloat := PBC20_5.AsFloat + PBC22_5.AsFloat ;
+  PBCtot_6.AsFloat := PBC22_6.AsFloat ;
+  // Acides gras satur�s
+  if PBCtot_tot.AsFloat = 0
+  then
+    PBSatur.Text := ''
+  else
+    PBSatur.AsFloat := PBCtot_0.AsFloat / PBCtot_tot.AsFloat * 100 ;
+  // Acides gras mono-insatur�s
+  if PBCtot_tot.AsFloat = 0
+  then
+    PBMono.Text := ''
+  else
+    PBMono.AsFloat := PBCtot_1.AsFloat / PBCtot_tot.AsFloat * 100 ;
+  // Acides gras poly-insatur�s
+  PBPoly.AsFloat := 100 - (PBSatur.AsFloat + PBMono.AsFloat) ;
+  // Omega-6 / Omega-3
+  Omega3 := PBC18_3.AsFloat + PBC18_4.AsFloat + PBC20_5.AsFloat + PBC22_5.AsFloat + PBC22_6.AsFloat ;
+  Omega6 := PBC18_2.AsFloat + PBC20_4.AsFloat ;
+  if Omega3 = 0
+  then
+    PBO6sO3.Text := 'infini'
+  else
+    PBO6sO3.AsFloat := Omega6 / Omega3 ;
+end ;
+
+procedure TFMatiere.PBAGChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    PMatiere.CC.AGsLip := PBAG.AsFloat ;
+    Update := TRUE ;
+    // R�affichage des teneurs en acides gras (si besoin)
+    case ConfTAG of
+      0 : // g/kg
+        with PMatiere.CC do
+        begin
+          PBC6C8C10_0.AsFloat := C6C8C10 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC12_0.AsFloat := C12_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC14_0.AsFloat := C14_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC16_0.AsFloat := C16_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC16_1.AsFloat := C16_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC18_0.AsFloat := C18_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC18_1.AsFloat := C18_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC18_2.AsFloat := C18_2 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC18_3.AsFloat := C18_3 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC18_4.AsFloat := C18_4 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC20_0.AsFloat := C20_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC20_1.AsFloat := C20_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC20_4.AsFloat := C20_4 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC20_5.AsFloat := C20_5 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC22_0.AsFloat := C22_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC22_1.AsFloat := C22_1 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC22_5.AsFloat := C22_5 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC22_6.AsFloat := C22_6 / 100 * AGsLip / 100 * Lip * RapMS ;
+          PBC24_0.AsFloat := C24_0 / 100 * AGsLip / 100 * Lip * RapMS ;
+        end ;
+      1 : // %
+        with PMatiere.CC do
+        begin
+          PBC6C8C10_0.AsFloat := C6C8C10 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC12_0.AsFloat := C12_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC14_0.AsFloat := C14_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC16_0.AsFloat := C16_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC16_1.AsFloat := C16_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC18_0.AsFloat := C18_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC18_1.AsFloat := C18_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC18_2.AsFloat := C18_2 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC18_3.AsFloat := C18_3 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC18_4.AsFloat := C18_4 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC20_0.AsFloat := C20_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC20_1.AsFloat := C20_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC20_4.AsFloat := C20_4 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC20_5.AsFloat := C20_5 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC22_0.AsFloat := C22_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC22_1.AsFloat := C22_1 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC22_5.AsFloat := C22_5 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC22_6.AsFloat := C22_6 * AGsLip / 100 * Lip / 1000 * RapMS ;
+          PBC24_0.AsFloat := C24_0 * AGsLip / 100 * Lip / 1000 * RapMS ;
+        end ;
+    end ;
+    Update := FALSE ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC6C8C10_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C6C8C10 := 0
+          else
+            C6C8C10 := PBC6C8C10_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C6C8C10 := 0
+          else
+            C6C8C10 := PBC6C8C10_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C6C8C10 := PBC6C8C10_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC12_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C12_0 := 0
+          else
+            C12_0 := PBC12_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C12_0 := 0
+          else
+            C12_0 := PBC12_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C12_0 := PBC12_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC14_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C14_0 := 0
+          else
+            C14_0 := PBC14_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C14_0 := 0
+          else
+            C14_0 := PBC14_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C14_0 := PBC14_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC16_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C16_0 := 0
+          else
+            C16_0 := PBC16_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C16_0 := 0
+          else
+            C16_0 := PBC16_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C16_0 := PBC16_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC16_1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C16_1 := 0
+          else
+            C16_1 := PBC16_1.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C16_1 := 0
+          else
+            C16_1 := PBC16_1.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C16_1 := PBC16_1.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC18_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_0 := 0
+          else
+            C18_0 := PBC18_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_0 := 0
+          else
+            C18_0 := PBC18_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C18_0 := PBC18_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC18_1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_1 := 0
+          else
+            C18_1 := PBC18_1.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_1 := 0
+          else
+            C18_1 := PBC18_1.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C18_1 := PBC18_1.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC18_2Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_2 := 0
+          else
+            C18_2 := PBC18_2.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_2 := 0
+          else
+            C18_2 := PBC18_2.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C18_2 := PBC18_2.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC18_3Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_3 := 0
+          else
+            C18_3 := PBC18_3.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_3 := 0
+          else
+            C18_3 := PBC18_3.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C18_3 := PBC18_3.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC18_4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_4 := 0
+          else
+            C18_4 := PBC18_4.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C18_4 := 0
+          else
+            C18_4 := PBC18_4.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C18_4 := PBC18_4.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC20_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_0 := 0
+          else
+            C20_0 := PBC20_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_0 := 0
+          else
+            C20_0 := PBC20_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C20_0 := PBC20_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC20_1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_1 := 0
+          else
+            C20_1 := PBC20_1.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_1 := 0
+          else
+            C20_1 := PBC20_1.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C20_1 := PBC20_1.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC20_4Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_4 := 0
+          else
+            C20_4 := PBC20_4.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_4 := 0
+          else
+            C20_4 := PBC20_4.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C20_4 := PBC20_4.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC20_5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_5 := 0
+          else
+            C20_5 := PBC20_5.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C20_5 := 0
+          else
+            C20_5 := PBC20_5.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C20_5 := PBC20_5.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC22_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_0 := 0
+          else
+            C22_0 := PBC22_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_0 := 0
+          else
+            C22_0 := PBC22_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C22_0 := PBC22_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC22_1Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_1 := 0
+          else
+            C22_1 := PBC22_1.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_1 := 0
+          else
+            C22_1 := PBC22_1.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C22_1 := PBC22_1.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC22_5Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_5 := 0
+          else
+            C22_5 := PBC22_5.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_5 := 0
+          else
+            C22_5 := PBC22_5.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C22_5 := PBC22_5.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC22_6Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_6 := 0
+          else
+            C22_6 := PBC22_6.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C22_6 := 0
+          else
+            C22_6 := PBC22_6.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C22_6 := PBC22_6.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+procedure TFMatiere.PBC24_0Change (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      case ConfTAG of
+        0 : // g/kg
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C24_0 := 0
+          else
+            C24_0 := PBC24_0.AsFloat * 100 / AGsLip * 100 / Lip / RapMS ;
+        1 : // %
+          if (AGsLip = 0) or (Lip = 0)
+          then
+            C24_0 := 0
+          else
+            C24_0 := PBC24_0.AsFloat / AGsLip * 100 / Lip * 1000 / RapMS ;
+        else // % acides gras
+          C24_0 := PBC24_0.AsFloat ;
+      end ;
+    // Calcul des champs li�s � cette valeur
+    CalculAG ;
+  end ;
+end ;
+
+////////////////////////////////////////////////////////////////////////////////
+// Min�raux
+////////////////////////////////////////////////////////////////////////////////
+
+// Affichage de la teneur en fonction de la configuration
+procedure TFMatiere.AffichTMineraux;
+begin
+  // Macro-�l�ments
+  if ConfTMacro = 0
+  then // g/kg
+    with PMatiere.CC do
+    begin
+      PBCa.AsFloat := Ca * RapMS;
+      PBP.AsFloat := P * RapMS;
+      PBNa.AsFloat := Na * RapMS;
+      PBK.AsFloat := K * RapMS;
+      PBMg.AsFloat := Mg * RapMS;
+      PBCl.AsFloat := Cl * RapMS;
+      PBS.AsFloat := S * RapMS;
+    end
+  else // %
+    with PMatiere.CC do
+    begin
+      PBCa.AsFloat := Ca / 1000 * 100 * RapMS;
+      PBP.AsFloat := P / 1000 * 100 * RapMS;
+      PBNa.AsFloat := Na / 1000 * 100 * RapMS;
+      PBK.AsFloat := K / 1000 * 100 * RapMS;
+      PBMg.AsFloat := Mg / 1000 * 100 * RapMS;
+      PBCl.AsFloat := Cl / 1000 * 100 * RapMS;
+      PBS.AsFloat := S / 1000 * 100 * RapMS;
+    end ;
+  // Oligo-�l�ments
+  if ConfTOligo = 0
+  then // mg/kg
+    with PMatiere.CC do
+    begin
+      PBCu.AsFloat := Cu * RapMS;
+      PBZn.AsFloat := Zn * RapMS;
+      PBMn.AsFloat := Mn * RapMS;
+      PBFe.AsFloat := Fe * RapMS;
+      PBSe.AsFloat := Se * RapMS;
+      PBCo.AsFloat := Co * RapMS;
+      PBMb.AsFloat := Mb * RapMS;
+      PBI.AsFloat := I * RapMS;
+    end
+  else // %
+    with PMatiere.CC do
+    begin
+      PBCu.AsFloat := Cu / 1000000 * 100 * RapMS;
+      PBZn.AsFloat := Zn / 1000000 * 100 * RapMS;
+      PBMn.AsFloat := Mn / 1000000 * 100 * RapMS;
+      PBFe.AsFloat := Fe / 1000000 * 100 * RapMS;
+      PBSe.AsFloat := Se / 1000000 * 100 * RapMS;
+      PBCo.AsFloat := Co / 1000000 * 100 * RapMS;
+      PBMb.AsFloat := Mb / 1000000 * 100 * RapMS;
+      PBI.AsFloat := I / 1000000 * 100 * RapMS;
+    end ;
+  // Phosphore
+  PBPtot.AsFloat := PBP.AsFloat;
+  if ConfTMacro = 0
+  then // g/kg
+    with PMatiere.CC do
+    begin
+      PBPdigG.AsFloat := PdigG * RapMS;
+      PBPdigF.AsFloat := PdigF * RapMS;
+    end
+  else // %
+    with PMatiere.CC do
+    begin
+      PBPdigG.AsFloat := PdigG / 1000 * 100 * RapMS;
+      PBPdigF.AsFloat := PdigF / 1000 * 100 * RapMS;
+    end;
+  with PMatiere.CC do
+  begin
+    PBPhytase.AsFloat := Phytase;
+    PBActPhytE.AsFloat := ActPhytE * RapMS;
+    PBActPhytM.AsFloat := ActPhytM * RapMS;
+  end;
+end;
+
+procedure TFMatiere.CalculMineraux;
+begin
+  // Ca / P
+  if PMatiere.CC.P = 0
+  then
+    PBCasP.Text := 'infini'
+  else
+    with PMatiere.CC do
+      PBCasP.AsFloat := Ca / P;
+  // Bilan cations-anions
+  with PMatiere.CC do
+    PBBilanCA.AsFloat := 1000 * (K / 39 + Na / 23 - Cl / 35.5 - S / 16);
+  // Bilan �lectrolytique
+  with PMatiere.CC do
+    PBBilanE.AsFloat := 1000 * (K / 39 + Na / 23 - Cl / 35.5);
+end;
+
+procedure TFMatiere.PBCaChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        Ca := PBCa.AsFloat / RapMS
+      else // %
+        Ca := PBCa.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFMatiere.PBPChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        P := PBP.AsFloat / RapMS
+      else // %
+        P := PBP.AsFloat * 1000 / 100 / RapMS ;
+    PBPtot.AsFloat := PBP.AsFloat;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFMatiere.PBNaChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        Na := PBNa.AsFloat / RapMS
+      else // %
+        Na := PBNa.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFMatiere.PBKChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        K := PBK.AsFloat / RapMS
+      else // %
+        K := PBK.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFMatiere.PBMgChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        Mg := PBMg.AsFloat / RapMS
+      else // %
+        Mg := PBMg.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBClChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        Cl := PBCl.AsFloat / RapMS
+      else // %
+        Cl := PBCl.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFMatiere.PBSChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        S := PBS.AsFloat / RapMS
+      else // %
+        S := PBS.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculMineraux ;
+  end ;
+end ;
+
+procedure TFMatiere.PBCuChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Cu := PBCu.AsFloat / RapMS
+      else // %
+        Cu := PBCu.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBZnChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Zn := PBZn.AsFloat / RapMS
+      else // %
+        Zn := PBZn.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBMnChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Mn := PBMn.AsFloat / RapMS
+      else // %
+        Mn := PBMn.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBFeChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Fe := PBFe.AsFloat / RapMS
+      else // %
+        Fe := PBFe.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBSeChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Se := PBSe.AsFloat / RapMS
+      else // %
+        Se := PBSe.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBCoChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Co := PBCo.AsFloat / RapMS
+      else // %
+        Co := PBCo.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBMbChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        Mb := PBMb.AsFloat / RapMS
+      else // %
+        Mb := PBMb.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBIChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTOligo = 0
+      then // mg/kg
+        I := PBI.AsFloat / RapMS
+      else // %
+        I := PBI.AsFloat * 1000000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBPdigGChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        PdigG := PBPdigG.AsFloat / RapMS
+      else // %
+        PdigG := PBPdigG.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBPdigFChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTMacro = 0
+      then // g/kg
+        PdigF := PBPdigF.AsFloat / RapMS
+      else // %
+        PdigF := PBPdigF.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBPhytaseChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      Phytase := PBPhytase.AsFloat ;
+  end ;
+end ;
+
+procedure TFMatiere.PBActPhytEChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      ActPhytE := PBActPhytE.AsFloat / RapMS ;
+  end ;
+end ;
+
+procedure TFMatiere.PBActPhytMChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      ActPhytM := PBActPhytM.AsFloat / RapMS ;
+  end ;
+end ;
+
+////////////////////////////////////////////////////////////////////////////////
+// Fibres
+////////////////////////////////////////////////////////////////////////////////
+
+// Affichage de la teneur en fonction de la configuration
+procedure TFMatiere.AffichTFibres ;
+begin
+  if ConfTFibres = 0
+  then // g/kg
+    with PMatiere.CC do
+    begin
+      PBCB.AsFloat := CB * RapMS ;
+      PBNDF.AsFloat := NDF * RapMS ;
+      PBADF.AsFloat := ADF * RapMS ;
+      PBADL.AsFloat := ADL * RapMS ;
+      PBParois.AsFloat := Parois * RapMS ;
+    end
+  else // %
+    with PMatiere.CC do
+    begin
+      PBCB.AsFloat := CB / 1000 * 100 * RapMS ;
+      PBNDF.AsFloat := NDF / 1000 * 100 * RapMS ;
+      PBADF.AsFloat := ADF / 1000 * 100 * RapMS ;
+      PBADL.AsFloat := ADL / 1000 * 100 * RapMS ;
+      PBParois.AsFloat := Parois / 1000 * 100 * RapMS ;
+    end ;
+end ;
+
+procedure TFMatiere.PBCBChange (Sender : TObject) ;
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTFibres = 0
+      then // g/kg
+        CB := PBCB.AsFloat / RapMS
+      else // %
+        CB := PBCB.AsFloat * 1000 / 100 / RapMS ;
+    // Calcul des champs li�s � cette valeur
+    CalculResidu ;
+    AffichResidu ;
+  end ;
+end ;
+
+procedure TFMatiere.PBNDFChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTFibres = 0
+      then // g/kg
+        NDF := PBNDF.AsFloat / RapMS
+      else // %
+        NDF := PBNDF.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end;
+
+procedure TFMatiere.PBADFChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTFibres = 0
+      then // g/kg
+        ADF := PBADF.AsFloat / RapMS
+      else // %
+        ADF := PBADF.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end;
+
+procedure TFMatiere.PBADLChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTFibres = 0
+      then // g/kg
+        ADL := PBADL.AsFloat / RapMS
+      else // %
+        ADL := PBADL.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end;
+
+procedure TFMatiere.PBParoisChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Modified := TRUE ;
+    // Nouvelle valeur
+    with PMatiere.CC do
+      if ConfTFibres = 0
+      then // g/kg
+        Parois := PBParois.AsFloat / RapMS
+      else // %
+        Parois := PBParois.AsFloat * 1000 / 100 / RapMS ;
+  end ;
+end;
+
+end.
Index: UFRapMatMin.pas
===================================================================
--- UFRapMatMin.pas	(révision 0)
+++ UFRapMatMin.pas	(révision 3)
@@ -0,0 +1,179 @@
+unit UFRapMatMin;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapMatMin = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLMatiere: TQRLabel;
+    CDSRapport: TClientDataSet;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    SFMatiere: TStringField;
+    QRDBMatiere: TQRDBText;
+    QRLTMacro: TQRLabel;
+    QRLCa: TQRLabel;
+    QRDBTCa: TQRDBText;
+    QRLMacro: TQRLabel;
+    QRLCompo: TQRLabel;
+    QRLNa: TQRLabel;
+    QRDBTNa: TQRDBText;
+    QRLMg: TQRLabel;
+    QRDBTMg: TQRDBText;
+    QRLS: TQRLabel;
+    QRDBTS: TQRDBText;
+    QRLP: TQRLabel;
+    QRDBTP: TQRDBText;
+    QRLK: TQRLabel;
+    QRDBTK: TQRDBText;
+    QRLCl: TQRLabel;
+    QRDBTCl: TQRDBText;
+    QRLTOligo: TQRLabel;
+    QRLCu: TQRLabel;
+    QRDBTCu: TQRDBText;
+    QRLOligo: TQRLabel;
+    QRLMn: TQRLabel;
+    QRDBTMn: TQRDBText;
+    QRLSe: TQRLabel;
+    QRDBTSe: TQRDBText;
+    QRLMb: TQRLabel;
+    QRDBTMb: TQRDBText;
+    QRLZn: TQRLabel;
+    QRDBTZn: TQRDBText;
+    QRLFe: TQRLabel;
+    QRDBTFe: TQRDBText;
+    QRLCo: TQRLabel;
+    QRDBTCo: TQRDBText;
+    QRLI: TQRLabel;
+    QRDBTI: TQRDBText;
+    QRLPhosphore: TQRLabel;
+    QRLPTot: TQRLabel;
+    QRDBTPTot: TQRDBText;
+    QRLPDigG: TQRLabel;
+    QRDBTPDigG: TQRDBText;
+    QRLPhytase: TQRLabel;
+    QRDBTPhytase: TQRDBText;
+    QRLActPhytE: TQRLabel;
+    QRDBTActPhytE: TQRDBText;
+    QRLPDig: TQRLabel;
+    QRLPDigF: TQRLabel;
+    QRDBTPDigF: TQRDBText;
+    QRLActPhyt: TQRLabel;
+    QRLActPhytM: TQRLabel;
+    QRDBTActPhytM: TQRDBText;
+    SFP: TStringField;
+    SFNa: TStringField;
+    SFK: TStringField;
+    SFMg: TStringField;
+    SFCl: TStringField;
+    SFS: TStringField;
+    SFCa: TStringField;
+    SFZn: TStringField;
+    SFPDigF: TStringField;
+    SFMn: TStringField;
+    SFFe: TStringField;
+    SFSe: TStringField;
+    SFCo: TStringField;
+    SFMb: TStringField;
+    SFI: TStringField;
+    SFCu: TStringField;
+    SFPhytase: TStringField;
+    SFPDigG: TStringField;
+    SFActPhytM: TStringField;
+    SFPTot: TStringField;
+    SFActPhytE: TStringField;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapMatMin: TFRapMatMin;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFMatiere, UFPrevRap;
+
+{$R *.dfm}
+
+{ TFRapMatMin }
+
+procedure TFRapMatMin.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Matiere_'] := FMatiere.CBMatiere.Text;
+    FieldValues['_Ca_'] := FMatiere.PBCa.Text;
+    FieldValues['_P_'] := FMatiere.PBP.Text;
+    FieldValues['_Na_'] := FMatiere.PBNa.Text;
+    FieldValues['_K_'] := FMatiere.PBK.Text;
+    FieldValues['_Mg_'] := FMatiere.PBMg.Text;
+    FieldValues['_Cl_'] := FMatiere.PBCl.Text;
+    FieldValues['_S_'] := FMatiere.PBS.Text;
+    FieldValues['_Cu_'] := FMatiere.PBCu.Text;
+    FieldValues['_Zn_'] := FMatiere.PBZn.Text;
+    FieldValues['_Mn_'] := FMatiere.PBMn.Text;
+    FieldValues['_Fe_'] := FMatiere.PBFe.Text;
+    FieldValues['_Se_'] := FMatiere.PBSe.Text;
+    FieldValues['_Co_'] := FMatiere.PBCo.Text;
+    FieldValues['_Mb_'] := FMatiere.PBMb.Text;
+    FieldValues['_I_'] := FMatiere.PBI.Text;
+    FieldValues['_PTot_'] := FMatiere.PBPtot.Text;
+    FieldValues['_PDigG_'] := FMatiere.PBPdigG.Text;
+    FieldValues['_PDigF_'] := FMatiere.PBPdigF.Text;
+    FieldValues['_Phytase_'] := FMatiere.PBPhytase.Text;
+    FieldValues['_ActPhytE_'] := FMatiere.PBActPhytE.Text;
+    FieldValues['_ActPhytM_'] := FMatiere.PBActPhytM.Text;
+    Post;
+  end;
+  QRMMemo.Lines.Add(FMatiere.CBMatiere.Hint);
+  QRLCompo.Caption := FMatiere.Hint;
+  QRLTMacro.Caption := FMatiere.GBTMacro.Caption;
+  QRLTOligo.Caption := FMatiere.GBTOligo.Caption;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFWarning.dfm
===================================================================
--- UFWarning.dfm	(révision 0)
+++ UFWarning.dfm	(révision 3)
@@ -0,0 +1,62 @@
+object FWarning: TFWarning
+  Left = 200
+  Top = 200
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Warning'
+  ClientHeight = 248
+  ClientWidth = 496
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  DesignSize = (
+    496
+    248)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object BBOk: TBitBtn
+    Left = 408
+    Top = 216
+    Width = 80
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    NumGlyphs = 2
+    TabOrder = 0
+  end
+  object CBDisplay: TCheckBox
+    Left = 8
+    Top = 222
+    Width = 320
+    Height = 17
+    Caption = 'Do not show this message again'
+    TabOrder = 1
+  end
+  object REMessage: TRichEdit
+    Left = 8
+    Top = 8
+    Width = 480
+    Height = 200
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 2
+  end
+end
Index: UFCompSimulP.pas
===================================================================
--- UFCompSimulP.pas	(révision 0)
+++ UFCompSimulP.pas	(révision 3)
@@ -0,0 +1,3380 @@
+unit UFCompSimulP;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Messages, Dialogs, StdCtrls, ExtCtrls,
+  ComCtrls, Menus, TeeProcs, TeEngine, Series, Chart;
+
+type
+  TFCompSimulP = class(TForm)
+    PC: TPageControl;
+    TabRej: TTabSheet;
+    CBRej3: TComboBox;
+    CBRej4: TComboBox;
+    TabPerf: TTabSheet;
+    CBPerf4: TComboBox;
+    CBPerf3: TComboBox;
+    CBPerf2: TComboBox;
+    TabAli: TTabSheet;
+    TabAA: TTabSheet;
+    TabNRJ: TTabSheet;
+    CBAli4: TComboBox;
+    CBAA3: TComboBox;
+    CBAA4: TComboBox;
+    CBNRJ3: TComboBox;
+    CBNRJ4: TComboBox;
+    CBPerf1: TComboBox;
+    CBAA1: TComboBox;
+    CBAA5A: TComboBox;
+    CBAA2: TComboBox;
+    CBNRJ1: TComboBox;
+    CBNRJ2: TComboBox;
+    CBNRJ5: TComboBox;
+    GBPerfX: TGroupBox;
+    GBPerfY: TGroupBox;
+    GBAAX: TGroupBox;
+    GBNRJX: TGroupBox;
+    GBAliY: TGroupBox;
+    GBAAY: TGroupBox;
+    GBNRJY: TGroupBox;
+    GBRejY: TGroupBox;
+    GBAAT: TGroupBox;
+    GBRejT: TGroupBox;
+    GBRejX: TGroupBox;
+    GBAliX: TGroupBox;
+    GBAliT: TGroupBox;
+    GBPerfT: TGroupBox;
+    GBNRJT: TGroupBox;
+    Graph: TChart;
+    LBNRJ: TListBox;
+    LBRej: TListBox;
+    LBAA: TListBox;
+    CBAA5B: TComboBox;
+    CBPerf3Global: TComboBox;
+    CBNRJ3Valeurs: TComboBox;
+    TabMin: TTabSheet;
+    GBMinY: TGroupBox;
+    CBMin3: TComboBox;
+    CBMin4: TComboBox;
+    GBMinX: TGroupBox;
+    GBMinT: TGroupBox;
+    CBAli3: TComboBox;
+    LBMin: TListBox;
+    CBMin1: TComboBox;
+    CBMin2: TComboBox;
+    CBMin5B: TComboBox;
+    CBMin5A: TComboBox;
+    PM: TPopupMenu;
+    MI3D: TMenuItem;
+    MIPreview: TMenuItem;
+    MIPrint: TMenuItem;
+    PD: TPrintDialog;
+    CBAli5: TComboBox;
+    CBAli1: TComboBox;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure PCChange(Sender: TObject);
+    procedure CBRej3Change(Sender: TObject);
+    procedure CBRej4Change(Sender: TObject);
+    procedure CBPerf2Change(Sender: TObject);
+    procedure CBPerf3Change(Sender: TObject);
+    procedure CBAli4Change(Sender: TObject);
+    procedure CBAA3Change(Sender: TObject);
+    procedure CBAA4Change(Sender: TObject);
+    procedure CBNRJ3Change(Sender: TObject);
+    procedure CBNRJ4Change(Sender: TObject);
+    procedure CBPerf1Change(Sender: TObject);
+    procedure CBPerf4Change(Sender: TObject);
+    procedure CBAA1Change(Sender: TObject);
+    procedure CBAA5Change(Sender: TObject);
+    procedure CBAA2Change(Sender: TObject);
+    procedure CBNRJ1Change(Sender: TObject);
+    procedure CBNRJ2Change(Sender: TObject);
+    procedure CBNRJ5Change(Sender: TObject);
+    procedure CBMin3Change(Sender: TObject);
+    procedure CBMin4Change(Sender: TObject);
+    procedure CBAli3Change(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure CBMin1Change(Sender: TObject);
+    procedure CBMin2Change(Sender: TObject);
+    procedure CBMin5Change(Sender: TObject);
+    procedure MI3DClick(Sender: TObject);
+    procedure MIPreviewClick(Sender: TObject);
+    procedure MIPrintClick(Sender: TObject);
+    procedure CBAli1Change(Sender: TObject);
+    procedure CBAli5Change(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+    LinePerf: array[1..5] of TLineSeries;
+    BarPerf: TBarSeries;
+    ListAli, ListMat: TStrings;
+    CompositionComplete: boolean;
+    BarAli: array of TBarSeries;
+    BarMat: TBarSeries;
+    ListAA: TStrings;
+    BarAA: array of TBarSeries;
+    LineAA: array[1..5] of TLineSeries;
+    ListNRJ: TStrings;
+    BarNRJ: array of TBarSeries;
+    LineNRJ: array[1..5] of TLineSeries;
+    ListMin: TStrings;
+    BarMin: array of TBarSeries;
+    LineMin: array[1..5] of TLineSeries;
+    ListRej: TStrings;
+    BarRej: array of TBarSeries;
+    procedure ResetGraph;
+    procedure InitPerf;
+    procedure AffGraphPerf;
+    procedure InitAli;
+    procedure AffGraphAli;
+    procedure InitAA;
+    procedure AffGraphAA;
+    procedure InitNRJ;
+    procedure AffGraphNRJ;
+    procedure InitMin;
+    procedure AffGraphMin;
+    procedure InitRej;
+    procedure AffGraphRej;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FCompSimulP: TFCompSimulP;
+
+implementation
+
+uses
+  Graphics, Printers, Math, SysUtils, gnugettext, UVariables, UStrings,
+  UFindRec, UUtil, UEchelle, UCalcul, UFSimulP, UFPrevGraph, UFWarning;
+
+{$R *.dfm}
+
+{ TFCompSimulP }
+
+procedure TFCompSimulP.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 544 + (Width - ClientWidth);
+  Width := 640;
+  Constraints.MinHeight := 360 + (Height - ClientHeight);
+  Height := 480;
+  CBPerf1.ItemIndex := 0;
+  CBPerf2.ItemIndex := 0;
+  CBPerf3.ItemIndex := 0;
+  CBPerf3Global.ItemIndex := 0;
+  CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Weight gain'), _('g'), _('d')]));
+  CBPerf4.Items.Add(Format('%s (%s)', [_('Body weight'), _('kg')]));
+  CBPerf4.ItemIndex := 0;
+  CBAli1.ItemIndex := 0;
+  CBAli3.ItemIndex := 0;
+  CBAli4.Items.Add(StrKg);
+  CBAli4.Items.Add(Format('%s/%s', [StrKg, StrJ]));
+  CBAli4.Items.Add('%');
+  CBAli4.ItemIndex := 0;
+  CBAli5.ItemIndex := 0;
+  CBAA1.ItemIndex := 0;
+  CBAA2.ItemIndex := 0;
+  CBAA3.ItemIndex := 1;
+  CBAA4.Items.Add(StrG);
+  CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+  CBAA4.Items.Add('%');
+  CBAA4.ItemIndex := 0;
+  CBAA5A.ItemIndex := 0;
+  CBAA5B.ItemIndex := 0;
+  CBNRJ1.ItemIndex := 0;
+  CBNRJ2.ItemIndex := 0;
+  CBNRJ3.ItemIndex := 0;
+  CBNRJ3Valeurs.ItemIndex := 0;
+  CBNRJ4.Items.Add(StrMJ);
+  CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
+  CBNRJ4.Items.Add(Format('%s/%s %s', [StrMJ, StrKg, StrAlimentUnit]));
+  CBNRJ4.Items.Add('%');
+  CBNRJ4.ItemIndex := 0;
+  CBNRJ5.ItemIndex := 0;
+  CBMin1.ItemIndex := 0;
+  CBMin2.ItemIndex := 0;
+  CBMin3.ItemIndex := 0;
+  CBMin4.Items.Add(StrG);
+  CBMin4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+  CBMin4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+  CBMin4.Items.Add('%');
+  CBMin4.ItemIndex := 0;
+  CBMin5A.ItemIndex := 0;
+  CBMin5B.ItemIndex := 0;
+  CBRej3.ItemIndex := 0;
+  CBRej4.Items.Add(StrG);
+  CBRej4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+  CBRej4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+  CBRej4.Items.Add('%');
+  CBRej4.ItemIndex := 0;
+end;
+
+procedure TFCompSimulP.FormShow(Sender: TObject);
+var
+  k: integer;
+begin
+  MIPrint.Enabled := IsComplete or IsEducation;
+  // Bas de page du graphique
+  Graph.Foot.Text.Clear;
+  case FSimulP.PC.ActivePageIndex of
+    1: // Comparaison
+      for k := 5 downto 1 do
+        if TabSimulP[k].Ok
+        then
+        begin
+          if FSimulP.RBCompSimul.Checked
+          then // Simulations simples
+            Graph.Foot.Text.Add(Format(StrSimulComp, [k, FindNomSimulP(TabSimulP[k].Simul)]))
+          else // Un �l�ment d'une simulation
+          begin
+            if FSimulP.RBCompProfil.Checked
+            then // Profil animal
+              Graph.Foot.Text.Add(Format(StrSimulProfil, [k, FindNomSimulP(TabSimulP[k].Simul), FindNomProfilP(TabSimulP[k].Profil)]));
+            if FSimulP.RBCompSeqAli.Checked
+            then // S�quence alimentaire
+              Graph.Foot.Text.Add(Format(StrSimulSeqAli, [k, FindNomSimulP(TabSimulP[k].Simul), FindNomSeqAliP(TabSimulP[k].SeqAli)]));
+            if FSimulP.RBCompRation.Checked
+            then // Plan de rationnement
+              Graph.Foot.Text.Add(Format(StrSimulRation, [k, FindNomSimulP(TabSimulP[k].Simul), FindNomRationP(TabSimulP[k].Ration)]));
+          end;
+        end;
+    2: // Sensibilit�
+      Graph.Foot.Text.Add(Format(StrSimulSens, [FSimulP.CBVariable.Text, FSimulP.CBSensSimul.Text]));
+  end;
+  // Aliment
+  InitAli;
+  // Performances
+  InitPerf;
+  // Acides amin�s
+  InitAA;
+  // Energie
+  InitNRJ;
+  // Min�raux
+  InitMin;
+  // Rejets
+  InitRej;
+  // Abscisses par d�faut
+  CBPerf2.ItemIndex := XCrois;
+  CBAA2.ItemIndex := XCrois;
+  CBNRJ2.ItemIndex := XCrois;
+  // Affichage principal
+  PC.ActivePageIndex := 0;
+  PCChange (nil);
+end;
+
+procedure TFCompSimulP.FormClose (Sender: TObject; var Action: TCloseAction);
+var
+  i, k: integer;
+begin
+  // Performances
+  BarPerf.Free;
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+      LinePerf[k].Free;
+  // Aliment
+  BarMat.Free;
+  for i := 0 to ListAli.Count - 1 do
+    BarAli[i].Free;
+  SetLength(BarAli, 0);
+  ListMat.Free;
+  ListAli.Free;
+  // Acides amin�s
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+      LineAA[k].Free;
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Free;
+  SetLength(BarAA, 0);
+  ListAA.Free;
+  // Energie
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+      LineNRJ[k].Free;
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Free;
+  SetLength(BarNRJ, 0);
+  ListNRJ.Free;
+  // Min�raux
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+      LineMin[k].Free;
+  for i := 0 to ListMin.Count - 1 do
+    BarMin[i].Free;
+  SetLength(BarMin, 0);
+  ListMin.Free;
+  // Rejets
+  for i := 0 to ListRej.Count - 1 do
+    BarRej[i].Free;
+  SetLength(BarRej, 0);
+  ListRej.Free;
+end;
+
+procedure TFCompSimulP.PCChange(Sender: TObject);
+begin
+  case PC.ActivePageIndex of
+    0: // Performances
+      AffGraphPerf;
+    1: // Aliment
+      AffGraphAli;
+    2: // Acides amin�s
+      AffGraphAA;
+    3: // Energie
+      AffGraphNRJ;
+    4: // Min�raux
+      AffGraphMin;
+    5: // Rejets
+      AffGraphRej;
+  end;
+end;
+
+procedure TFCompSimulP.ResetGraph;
+var
+  i, k: integer;
+begin
+  Graph.UndoZoom;
+  Graph.Legend.Visible := TRUE;
+  Graph.Title.Text.Clear;
+  Graph.SubTitle.Text.Clear;
+  Graph.BottomAxis.MinimumOffset := 0;
+  Graph.BottomAxis.MaximumOffset := 0;
+  // Performances
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+      LinePerf[k].Active := FALSE;
+  BarPerf.Active := FALSE;
+  // Aliment
+  for i := 0 to ListAli.Count - 1 do
+    BarAli[i].Active := FALSE;
+  BarMat.Active := FALSE;
+  // Acides amin�s
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Active := FALSE;
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+      LineAA[k].Active := FALSE;
+  // Energie
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Active := FALSE;
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+      LineNRJ[k].Active := FALSE;
+  // Min�raux
+  for i := 0 to ListMin.Count - 1 do
+    BarMin[i].Active := FALSE;
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+      LineMin[k].Active := FALSE;
+  // Rejets
+  for i := 0 to ListRej.Count - 1 do
+    BarRej[i].Active := FALSE;
+end;
+
+procedure TFCompSimulP.MI3DClick(Sender: TObject);
+begin
+  Graph.View3D := not (Graph.View3D);
+end;
+
+procedure TFCompSimulP.MIPreviewClick(Sender: TObject);
+begin
+  FPrevGraph := TFPrevGraph.Create(Self);
+  with FPrevGraph do
+  begin
+    TPPGraph.Panels.Add(Graph);
+    ShowModal;
+    Release;
+  end;
+end;
+
+procedure TFCompSimulP.MIPrintClick(Sender: TObject);
+begin
+  if PD.Execute
+  then
+  begin
+    Printer.Orientation := poLandscape;
+    Graph.Print;
+  end;
+end;
+
+//////////////////////
+//   Performances   //
+//////////////////////
+procedure TFCompSimulP.InitPerf;
+const
+  TabColor: array[1..5] of TColor
+    = (clRed, clGreen, clYellow, clBlue, clFuchsia);
+var
+  k: integer;
+begin
+  // LinePerf : s�ries (lignes) graphiques
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+    begin
+      LinePerf[k] := TLineSeries.Create (Graph);
+      LinePerf[k].ParentChart := Graph;
+      case FSimulP.PC.ActivePageIndex of
+        1: // Comparaison
+          LinePerf[k].Title := Format('Simulation %d', [k]);
+        2: // Sensibilit�
+          if FSimulP.CBVariable.ItemIndex = 6
+          then // Gaspillage
+            if TabSimulP[k].Variation > 0
+            then
+              LinePerf[k].Title := Format('+%1.0f%%', [TabSimulP[k].Variation * 100])
+            else
+              LinePerf[k].Title := Format('%1.0f%%', [TabSimulP[k].Variation * 100])
+          else
+            LinePerf[k].Title := Format('%1.0f%%', [TabSimulP[k].Variation * 100]);
+      end;
+      LinePerf[k].SeriesColor := TabColor[k];
+      LinePerf[k].LinePen.Color := LinePerf[k].SeriesColor;
+      LinePerf[k].LinePen.Width := 2;
+      Graph.AddSeries (LinePerf[k]);
+    end;
+  // BarPerf : s�rie (barre) graphique
+  BarPerf := TBarSeries.Create(Graph);
+  BarPerf.ParentChart := Graph;
+//  BarPerf.Title := ' ';
+  BarPerf.SeriesColor := clTeal;
+  BarPerf.BarPen.Color := BarPerf.SeriesColor;
+  //BarPerf.Marks.Visible := FALSE;
+  BarPerf.Marks.ArrowLength := -16;
+  BarPerf.Marks.Arrow.Visible := FALSE;
+  BarPerf.Marks.Brush.Style := bsClear;
+  BarPerf.Marks.Frame.Visible := FALSE;
+  BarPerf.Marks.Style := smsValue;
+  //BarPerf.AutoMarkPosition := FALSE;
+  Graph.AddSeries(BarPerf);
+end;
+
+procedure TFCompSimulP.AffGraphPerf;
+var
+  j, k: integer;
+  cumul: double;
+
+  // Abscisse
+  function PerfX: double;
+  begin
+    case CBPerf1.ItemIndex of
+      0: // Affichage dynamique
+        case CBPerf2.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e
+  function PerfY: double;
+  var
+    h: integer;
+    v, conso, gain: double;
+  begin
+    case CBPerf1.ItemIndex of
+      0: // Affichage dynamique
+        case CBPerf3.ItemIndex of
+          0: // Body weight
+            case CBPerf4.ItemIndex of
+              0: // Weight gain (g/d)
+                result := PResSimulP.TabResult[84, j] * 1000;
+              1: // Body weight (kg)
+                result := PResSimulP.TabResult[2, j];
+              else
+                result := 0;
+            end;
+          1: // Time
+            case CBPerf4.ItemIndex of
+              0: // Age (d)
+                result := PResSimulP.TabResult[1, j];
+              else
+                result := 0;
+            end;
+          2: // Feed usage
+            case CBPerf4.ItemIndex of
+              0: // Feed usage (kg/d)
+                result := PResSimulP.TabResult[113, j];
+              1: // Feed usage (kg DM/d)
+                result := PResSimulP.TabResult[106, j] * PResSimulP.TabResult[113, j];
+              2: // Feed usage (MJ DE/d)
+                result := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[113, j];
+              3: // Feed usage (MJ ME/d)
+                result := PResSimulP.TabResult[89, j] * PResSimulP.TabResult[113, j];
+              4: // Feed usage (MJ NE/d)
+                result := PResSimulP.TabResult[90, j] * PResSimulP.TabResult[113, j];
+              5: // Total feed usage (kg)
+              begin
+                cumul := cumul + PResSimulP.TabResult[113, j];
+                result := cumul;
+              end;
+              6: // Total feed usage (kg DM)
+              begin
+                cumul := cumul + PResSimulP.TabResult[106, j] * PResSimulP.TabResult[113, j];
+                result := cumul;
+              end;
+              7: // Total feed usage (MJ DE)
+              begin
+                cumul := cumul + PResSimulP.TabResult[109, j] * PResSimulP.TabResult[113, j];
+                result := cumul;
+              end;
+              8: // Total feed usage (MJ ME)
+              begin
+                cumul := cumul + PResSimulP.TabResult[89, j] * PResSimulP.TabResult[113, j];
+                result := cumul;
+              end;
+              9: // Total feed usage (MJ NE)
+              begin
+                cumul := cumul + PResSimulP.TabResult[90, j] * PResSimulP.TabResult[113, j];
+                result := cumul;
+              end;
+              else
+                result := 0;
+            end;
+          3: // Feed wastage
+            case CBPerf4.ItemIndex of
+              0: // Feed wastage (%)
+                result := PResSimulP.TabResult[112, j] * 100;
+              1: // Total feed wastage (kg)
+              begin
+                cumul := cumul + PResSimulP.TabResult[113, j] - PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              else
+                result := 0;
+            end;
+          4: // Feed intake
+            case CBPerf4.ItemIndex of
+              0: // Feed intake (kg/d)
+                result := PResSimulP.TabResult[11, j];
+              1: // Feed intake (kg DM/d)
+                result := PResSimulP.TabResult[106, j] * PResSimulP.TabResult[11, j];
+              2: // Feed intake (MJ DE/d)
+                result := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[11, j];
+              3: // Feed intake (MJ ME/d)
+                result := PResSimulP.TabResult[89, j] * PResSimulP.TabResult[11, j];
+              4: // Feed intake (MJ NE/d)
+                result := PResSimulP.TabResult[90, j] * PResSimulP.TabResult[11, j];
+              5: // Total feed intake (kg)
+              begin
+                cumul := cumul + PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              6: // Total feed intake (kg DM)
+              begin
+                cumul := cumul + PResSimulP.TabResult[106, j] * PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              7: // Total feed intake (MJ DE)
+              begin
+                cumul := cumul + PResSimulP.TabResult[109, j] * PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              8: // Total feed intake (MJ ME)
+              begin
+                cumul := cumul + PResSimulP.TabResult[89, j] * PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              9: // Total feed intake (MJ NE)
+              begin
+                cumul := cumul + PResSimulP.TabResult[90, j] * PResSimulP.TabResult[11, j];
+                result := cumul;
+              end;
+              else
+                result := 0;
+            end;
+          5: // Feed:Gain
+            if PResSimulP.TabResult[84, j] <> 0
+            then
+              case CBPerf4.ItemIndex of
+                0: // Feed:Gain (kg/kg)
+                  result := PResSimulP.TabResult[113, j] / PResSimulP.TabResult[84, j];
+                1: // Feed:Gain (kg DM/kg)
+                  result := (PResSimulP.TabResult[106, j] * PResSimulP.TabResult[113, j]) / PResSimulP.TabResult[84, j];
+                2: // Feed:Gain (MJ DE/kg)
+                  result := (PResSimulP.TabResult[109, j] * PResSimulP.TabResult[113, j]) / PResSimulP.TabResult[84, j];
+                3: // Feed:Gain (MJ ME/kg)
+                  result := (PResSimulP.TabResult[89, j] * PResSimulP.TabResult[113, j]) / PResSimulP.TabResult[84, j];
+                4: // Feed:Gain (MJ NE/kg)
+                  result := (PResSimulP.TabResult[90, j] * PResSimulP.TabResult[113, j]) / PResSimulP.TabResult[84, j];
+                else
+                  result := 0;
+              end
+            else
+              result := 0;
+          6: // Gain:Feed
+            case CBPerf4.ItemIndex of
+              0: // Gain:Feed (kg/kg)
+                if PResSimulP.TabResult[113, j] <> 0
+                then
+                  result := PResSimulP.TabResult[84, j] / PResSimulP.TabResult[113, j]
+                else
+                  result := 0;
+              1: // Gain:Feed (kg/kg DM)
+                if (PResSimulP.TabResult[113, j] <> 0) and (PResSimulP.TabResult[106, j] <> 0)
+                then
+                  result := PResSimulP.TabResult[84, j] / (PResSimulP.TabResult[106, j] * PResSimulP.TabResult[113, j])
+                else
+                  result := 0;
+              2: // Gain:Feed (kg/MJ DE)
+                if (PResSimulP.TabResult[113, j] <> 0) and (PResSimulP.TabResult[109, j] <> 0)
+                then
+                  result := PResSimulP.TabResult[84, j] / (PResSimulP.TabResult[109, j] * PResSimulP.TabResult[113, j])
+                else
+                  result := 0;
+              3: // Gain:Feed (kg/MJ ME)
+                if (PResSimulP.TabResult[113, j] <> 0) and (PResSimulP.TabResult[89, j] <> 0)
+                then
+                  result := PResSimulP.TabResult[84, j] / (PResSimulP.TabResult[89, j] * PResSimulP.TabResult[113, j])
+                else
+                  result := 0;
+              4: // Gain:Feed (kg/MJ NE)
+                if (PResSimulP.TabResult[113, j] <> 0) and (PResSimulP.TabResult[90, j] <> 0)
+                then
+                  result := PResSimulP.TabResult[84, j] / (PResSimulP.TabResult[90, j] * PResSimulP.TabResult[113, j])
+                else
+                  result := 0;
+              else
+                result := 0;
+            end;
+          7: // Protein
+            case CBPerf4.ItemIndex of
+              0: // Protein deposition (g/d)
+                result := PResSimulP.TabResult[79, j];
+              1: // Protein mass (kg)
+                result := PResSimulP.TabResult[49, j];
+              2: // Protein content (% of BW gain)
+                if PResSimulP.TabResult[84, j] <> 0
+                then
+                  result := (PResSimulP.TabResult[79, j] / 1000) / PResSimulP.TabResult[84, j] * 100
+                else
+                  result := 0;
+              3: // Protein content (% in BW)
+                if PResSimulP.TabResult[2, j] <> 0
+                then
+                  result := PResSimulP.TabResult[49, j] / PResSimulP.TabResult[2, j] * 100
+                else
+                  result := 0;
+              else
+                result := 0;
+            end;
+          8: // Lipid
+            case CBPerf4.ItemIndex of
+              0: // Lipid deposition (g/d)
+                result := PResSimulP.TabResult[80, j];
+              1: // Lipid mass (kg)
+                result := PResSimulP.TabResult[50, j];
+              2: // Lipid content (% of BW gain)
+                if PResSimulP.TabResult[84, j] <> 0
+                then
+                  result := (PResSimulP.TabResult[80, j] / 1000) / PResSimulP.TabResult[84, j] * 100
+                else
+                  result := 0;
+              3: // Lipid content (% in BW)
+                if PResSimulP.TabResult[2, j] <> 0
+                then
+                  result := PResSimulP.TabResult[50, j] / PResSimulP.TabResult[2, j] * 100
+                else
+                  result := 0;
+              else
+                result := 0;
+            end;
+          9: // Carcass
+            case CBPerf4.ItemIndex of
+              0: // Dressing percentage
+                result := CalcRC(PResSimulP.TabResult[2, PResSimulP.NbJSim], CalcRCStd(PProfilP.PVFin, PProfilP.Carcasse), PResSimulP.TabResult[2, j]) * 100;
+              1: // Backfat thickness
+                if FatInfo = 0
+                then // P2
+                  result := CalcP2(PResSimulP.TabResult[50, j])
+                else // User defined
+                  result := CalcUserFat(PResSimulP.TabResult[48, j], PResSimulP.TabResult[49, j], PResSimulP.TabResult[50, j]);
+              2: // Lean meat percentage
+                if LeanInfo = 0
+                then // TMP
+                  result := CalcTMP(PResSimulP.TabResult[48, j], PResSimulP.TabResult[49, j], PResSimulP.TabResult[50, j])
+                else // User defined
+                  result := CalcUserLean(PResSimulP.TabResult[48, j], PResSimulP.TabResult[49, j], PResSimulP.TabResult[50, j]);
+              else
+                result := 0;
+            end;
+          else
+            result := 0;
+        end;
+      1: // Affichage global
+      begin
+        v := 0;
+        case CBPerf3Global.ItemIndex of
+          0: // Body weight
+            case CBPerf4.ItemIndex of
+              0: // Weight gain (g/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[84, h] * 1000 / PresSimulP.NbJSim;
+              1: // Weight gain (kg)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[84, h];
+            end;
+          1: // Time
+            case CBPerf4.ItemIndex of
+              0: // Duration (d)
+                v := PresSimulP.NbJSim;
+            end;
+          2: // Feed usage
+            case CBPerf4.ItemIndex of
+              0: // Feed usage (kg/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[113, h] / PresSimulP.NbJSim;
+              1: // Feed usage (kg DM/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[113, h] / PresSimulP.NbJSim;
+              2: // Feed usage (MJ DE/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[113, h] / PresSimulP.NbJSim;
+              3: // Feed usage (MJ ME/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[113, h] / PresSimulP.NbJSim;
+              4: // Feed usage (MJ NE/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[113, h] / PresSimulP.NbJSim;
+              5: // Total feed usage (kg)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[113, h];
+              6: // Total feed usage (kg DM)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[113, h];
+              7: // Total feed usage (MJ DE)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[113, h];
+              8: // Total feed usage (MJ ME)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[113, h];
+              9: // Total feed usage (MJ NE)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[113, h];
+            end;
+          3: // Feed wastage
+            case CBPerf4.ItemIndex of
+              0: // Feed wastage (%)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[112, h] * 100 / PresSimulP.NbJSim;
+              1: // Total feed wastage (kg)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[113, h] - PResSimulP.TabResult[11, h];
+            end;
+          4: // Feed intake
+            case CBPerf4.ItemIndex of
+              0: // Feed intake (kg/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[11, h] / PresSimulP.NbJSim;
+              1: // Feed intake (kg DM/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[11, h] / PresSimulP.NbJSim;
+              2: // Feed intake (MJ DE/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[11, h] / PresSimulP.NbJSim;
+              3: // Feed intake (MJ ME/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[11, h] / PresSimulP.NbJSim;
+              4: // Feed intake (MJ NE/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[11, h] / PresSimulP.NbJSim;
+              5: // Total feed intake (kg)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[11, h];
+              6: // Total feed intake (kg DM)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[11, h];
+              7: // Total feed intake (MJ DE)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[11, h];
+              8: // Total feed intake (MJ ME)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[11, h];
+              9: // Total feed intake (MJ NE)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[11, h];
+            end;
+          5: // Feed:Gain
+          begin
+            conso := 0;
+            for h := 1 to PresSimulP.NbJSim do
+              case CBPerf4.ItemIndex of
+                0: // Feed:Gain (kg/kg)
+                  conso := conso + PResSimulP.TabResult[113, h];
+                1: // Feed:Gain (kg DM/kg)
+                  conso := conso + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[113, h];
+                2: // Feed:Gain (MJ DE/kg)
+                  conso := conso + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[113, h];
+                3: // Feed:Gain (MJ ME/kg)
+                  conso := conso + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[113, h];
+                4: // Feed:Gain (MJ NE/kg)
+                  conso := conso + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[113, h];
+              end;
+            gain := 0;
+            for h := 1 to PresSimulP.NbJSim do
+              gain := gain + PResSimulP.TabResult[84, h];
+            if gain <> 0
+            then
+              v := conso / gain;
+          end;
+          6: // Gain:Feed
+          begin
+            gain := 0;
+            for h := 1 to PresSimulP.NbJSim do
+              gain := gain + PResSimulP.TabResult[84, h];
+            conso := 0;
+            for h := 1 to PresSimulP.NbJSim do
+              case CBPerf4.ItemIndex of
+                0: // Gain:Feed (kg/kg)
+                  conso := conso + PResSimulP.TabResult[113, h];
+                1: // Gain:Feed (kg/kg DM)
+                  conso := conso + PResSimulP.TabResult[106, h] * PResSimulP.TabResult[113, h];
+                2: // Gain:Feed (kg/MJ DE)
+                  conso := conso + PResSimulP.TabResult[109, h] * PResSimulP.TabResult[113, h];
+                3: // Gain:Feed (kg/MJ ME)
+                  conso := conso + PResSimulP.TabResult[89, h] * PResSimulP.TabResult[113, h];
+                4: // Gain:Feed (kg/MJ NE)
+                  conso := conso + PResSimulP.TabResult[90, h] * PResSimulP.TabResult[113, h];
+              end;
+            if conso <> 0
+            then
+              v := gain / conso;
+          end;
+          7: // Protein
+            case CBPerf4.ItemIndex of
+              0: // Protein deposition (g/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[79, h] / PresSimulP.NbJSim;
+              1: // Protein deposition (kg)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[79, h] / 1000;
+            end;
+          8: // Lipid
+            case CBPerf4.ItemIndex of
+              0: // Lipid deposition (g/d)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[80, h] / PresSimulP.NbJSim;
+              1: // Lipid deposition (kg)
+                for h := 1 to PresSimulP.NbJSim do
+                  v := v + PResSimulP.TabResult[80, h] / 1000;
+            end;
+        end;
+        result := v;
+      end;
+      else
+        result := 0;
+    end;
+  end;
+
+// AffGraphPerf
+begin
+  ResetGraph;
+  Graph.Legend.Inverted := FALSE;
+  Graph.Title.Text.Add(Format('%s (%s)', [TabPerf.Caption, CBPerf1.Text]));
+  case CBPerf1.ItemIndex of
+    0: // Affichage dynamique
+    begin
+      Graph.LeftAxis.Title.Caption := CBPerf4.Text;
+      Graph.BottomAxis.Title.Caption := CBPerf2.Text;
+      // Affichage des lignes
+      for k := 1 to 5 do
+        if TabSimulP[k].Ok
+        then
+        begin
+          LinePerf[k].Active := TRUE;
+          LinePerf[k].Clear;
+          PResSimulP := TabSimulP[k].Result;
+          if TabSimulP[k].Profil = -1
+          then // Profil de la simulation
+            PProfilP := ListProfilP[FindIdxProfilP(FindNomProfilP(PSimulP.Profil))]
+          else
+            PProfilP := ListProfilP[FindIdxProfilP(FindNomProfilP(TabSimulP[k].Profil))];
+          cumul := 0;
+          for j := 1 to PresSimulP.NbJSim do
+            LinePerf[k].AddXY(PerfX, PerfY, '', clTeeColor);
+        end;
+      if CBPerf2.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+    1: // Affichage global
+    begin
+      Graph.LeftAxis.Title.Caption := CBPerf4.Text;
+      Graph.Legend.Visible := FALSE;
+      case FSimulP.PC.ActivePageIndex of
+        1: // Comparaison
+          Graph.BottomAxis.Title.Caption := 'Simulation';
+        2: // Sensibilit�
+          Graph.BottomAxis.Title.Caption := 'Variation';
+      end;
+      // Affichage de la barre
+      BarPerf.Active := TRUE;
+      BarPerf.Clear;
+      for k := 1 to 5 do
+        if TabSimulP[k].Ok
+        then
+        begin
+          PResSimulP := TabSimulP[k].Result;
+          if TabSimulP[k].Profil = -1
+          then // Profil de la simulation
+            PProfilP := ListProfilP[FindIdxProfilP(FindNomProfilP(PSimulP.Profil))]
+          else
+            PProfilP := ListProfilP[FindIdxProfilP(FindNomProfilP(TabSimulP[k].Profil))];
+          case FSimulP.PC.ActivePageIndex of
+            1: // Comparaison
+              BarPerf.AddBar (PerfY, Format('%d', [k]), clTeeColor);
+            2: // Sensibilit�
+              if FSimulP.CBVariable.ItemIndex = 6
+              then // Gaspillage
+                if TabSimulP[k].Variation > 0
+                then
+                  BarPerf.AddBar(PerfY, Format('+%1.0f%%', [TabSimulP[k].Variation * 100]), clTeeColor)
+                else
+                  BarPerf.AddBar(PerfY, Format('%1.0f%%', [TabSimulP[k].Variation * 100]), clTeeColor)
+              else
+                BarPerf.AddBar(PerfY, Format('%1.0f %%', [TabSimulP[k].Variation * 100]), clTeeColor);
+          end;
+        end;
+      BarPerf.ValueFormat := AjustFormat(AjustPas(Graph.MaxYValue(Graph.LeftAxis) - Graph.MinYValue(Graph.LeftAxis)));
+    end;
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFCompSimulP.CBPerf1Change(Sender: TObject);
+begin
+  CBPerf2.Visible := CBPerf1.ItemIndex = 0;
+  CBPerf3.Visible := CBPerf1.ItemIndex = 0;
+  CBPerf3Global.Visible := CBPerf1.ItemIndex = 1;
+  CBPerf3Change(nil);
+end;
+
+procedure TFCompSimulP.CBPerf2Change(Sender: TObject);
+begin
+  AffGraphPerf;
+end;
+
+procedure TFCompSimulP.CBPerf3Change(Sender: TObject);
+begin
+  CBPerf4.Items.Clear;
+  case CBPerf1.ItemIndex of
+    0: // Affichage dynamique
+      case CBPerf3.ItemIndex of
+        0: // Body weight
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Weight gain'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Body weight'), _('kg')]));
+        end;
+        1: // Time
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Age'), _('d')]));
+        2: // Feed usage
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg DM'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ DE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ ME'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ NE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ NE')]));
+        end;
+        3: // Feed wastage
+        begin
+          CBPerf4.Items.Add(Format('%s (%%)', [_('Feed wastage')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed wastage'), _('kg')]));
+        end;
+        4: // Feed intake
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg DM'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ DE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ ME'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ NE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ NE')]));
+        end;
+        5: // Feed:Gain
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg DM'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ DE'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ ME'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ NE'), _('kg')]));
+        end;
+        6: // Gain:Feed
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ NE')]));
+        end;
+        7: // Protein
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Protein deposition'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Protein mass'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Protein content'), _('% BW gain')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Protein content'), _('% BW')]));
+        end;
+        8: // Lipid
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Lipid deposition'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Lipid mass'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Lipid content'), _('% BW gain')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Lipid content'), _('% BW')]));
+        end;
+        9: // Carcass
+        begin
+          CBPerf4.Items.Add(_('Dressing percentage'));
+          if FatInfo = 0
+          then // P2
+            CBPerf4.Items.Add(Format('%s (%s)', [_('Backfat thickness'), _('mm')]))
+          else // User defined
+            if Length(UserFatLongName) = 0
+            then
+              CBPerf4.Items.Add(Format('%s (%s)', [_('User-defined backfat thickness'), _('mm')]))
+            else
+              CBPerf4.Items.Add(Format('%s (%s)', [UserFatLongName, _('mm')]));
+          if LeanInfo = 0
+          then // TMP
+            CBPerf4.Items.Add(Format('%s (%%)', [_('Lean meat')]))
+          else // User defined
+            if Length(UserLeanLongName) = 0
+            then
+              CBPerf4.Items.Add(Format('%s (%%)', [_('User-defined lean meat')]))
+            else
+              CBPerf4.Items.Add(Format('%s (%%)', [UserLeanLongName]));
+        end;
+      end;
+    1: // Affichage global
+      case CBPerf3Global.ItemIndex of
+        0: // Body weight
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Weight gain'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Weight gain'), _('kg')]));
+        end;
+        1: // Time
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Duration'), _('d')]));
+        2: // Feed usage
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('kg DM'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ DE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ ME'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed usage'), _('MJ NE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed usage'), _('MJ NE')]));
+        end;
+        3: // Feed wastage
+        begin
+          CBPerf4.Items.Add(Format('%s (%%)', [_('Feed wastage')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed wastage'), _('kg')]));
+        end;
+        4: // Feed intake
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('kg DM'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ DE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ ME'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Feed intake'), _('MJ NE'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Total feed intake'), _('MJ NE')]));
+        end;
+        5: // Feed:Gain
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('kg DM'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ DE'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ ME'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('F:G'), _('MJ NE'), _('kg')]));
+        end;
+        6: // Gain:Feed
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('kg DM')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ DE')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ ME')]));
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('G:F'), _('kg'), _('MJ NE')]));
+        end;
+        7: // Protein
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Protein deposition'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Protein deposition'), _('kg')]));
+        end;
+        8: // Lipid
+        begin
+          CBPerf4.Items.Add(Format('%s (%s/%s)', [_('Lipid deposition'), _('g'), _('d')]));
+          CBPerf4.Items.Add(Format('%s (%s)', [_('Lipid deposition'), _('kg')]));
+        end;
+      end;
+  end;
+  CBPerf4.ItemIndex := 0;
+  AffGraphPerf;
+end;
+
+procedure TFCompSimulP.CBPerf4Change(Sender: TObject);
+begin
+  AffGraphPerf;
+end;
+
+/////////////////
+//   Aliment   //
+/////////////////
+procedure TFCompSimulP.InitAli;
+var
+  i, j, k: integer;
+  nom: string;
+begin
+  // ListAli : liste des aliments utilis�s
+  ListAli := TStringList.Create;
+  for k := 1 to 5 do // 5 simulations
+    if TabSimulP[k].Ok
+    then
+      for i := 1 to 2 do // 2 aliments
+        for j := 1 to TabSimulP[k].Result.NbJSim do
+          if TabSimulP[k].Result.TabResult[8 + i, j] > 0
+          then
+          begin
+            nom := FindNomAliment(Trunc(TabSimulP[k].Result.TabResult[6 + i, j]));
+            if ListAli.IndexOf (nom) = -1
+            then
+              ListAli.Add(nom);
+          end;
+  // BarAli : s�ries (barres) graphiques
+  SetLength(BarAli, ListAli.Count);
+  for i := 0 to ListAli.Count - 1 do
+  begin
+    BarAli[i] := TBarSeries.Create(Graph);
+    BarAli[i].ParentChart := Graph;
+    BarAli[i].Title := ListAli[i];
+    BarAli[i].BarPen.Color := BarAli[i].SeriesColor;
+    //BarAli[i].Marks.Visible := FALSE;
+    BarAli[i].Marks.ArrowLength := -16;
+    BarAli[i].Marks.Arrow.Visible := FALSE;
+    BarAli[i].Marks.Brush.Style := bsClear;
+    BarAli[i].Marks.Frame.Visible := FALSE;
+    BarAli[i].Marks.Style := smsValue;
+    //BarAli[i].AutoMarkPosition := FALSE;
+    Graph.AddSeries(BarAli[i]);
+  end;
+  // ListMat : liste des mati�res premi�res utilis�es
+  CompositionComplete := TRUE;
+  ListMat := TStringList.Create;
+  for i := 0 to ListAli.Count - 1 do
+  begin
+    PAliment := ListAliment[FindIdxAliment(ListAli[i])];
+    if PAliment.MP.NbMat > 0
+    then
+      for j := 0 to PAliment.MP.NbMat - 1 do
+      begin
+        nom := FindNomMatiere(PAliment.MP.NumMat[j]);
+        if ListMat.IndexOf(nom) = -1
+        then
+          ListMat.Add(nom);
+      end
+    else
+      CompositionComplete := FALSE;
+  end;
+  CBAli1.Visible := ConfAffMP and CompositionComplete;
+  CBAli5.Items.Assign(ListMat);
+  CBAli5.ItemIndex := 0;
+  // BarMat : s�rie (barre) graphique
+  BarMat := TBarSeries.Create(Graph);
+  BarMat.ParentChart := Graph;
+  BarMat.SeriesColor := clTeal;
+  BarMat.BarPen.Color := BarMat.SeriesColor;
+  //BarMat.Marks.Visible := FALSE;
+  BarMat.Marks.ArrowLength := -16;
+  BarMat.Marks.Arrow.Visible := FALSE;
+  BarMat.Marks.Brush.Style := bsClear;
+  BarMat.Marks.Frame.Visible := FALSE;
+  BarMat.Marks.Style := smsValue;
+  Graph.AddSeries(BarMat);
+end;
+
+procedure TFCompSimulP.AffGraphAli;
+var
+  i, k: integer;
+  y: double;
+  s: string;
+
+  // Ordonn�e (Aliments)
+  function AliY: double;
+  var
+    h: integer;
+    v, d: double;
+  begin
+    // Diviseur
+    case CBAli3.ItemIndex of
+      0: // Quantit�
+        case CBAli4.ItemIndex of
+          1: // Dur�e
+            d := PresSimulP.NbJSim;
+          else
+            d := 1;
+        end;
+      1: // Co�t
+        case CBAli4.ItemIndex of
+          1: // Dur�e
+            d := PresSimulP.NbJSim;
+          2: // GMQ
+          begin
+            d := 0;
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+                d := d + PResSimulP.TabResult[84, h];
+          end;
+          3: // Aliment
+          begin
+            d := 0;
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+                d := d + PResSimulP.TabResult[113, h];
+          end;
+          else
+            d := 1;
+        end;
+      else
+        d := 1;
+    end;
+    v := 0;
+    if PresSimulP.NbJSim > 1
+    then
+      for h := 1 to PresSimulP.NbJSim do
+      begin
+        // Aliment 1
+        if (PResSimulP.TabResult[7, h] <> -1) and (FindNomAliment(Trunc(PresSimulP.TabResult[7, h])) = ListAli[i])
+        then
+          v := v + (PresSimulP.TabResult[113, h] * PresSimulP.TabResult[9, h] / 100);
+        // Aliment 2
+        if (PResSimulP.TabResult[8, h] <> -1) and (FindNomAliment(Trunc(PresSimulP.TabResult[8, h])) = ListAli[i])
+        then
+          v := v + (PresSimulP.TabResult[113, h] * PresSimulP.TabResult[10, h] / 100);
+      end;
+    if CBAli3.ItemIndex = 1
+    then // Co�t
+    begin
+      PAliment := ListAliment[FindIdxAliment(ListAli[i])];
+      v := v * PAliment.Prix / 1000;
+    end;
+    result := v / d;
+  end;
+
+  // Ordonn�es (Mati�res premi�res)
+  function MatY: double;
+  var
+    g, h: integer;
+    v, d: double;
+  begin
+    // Diviseur
+    if CBAli4.ItemIndex = 1
+    then // Dur�e
+      d := PresSimulP.NbJSim
+    else
+      d := 1;
+    v := 0;
+    for h := 1 to PResSimulP.NbJSim do
+    begin
+      if PResSimulP.TabResult[7, h] <> -1
+      then // Aliment 1
+      begin
+        PAliment := ListAliment[FindIdxAliment(FindNomAliment(Trunc(PResSimulP.TabResult[7, h])))];
+        for g := 0 to PAliment.MP.NbMat - 1 do
+          if FindNomMatiere(PAliment.MP.NumMat[g]) = CBAli5.Text
+          then
+            v := v + (PAliment.MP.Qte[g] * PResSimulP.TabResult[113, h] * PResSimulP.TabResult[9, h] / 100);
+      end;
+      if PResSimulP.TabResult[8, h] <> -1
+      then // Aliment 2
+      begin
+        PAliment := ListAliment[FindIdxAliment(FindNomAliment(Trunc(PResSimulP.TabResult[8, h])))];
+        for g := 0 to PAliment.MP.NbMat - 1 do
+          if FindNomMatiere(PAliment.MP.NumMat[g]) = CBAli5.Text
+          then
+            v := v + (PAliment.MP.Qte[g] * PResSimulP.TabResult[113, h] * PResSimulP.TabResult[10, h] / 100);
+      end;
+    end;
+    v := v / 1000; // Conversion g -> kg
+    result := v / d;
+  end;
+
+// AffGraphAli
+begin
+  ResetGraph;
+  if CBAli1.ItemIndex = 0
+  then // Aliments
+  begin
+    Graph.Legend.Inverted := TRUE;
+    Graph.Title.Text.Add(CBAli1.Text);
+  end
+  else // Mati�res premi�res
+  begin
+    Graph.Legend.Visible := FALSE;
+    Graph.Title.Text.Add(Format('%s - %s', [CBAli1.Text, CBAli5.Text]));
+  end;
+  Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBAli3.Text, CBAli4.Text]);
+  case FSimulP.PC.ActivePageIndex of
+    1: // Comparaison
+      Graph.BottomAxis.Title.Caption := 'Simulation';
+    2: // Sensibilit�
+      Graph.BottomAxis.Title.Caption := 'Variation';
+  end;
+  // Affichage des barres
+  if CBAli1.ItemIndex = 0
+  then // Aliments
+  begin
+    for i := 0 to ListAli.Count - 1 do
+      BarAli[i].Active := TRUE;
+    for i := 0 to ListAli.Count - 1 do
+      BarAli[i].Clear;
+    if ((CBAli4.ItemIndex = 2) and (CBAli3.ItemIndex = 0))
+    or ((CBAli4.ItemIndex = 4) and (CBAli3.ItemIndex = 1))
+    then
+      for i := 0 to ListAli.Count - 1 do
+        BarAli[i].MultiBar := mbStacked100
+    else
+      for i := 0 to ListAli.Count - 1 do
+        BarAli[i].MultiBar := mbStacked;
+    for i := 0 to ListAli.Count - 1 do
+      for k := 1 to 5 do
+        if TabSimulP[k].Ok
+        then
+        begin
+          PResSimulP := TabSimulP[k].Result;
+          y := AliY;
+          case FSimulP.PC.ActivePageIndex of
+            1: // Comparaison
+              s := Format('%d', [k]);
+            2: // Sensibilit�
+              if FSimulP.CBVariable.ItemIndex = 6
+              then // Gaspillage
+                if TabSimulP[k].Variation > 0
+                then
+                  s := Format('+%1.0f%%', [TabSimulP[k].Variation * 100])
+                else
+                  s := Format('%1.0f%%', [TabSimulP[k].Variation * 100])
+              else
+                s := Format('%1.0f%%', [TabSimulP[k].Variation * 100]);
+          end;
+          if y > 0
+          then
+            BarAli[i].AddBar (y, s, clTeeColor)
+          else
+            BarAli[i].AddNull (s);
+        end;
+    for i := 0 to ListAli.Count - 1 do
+      BarAli[i].ValueFormat := AjustFormat(AjustPas(Graph.MaxYValue(Graph.LeftAxis) - Graph.MinYValue(Graph.LeftAxis)));
+  end
+  else // Mati�res premi�res
+  begin
+    BarMat.Active := TRUE;
+    BarMat.Clear;
+    for k := 1 to 5 do
+      if TabSimulP[k].Ok
+      then
+      begin
+        PResSimulP := TabSimulP[k].Result;
+        y := MatY;
+        case FSimulP.PC.ActivePageIndex of
+          1: // Comparaison
+            s := Format('%d', [k]);
+          2: // Sensibilit�
+            if FSimulP.CBVariable.ItemIndex = 6
+            then // Gaspillage
+              if TabSimulP[k].Variation > 0
+              then
+                s := Format('+%1.0f%%', [TabSimulP[k].Variation * 100])
+              else
+                s := Format('%1.0f%%', [TabSimulP[k].Variation * 100])
+            else
+              s := Format('%1.0f%%', [TabSimulP[k].Variation * 100]);
+        end;
+        if y > 0
+        then
+          BarMat.AddBar (y, s, clTeeColor)
+        else
+          BarMat.AddNull (s);
+      end;
+    BarMat.ValueFormat := AjustFormat(AjustPas(Graph.MaxYValue(Graph.LeftAxis) - Graph.MinYValue(Graph.LeftAxis)));
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFCompSimulP.CBAli1Change(Sender: TObject);
+begin
+  CBAli3.Enabled := CBAli1.ItemIndex = 0; // Aliments
+  CBAli5.Visible := CBAli1.ItemIndex = 1; // Mati�res premi�res
+  if CBAli1.ItemIndex = 1
+  then // Mati�res premi�res
+    CBAli3.ItemIndex := 0;
+  CBAli3Change(nil);
+end;
+
+procedure TFCompSimulP.CBAli3Change(Sender: TObject);
+begin
+  CBAli4.Items.Clear;
+  case CBAli3.ItemIndex of
+    0: // Quantit�
+    begin
+      CBAli4.Items.Add(StrKg);
+      CBAli4.Items.Add(Format('%s/%s', [StrKg, StrJ]));
+      if CBAli1.ItemIndex = 0
+      then // Aliments
+        CBAli4.Items.Add('%');
+    end;
+    1: // Co�t
+    begin
+      CBAli4.Items.Add(CurrencySign);
+      CBAli4.Items.Add(Format('%s/%s', [CurrencySign, StrJ]));
+      CBAli4.Items.Add(Format('%s/%s %s', [CurrencySign, StrKg, StrGMQUnit]));
+      CBAli4.Items.Add(Format('%s/%s %s', [CurrencySign, StrKg, StrAlimentUnit]));
+      CBAli4.Items.Add('%');
+    end;
+  end;
+  CBAli4.ItemIndex := 0;
+  AffGraphAli;
+end;
+
+procedure TFCompSimulP.CBAli4Change(Sender: TObject);
+begin
+  AffGraphAli;
+end;
+
+procedure TFCompSimulP.CBAli5Change(Sender: TObject);
+begin
+  AffGraphAli;
+end;
+
+///////////////////////
+//   Acides amin�s   //
+///////////////////////
+procedure TFCompSimulP.InitAA;
+const
+  TabColor1: array[0..8] of TColor
+    = (clBlack, clTeal, clAqua, clOlive, clSilver, clPink, clGray, clRed, clGreen);
+  TabColor2: array[1..5] of TColor
+    = (clRed, clGreen, clYellow, clBlue, clFuchsia);
+var
+  i, k: integer;
+begin
+  // ListAA : liste pour les acides amin�s
+  ListAA := TStringList.Create;
+  ListAA.Assign(LBAA.Items);
+  // BarAA : s�ries (barres) graphiques
+  SetLength(BarAA, ListAA.Count);
+  for i := 0 to ListAA.Count - 1 do
+  begin
+    BarAA[i] := TBarSeries.Create(Graph);
+    BarAA[i].ParentChart := Graph;
+    BarAA[i].Title := ListAA[i];
+    BarAA[i].SeriesColor := TabColor1[i];
+    BarAA[i].BarPen.Color := BarAA[i].SeriesColor;
+    BarAA[i].Marks.Visible := FALSE;
+    {
+    BarAA[i].Marks.ArrowLength := -16;
+    BarAA[i].Marks.Arrow.Visible := FALSE;
+    BarAA[i].Marks.Brush.Style := bsClear;
+    BarAA[i].Marks.Frame.Visible := FALSE;
+    BarAA[i].Marks.Style := smsValue;
+    }
+    //BarAA[i].AutoMarkPosition := FALSE;
+    Graph.AddSeries(BarAA[i]);
+  end;
+  // LineAA : s�ries (lignes) graphiques
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+    begin
+      LineAA[k] := TLineSeries.Create(Graph);
+      LineAA[k].ParentChart := Graph;
+      case FSimulP.PC.ActivePageIndex of
+        1 : // Comparaison
+          LineAA[k].Title := Format('Simulation %d', [k]);
+        2 : // Sensibilit�
+          if FSimulP.CBVariable.ItemIndex = 6
+          then // Gaspillage
+            if TabSimulP[k].Variation > 0
+            then
+              LineAA[k].Title := Format('+%1.0f%%', [TabSimulP[k].Variation * 100])
+            else
+              LineAA[k].Title := Format('%1.0f%%', [TabSimulP[k].Variation * 100])
+          else
+            LineAA[k].Title := Format('%1.0f%%', [TabSimulP[k].Variation * 100]);
+      end;
+      LineAA[k].SeriesColor := TabColor2[k];
+      LineAA[k].LinePen.Color := LineAA[k].SeriesColor;
+      LineAA[k].LinePen.Width := 2;
+      Graph.AddSeries(LineAA[k]);
+    end;
+end;
+
+procedure TFCompSimulP.AffGraphAA;
+var
+  i, j, k: integer;
+  y: double;
+  s: string;
+
+  // Abscisse
+  function AAX: double;
+  begin
+    case CBAA1.ItemIndex of
+      1, 2: // Apport ou besoin
+        case CBAA2.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e
+  function AAY: double;
+  var
+    h: integer;
+    v, d, endogeneAA, m75AA, AAk, bodyAA, AAingere, AAdigestible, PDAA,
+      IngereSec, PV, PD, py1, AAPD, AAAA, AAenergie, PD3, PDapport, Gaspillage: double;
+  begin
+    case CBAA1.ItemIndex of
+      0: // R�partition
+      begin
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1: // Dur�e
+            d := PresSimulP.NbJSim;
+          2: // Aliment
+          begin
+            d := 0;
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+                d := d + PresSimulP.TabResult[113, h];
+          end;
+          else
+            d := 1;
+        end;
+        v := 0;
+        case i of
+          0: // Gaspillage
+            if CBAA5A.ItemIndex = 2
+            then // Total
+              if PresSimulP.NbJSim > 1
+              then
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  AAingere := PResSimulP.TabResult[93 + CBAA3.ItemIndex, h];
+                  Gaspillage := PResSimulP.TabResult[112, h];
+                  v := v + AAingere / (1 - Gaspillage) - AAingere;
+                  if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                  then // met + cys, phe + tyr
+                  begin
+                    AAingere := PresSimulP.TabResult[CBAA3.ItemIndex + 92, h];
+                    v := v + AAingere / (1 - Gaspillage) - AAingere;
+                  end;
+                end;
+          1: // Indigestible
+            if CBAA5A.ItemIndex = 2
+            then // Total
+              if PresSimulP.NbJSim > 1
+              then
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  AAingere := PresSimulP.TabResult[CBAA3.ItemIndex + 93, h];
+                  AAdigestible := PresSimulP.TabResult[CBAA3.ItemIndex + 19, h];
+                  v := v + (AAingere - AAdigestible);
+                  if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                  then // met + cys, phe + tyr
+                  begin
+                    AAingere := PresSimulP.TabResult[CBAA3.ItemIndex + 92, h];
+                    AAdigestible := PresSimulP.TabResult[CBAA3.ItemIndex + 18, h];
+                    v := v + (AAingere - AAdigestible);
+                  end;
+                end;
+          2: // Endog�ne basal
+            if CBAA5A.ItemIndex <> 1
+            then // Total ou Digestible standardis�
+              if PresSimulP.NbJSim > 1
+              then
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  IngereSec := PresSimulP.TabResult[106, h] * PResSimulP.TabResult[11, h];
+                  endogeneAA := AAendogene[CBAA3.ItemIndex];
+                  v := v + (IngereSec * endogeneAA);
+                  if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                  then // met + cys, phe + tyr
+                  begin
+                    endogeneAA := AAendogene[CBAA3.ItemIndex - 1];
+                    v := v + (IngereSec * endogeneAA);
+                  end;
+                end;
+          3: // Entretien
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+              begin
+                PV := PresSimulP.TabResult[2, h];
+                m75AA := AAm75[CBAA3.ItemIndex];
+                v := v + (m75AA * Power(PV, 0.75));
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  m75AA := AAm75[CBAA3.ItemIndex - 1];
+                  v := v + (m75AA * Power (PV, 0.75));
+                end;
+              end;
+          4: // Oxydation minimale
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+              begin
+                PD := PresSimulP.TabResult[79, h];
+                bodyAA := AAbody[CBAA3.ItemIndex];
+                AAk := kAA[CBAA3.ItemIndex];
+                if AAk <= 1
+                then
+                  v := v + (PD * bodyAA / AAk * (1 - AAk));
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                  AAk := kAA[CBAA3.ItemIndex - 1];
+                  if AAk <= 1
+                  then
+                    v := v + (PD * bodyAA / AAk * (1 - AAk));
+                end;
+              end;
+          5: // D�p�t
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+              begin
+                PD := PresSimulP.TabResult[79, h];
+                bodyAA := AAbody[CBAA3.ItemIndex];
+                v := v + (PD * bodyAA);
+                if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                then // met + cys, phe + tyr
+                begin
+                  bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                  v := v + (PD * bodyAA);
+                end;
+              end;
+          6: // D�s�quilibre
+            if PresSimulP.NbJSim > 1
+            then
+              if CBAA3.ItemIndex = 12
+              then // Arginine
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  PD := PresSimulP.TabResult[79, h];
+                  py1 := PresSimulP.TabResult[77, h];
+                  PD3 := py1 / GEProtJaap;
+                  PDAA := PresSimulP.TabResult[44, h];
+                  AAk := kAA[12];
+                  PDapport := PDAA / AAk;
+                  bodyAA := AAbody[12];
+                  if (PD < PD3) and (PD < PDAA)
+                  then
+                    if (PDapport > PD3) or (PD3 < PDAA)
+                    then
+                      v := v + ((PD3 - PD) * bodyAA)
+                    else
+                      v := v + ((PDAA - PD) * bodyAA);
+                end
+              else
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  PD := PresSimulP.TabResult[79, h];
+                  py1 := PresSimulP.TabResult[77, h];
+                  PDAA := PresSimulP.TabResult[CBAA3.ItemIndex + 32, h];
+                  bodyAA := AAbody[CBAA3.ItemIndex];
+                  AAk := kAA[CBAA3.ItemIndex];
+                  AAAA := PDAA * bodyAA / AAk;
+                  AAPD := PD * bodyAA / AAk;
+                  AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+                  if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                  then // met + cys, phe + tyr
+                  begin
+                    PDAA := PresSimulP.TabResult[CBAA3.ItemIndex + 31, h];
+                    bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                    AAk := kAA[CBAA3.ItemIndex - 1];
+                    AAAA := AAAA + (PDAA * bodyAA / AAk);
+                    AAPD := AAPD + (PD * bodyAA / AAk);
+                    AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+                  end;
+                  if AAPD < AAAA
+                  then
+                    if AAAA < AAenergie
+                    then
+                      v := v + (AAAA - AAPD)
+                    else
+                      v := v + (AAenergie - AAPD);
+                end;
+          7: // D�ficit
+            if PresSimulP.NbJSim > 1
+            then
+              if CBAA3.ItemIndex = 12
+              then // Arginine
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  py1 := PresSimulP.TabResult[77, h];
+                  PD3 := py1 / GEProtJaap;
+                  PDAA := PresSimulP.TabResult[44, h];
+                  bodyAA := AAbody[12];
+                  if PDAA < PD3
+                  then
+                    v := v + ((PD3 - PDAA) * bodyAA);
+                end
+              else
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  py1 := PresSimulP.TabResult[77, h];
+                  PDAA := PresSimulP.TabResult[CBAA3.ItemIndex + 32, h];
+                  bodyAA := AAbody[CBAA3.ItemIndex];
+                  AAk := kAA[CBAA3.ItemIndex];
+                  AAAA := PDAA * bodyAA / AAk;
+                  AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+                  if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                  then // met + cys, phe + tyr
+                  begin
+                    PDAA := PresSimulP.TabResult[CBAA3.ItemIndex + 31, h];
+                    bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                    AAk := kAA[CBAA3.ItemIndex - 1];
+                    AAAA := AAAA + (PDAA * bodyAA / AAk);
+                    AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+                  end;
+                  if AAAA < AAenergie
+                  then
+                    v := v + (AAenergie - AAAA);
+                end;
+          8: // Exc�s
+            if PresSimulP.NbJSim > 1
+            then
+              if CBAA3.ItemIndex = 12
+              then // Arginine
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  py1 := PresSimulP.TabResult[77, h];
+                  PD3 := py1 / GEProtJaap;
+                  PDAA := PresSimulP.TabResult[44, h];
+                  AAk := kAA[12];
+                  PDapport := PDAA / AAk;
+                  bodyAA := AAbody[12];
+                  if PD3 < PDapport
+                  then
+                    v := v + ((PDapport - PD3) * bodyAA);
+                end
+              else
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  py1 := PresSimulP.TabResult[77, h];
+                  PDAA := PresSimulP.TabResult[CBAA3.ItemIndex + 32, h];
+                  bodyAA := AAbody[CBAA3.ItemIndex];
+                  AAk := kAA[CBAA3.ItemIndex];
+                  AAAA := PDAA * bodyAA / AAk;
+                  AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+                  if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+                  then // met + cys, phe + tyr
+                  begin
+                    PDAA := PresSimulP.TabResult[CBAA3.ItemIndex + 31, h];
+                    bodyAA := AAbody[CBAA3.ItemIndex - 1];
+                    AAk := kAA[CBAA3.ItemIndex - 1];
+                    AAAA := AAAA + (PDAA * bodyAA / AAk);
+                    AAenergie := AAenergie + (py1 / GEProtJaap * bodyAA / AAk);
+                  end;
+                  if AAenergie < AAAA
+                  then
+                    v := v + (AAAA - AAenergie);
+                end;
+        end;
+        result := v / d;
+      end;
+      1: // Apport
+      begin
+        IngereSec := PresSimulP.TabResult[106, j] * PResSimulP.TabResult[11, j];
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1: // Lysine
+          begin
+            AAdigestible := PresSimulP.TabResult[20, j];
+            case CBAA5A.ItemIndex of
+              0: // Standardis�
+                d := AAdigestible;
+              1: // Apparent
+              begin
+                endogeneAA := AAendogene[1];
+                d := AAdigestible
+                  - IngereSec * endogeneAA; // Basal
+              end;
+              2: // Total
+              begin
+                AAingere := PresSimulP.TabResult[94, j];
+                d := AAingere;
+              end;
+              else
+                d := 1;
+            end;
+            d := d / 100;
+          end;
+          2: // GMQ
+            d := PresSimulP.TabResult[84, j];
+          3: // ED
+            d := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[113, j];
+          4: // EM
+            d := PresSimulP.TabResult[89, j] * PresSimulP.TabResult[113, j];
+          5: // EN
+            d := PresSimulP.TabResult[90, j] * PresSimulP.TabResult[113, j];
+          6: // Aliment
+            d := PresSimulP.TabResult[113, j];
+          else
+            d := 1;
+        end;
+        AAdigestible := PresSimulP.TabResult[CBAA3.ItemIndex + 19, j];
+        case CBAA5A.ItemIndex of
+          0: // Standardis�
+            v := AAdigestible;
+          1: // Apparent
+          begin
+            endogeneAA := AAendogene[CBAA3.ItemIndex];
+            v := AAdigestible
+              - IngereSec * endogeneAA; // Basal
+          end;
+          2: // Total
+          begin
+            AAingere := PresSimulP.TabResult[CBAA3.ItemIndex + 93, j];
+            v := AAingere;
+          end;
+          else
+            v := 0;
+        end;
+        if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+        then // met + cys, phe + tyr
+        begin
+          AAdigestible := PresSimulP.TabResult[CBAA3.ItemIndex + 18, j];
+          case CBAA5A.ItemIndex of
+            0: // Standardis�
+              v := v + AAdigestible;
+            1: // Apparent
+            begin
+              endogeneAA := AAendogene[CBAA3.ItemIndex - 1];
+              v := v + AAdigestible
+                - IngereSec * endogeneAA; // Basal
+            end;
+            2: // Total
+            begin
+              AAingere := PresSimulP.TabResult[CBAA3.ItemIndex + 92, j];
+              v := v + AAingere;
+            end;
+          end;
+        end;
+        result := v / d;
+      end;
+      2: // Besoin
+      begin
+        IngereSec := PresSimulP.TabResult[106, j] * PResSimulP.TabResult[11, j];
+        PV := PresSimulP.TabResult[2, j];
+        py1 := PresSimulP.TabResult[77, j];
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1: // Lysine
+          begin
+            AAk := kAA[1];
+            bodyAA := AAbody[1];
+            m75AA := AAm75[1];
+            AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+            case CBAA5B.ItemIndex of
+              0: // Standardis�
+              begin
+                endogeneAA := AAendogene[1];
+                d := AAenergie
+                  + m75AA * Power (PV, 0.75) // Entretien
+                  + IngereSec * endogeneAA; // Basal
+              end;
+              1: // Apparent
+                d := AAenergie
+                  + m75AA * Power (PV, 0.75); // Entretien
+              else
+                d := 1;
+            end;
+            d := d / 100;
+          end;
+          2: // GMQ
+            d := PresSimulP.TabResult[84, j];
+          3: // ED
+            d := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[113, j];
+          4: // EM
+            d := PresSimulP.TabResult[89, j] * PresSimulP.TabResult[113, j];
+          5: // EN
+            d := PresSimulP.TabResult[90, j] * PresSimulP.TabResult[113, j];
+          6: // Aliment
+            d := PresSimulP.TabResult[113, j];
+          else
+            d := 1;
+        end;
+        bodyAA := AAbody[CBAA3.ItemIndex];
+        AAk := kAA[CBAA3.ItemIndex];
+        AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+        m75AA := AAm75[CBAA3.ItemIndex];
+        case CBAA5B.ItemIndex of
+          0: // Standardis�
+          begin
+            endogeneAA := AAendogene[CBAA3.ItemIndex];
+            v := AAenergie
+              + m75AA * Power (PV, 0.75) // Entretien
+              + IngereSec * endogeneAA; // Basal
+          end;
+          1: // Apparent
+            v := AAenergie
+              + m75AA * Power (PV, 0.75); // Entretien
+          else
+            v := 0;
+        end;
+        if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+        then // met + cys, phe + tyr
+        begin
+          bodyAA := AAbody[CBAA3.ItemIndex - 1];
+          AAk := kAA[CBAA3.ItemIndex - 1];
+          AAenergie := py1 / GEProtJaap * bodyAA / AAk;
+          m75AA := AAm75[CBAA3.ItemIndex - 1];
+          case CBAA5B.ItemIndex of
+            0: // Standardis�
+            begin
+              endogeneAA := AAendogene[CBAA3.ItemIndex - 1];
+              v := v + AAenergie
+                + m75AA * Power (PV, 0.75) // Entretien
+                + IngereSec * endogeneAA; // Basal
+            end;
+            1: // Apparent
+              v := v + AAenergie
+                + m75AA * Power (PV, 0.75); // Entretien
+          end;
+        end;
+        result := v / d;
+      end;
+      else
+        result := 0;
+    end;
+  end;
+
+// AffGraphAA
+begin
+  ResetGraph;
+  Graph.Title.Text.Add(Format('%s (%s)', [CBAA3.Text, CBAA1.Text]));
+  Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBAA3.Text, CBAA4.Text]);
+  case CBAA1.ItemIndex of
+    0: // R�partition
+    begin
+      Graph.Legend.Inverted := TRUE;
+      Graph.SubTitle.Text.Add(CBAA5A.Text);
+      case FSimulP.PC.ActivePageIndex of
+        1: // Comparaison
+          Graph.BottomAxis.Title.Caption := 'Simulation';
+        2: // Sensibilit�
+          Graph.BottomAxis.Title.Caption := 'Variation';
+      end;
+      // Affichage des barres
+      for i := 0 to ListAA.Count - 1 do
+        BarAA[i].Active := TRUE;
+      for i := 0 to ListAA.Count - 1 do
+        BarAA[i].Clear;
+      if CBAA4.ItemIndex = 3
+      then
+        for i := 0 to ListAA.Count - 1 do
+          BarAA[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListAA.Count - 1 do
+          BarAA[i].MultiBar := mbStacked;
+      for i := 0 to ListAA.Count - 1 do
+        for k := 1 to 5 do
+          if TabSimulP[k].Ok
+          then
+          begin
+            PResSimulP := TabSimulP[k].Result;
+            case FSimulP.PC.ActivePageIndex of
+              1: // Comparaison
+                s := Format('%d', [k]);
+              2: // Sensibilit�
+                if FSimulP.CBVariable.ItemIndex = 6
+                then // Gaspillage
+                  if TabSimulP[k].Variation > 0
+                  then
+                    s := Format('+%1.0f%%', [TabSimulP[k].Variation * 100])
+                  else
+                    s := Format('%1.0f%%', [TabSimulP[k].Variation * 100])
+                else
+                  s := Format('%1.0f%%', [TabSimulP[k].Variation * 100]);
+            end;
+            y := AAY;
+            if y > PICO
+            then
+              BarAA[i].AddBar (y, s, clTeeColor)
+            else
+              BarAA[i].AddNull (s);
+          end;
+      for i := 0 to ListAA.Count - 1 do
+        BarAA[i].ValueFormat := AjustFormat(AjustPas(Graph.MaxYValue(Graph.LeftAxis) - Graph.MinYValue(Graph.LeftAxis)));
+    end;
+    1, 2: // Apport ou besoin
+    begin
+      Graph.Legend.Inverted := FALSE;
+      if CBAA1.ItemIndex = 2
+      then // Besoin
+        Graph.SubTitle.Text.Add(CBAA5B.Text)
+      else
+        Graph.SubTitle.Text.Add(CBAA5A.Text);
+      Graph.BottomAxis.Title.Caption := CBAA2.Text;
+      // Affichage des lignes
+      for k := 1 to 5 do
+        if TabSimulP[k].Ok
+        then
+        begin
+          LineAA[k].Active := TRUE;
+          LineAA[k].Clear;
+          PResSimulP := TabSimulP[k].Result;
+          for j := 1 to PresSimulP.NbJSim do
+            LineAA[k].AddXY (AAX, AAY, '', clTeeColor);
+        end;
+      if CBAA2.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFCompSimulP.CBAA1Change(Sender: TObject);
+begin
+  CBAA4.Items.Clear;
+  case CBAA1.ItemIndex of
+    0: // R�partition
+    begin
+      CBAA2.Visible := FALSE;
+      CBAA5A.Visible := TRUE;
+      CBAA5B.Visible := FALSE;
+      // Unit�s
+      CBAA4.Items.Add(StrG);
+      CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+      CBAA4.Items.Add('%');
+    end;
+    1, 2: // Apport ou besoin
+    begin
+      if CBAA1.ItemIndex = 2
+      then // Besoin
+        if AffBesoin
+        then
+        begin
+          FWarning := TFWarning.Create (Self);
+          with FWarning do
+          begin
+            Msg := 'Besoin';
+            ShowModal;
+            Release;
+            AffBesoin := FALSE;
+          end;
+        end;
+      CBAA2.Visible := TRUE;
+      CBAA5A.Visible := (CBAA1.ItemIndex = 1);
+      CBAA5B.Visible := (CBAA1.ItemIndex = 2);
+      // Unit�s
+      CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+      CBAA4.Items.Add(Format('%% %s', [StrLys]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrGMQUnit]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrED]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrEM]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrMJ, StrEN]));
+      CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+      if (CBAA1.ItemIndex = 2) and(CBAA5A.ItemIndex = 2)
+      then // Besoin -> Total
+        CBAA5A.ItemIndex := 0;
+    end;
+  end;
+  CBAA4.ItemIndex := 0;
+  AffGraphAA;
+end;
+
+procedure TFCompSimulP.CBAA2Change(Sender: TObject);
+begin
+  AffGraphAA;
+end;
+
+procedure TFCompSimulP.CBAA3Change(Sender: TObject);
+begin
+  AffGraphAA;
+end;
+
+procedure TFCompSimulP.CBAA4Change(Sender: TObject);
+begin
+  AffGraphAA;
+end;
+
+procedure TFCompSimulP.CBAA5Change(Sender: TObject);
+begin
+  if CBAA1.ItemIndex = 2
+  then // Besoin
+    CBAA5A.ItemIndex := CBAA5B.ItemIndex
+  else
+    if CBAA5A.ItemIndex = 2
+    then // Total
+      CBAA5B.ItemIndex := 0
+    else
+      CBAA5B.ItemIndex := CBAA5A.ItemIndex;
+  AffGraphAA;
+end;
+
+/////////////////
+//   Energie   //
+/////////////////
+procedure TFCompSimulP.InitNRJ;
+const
+  TabColor1: array[0..7] of TColor
+    = (clBlack, clTeal, clYellow, clOlive, clGray, clFuchsia, clBlue, clLime);
+  TabColor2: array[1..5] of TColor
+    = (clRed, clGreen, clYellow, clBlue, clFuchsia);
+var
+  i, k: integer;
+begin
+  // ListNRJ : liste pour l'�nergie
+  ListNRJ := TStringList.Create;
+  ListNRJ.Assign(LBNRJ.Items);
+  // BarNRJ : s�ries (barres) graphiques
+  SetLength(BarNRJ, ListNRJ.Count);
+  for i := 0 to ListNRJ.Count - 1 do
+  begin
+    BarNRJ[i] := TBarSeries.Create(Graph);
+    BarNRJ[i].ParentChart := Graph;
+    BarNRJ[i].Title := ListNRJ[i];
+    BarNRJ[i].SeriesColor := TabColor1[i];
+    BarNRJ[i].BarPen.Color := BarNRJ[i].SeriesColor;
+    BarNRJ[i].Marks.Visible := FALSE;
+    {
+    BarNRJ[i].Marks.ArrowLength := -16;
+    BarNRJ[i].Marks.Arrow.Visible := FALSE;
+    BarNRJ[i].Marks.Brush.Style := bsClear;
+    BarNRJ[i].Marks.Frame.Visible := FALSE;
+    BarNRJ[i].Marks.Style := smsValue;
+    }
+    //BarNRJ[i].AutoMarkPosition := FALSE;
+    Graph.AddSeries(BarNRJ[i]);
+  end;
+  // LineNRJ : s�ries (lignes) graphiques
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+    begin
+      LineNRJ[k] := TLineSeries.Create(Graph);
+      LineNRJ[k].ParentChart := Graph;
+      case FSimulP.PC.ActivePageIndex of
+        1 : // Comparaison
+          LineNRJ[k].Title := Format('Simulation %d', [k]);
+        2 : // Sensibilit�
+          if FSimulP.CBVariable.ItemIndex = 6
+          then // Gaspillage
+            if TabSimulP[k].Variation > 0
+            then
+              LineNRJ[k].Title := Format('+%1.0f%%', [TabSimulP[k].Variation * 100])
+            else
+              LineNRJ[k].Title := Format('%1.0f%%', [TabSimulP[k].Variation * 100])
+          else
+            LineNRJ[k].Title := Format('%1.0f%%', [TabSimulP[k].Variation * 100]);
+      end;
+      LineNRJ[k].SeriesColor := TabColor2[k];
+      LineNRJ[k].LinePen.Color := LineNRJ[k].SeriesColor;
+      LineNRJ[k].LinePen.Width := 2;
+      Graph.AddSeries(LineNRJ[k]);
+    end;
+end;
+
+procedure TFCompSimulP.AffGraphNRJ;
+var
+  i, j, k: integer;
+  y: double;
+  s: string;
+
+  // Abscisse
+  function NRJX: double;
+  begin
+    case CBNRJ1.ItemIndex of
+      1: // Apport
+        case CBNRJ2.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e
+  function NRJY: double;
+  var
+    h: integer;
+    v, d, PV, EBing, EDing, {MAD, MGD, CBD, Amidon, Sucre, ResiduD,} MEintake,
+      PDfreeNEintake, PDfreeNEreq, FHP60, kdiet, Standing, Entretien, Activite,
+      energyPD, energyLD, NEcrois, MEcrois, NEintake, Gaspillage: double;
+  begin
+    case CBNRJ1.ItemIndex of
+      0: // R�partition
+      begin
+        // Diviseur
+        case CBNRJ4.ItemIndex of
+          1: // Dur�e
+            d := PresSimulP.NbJSim;
+          2: // Aliment
+          begin
+            d := 0;
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+                d := d + PresSimulP.TabResult[113, h];
+          end;
+          else
+            d := 1;
+        end;
+        v := 0;
+        case i of
+          0: // Gaspillage
+            if CBNRJ3.ItemIndex = 0
+            then // EB
+              if PresSimulP.NbJSim > 1
+              then
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  EBing := PresSimulP.TabResult[12, h];
+                  Gaspillage := PResSimulP.TabResult[112, h];
+                  v := v + EBing / (1 - Gaspillage) - EBing;
+                end;
+          1: // Indigestible
+            if CBNRJ3.ItemIndex = 0
+            then // EB
+              if PresSimulP.NbJSim > 1
+              then
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  EBing := PresSimulP.TabResult[12, h];
+                  EDing := PResSimulP.TabResult[109, h] * PResSimulP.TabResult[11, h];
+                  v := v + (EBing - EDing);
+                end;
+          2: // M�thane et urines
+            if CBNRJ3.ItemIndex <= 1
+            then // EB ou ED
+              if PresSimulP.NbJSim > 1
+              then
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  EDing := PResSimulP.TabResult[109, h] * PResSimulP.TabResult[11, h];
+                  MEintake := PresSimulP.TabResult[86, h] / 1000;
+                  v := v + (EDing - MEintake);
+                end;
+          3: // Entretien
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+              begin
+                FHP60 := PresSimulP.TabResult[91, h] / 1000;
+                PV := PresSimulP.TabResult[2, h];
+                if CBNRJ3.ItemIndex = 3
+                then // EN
+                  Entretien := PProfilP.Entretien * kBR * FHP60 * Power(PV, 0.6)
+                else // EB, ED ou EM
+                begin
+                  PDfreeNEintake := PresSimulP.TabResult[65, h] / 1000;
+                  MEintake := PresSimulP.TabResult[86, h] / 1000;
+                  energyPD := PresSimulP.TabResult[66, h] / 1000;
+                  kdiet := PDfreeNEintake / (MEintake - energyPD);
+                  Entretien := PProfilP.Entretien * kBR * FHP60 * Power(PV, 0.6) / kdiet;
+                end;
+                v := v + Entretien;
+              end;
+          4: // Activit�
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+              begin
+                Standing := PresSimulP.TabResult[70, h];
+                PV := PresSimulP.TabResult[2, h];
+                if CBNRJ3.ItemIndex = 3
+                then // EN
+                  Activite := Standing * (NEact60h / 1000) * Power (PV, 0.6)
+                else // EB, ED ou EM
+                begin
+                  PDfreeNEintake := PresSimulP.TabResult[65, h] / 1000;
+                  MEintake := PresSimulP.TabResult[86, h] / 1000;
+                  energyPD := PresSimulP.TabResult[66, h] / 1000;
+                  kdiet := PDfreeNEintake / (MEintake - energyPD);
+                  Activite := Standing * (NEact60h / 1000) * Power(PV, 0.6) / kdiet;
+                end;
+                v := v + Activite;
+              end;
+          5: // Extrachaleur
+            if CBNRJ3.ItemIndex <= 2
+            then // EB ou ED ou EM
+              if PresSimulP.NbJSim > 1
+              then
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  MEintake := PresSimulP.TabResult[86, h] / 1000;
+                  energyPD := PresSimulP.TabResult[66, h] / 1000;
+                  PDfreeNEintake := PresSimulP.TabResult[65, h] / 1000;
+                  PDfreeNEreq := PresSimulP.TabResult[73, h] / 1000;
+                  energyLD := PDfreeNEintake - PDfreeNEreq;
+                  FHP60 := PresSimulP.TabResult[91, h] / 1000;
+                  PV := PresSimulP.TabResult[2, h];
+                  kdiet := PDfreeNEintake / (MEintake - energyPD);
+                  Entretien := PProfilP.Entretien * kBR * FHP60 * Power(PV, 0.6) / kdiet;
+                  Standing := PresSimulP.TabResult[70, h];
+                  Activite := Standing * (NEact60h / 1000) * Power(PV, 0.6) / kdiet;
+                  v := v + (MEintake - (energyPD + energyLD + Entretien + Activite));
+                end;
+          6: // Prot�ines
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+              begin
+                energyPD := PresSimulP.TabResult[66, h] / 1000;
+                v := v + energyPD;
+              end;
+          7: // Lipides
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+              begin
+                PDfreeNEintake := PresSimulP.TabResult[65, h] / 1000;
+                PDfreeNEreq := PresSimulP.TabResult[73, h] / 1000;
+                energyLD := PDfreeNEintake - PDfreeNEreq;
+                v := v + energyLD;
+              end;
+        end;
+        result := v / d;
+      end;
+      1: // Valeurs �nerg�tiques
+      begin
+        // Diviseur
+        case CBNRJ4.ItemIndex of
+          1: // PV^0.60
+            d := Power (PresSimulP.TabResult[2, j], 0.60);
+          2: // PV^0.75
+            d := Power (PresSimulP.TabResult[2, j], 0.75);
+          3: // Aliment
+            d := PresSimulP.TabResult[11, j];
+          4: // GMQ
+            d := PresSimulP.TabResult[84, j];
+          else
+            d := 1;
+        end;
+        case CBNRJ3Valeurs.ItemIndex of
+          0: // Energie digestible
+          begin
+            EDing := PResSimulP.TabResult[109, j] * PResSimulP.TabResult[11, j];
+            v := EDing;
+          end;
+          1: // Energie m�tabolisable
+            case CBNRJ5.ItemIndex of
+              0: // Valeurs calcul�es
+              begin
+                MEcrois := PresSimulP.TabResult[89, j];
+                v := MEcrois * PresSimulP.TabResult[113, j];
+              end;
+              1: // Valeurs simul�es
+              begin
+                MEintake := PresSimulP.TabResult[86, j] / 1000;
+                v := MEintake;
+              end;
+              else
+                v := 0;
+            end;
+          2: // Energie nette
+            case CBNRJ5.ItemIndex of
+              0: // Valeurs calcul�es
+              begin
+                NEcrois := PresSimulP.TabResult[90, j];
+                v := NEcrois * PresSimulP.TabResult[11, j];
+              end;
+              1: // Valeurs simul�es
+              begin
+                NEintake := PresSimulP.TabResult[67, j] / 1000;
+                v := NEintake;
+              end;
+              else
+                v := 0;
+            end;
+          else
+            v := 0;
+        end;
+        result := v / d;
+      end;
+      else
+        result := 0;
+    end;
+  end;
+
+// AffGraphNRJ
+begin
+  ResetGraph;
+  case CBNRJ1.ItemIndex of
+    0: // R�partition
+    begin
+      Graph.Title.Text.Add(Format('%s (%s)', [CBNRJ3.Text, CBNRJ1.Text]));
+      Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]);
+      Graph.Legend.Inverted := TRUE;
+      case FSimulP.PC.ActivePageIndex of
+        1: // Comparaison
+          Graph.BottomAxis.Title.Caption := 'Simulation';
+        2: // Sensibilit�
+          Graph.BottomAxis.Title.Caption := 'Variation';
+      end;
+      // Affichage des barres
+      for i := 0 to ListNRJ.Count - 1 do
+        BarNRJ[i].Active := TRUE;
+      for i := 0 to ListNRJ.Count - 1 do
+        BarNRJ[i].Clear;
+      if CBNRJ4.ItemIndex = 3
+      then
+        for i := 0 to ListNRJ.Count - 1 do
+          BarNRJ[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListNRJ.Count - 1 do
+          BarNRJ[i].MultiBar := mbStacked;
+      for i := 0 to ListNRJ.Count - 1 do
+        for k := 1 to 5 do
+          if TabSimulP[k].Ok
+          then
+          begin
+            PResSimulP := TabSimulP[k].Result;
+            if TabSimulP[k].Profil = -1
+            then // Profil de la simulation
+              PProfilP := ListProfilP[FindIdxProfilP (FindNomProfilP (PSimulP.Profil))]
+            else
+              PProfilP := ListProfilP[FindIdxProfilP (FindNomProfilP (TabSimulP[k].Profil))];
+            case FSimulP.PC.ActivePageIndex of
+              1: // Comparaison
+                s := Format('%d', [k]);
+              2: // Sensibilit�
+                if FSimulP.CBVariable.ItemIndex = 6
+                then // Gaspillage
+                  if TabSimulP[k].Variation > 0
+                  then
+                    s := Format('+%1.0f%%', [TabSimulP[k].Variation * 100])
+                  else
+                    s := Format('%1.0f%%', [TabSimulP[k].Variation * 100])
+                else
+                  s := Format('%1.0f%%', [TabSimulP[k].Variation * 100]);
+            end;
+            y := NRJY;
+            if y > PICO
+            then
+              BarNRJ[i].AddBar(y, s, clTeeColor)
+            else
+              BarNRJ[i].AddNull(s);
+          end;
+      for i := 0 to ListNRJ.Count - 1 do
+        BarNRJ[i].ValueFormat := AjustFormat(AjustPas(Graph.MaxYValue(Graph.LeftAxis) - Graph.MinYValue(Graph.LeftAxis)));
+    end;
+    1: // Valeurs �nerg�tiques
+    begin
+      Graph.Title.Text.Add(Format('%s (%s)', [CBNRJ3Valeurs.Text, CBNRJ1.Text]));
+      Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBNRJ3Valeurs.Text, CBNRJ4.Text]);
+      Graph.Legend.Inverted := FALSE;
+      Graph.SubTitle.Text.Add(CBNRJ5.Text);
+      Graph.BottomAxis.Title.Caption := CBNRJ2.Text;
+      // Affichage des lignes
+      for k := 1 to 5 do
+        if TabSimulP[k].Ok
+        then
+        begin
+          LineNRJ[k].Active := TRUE;
+          LineNRJ[k].Clear;
+          PResSimulP := TabSimulP[k].Result;
+          for j := 1 to PresSimulP.NbJSim do
+            LineNRJ[k].AddXY(NRJX, NRJY, '', clTeeColor);
+        end;
+      if CBNRJ2.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFCompSimulP.CBNRJ1Change(Sender: TObject);
+begin
+  CBNRJ4.Items.Clear;
+  case CBNRJ1.ItemIndex of
+    0: // R�partition
+    begin
+      CBNRJ2.Visible := FALSE;
+      CBNRJ3.Visible := TRUE;
+      CBNRJ3Valeurs.Visible := FALSE;
+      CBNRJ5.Visible := FALSE;
+      // Unit�s
+      CBNRJ4.Items.Add(StrMJ);
+      CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
+      CBNRJ4.Items.Add(Format('%s/%s %s', [StrMJ, StrKg, StrAlimentUnit]));
+      CBNRJ4.Items.Add('%');
+    end;
+    1: // Valeurs �nerg�tiques
+    begin
+      CBNRJ2.Visible := TRUE;
+      CBNRJ3.Visible := FALSE;
+      CBNRJ3Valeurs.Visible := TRUE;
+      CBNRJ5.Visible := TRUE;
+      // Unit�s
+      CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
+      CBNRJ4.Items.Add(Format('%s/(%s %s)^0.60/%s', [StrMJ, StrKg, StrPV, StrJ]));
+      CBNRJ4.Items.Add(Format('%s/(%s %s)^0.75/%s', [StrMJ, StrKg, StrPV, StrJ]));
+      CBNRJ4.Items.Add(Format('%s/%s %s', [StrMJ, StrKg, StrAlimentUnit]));
+      CBNRJ4.Items.Add(Format('%s/%s %s', [StrMJ, StrKg, StrGMQUnit]));
+    end;
+  end;
+  CBNRJ4.ItemIndex := 0;
+  AffGraphNRJ;
+end;
+
+procedure TFCompSimulP.CBNRJ2Change(Sender: TObject);
+begin
+  AffGraphNRJ;
+end;
+
+procedure TFCompSimulP.CBNRJ3Change(Sender: TObject);
+begin
+  AffGraphNRJ;
+end;
+
+procedure TFCompSimulP.CBNRJ4Change(Sender: TObject);
+begin
+  AffGraphNRJ;
+end;
+
+procedure TFCompSimulP.CBNRJ5Change(Sender: TObject);
+begin
+  AffGraphNRJ;
+end;
+
+//////////////////
+//   Min�raux   //
+//////////////////
+procedure TFCompSimulP.InitMin;
+const
+  TabColor1: array[0..5] of TColor
+    = (clBlack, clTeal, clOlive, clPink, clRed, clGreen);
+  TabColor2: array[1..5] of TColor
+    = (clRed, clGreen, clYellow, clBlue, clFuchsia);
+var
+  i, k: integer;
+begin
+  // ListMin : liste pour les min�raux
+  ListMin := TStringList.Create;
+  ListMin.Assign(LBMin.Items);
+  // BarMin : s�ries (barres) graphiques
+  SetLength(BarMin, ListMin.Count);
+  for i := 0 to ListMin.Count - 1 do
+  begin
+    BarMin[i] := TBarSeries.Create(Graph);
+    BarMin[i].ParentChart := Graph;
+    BarMin[i].Title := ListMin[i];
+    BarMin[i].SeriesColor := TabColor1[i];
+    BarMin[i].BarPen.Color := BarMin[i].SeriesColor;
+    BarMin[i].Marks.Visible := FALSE;
+    {
+    BarMin[i].Marks.ArrowLength := -16;
+    BarMin[i].Marks.Arrow.Visible := FALSE;
+    BarMin[i].Marks.Brush.Style := bsClear;
+    BarMin[i].Marks.Frame.Visible := FALSE;
+    BarMin[i].Marks.Style := smsValue;
+    }
+    //BarMin[i].AutoMarkPosition := FALSE;
+    Graph.AddSeries(BarMin[i]);
+  end;
+  // LineMin : s�ries (lignes) graphiques
+  for k := 1 to 5 do
+    if TabSimulP[k].Ok
+    then
+    begin
+      LineMin[k] := TLineSeries.Create(Graph);
+      LineMin[k].ParentChart := Graph;
+      case FSimulP.PC.ActivePageIndex of
+        1 : // Comparaison
+          LineMin[k].Title := Format('Simulation %d', [k]);
+        2 : // Sensibilit�
+          if FSimulP.CBVariable.ItemIndex = 6
+          then // Gaspillage
+            if TabSimulP[k].Variation > 0
+            then
+              LineMin[k].Title := Format('+%1.0f%%', [TabSimulP[k].Variation * 100])
+            else
+              LineMin[k].Title := Format('%1.0f%%', [TabSimulP[k].Variation * 100])
+          else
+            LineMin[k].Title := Format('%1.0f%%', [TabSimulP[k].Variation * 100]);
+      end;
+      LineMin[k].SeriesColor := TabColor2[k];
+      LineMin[k].LinePen.Color := LineMin[k].SeriesColor;
+      LineMin[k].LinePen.Width := 2;
+      Graph.AddSeries(LineMin[k]);
+    end;
+end;
+
+procedure TFCompSimulP.AffGraphMin;
+var
+  i, j, k: integer;
+  y: double;
+  s: string;
+
+  // Abscisse
+  function MinX: double;
+  begin
+    case CBMin1.ItemIndex of
+      1, 2: // Apport ou besoin
+        case CBMin2.ItemIndex of
+          0: // Poids vif
+            result := PResSimulP.TabResult[2, j];
+          1: // Age
+            result := PResSimulP.TabResult[1, j];
+          2: // Jours
+            result := j;
+          3: // Semaines
+            result := j / 7;
+          else
+            result := 0;
+        end;
+      else
+        result := 0;
+    end;
+  end;
+
+  // Ordonn�e
+  function MinY: double;
+  var
+    h: integer;
+    v, d, Ptot, Pdig, PV, GMQ, Indigestible, Entretien, Retenu, Gaspillage: double;
+
+    // Composition des aliments
+    procedure Composition(jour: integer);
+    var
+      Aliment1, Aliment2: integer;
+      IngereFrais, Taux1, Taux2, IngereSec1, IngereSec2, Ptot1, Ptot2, Pdig1, Pdig2: double;
+      CC1, CC2: CompositionChimique;
+    begin
+      IngereFrais := PresSimulP.TabResult[11, jour];
+      // Aliment 1
+      Aliment1 := Round (PresSimulP.TabResult[7, jour]);
+      if Aliment1 = -1
+      then
+        CC1 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment(FindNomAliment(Aliment1))];
+        CC1 := PAliment.CC;
+      end;
+      Taux1 := PresSimulP.TabResult[9, jour] / 100;
+      IngereSec1 := IngereFrais * Taux1 * CC1.MS / 1000;
+      Ptot1 := IngereSec1 * CC1.P;
+      if Aliment1 = -1
+      then
+        Pdig1 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig1 := IngereSec1 * PAliment.CC.PdigG
+        else // Farine
+          Pdig1 := IngereSec1 * PAliment.CC.PdigF;
+      // Aliment 2
+      Aliment2 := Round(PresSimulP.TabResult[8, jour]);
+      if Aliment2 = -1
+      then
+        CC2 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment(FindNomAliment(Aliment2))];
+        CC2 := PAliment.CC;
+      end;
+      Taux2 := PresSimulP.TabResult[10, jour] / 100;
+      IngereSec2 := IngereFrais * Taux2 * CC2.MS / 1000;
+      Ptot2 := IngereSec2 * CC2.P;
+      if Aliment2 = -1
+      then
+        Pdig2 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig2 := IngereSec2 * PAliment.CC.PdigG
+        else // Farine
+          Pdig2 := IngereSec2 * PAliment.CC.PdigF;
+      // Cumul
+      Ptot := Ptot1 + Ptot2;
+      Pdig := Pdig1 + Pdig2;
+    end;
+
+  begin
+    case CBMin1.ItemIndex of
+      0: // R�partition
+      begin
+        // Diviseur
+        case CBMin4.ItemIndex of
+          1: // Dur�e
+            d := PresSimulP.NbJSim;
+          2: // Aliment
+          begin
+            d := 0;
+            if PresSimulP.NbJSim > 1
+            then
+              for h := 1 to PresSimulP.NbJSim do
+                d := d + PresSimulP.TabResult[113, h];
+          end;
+          else
+            d := 1;
+        end;
+        v := 0;
+        case CBMin3.ItemIndex of
+          0: // Phosphore
+            case i of
+              0: // Gaspillage
+                if CBMin5A.ItemIndex = 1
+                then // Total
+                  for h := 1 to PresSimulP.NbJSim do
+                  begin
+                    Composition(h);
+                    Gaspillage := PResSimulP.TabResult[112, h];
+                    v := v + Ptot / (1 - Gaspillage) - Ptot;
+                  end;
+              1: // Indigestible
+                if CBMin5A.ItemIndex = 1
+                then // Total
+                  for h := 1 to PresSimulP.NbJSim do
+                  begin
+                    Composition(h);
+                    Indigestible := Ptot - Pdig;
+                    v := v + Indigestible;
+                  end;
+              2: // Entretien
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  Composition(h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  if Ptot < Indigestible + Entretien
+                  then // D�ficit
+                    v := v + Ptot - Indigestible
+                  else
+                    v := v + Entretien;
+                end;
+              3: // Retenu
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  Composition(h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  GMQ := PResSimulP.TabResult[84, h];
+                  Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                  if Ptot < Indigestible + Entretien + Retenu
+                  then // D�ficit
+                    v := v + Max(Ptot - Indigestible - Entretien, 0)
+                  else
+                    v := v + Retenu;
+                end;
+              4: // D�ficit
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  Composition(h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  GMQ := PResSimulP.TabResult[84, h];
+                  Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                  if Ptot < Indigestible + Entretien + Retenu
+                  then
+                    v := v + Indigestible + Entretien + Retenu - Ptot;
+                end;
+              5: // Exc�s
+                for h := 1 to PresSimulP.NbJSim do
+                begin
+                  Composition(h);
+                  Indigestible := Ptot - Pdig;
+                  PV := PResSimulP.TabResult[2, h];
+                  Entretien := 10 * PV / 1000;
+                  GMQ := PResSimulP.TabResult[84, h];
+                  Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+                  if Ptot > Indigestible + Entretien + Retenu
+                  then
+                    v := v + Ptot - Indigestible - Entretien - Retenu;
+                end;
+            end;
+        end;
+        result := v / d;
+      end;
+      1: // Apport
+      begin
+        // Diviseur
+        case CBMin4.ItemIndex of
+          1: // GMQ
+            d := PResSimulP.TabResult[84, j];
+          2: // Aliment
+            d := PResSimulP.TabResult[113, j];
+          else
+            d := 1;
+        end;
+        case CBMin3.ItemIndex of
+          0: // Phosphore
+          begin
+            Composition(j);
+            if CBMin5A.ItemIndex = 0
+            then // Digestibilit� apparente
+              v := Pdig
+            else // Total
+              v := Ptot;
+          end;
+          else
+            v := 0;
+        end;
+        result := v / d;
+      end;
+      2: // Besoin
+      begin
+        // Diviseur
+        case CBMin4.ItemIndex of
+          1: // GMQ
+            d := PResSimulP.TabResult[84, j];
+          2: // Aliment
+            d := PResSimulP.TabResult[113, j];
+          else
+            d := 1;
+        end;
+        case CBMin3.ItemIndex of
+          0: // Phosphore
+          begin
+            PV := PResSimulP.TabResult[2, j];
+            Entretien := 10 * PV / 1000;
+            GMQ := PResSimulP.TabResult[84, j];
+            Retenu := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+            v := Entretien + Retenu;
+          end;
+          else
+            v := 0;
+        end;
+        result := v / d;
+      end;
+      else
+        result := 0;
+    end;
+  end;
+
+// AffGraphMin
+begin
+  ResetGraph;
+  Graph.Title.Text.Add(Format('%s (%s)', [CBMin3.Text, CBMin1.Text]));
+  if CBMin1.ItemIndex = 1
+  then // Besoin
+    Graph.SubTitle.Text.Add(CBMin5B.Text)
+  else
+    Graph.SubTitle.Text.Add(CBMin5A.Text);
+  Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBMin3.Text, CBMin4.Text]);
+  case CBMin1.ItemIndex of
+    0: // R�partition
+    begin
+      Graph.Legend.Inverted := TRUE;
+      case FSimulP.PC.ActivePageIndex of
+        1: // Comparaison
+          Graph.BottomAxis.Title.Caption := 'Simulation';
+        2: // Sensibilit�
+          Graph.BottomAxis.Title.Caption := 'Variation';
+      end;
+      // Affichage des barres
+      for i := 0 to ListMin.Count - 1 do
+        BarMin[i].Active := TRUE;
+      for i := 0 to ListMin.Count - 1 do
+        BarMin[i].Clear;
+      if CBMin4.ItemIndex = 3
+      then
+        for i := 0 to ListMin.Count - 1 do
+          BarMin[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListMin.Count - 1 do
+          BarMin[i].MultiBar := mbStacked;
+      for i := 0 to ListMin.Count - 1 do
+        for k := 1 to 5 do
+          if TabSimulP[k].Ok
+          then
+          begin
+            PResSimulP := TabSimulP[k].Result;
+            case FSimulP.PC.ActivePageIndex of
+              1: // Comparaison
+                s := Format('%d', [k]);
+              2: // Sensibilit�
+                if FSimulP.CBVariable.ItemIndex = 6
+                then // Gaspillage
+                  if TabSimulP[k].Variation > 0
+                  then
+                    s := Format('+%1.0f%%', [TabSimulP[k].Variation * 100])
+                  else
+                    s := Format('%1.0f%%', [TabSimulP[k].Variation * 100])
+                else
+                  s := Format('%1.0f%%', [TabSimulP[k].Variation * 100]);
+            end;
+            y := MinY;
+            if y > PICO
+            then
+              BarMin[i].AddBar(y, s, clTeeColor)
+            else
+              BarMin[i].AddNull(s);
+          end;
+      for i := 0 to ListMin.Count - 1 do
+        BarMin[i].ValueFormat := AjustFormat(AjustPas(Graph.MaxYValue(Graph.LeftAxis) - Graph.MinYValue(Graph.LeftAxis)));
+    end;
+    1, 2: // Apport ou besoin
+    begin
+      Graph.Legend.Inverted := FALSE;
+      Graph.BottomAxis.Title.Caption := CBMin2.Text;
+      // Affichage des lignes
+      for k := 1 to 5 do
+        if TabSimulP[k].Ok
+        then
+        begin
+          LineMin[k].Active := TRUE;
+          LineMin[k].Clear;
+          PResSimulP := TabSimulP[k].Result;
+          for j := 1 to PresSimulP.NbJSim do
+            LineMin[k].AddXY(MinX, MinY, '', clTeeColor);
+        end;
+      if CBMin2.ItemIndex = 3
+      then // Dur�e (semaine)
+        Graph.BottomAxis.Increment := 1
+      else
+        Graph.BottomAxis.Increment := 10;
+    end;
+  end;
+  AjustEchelle(Graph);
+end;
+
+procedure TFCompSimulP.CBMin1Change(Sender: TObject);
+begin
+  CBMin4.Items.Clear;
+  case CBMin1.ItemIndex of
+    0: // R�partition
+    begin
+      CBMin2.Visible := FALSE;
+      CBMin5A.Visible := TRUE;
+      CBMin5B.Visible := FALSE;
+      // Unit�s
+      CBMin4.Items.Add(StrG);
+      CBMin4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+      CBMin4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+      CBMin4.Items.Add('%');
+    end;
+    1, 2: // Apport ou besoin
+    begin
+      CBMin2.Visible := TRUE;
+      CBMin5A.Visible := (CBMin1.ItemIndex = 1);
+      CBMin5B.Visible := (CBMin1.ItemIndex = 2);
+      if CBMin1.ItemIndex = 2
+      then // Besoin
+        if CBMin5A.ItemIndex = 1
+        then // Total
+          CBMin5A.ItemIndex := 0;
+      // Unit�s
+      CBMin4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+      CBMin4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrGMQUnit]));
+      CBMin4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+    end;
+  end;
+  CBMin4.ItemIndex := 0;
+  AffGraphMin;
+end;
+
+procedure TFCompSimulP.CBMin2Change(Sender: TObject);
+begin
+  AffGraphMin;
+end;
+
+procedure TFCompSimulP.CBMin3Change(Sender: TObject);
+begin
+  AffGraphMin;
+end;
+
+procedure TFCompSimulP.CBMin4Change(Sender: TObject);
+begin
+  AffGraphMin;
+end;
+
+procedure TFCompSimulP.CBMin5Change(Sender: TObject);
+begin
+  if CBMin1.ItemIndex = 2
+  then // Besoin
+    CBMin5A.ItemIndex := CBMin5B.ItemIndex
+  else
+    if CBMin5A.ItemIndex = 1
+    then // Total
+      CBMin5B.ItemIndex := 0
+    else
+      CBMin5B.ItemIndex := CBMin5A.ItemIndex;
+  AffGraphMin;
+end;
+
+////////////////
+//   Rejets   //
+////////////////
+procedure TFCompSimulP.InitRej;
+const
+  TabColor: array[0..4] of TColor
+    = (clBlack, clMaroon, clYellow, clMaroon, clPink);
+var
+  i: integer;
+begin
+  // ListRej : liste pour les rejets
+  ListRej := TStringList.Create;
+  ListRej.Assign(LBRej.Items);
+  // BarRej : s�ries (barres) graphiques
+  SetLength(BarRej, ListRej.Count);
+  for i := 0 to ListRej.Count - 1 do
+  begin
+    BarRej[i] := TBarSeries.Create(Graph);
+    BarRej[i].ParentChart := Graph;
+    BarRej[i].Title := ListRej[i];
+    BarRej[i].SeriesColor := TabColor[i];
+    BarRej[i].BarPen.Color := BarRej[i].SeriesColor;
+    BarRej[i].Marks.Visible := FALSE;
+    {
+    BarRej[i].Marks.ArrowLength := -16;
+    BarRej[i].Marks.Arrow.Visible := FALSE;
+    BarRej[i].Marks.Brush.Style := bsClear;
+    BarRej[i].Marks.Frame.Visible := FALSE;
+    BarRej[i].Marks.Style := smsValue;
+    }
+    //BarRej[i].AutoMarkPosition := FALSE;
+    Graph.AddSeries(BarRej[i]);
+  end;
+end;
+
+procedure TFCompSimulP.AffGraphRej;
+var
+  i, k: integer;
+  y: double;
+  s: string;
+
+  // Ordonn�e
+  function RejY: double;
+  var
+    h: integer;
+    v, d, IngereSec1, IngereSec2, Ptot, Pdig, Ingere, Digestible, Depose, Gaspillage: double;
+    CC1, CC2: CompositionChimique;
+
+    // Composition des aliments
+    procedure Composition(jour: integer);
+    var
+      Aliment1, Aliment2: integer;
+      IngereFrais, Taux1, Taux2, Ptot1, Ptot2, Pdig1, Pdig2: double;
+    begin
+      IngereFrais := PresSimulP.TabResult[11, jour];
+      // Aliment 1
+      Aliment1 := Round (PresSimulP.TabResult[7, jour]);
+      if Aliment1 = -1
+      then
+        CC1 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment(FindNomAliment(Aliment1))];
+        CC1 := PAliment.CC;
+      end;
+      Taux1 := PresSimulP.TabResult[9, jour] / 100;
+      IngereSec1 := IngereFrais * Taux1 * CC1.MS / 1000;
+      Ptot1 := IngereSec1 * CC1.P;
+      if Aliment1 = -1
+      then
+        Pdig1 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig1 := IngereSec1 * PAliment.CC.PdigG
+        else // Farine
+          Pdig1 := IngereSec1 * PAliment.CC.PdigF;
+      // Aliment 2
+      Aliment2 := Round (PresSimulP.TabResult[8, jour]);
+      if Aliment2 = -1
+      then
+        CC2 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment(FindNomAliment (Aliment2))];
+        CC2 := PAliment.CC;
+      end;
+      Taux2 := PresSimulP.TabResult[10, jour] / 100;
+      IngereSec2 := IngereFrais * Taux2 * CC2.MS / 1000;
+       Ptot2 := IngereSec2 * CC2.P;
+      if Aliment2 = -1
+      then
+        Pdig2 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig2 := IngereSec2 * PAliment.CC.PdigG
+        else // Farine
+          Pdig2 := IngereSec2 * PAliment.CC.PdigF;
+      // Cumul
+      Ptot := Ptot1 + Ptot2;
+      Pdig := Pdig1 + Pdig2;
+   end;
+
+    // Calcul de l'ing�r�
+    function CalcIngere: Double;
+    begin
+      case CBRej3.ItemIndex of
+        0: // Azote
+          result := (IngereSec1*CC1.MAT + IngereSec2*CC2.MAT) * 0.16;
+        1: // Phosphore
+          result := Ptot;
+        2: // Calcium
+          result := IngereSec1*CC1.Ca + IngereSec2*CC2.Ca;
+        3: // Potassium
+          result := IngereSec1*CC1.K + IngereSec2*CC2.K;
+        4: // Cuivre
+          result := IngereSec1*CC1.Cu + IngereSec2*CC2.Cu;
+        5: // Zinc
+          result := IngereSec1*CC1.Zn + IngereSec2*CC2.Zn;
+        else
+          result := 0;
+      end;
+    end;
+
+    // Calcul du digestible
+    function CalcDigestible: Double;
+    begin
+      case CBRej3.ItemIndex of
+        0: // Azote
+          result := (IngereSec1*CC1.MAT*CC1.dMAT_C/100 + IngereSec2*CC2.MAT*CC2.dMAT_C/100) * 0.16;
+        1: // Phosphore
+          result := Pdig;
+        else
+          result := 0;
+      end;
+    end;
+
+    // Calcul du d�p�t (potentiel)
+    function CalcDepot(jour: integer): Double;
+    var
+      PV, PVV, PVfin, PVVfin, GMQ, PD: Double;
+    begin
+      PV := PresSimulP.TabResult[2, jour];
+      PVV := CalcPVV(PV);
+      PVfin := PresSimulP.TabResult[83, jour];
+      PVVfin := CalcPVV(PVfin);
+      GMQ := PResSimulP.TabResult[84, jour];
+      PD := PResSimulP.TabResult[79, jour];
+      case CBRej3.ItemIndex of
+        0: // Azote
+          result := PD * 0.16;
+        1: // Phosphore
+          result := (5.4199 - 2 * 0.002857 * PV) * GMQ;
+        2: // Calcium
+          result := -0.00180 * (Power (PVVfin, 2) - Power (PVV, 2)) + 8.64633 * (PVVfin - PVV);
+        3: // Potassium
+          result := -0.00345 * (Power (PVVfin, 2) - Power (PVV, 2)) + 2.53338 * (PVVfin - PVV);
+        4: // Cuivre
+          result := -0.00251 * (Power (PVVfin, 2) - Power (PVV, 2)) + 1.05393 * (PVVfin - PVV);
+        5: // Zinc
+          result := 21.8 * (PVVfin - PVV);
+        else
+          result := 0;
+      end;
+    end;
+
+  // RejY
+  begin
+    // Diviseur
+    case CBRej4.ItemIndex of
+      1: // Dur�e
+        d := PresSimulP.NbJSim;
+      2: // Aliment
+      begin
+        d := 0;
+        for h := 1 to PresSimulP.NbJSim do
+          d := d + PresSimulP.TabResult[113, h];
+      end;
+      else
+        d := 1;
+    end;
+    v := 0;
+    for h := 1 to PresSimulP.NbJSim do
+    begin
+      Composition(h);
+      Ingere := CalcIngere;
+      Gaspillage := PResSimulP.TabResult[112, h];
+      Digestible := CalcDigestible;
+      Depose := CalcDepot(h);
+      if CBRej3.ItemIndex < 2
+      then // Azote ou phosphore
+        case i of
+          0: // Gaspillage
+            v := v + Ingere / (1 - Gaspillage) - Ingere;
+          1: // F�cal
+            v := v + Ingere - Digestible;
+          2: // Urinaire
+            v := v + Max(Digestible - Depose, 0);
+          4: // Retenu
+            v := v + Min(Digestible, Depose);
+        end
+      else // Autres
+        case i of
+          0: // Gaspillage
+            v := v + Ingere / (1 - Gaspillage) - Ingere;
+          3: // Ecr�t�
+            v := v + Max(Ingere - Depose, 0);
+          4: // Retenu
+            v := v + Min(Ingere, Depose);
+        end;
+    end;
+    result := v / d;
+  end;
+
+// AffGraphRej
+begin
+  ResetGraph;
+  Graph.Legend.Inverted := TRUE;
+  Graph.Title.Text.Add(TabRej.Caption);
+  Graph.LeftAxis.Title.Caption := Format('%s (%s)', [CBRej3.Text, CBRej4.Text]);
+  case FSimulP.PC.ActivePageIndex of
+    1: // Comparaison
+      Graph.BottomAxis.Title.Caption := 'Simulation';
+    2: // Sensibilit�
+      Graph.BottomAxis.Title.Caption := 'Variation';
+  end;
+  // Affichage des barres
+  BarRej[0].Active := TRUE;
+  BarRej[1].Active := CBRej3.ItemIndex < 2;
+  BarRej[2].Active := CBRej3.ItemIndex < 2;
+  BarRej[3].Active := CBRej3.ItemIndex > 1;
+  BarRej[4].Active := TRUE;
+  for i := 0 to ListRej.Count - 1 do
+    BarRej[i].Clear;
+  if CBRej4.ItemIndex = 3
+  then
+    for i := 0 to ListRej.Count - 1 do
+      BarRej[i].MultiBar := mbStacked100
+  else
+    for i := 0 to ListRej.Count - 1 do
+      BarRej[i].MultiBar := mbStacked;
+  for i := 0 to ListRej.Count - 1 do
+    for k := 1 to 5 do
+      if TabSimulP[k].Ok
+      then
+      begin
+        PResSimulP := TabSimulP[k].Result;
+        case FSimulP.PC.ActivePageIndex of
+          1: // Comparaison
+            s := Format('%d', [k]);
+          2: // Sensibilit�
+            if FSimulP.CBVariable.ItemIndex = 6
+            then // Gaspillage
+              if TabSimulP[k].Variation > 0
+              then
+                s := Format('+%1.0f%%', [TabSimulP[k].Variation * 100])
+              else
+                s := Format('%1.0f%%', [TabSimulP[k].Variation * 100])
+            else
+              s := Format('%1.0f%%', [TabSimulP[k].Variation * 100]);
+        end;
+        y := RejY;
+        if y > PICO
+        then
+          BarRej[i].AddBar(y, s, clTeeColor)
+        else
+          BarRej[i].AddNull(s);
+      end;
+  for i := 0 to ListRej.Count - 1 do
+    BarRej[i].ValueFormat := AjustFormat(AjustPas(Graph.MaxYValue(Graph.LeftAxis) - Graph.MinYValue(Graph.LeftAxis)));
+  AjustEchelle(Graph);
+end;
+
+procedure TFCompSimulP.CBRej3Change(Sender: TObject);
+begin
+  CBRej4.Items.Clear;
+  if CBRej3.ItemIndex > 3
+  then // Oligo-�l�ment
+  begin
+    CBRej4.Items.Add(StrMG);
+    CBRej4.Items.Add(Format('%s/%s', [StrMG, StrJ]));
+    CBRej4.Items.Add(Format('%s/%s %s', [StrMG, StrKg, StrAlimentUnit]));
+    CBRej4.Items.Add('%');
+  end
+  else // Macro-�l�ment
+  begin
+    CBRej4.Items.Add(StrG);
+    CBRej4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+    CBRej4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+    CBRej4.Items.Add('%');
+  end;
+  CBRej4.ItemIndex := 0;
+  AffGraphRej;
+end;
+
+procedure TFCompSimulP.CBRej4Change(Sender: TObject);
+begin
+  AffGraphRej;
+end;
+
+procedure TFCompSimulP.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UFCompSimulT.pas
===================================================================
--- UFCompSimulT.pas	(révision 0)
+++ UFCompSimulT.pas	(révision 3)
@@ -0,0 +1,2931 @@
+unit UFCompSimulT;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Messages, Dialogs, StdCtrls, ExtCtrls,
+  ComCtrls, Menus, Graphics, TeeProcs, TeEngine, Series, Chart;
+
+type
+  TFCompSimulT = class(TForm)
+    PC: TPageControl;
+    TabRej: TTabSheet;
+    CBRej3: TComboBox;
+    CBRej4: TComboBox;
+    TabPerf: TTabSheet;
+    CBPerf4: TComboBox;
+    CBPerf3: TComboBox;
+    CBPerf2: TComboBox;
+    TabAli: TTabSheet;
+    TabAA: TTabSheet;
+    CBAli4: TComboBox;
+    CBAA3: TComboBox;
+    CBAA4: TComboBox;
+    CBPerf1: TComboBox;
+    CBAA1: TComboBox;
+    CBAA5A: TComboBox;
+    CBAA2: TComboBox;
+    GBPerfX: TGroupBox;
+    GBPerfY: TGroupBox;
+    GBAAX: TGroupBox;
+    GBAliY: TGroupBox;
+    GBAAY: TGroupBox;
+    GBRejY: TGroupBox;
+    GBAAT: TGroupBox;
+    GBRejT: TGroupBox;
+    GBRejX: TGroupBox;
+    GBAliX: TGroupBox;
+    GBAliT: TGroupBox;
+    GBPerfT: TGroupBox;
+    Graph: TChart;
+    LBRej: TListBox;
+    CBAA5B: TComboBox;
+    CBPerf3Global: TComboBox;
+    TabNRJ: TTabSheet;
+    TabMin: TTabSheet;
+    GBNRJT: TGroupBox;
+    GBNRJY: TGroupBox;
+    CBNRJ3: TComboBox;
+    CBNRJ4: TComboBox;
+    GBNRJX: TGroupBox;
+    CBNRJ2: TComboBox;
+    LBNRJ: TListBox;
+    GBMinX: TGroupBox;
+    GBMinT: TGroupBox;
+    GBMinY: TGroupBox;
+    CBMin3: TComboBox;
+    CBMin4: TComboBox;
+    CBAli3: TComboBox;
+    LBMin: TListBox;
+    CBMin1: TComboBox;
+    CBMin2: TComboBox;
+    CBMin5A: TComboBox;
+    CBMin5B: TComboBox;
+    LBAA: TListBox;
+    PM: TPopupMenu;
+    MI3D: TMenuItem;
+    MIPreview: TMenuItem;
+    MIPrint: TMenuItem;
+    PD: TPrintDialog;
+    CBAli1: TComboBox;
+    CBAli5: TComboBox;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure PCChange(Sender: TObject);
+    procedure CBRej3Change(Sender: TObject);
+    procedure CBRej4Change(Sender: TObject);
+    procedure CBPerf2Change(Sender: TObject);
+    procedure CBPerf3Change(Sender: TObject);
+    procedure CBAli4Change(Sender: TObject);
+    procedure CBAA3Change(Sender: TObject);
+    procedure CBAA4Change(Sender: TObject);
+    procedure CBPerf1Change(Sender: TObject);
+    procedure CBPerf4Change(Sender: TObject);
+    procedure CBAA1Change(Sender: TObject);
+    procedure CBAA5Change(Sender: TObject);
+    procedure CBAA2Change(Sender: TObject);
+    procedure CBNRJ2Change(Sender: TObject);
+    procedure CBNRJ3Change(Sender: TObject);
+    procedure CBNRJ4Change(Sender: TObject);
+    procedure CBMin3Change(Sender: TObject);
+    procedure CBMin4Change(Sender: TObject);
+    procedure CBAli3Change(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure CBMin1Change(Sender: TObject);
+    procedure CBMin2Change(Sender: TObject);
+    procedure CBMin5Change(Sender: TObject);
+    procedure MI3DClick(Sender: TObject);
+    procedure MIPreviewClick(Sender: TObject);
+    procedure MIPrintClick(Sender: TObject);
+    procedure CBAli5Change(Sender: TObject);
+    procedure CBAli1Change(Sender: TObject);
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+  private
+    { D�clarations priv�es }
+    LinePerf : array[1..5] of TLineSeries ;
+    BarPerf : TBarSeries ;
+    ListAli, ListMat : TStrings ;
+    CompositionComplete : boolean ;
+    BarAli : array of TBarSeries ;
+    BarMat : TBarSeries ;
+    LineAA : array[1..5] of TLineSeries ;
+    ListAA : TStrings ;
+    BarAA : array of TBarSeries ;
+    ListNRJ : TStrings ;
+    BarNRJ : array of TBarSeries ;
+    ListRej : TStrings ;
+    BarRej : array of TBarSeries ;
+    ListMin : TStrings ;
+    BarMin : array of TBarSeries ;
+    LineMin : array[1..5] of TLineSeries ;
+    procedure ResetGraph ;
+    procedure InitPerf ;
+    procedure AffGraphPerf ;
+    procedure InitAli ;
+    procedure AffGraphAli ;
+    procedure InitAA ;
+    procedure AffGraphAA ;
+    procedure InitNRJ ;
+    procedure AffGraphNRJ ;
+    procedure InitRej ;
+    procedure AffGraphRej ;
+    procedure InitMin ;
+    procedure AffGraphMin ;
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FCompSimulT: TFCompSimulT;
+
+implementation
+
+uses
+  Printers, Math, SysUtils, gnugettext, UVariables, UStrings, UFindRec, UUtil,
+  UEchelle, UFSimulT, UFPrevGraph;
+
+{$R *.dfm}
+
+{ TFCompSimulT }
+
+procedure TFCompSimulT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 544 + (Width - ClientWidth);
+  Width := 640;
+  Constraints.MinHeight := 360 + (Height - ClientHeight);
+  Height := 480;
+  CBPerf1.ItemIndex := 0;
+  CBPerf2.ItemIndex := 0;
+  CBPerf3.ItemIndex := 0;
+  CBPerf3Global.ItemIndex := 0;
+  CBPerf4.Items.Add(StrKg);
+  CBPerf4.ItemIndex := 0;
+  CBAli1.ItemIndex := 0;
+  CBAli3.ItemIndex := 0;
+  CBAli4.Items.Add(StrKg);
+  CBAli4.Items.Add(Format('%s/%s', [StrKg, StrJ]));
+  CBAli4.Items.Add('%');
+  CBAli4.ItemIndex := 0;
+  CBAli5.ItemIndex := 0;
+  CBAA1.ItemIndex := 0;
+  CBAA2.ItemIndex := 0;
+  CBAA3.ItemIndex := 1;
+  CBAA4.Items.Add(StrG);
+  CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+  CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+  CBAA4.Items.Add('%');
+  CBAA4.ItemIndex := 0;
+  CBAA5A.ItemIndex := 0;
+  CBAA5B.ItemIndex := 0;
+  CBNRJ2.ItemIndex := 0;
+  CBNRJ3.ItemIndex := 0;
+  CBNRJ4.Items.Add(StrMJ);
+  CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
+  CBNRJ4.Items.Add(Format('%s/%s %s', [StrMJ, StrKg, StrAlimentUnit]));
+  CBNRJ4.Items.Add('%');
+  CBNRJ4.ItemIndex := 0;
+  CBMin1.ItemIndex := 0;
+  CBMin2.ItemIndex := 0;
+  CBMin3.ItemIndex := 0;
+  CBMin4.Items.Add (StrG) ;
+  CBMin4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+  CBMin4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+  CBMin4.Items.Add ('%') ;
+  CBMin4.ItemIndex := 0;
+  CBMin5A.ItemIndex := 0;
+  CBMin5B.ItemIndex := 0;
+  CBRej3.ItemIndex := 0;
+  CBRej4.Items.Add(StrG);
+  CBRej4.Items.Add(Format('%s/%s', [StrG, StrJ]));
+  CBRej4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
+  CBRej4.Items.Add('%');
+  CBRej4.ItemIndex := 0;
+end;
+
+procedure TFCompSimulT.FormShow (Sender : TObject) ;
+var
+  k : integer ;
+begin
+  MIPrint.Enabled := IsComplete or IsEducation ;
+  // Bas de page du graphique
+  Graph.Foot.Text.Clear ;
+  case FSimulT.PC.ActivePageIndex of
+    1 : // Comparaison
+      for k := 5 downto 1 do
+        if TabSimulT[k].Ok
+        then
+          Graph.Foot.Text.Add (Format (StrSimulComp, [k, FindNomSimulT (TabSimulT[k].Simul)])) ;
+    2 : // Sensibilit�
+      Graph.Foot.Text.Add (Format (StrSimulSens, [FSimulT.CBVariable.Text, FSimulT.CBSimulSens.Text])) ;
+  end ;
+  // Aliment
+  InitAli ;
+  // Performances
+  InitPerf ;
+  // Acides amin�s
+  InitAA ;
+  // Energie
+  InitNRJ ;
+  // Min�raux
+  InitMin ;
+  // Rejets
+  InitRej ;
+  // Abscisses par d�faut
+  CBPerf2.ItemIndex := XTruie ;
+  CBAA2.ItemIndex := XTruie ;
+  CBNRJ2.ItemIndex := XTruie ;
+  // Affichage principal
+  PC.ActivePageIndex := 0 ;
+  PCChange (nil) ;
+end ;
+
+procedure TFCompSimulT.FormClose (Sender : TObject ;
+  var Action : TCloseAction) ;
+var
+  i, k : integer ;
+begin
+  // Performances
+  BarPerf.Free ;
+  for k := 1 to 5 do
+    if TabSimulT[k].Ok
+    then
+      LinePerf[k].Free ;
+  // Aliment
+  BarMat.Free ;
+  for i := 0 to ListAli.Count - 1 do
+    BarAli[i].Free ;
+  SetLength (BarAli, 0) ;
+  ListMat.Free ;
+  ListAli.Free ;
+  // Acides amin�s
+  for k := 1 to 5 do
+    if TabSimulT[k].Ok
+    then
+      LineAA[k].Free ;
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Free ;
+  SetLength (BarAA, 0) ;
+  ListAA.Free ;
+  // Energie
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Free ;
+  SetLength (BarNRJ, 0) ;
+  ListNRJ.Free ;
+  // Min�raux
+  for k := 1 to 5 do
+    if TabSimulT[k].Ok
+    then
+      LineMin[k].Free ;
+  for i := 0 to ListMin.Count - 1 do
+    BarMin[i].Free ;
+  SetLength (BarMin, 0) ;
+  ListMin.Free ;
+  // Rejets
+  for i := 0 to ListRej.Count - 1 do
+    BarRej[i].Free ;
+  SetLength (BarRej, 0) ;
+  ListRej.Free ;
+end ;
+
+procedure TFCompSimulT.PCChange (Sender : TObject) ;
+begin
+  case PC.ActivePageIndex of
+    0 : // Performances
+      AffGraphPerf ;
+    1 : // Aliment
+      AffGraphAli ;
+    2 : // Acides amin�s
+      AffGraphAA ;
+    3 : // Energie
+      AffGraphNRJ ;
+    4: // Min�raux
+      AffGraphMin ;
+    5: // Rejets
+      AffGraphRej ;
+  end ;
+end ;
+
+procedure TFCompSimulT.ResetGraph ;
+var
+  i, k : integer ;
+begin
+  Graph.UndoZoom ;
+  Graph.Legend.Visible := TRUE ;
+  Graph.Title.Text.Clear ;
+  Graph.SubTitle.Text.Clear ;
+  Graph.BottomAxis.MinimumOffset := 0;
+  Graph.BottomAxis.MaximumOffset := 0;
+  // Performances
+  for k := 1 to 5 do
+    if TabSimulT[k].Ok
+    then
+      LinePerf[k].Active := FALSE ;
+  BarPerf.Active := FALSE ;
+  // Aliment
+  for i := 0 to ListAli.Count - 1 do
+    BarAli[i].Active := FALSE ;
+  BarMat.Active := FALSE ;
+  // Acides amin�s
+  for i := 0 to ListAA.Count - 1 do
+    BarAA[i].Active := FALSE ;
+  for k := 1 to 5 do
+    if TabSimulT[k].Ok
+    then
+      LineAA[k].Active := FALSE ;
+  // Energie
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Active := FALSE ;
+  // Min�raux
+  for i := 0 to ListMin.Count - 1 do
+    BarMin[i].Active := FALSE ;
+  for k := 1 to 5 do
+    if TabSimulT[k].Ok
+    then
+      LineMin[k].Active := FALSE ;
+  // Rejets
+  for i := 0 to ListRej.Count - 1 do
+    BarRej[i].Active := FALSE ;
+end ;
+
+procedure TFCompSimulT.MI3DClick(Sender: TObject);
+begin
+  Graph.View3D := not (Graph.View3D) ;
+end;
+
+procedure TFCompSimulT.MIPreviewClick(Sender: TObject);
+begin
+  FPrevGraph := TFPrevGraph.Create (Self) ;
+  with FPrevGraph do
+  begin
+    TPPGraph.Panels.Add (Graph) ;
+    ShowModal ;
+    Release ;
+  end ;
+end;
+
+procedure TFCompSimulT.MIPrintClick(Sender: TObject);
+begin
+  if PD.Execute
+  then
+  begin
+    Printer.Orientation := poLandscape ;
+    Graph.Print ;
+  end ;
+end;
+
+//////////////////////
+//   Performances   //
+//////////////////////
+procedure TFCompSimulT.InitPerf ;
+const
+  TabColor : array[1..5] of TColor
+    = (clRed, clGreen, clYellow, clBlue, clFuchsia) ;
+var
+  k : integer ;
+begin
+  // LinePerf : s�ries (lignes) graphiques
+  for k := 1 to 5 do
+    if TabSimulT[k].Ok
+    then
+    begin
+      LinePerf[k] := TLineSeries.Create (Graph) ;
+      LinePerf[k].ParentChart := Graph ;
+      case FSimulT.PC.ActivePageIndex of
+        1 : // Comparaison
+          LinePerf[k].Title := Format ('Simulation %d', [k]) ;
+        2 : // Sensibilit�
+          LinePerf[k].Title := Format ('%1.0f %%', [TabSimulT[k].Variation * 100]) ;
+      end ;
+      LinePerf[k].SeriesColor := TabColor[k] ;
+      LinePerf[k].LinePen.Color := LinePerf[k].SeriesColor ;
+      LinePerf[k].LinePen.Width := 2 ;
+      Graph.AddSeries (LinePerf[k]) ;
+    end ;
+  // BarPerf : s�rie (barre) graphique
+  BarPerf := TBarSeries.Create (Graph) ;
+  BarPerf.ParentChart := Graph ;
+//  BarPerf.Title := ' ' ;
+  BarPerf.SeriesColor := clTeal ;
+  BarPerf.BarPen.Color := BarPerf.SeriesColor ;
+  BarPerf.Marks.Style := smsValue ;
+  BarPerf.Marks.ArrowLength := 0 ;
+  BarPerf.Marks.Arrow.Visible := FALSE ;
+  BarPerf.Marks.Brush.Style := bsClear ;
+  BarPerf.Marks.Frame.Visible := FALSE ;
+  BarPerf.Marks.Font.Style := [fsBold] ;
+  Graph.AddSeries (BarPerf) ;
+end ;
+
+procedure TFCompSimulT.AffGraphPerf ;
+var
+  j, k : integer ;
+
+  // Abscisse
+  function PerfX : double ;
+  begin
+    case CBPerf1.ItemIndex of
+      0 : // Affichage dynamique
+        case CBPerf2.ItemIndex of
+          0 : // Age
+            result := PResSimulT.TabResult[1, j] ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function PerfY : double ;
+  var
+    h : integer ;
+    v, d, conso, gain : double ;
+  begin
+    case CBPerf1.ItemIndex of
+      0 : // Affichage dynamique
+        case CBPerf3.ItemIndex of
+          0 : // Poids vif total
+            result := PResSimulT.TabResult[58, j] ;
+          1 : // Gain de poids total
+            result := PResSimulT.TabResult[59, j] * 1000 ;
+          2 : // Poids vif net
+            result := PResSimulT.TabResult[60, j] ;
+          3 : // Gain de poids net
+            result := PResSimulT.TabResult[61, j] * 1000 ;
+          4 : // Aliment consomm�
+            case CBPerf4.ItemIndex of
+              0 : // Aliment
+                result := PResSimulT.TabResult[11, j] ;
+              1 : // MS
+                result := PResSimulT.TabResult[12, j] ;
+              2 : // ED
+                result := PResSimulT.TabResult[71, j] ;
+              3 : // EM
+                result := PResSimulT.TabResult[72, j] ;
+              4 : // EN
+                result := PResSimulT.TabResult[73, j] ;
+              else
+                result := 0 ;
+            end ;
+          5 : // Indice de consommation
+            if PResSimulT.TabResult[59, j] <> 0
+            then
+              case CBPerf4.ItemIndex of
+                0 : // Aliment
+                  result := PResSimulT.TabResult[11, j] / PResSimulT.TabResult[59, j] ;
+                1 : // MS
+                  result := PResSimulT.TabResult[12, j] / PResSimulT.TabResult[59, j] ;
+                2 : // ED
+                  result := PResSimulT.TabResult[71, j] / PResSimulT.TabResult[59, j] ;
+                3 : // EM
+                  result := PResSimulT.TabResult[72, j] / PResSimulT.TabResult[59, j] ;
+                4 : // EN
+                  result := PResSimulT.TabResult[73, j] / PResSimulT.TabResult[59, j] ;
+                else
+                  result := 0 ;
+              end
+            else
+              result := 0 ;
+          6 : // Efficacit� alimentaire
+            case CBPerf4.ItemIndex of
+              0 : // Aliment
+                if PResSimulT.TabResult[11, j] <> 0
+                then
+                  result := PResSimulT.TabResult[59, j] / PResSimulT.TabResult[11, j]
+                else
+                  result := 0 ;
+              1 : // MS
+                if PResSimulT.TabResult[12, j] <> 0
+                then
+                  result := PResSimulT.TabResult[59, j] / PResSimulT.TabResult[12, j]
+                else
+                  result := 0 ;
+              2 : // ED
+                if PResSimulT.TabResult[71, j] <> 0
+                then
+                  result := PResSimulT.TabResult[59, j] / PResSimulT.TabResult[71, j]
+                else
+                  result := 0 ;
+              3 : // EM
+                if PResSimulT.TabResult[72, j] <> 0
+                then
+                  result := PResSimulT.TabResult[59, j] / PResSimulT.TabResult[72, j]
+                else
+                  result := 0 ;
+              4 : // EN
+                if PResSimulT.TabResult[73, j] <> 0
+                then
+                  result := PResSimulT.TabResult[59, j] / PResSimulT.TabResult[73, j]
+                else
+                  result := 0 ;
+              else
+                result := 0 ;
+            end ;
+          7 : // Poids de prot�ines
+            result := PResSimulT.TabResult[62, j] ;
+          8 : // D�p�t de prot�ines
+            result := PResSimulT.TabResult[63, j] ;
+          9 : // Poids de lipides
+            result := PResSimulT.TabResult[65, j] ;
+          10 : // D�p�t de lipides
+            result := PResSimulT.TabResult[66, j] ;
+          11 : // Epaisseur de lard
+            result := PResSimulT.TabResult[67, j] ;
+          12 : // Variation de P2
+            result := PResSimulT.TabResult[68, j] ;
+          13 : // Production laiti�re
+            result := PResSimulT.TabResult[69, j] ;
+          else
+            result := 0 ;
+        end ;
+      1 : // Affichage global
+      begin
+        // Diviseur
+        if (CBPerf3Global.ItemIndex in [0, 1, 6, 7]) and (CBPerf4.ItemIndex = 1)
+        then // Dur�e et conversion kg -> g
+          d := PresSimulT.NbJSim / 1000
+        else
+          if (CBPerf3Global.ItemIndex in [3, 8, 9]) and (CBPerf4.ItemIndex mod 2 = 1)
+          then // Dur�e
+            d := PresSimulT.NbJSim
+          else
+            d := 1 ;
+        v := 0 ;
+        case CBPerf3Global.ItemIndex of
+          0 : // Gain de poids total
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + PResSimulT.TabResult[59, h] ;
+          1 : // Gain de poids net
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + PResSimulT.TabResult[61, h] ;
+          2 : // Dur�e
+            v := PresSimulT.NbJSim ;
+          3 : // Aliment consomm�
+            for h := 1 to PresSimulT.NbJSim do
+              case CBPerf4.ItemIndex of
+                0, 1 : // Aliment
+                  v := v + PResSimulT.TabResult[11, h] ;
+                2, 3 : // MS
+                  v := v + PResSimulT.TabResult[12, h] ;
+                4, 5 : // ED
+                  v := v + PResSimulT.TabResult[71, h] ;
+                6, 7 : // EM
+                  v := v + PResSimulT.TabResult[72, h] ;
+                8, 9 : // EN
+                  v := v + PResSimulT.TabResult[73, h] ;
+              end ;
+          4 : // Indice de consommation
+          begin
+            conso := 0 ;
+            for h := 1 to PresSimulT.NbJSim do
+              case CBPerf4.ItemIndex of
+                0 : // Aliment
+                  conso := conso + PResSimulT.TabResult[11, h] ;
+                1 : // MS
+                  conso := conso + PResSimulT.TabResult[12, h] ;
+                2 : // ED
+                  conso := conso + PResSimulT.TabResult[71, h] ;
+                3 : // EM
+                  conso := conso + PResSimulT.TabResult[72, h] ;
+                4 : // EN
+                  conso := conso + PResSimulT.TabResult[73, h] ;
+              end ;
+            gain := 0 ;
+            for h := 1 to PresSimulT.NbJSim do
+              gain := gain + PResSimulT.TabResult[59, h] ;
+            if gain <> 0
+            then
+              v := conso / gain ;
+          end ;
+          5 : // Efficacit� alimentaire
+          begin
+            gain := 0 ;
+            for h := 1 to PresSimulT.NbJSim do
+              gain := gain + PResSimulT.TabResult[59, h] ;
+            conso := 0 ;
+            for h := 1 to PresSimulT.NbJSim do
+              case CBPerf4.ItemIndex of
+                0 : // Aliment
+                  conso := conso + PResSimulT.TabResult[11, h] ;
+                1 : // MS
+                  conso := conso + PResSimulT.TabResult[12, h] ;
+                2 : // ED
+                  conso := conso + PResSimulT.TabResult[71, h] ;
+                3 : // EM
+                  conso := conso + PResSimulT.TabResult[72, h] ;
+                4 : // EN
+                  conso := conso + PResSimulT.TabResult[73, h] ;
+              end ;
+            if conso <> 0
+            then
+              v := gain / conso ;
+          end ;
+          6 : // D�p�t de prot�ines
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + PResSimulT.TabResult[63, h] / 1000 ;
+          7 : // D�p�t de lipides
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + PResSimulT.TabResult[66, h] / 1000 ;
+          8 : // Variation de P2
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + PResSimulT.TabResult[68, h] ;
+          9 : // Production laiti�re
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + PResSimulT.TabResult[69, h] ;
+        end ;
+        result := v / d ;
+      end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphPerf
+begin
+  ResetGraph ;
+  Graph.Legend.Inverted := FALSE ;
+  Graph.Title.Text.Add (Format ('%s : %s', [TabPerf.Caption, CBPerf1.Text])) ;
+  case CBPerf1.ItemIndex of
+    0 : // Affichage dynamique
+    begin
+      Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBPerf3.Text, CBPerf4.Text]) ;
+      Graph.BottomAxis.Title.Caption := CBPerf2.Text ;
+      // Affichage des lignes
+      for k := 1 to 5 do
+        if TabSimulT[k].Ok
+        then
+        begin
+          LinePerf[k].Active := TRUE ;
+          LinePerf[k].Clear ;
+          PResSimulT := TabSimulT[k].Result ;
+          for j := 1 to PResSimulT.NbJSim do
+            LinePerf[k].AddXY (PerfX, PerfY, '', clTeeColor) ;
+        end ;
+    end ;
+    1 : // Affichage global
+    begin
+      Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBPerf3Global.Text, CBPerf4.Text]) ;
+      Graph.Legend.Visible := FALSE ;
+      case FSimulT.PC.ActivePageIndex of
+        1 : // Comparaison
+          Graph.BottomAxis.Title.Caption := 'Simulation' ;
+        2 : // Sensibilit�
+          Graph.BottomAxis.Title.Caption := 'Variation' ;
+      end ;
+      // Affichage de la barre
+      BarPerf.Active := TRUE ;
+      BarPerf.Clear ;
+      for k := 1 to 5 do
+        if TabSimulT[k].Ok
+        then
+        begin
+          PResSimulT := TabSimulT[k].Result ;
+          case FSimulT.PC.ActivePageIndex of
+            1 : // Comparaison
+              BarPerf.AddBar (PerfY, Format ('%d', [k]), clTeeColor) ;
+            2 : // Sensibilit�
+              BarPerf.AddBar (PerfY, Format ('%1.0f %%', [TabSimulT[k].Variation * 100]), clTeeColor) ;
+          end ;
+        end ;
+    end ;
+  end ;
+  AjustEchelle (Graph) ;
+  with BarPerf do
+    ValueFormat := AjustFormat (AjustPas (MaxYValue - MinYValue) / 10) ;
+end ;
+
+procedure TFCompSimulT.CBPerf1Change (Sender : TObject) ;
+begin
+  case CBPerf1.ItemIndex of
+    0 : // Affichage dynamique
+    begin
+      CBPerf2.Visible := TRUE ;
+      CBPerf3.Visible := TRUE ;
+      CBPerf3Global.Visible := FALSE ;
+//      CBPerf4.Visible := FALSE ;
+    end ;
+    1 : // Affichage global
+    begin
+      CBPerf2.Visible := FALSE ;
+      CBPerf3.Visible := FALSE ;
+      CBPerf3Global.Visible := TRUE ;
+//      CBPerf4.Visible := TRUE ;
+    end ;
+  end ;
+  CBPerf3Change (nil) ;
+end ;
+
+procedure TFCompSimulT.CBPerf2Change (Sender : TObject) ;
+begin
+  AffGraphPerf ;
+end ;
+
+procedure TFCompSimulT.CBPerf3Change (Sender : TObject) ;
+begin
+  CBPerf4.Items.Clear ;
+  case CBPerf1.ItemIndex of
+    0 : // Affichage dynamique
+      case CBPerf3.ItemIndex of
+        0, 2 : // Poids vif (total ou net)
+          CBPerf4.Items.Add (StrKg) ;
+        1, 3 : // Gain de poids (total ou net)
+          CBPerf4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+        4 : // Aliment consomm�
+        begin
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrKg, StrAlimentUnit, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrKg, StrMS, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrED, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrEM, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrEN, StrJ])) ;
+        end ;
+        5 : // Indice de consommation
+        begin
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrAlimentUnit, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrMS, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrED, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrEM, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrEN, StrKg, StrGMQUnit])) ;
+        end ;
+        6 : // Efficacit� alimentaire
+        begin
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrKg, StrAlimentUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrKg, StrMS])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrED])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrEM])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrEN])) ;
+        end ;
+        7, 9 : // Poids de prot�ines ou de lipides
+          CBPerf4.Items.Add (StrKg) ;
+        8, 10 : // D�p�t de prot�ines ou de lipides
+          CBPerf4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+        11 : // Epaisseur de lard
+          CBPerf4.Items.Add (StrMm) ;
+        12 : // Variation de P2
+          CBPerf4.Items.Add (Format ('%s/%s', [StrMm, StrJ])) ;
+        13 : // Production laiti�re
+          CBPerf4.Items.Add (Format ('%s/%s', [StrKg, StrJ])) ;
+      end ;
+    1 : // Affichage global
+      case CBPerf3Global.ItemIndex of
+        0, 1 : // Gain de poids (total ou net)
+        begin
+          CBPerf4.Items.Add (StrKg) ;
+          CBPerf4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+        end ;
+        2 : // Dur�e
+          CBPerf4.Items.Add (StrJ) ;
+        3 : // Aliment consomm�
+        begin
+          CBPerf4.Items.Add (Format ('%s %s', [StrKg, StrAlimentUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrKg, StrAlimentUnit, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s', [StrKg, StrMS])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrKg, StrMS, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s', [StrMJ, StrED])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrED, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s', [StrMJ, StrEM])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrEM, StrJ])) ;
+          CBPerf4.Items.Add (Format ('%s %s', [StrMJ, StrEN])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s', [StrMJ, StrEN, StrJ])) ;
+        end ;
+        4 : // Indice de consommation
+        begin
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrAlimentUnit, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrMS, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrED, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrEM, StrKg, StrGMQUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrMJ, StrEN, StrKg, StrGMQUnit])) ;
+        end ;
+        5 : // Efficacit� alimentaire
+        begin
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrKg, StrAlimentUnit])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrKg, StrMS])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrED])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrEM])) ;
+          CBPerf4.Items.Add (Format ('%s %s/%s %s', [StrKg, StrGMQUnit, StrMJ, StrEN])) ;
+        end ;
+        6, 7 : // D�p�t de prot�ines ou de lipides
+        begin
+          CBPerf4.Items.Add (StrKg) ;
+          CBPerf4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+        end ;
+        8 : // Variation de P2
+        begin
+          CBPerf4.Items.Add (StrMm) ;
+          CBPerf4.Items.Add (Format ('%s/%s', [StrMm, StrJ])) ;
+        end ;
+        9 : // Production laiti�re
+        begin
+          CBPerf4.Items.Add (StrKg) ;
+          CBPerf4.Items.Add (Format ('%s/%s', [StrKg, StrJ])) ;
+        end ;
+      end ;
+  end ;
+  CBPerf4.ItemIndex := 0 ;
+  AffGraphPerf ;
+end ;
+
+procedure TFCompSimulT.CBPerf4Change (Sender : TObject) ;
+begin
+  AffGraphPerf ;
+end ;
+
+/////////////////
+//   Aliment   //
+/////////////////
+procedure TFCompSimulT.InitAli ;
+var
+  i, j, k : integer ;
+  nom : string ;
+begin
+  // ListAli : liste des aliments utilis�s
+  ListAli := TStringList.Create ;
+  for k := 1 to 5 do // 5 simulations
+    if TabSimulT[k].Ok
+    then
+      for i := 1 to 2 do // 2 aliments
+        for j := 1 to TabSimulT[k].Result.NbJSim do
+          if TabSimulT[k].Result.TabResult[8 + i, j] > 0
+          then
+          begin
+            nom := FindNomAliment (Trunc (TabSimulT[k].Result.TabResult[6 + i, j])) ;
+            if ListAli.IndexOf (nom) = -1
+            then
+              ListAli.Add (nom) ;
+          end ;
+  // BarAli : s�ries (barres) graphiques
+  SetLength (BarAli, ListAli.Count) ;
+  for i := 0 to ListAli.Count - 1 do
+  begin
+    BarAli[i] := TBarSeries.Create (Graph) ;
+    BarAli[i].ParentChart := Graph ;
+    BarAli[i].Title := ListAli[i] ;
+    BarAli[i].BarPen.Color := BarAli[i].SeriesColor ;
+    BarAli[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarAli[i]) ;
+  end ;
+  // ListMat : liste des mati�res premi�res utilis�es
+  CompositionComplete := TRUE ;
+  ListMat := TStringList.Create ;
+  for i := 0 to ListAli.Count - 1 do
+  begin
+    PAliment := ListAliment[FindIdxAliment (ListAli[i])] ;
+    if PAliment.MP.NbMat > 0
+    then
+      for j := 0 to PAliment.MP.NbMat - 1 do
+      begin
+        nom := FindNomMatiere (PAliment.MP.NumMat[j]) ;
+        if ListMat.IndexOf (nom) = -1
+        then
+          ListMat.Add (nom) ;
+      end
+    else
+      CompositionComplete := FALSE ;
+  end ;
+  CBAli1.Visible := ConfAffMP and CompositionComplete ;
+  CBAli5.Items.Assign(ListMat);
+  CBAli5.ItemIndex := 0 ;
+  // BarMat : s�rie (barre) graphique
+  BarMat := TBarSeries.Create (Graph) ;
+  BarMat.ParentChart := Graph ;
+  BarMat.SeriesColor := clTeal ;
+  BarMat.BarPen.Color := BarMat.SeriesColor ;
+  BarMat.Marks.ArrowLength := 0 ;
+  BarMat.Marks.Arrow.Visible := FALSE ;
+  BarMat.Marks.Brush.Style := bsClear ;
+  BarMat.Marks.Frame.Visible := FALSE ;
+  BarMat.Marks.Font.Style := [fsBold] ;
+  BarMat.Marks.Style := smsValue ;
+  Graph.AddSeries (BarMat) ;
+end ;
+
+procedure TFCompSimulT.AffGraphAli ;
+var
+  i, k : integer ;
+  y : double ;
+  s : string ;
+
+  // Ordonn�e (Aliments)
+  function AliY : double ;
+  var
+    h : integer ;
+    v, d : double ;
+  begin
+    // Diviseur
+    case CBAli3.ItemIndex of
+      0 : // Quantit�
+        case CBAli4.ItemIndex of
+          1 : // Dur�e
+            d := PresSimulT.NbJSim ;
+          else
+            d := 1 ;
+        end ;
+      1 : // Co�t
+        case CBAli4.ItemIndex of
+          1 : // Dur�e
+            d := PresSimulT.NbJSim ;
+          2 : // Aliment ing�r�
+          begin
+            d := 0 ;
+            for h := 1 to PresSimulT.NbJSim do
+              d := d + PresSimulT.TabResult[11, h] ;
+          end ;
+          else
+            d := 1 ;
+        end ;
+      else
+        d := 1 ;
+    end ;
+    v := 0 ;
+    for h := 1 to PresSimulT.NbJSim do
+    begin
+      // Aliment 1
+      if (PResSimulT.TabResult[7, h] <> -1) and (FindNomAliment (Trunc (PresSimulT.TabResult[7, h])) = ListAli[i])
+      then
+        v := v + (PresSimulT.TabResult[11, h] * PresSimulT.TabResult[9, h] / 100) ;
+      // Aliment 2
+      if (PResSimulT.TabResult[8, h] <> -1) and (FindNomAliment (Trunc (PresSimulT.TabResult[8, h])) = ListAli[i])
+      then
+        v := v + (PresSimulT.TabResult[11, h] * PresSimulT.TabResult[10, h] / 100) ;
+    end ;
+    if CBAli3.ItemIndex = 1
+    then // Co�t
+    begin
+      PAliment := ListAliment[FindIdxAliment (ListAli[i])] ;
+      v := v * PAliment.Prix / 1000 ;
+    end ;
+    result := v / d ;
+  end ;
+
+  // Ordonn�es (Mati�res premi�res)
+  function MatY : double ;
+  var
+    g, h : integer ;
+    v, d : double ;
+  begin
+    // Diviseur
+    if CBAli4.ItemIndex = 1
+    then // Dur�e
+      d := PresSimulT.NbJSim
+    else
+      d := 1 ;
+    v := 0 ;
+    for h := 1 to PResSimulT.NbJSim do
+    begin
+      if PResSimulT.TabResult[7, h] <> -1
+      then // Aliment 1
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Trunc (PResSimulT.TabResult[7, h])))] ;
+        for g := 0 to PAliment.MP.NbMat - 1 do
+          if FindNomMatiere (PAliment.MP.NumMat[g]) = CBAli5.Text
+          then
+            v := v + (PAliment.MP.Qte[g] * PResSimulT.TabResult[11, h] * PResSimulT.TabResult[9, h] / 100) ;
+      end ;
+      if PResSimulT.TabResult[8, h] <> -1
+      then // Aliment 2
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Trunc (PResSimulT.TabResult[8, h])))] ;
+        for g := 0 to PAliment.MP.NbMat - 1 do
+          if FindNomMatiere (PAliment.MP.NumMat[g]) = CBAli5.Text
+          then
+            v := v + (PAliment.MP.Qte[g] * PResSimulT.TabResult[11, h] * PResSimulT.TabResult[10, h] / 100) ;
+      end ;
+    end ;
+    v := v / 1000 ; // Conversion g -> kg
+    result := v / d ;
+  end ;
+
+// AffGraphAli
+begin
+  ResetGraph ;
+  if CBAli1.ItemIndex = 0
+  then // Aliments
+  begin
+    Graph.Legend.Inverted := TRUE ;
+    Graph.Title.Text.Add (CBAli1.Text) ;
+  end
+  else // Mati�res premi�res
+  begin
+    Graph.Legend.Visible := FALSE ;
+    Graph.Title.Text.Add (Format ('%s : %s', [CBAli1.Text, CBAli5.Text])) ;
+  end ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBAli3.Text, CBAli4.Text]) ;
+  case FSimulT.PC.ActivePageIndex of
+    1 : // Comparaison
+      Graph.BottomAxis.Title.Caption := 'Simulation' ;
+    2 : // Sensibilit�
+      Graph.BottomAxis.Title.Caption := 'Variation' ;
+  end ;
+  // Affichage des barres
+  if CBAli1.ItemIndex = 0
+  then // Aliments
+  begin
+    for i := 0 to ListAli.Count - 1 do
+      BarAli[i].Active := TRUE ;
+    for i := 0 to ListAli.Count - 1 do
+      BarAli[i].Clear ;
+    if CBAli4.ItemIndex = 2
+    then
+      for i := 0 to ListAli.Count - 1 do
+        BarAli[i].MultiBar := mbStacked100
+    else
+      for i := 0 to ListAli.Count - 1 do
+        BarAli[i].MultiBar := mbStacked ;
+    for i := 0 to ListAli.Count - 1 do
+      for k := 1 to 5 do
+        if TabSimulT[k].Ok
+        then
+        begin
+          PResSimulT := TabSimulT[k].Result ;
+          y := AliY ;
+          case FSimulT.PC.ActivePageIndex of
+            1 : // Comparaison
+              s := Format ('%d', [k]) ;
+            2 : // Sensibilit�
+              s := Format ('%1.0f %%', [TabSimulT[k].Variation * 100]) ;
+          end ;
+          if y > 0
+          then
+            BarAli[i].AddBar (y, s, clTeeColor)
+          else
+            BarAli[i].AddNull (s) ;
+        end ;
+  end
+  else // Mati�res premi�res
+  begin
+    BarMat.Active := TRUE ;
+    BarMat.Clear ;
+    for k := 1 to 5 do
+      if TabSimulT[k].Ok
+      then
+      begin
+        PResSimulT := TabSimulT[k].Result ;
+        y := MatY ;
+        case FSimulT.PC.ActivePageIndex of
+          1 : // Comparaison
+            s := Format ('%d', [k]) ;
+          2 : // Sensibilit�
+            s := Format ('%1.0f %%', [TabSimulT[k].Variation * 100]) ;
+        end ;
+        if y > 0
+        then
+          BarMat.AddBar (y, s, clTeeColor)
+        else
+          BarMat.AddNull (s) ;
+      end ;
+  end ;
+  AjustEchelle (Graph) ;
+  BarMat.ValueFormat := Format ('%s %s', [AjustFormat (Graph.LeftAxis.Increment), CBAli4.Text]) ;
+end ;
+
+procedure TFCompSimulT.CBAli1Change(Sender: TObject);
+begin
+  CBAli3.Enabled := CBAli1.ItemIndex = 0 ; // Aliments
+  CBAli5.Visible := CBAli1.ItemIndex = 1 ; // Mati�res premi�res
+  if CBAli1.ItemIndex = 1
+  then // Mati�res premi�res
+    CBAli3.ItemIndex := 0 ;
+  CBAli3Change (nil) ;
+end;
+
+procedure TFCompSimulT.CBAli3Change(Sender: TObject);
+begin
+  CBAli4.Items.Clear ;
+  case CBAli3.ItemIndex of
+    0 : // Quantit�
+    begin
+      CBAli4.Items.Add (StrKg) ;
+      CBAli4.Items.Add (Format ('%s/%s', [StrKg, StrJ])) ;
+      if CBAli1.ItemIndex = 0
+      then // Aliments
+        CBAli4.Items.Add ('%') ;
+    end ;
+    1 : // Co�t
+    begin
+      CBAli4.Items.Add (CurrencySign) ;
+      CBAli4.Items.Add (Format ('%s/%s', [CurrencySign, StrJ])) ;
+      CBAli4.Items.Add ('%') ;
+    end ;
+  end ;
+  CBAli4.ItemIndex := 0 ;
+  AffGraphAli ;
+end;
+
+procedure TFCompSimulT.CBAli4Change (Sender : TObject) ;
+begin
+  AffGraphAli ;
+end ;
+
+procedure TFCompSimulT.CBAli5Change(Sender: TObject);
+begin
+  AffGraphAli ;
+end;
+
+///////////////////////
+//   Acides amin�s   //
+///////////////////////
+procedure TFCompSimulT.InitAA ;
+const
+  TabColor1 : array[0..10] of TColor
+    = (clTeal, clAqua, clOlive, clPurple, clSilver, clPink, clWhite, clSkyBlue,
+      clGray, clRed, clGreen) ;
+  TabColor2 : array[1..5] of TColor
+    = (clRed, clGreen, clYellow, clBlue, clFuchsia) ;
+var
+  i, k : integer ;
+begin
+  // ListAA : liste pour les acides amin�s
+  ListAA := TStringList.Create ;
+  ListAA.Assign (LBAA.Items) ;
+  // BarAA : s�ries (barres) graphiques
+  SetLength (BarAA, ListAA.Count) ;
+  for i := 0 to ListAA.Count - 1 do
+  begin
+    BarAA[i] := TBarSeries.Create (Graph) ;
+    BarAA[i].ParentChart := Graph ;
+    BarAA[i].Title := ListAA[i] ;
+    BarAA[i].SeriesColor := TabColor1[i] ;
+    BarAA[i].BarPen.Color := BarAA[i].SeriesColor ;
+    BarAA[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarAA[i]) ;
+  end ;
+  // LineAA : s�ries (lignes) graphiques
+  for k := 1 to 5 do
+    if TabSimulT[k].Ok
+    then
+    begin
+      LineAA[k] := TLineSeries.Create (Graph) ;
+      LineAA[k].ParentChart := Graph ;
+      case FSimulT.PC.ActivePageIndex of
+        1 : // Comparaison
+          LineAA[k].Title := Format ('Simulation %d', [k]) ;
+        2 : // Sensibilit�
+          LineAA[k].Title := Format ('%1.0f %%', [TabSimulT[k].Variation * 100]) ;
+      end ;
+      LineAA[k].SeriesColor := TabColor2[k] ;
+      LineAA[k].LinePen.Color := LineAA[k].SeriesColor ;
+      LineAA[k].LinePen.Width := 2 ;
+      Graph.AddSeries (LineAA[k]) ;
+    end ;
+end ;
+
+procedure TFCompSimulT.AffGraphAA ;
+var
+  i, j, k : integer ;
+  y : double ;
+  s : string ;
+
+  // Abscisse
+  function AAX : double ;
+  begin
+    case CBAA2.ItemIndex of
+      0 : // Age
+        result := PresSimulT.TabResult[1, j] ;
+      1 : // Dur�e
+        result := j - 1 ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function AAY : double ;
+  var
+    h : integer ;
+    v, d, Lys, ProtId, ProdLait, PDMax, PVV : double ;
+
+    function Ingere(AA, Jour: integer): double;
+    begin
+      result := PresSimulT.TabResult[AA + 14, Jour];
+      if (AA = 3) or (AA = 7)
+      then // met + cys, phe + tyr
+        result := result + PresSimulT.TabResult[AA + 13, Jour];
+    end;
+
+    function Digestible(AA, Jour: integer): double;
+    begin
+      result := PresSimulT.TabResult[AA + 27, Jour];
+      if (AA = 3) or (AA = 7)
+      then // met + cys, phe + tyr
+        result := result + PresSimulT.TabResult[AA + 26, Jour];
+    end;
+
+    function Endogene(AA, Jour: integer): double;
+    var
+      IngereSec: double;
+    begin
+      IngereSec := PResSimulT.TabResult[12, Jour] ;
+      result := IngereSec * AAendogene[AA] ;
+      if (AA = 3) or (AA = 7)
+      then // met + cys, phe + tyr
+        result := result + IngereSec * AAendogene[AA - 1] ;
+    end;
+
+    function Entretien(AA, Jour: integer): double;
+    var
+      PVTot, ProfilEnt: double;
+    begin
+      PVTot := PresSimulT.TabResult[58, Jour];
+      ProfilEnt := AAm75[AA];
+      if (AA = 3) or (AA = 7)
+      then // met + cys, phe + tyr
+        ProfilEnt := ProfilEnt + AAm75[AA - 1];
+      result := ProfilEnt * Power(PVTot, 0.75);
+    end;
+
+    function Portee(AA, Jour: integer): double;
+    var
+      PDTot, PDNet, ProfilRet : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 0
+      then // Gestation
+      begin
+        PDTot := PresSimulT.TabResult[64, Jour] ;
+        PDNet := PresSimulT.TabResult[63, Jour] ;
+        if AA = 0
+        then // Azote
+          result := PDTot - PDNet
+        else
+        begin
+          ProfilRet := ProtIdRet[AA] ;
+          if (AA = 3) or (AA = 7)
+          then // met + cys, phe + tyr
+            ProfilRet := ProfilRet + ProtIdRet[AA - 1] ;
+          result := (PDTot - PDNet) * 0.060 * ProfilRet / 100 ;
+        end ;
+      end
+      else // Lactation ou ISSF
+        result := 0 ;
+    end;
+
+    function DepotPot(AA, Jour: integer): double;
+    var
+      PDPot, PDTot, PDNet, ProfilRet : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := 0
+      else // Gestation ou ISSF
+      begin
+        PDPot := PresSimulT.TabResult[40, Jour] ;
+        PDTot := PresSimulT.TabResult[64, Jour] ;
+        PDNet := PresSimulT.TabResult[63, Jour] ;
+        if AA = 0
+        then // Azote
+          result := PDPot - (PDTot - PDNet)
+        else
+        begin
+          ProfilRet := ProtIdRet[AA] ;
+          if (AA = 3) or (AA = 7)
+          then // met + cys, phe + tyr
+            ProfilRet := ProfilRet + ProtIdRet[AA - 1] ;
+          result := (PDPot - (PDTot - PDNet)) * 0.070 * ProfilRet / 100 ;
+        end ;
+      end ;
+    end;
+
+    function Depot(AA, Jour: integer): double;
+    var
+      PDPot, PDTot : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := 0
+      else // Gestation ou ISSF
+      begin
+        PDPot := PresSimulT.TabResult[40, Jour] ;
+        PDTot := PresSimulT.TabResult[64, Jour] ;
+        result := (Portee(AA, Jour) + DepotPot(AA, Jour)) / PDPot * PDTot - Portee(AA, Jour) ;
+      end ;
+    end;
+
+    function Cumul(AA, Jour: integer): double;
+    var
+      ProtLait, ProfilLact, ProfilGest : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        if AA > 1
+        then
+        begin
+          ProfilLact := ProtIdLact[AA] ;
+          if (AA = 3) or (AA = 7)
+          then // met + cys, phe + tyr
+            ProfilLact := ProfilLact + ProtIdLact[AA - 1] ;
+          result := Cumul(1, Jour) * ProfilLact / 100 ;
+        end
+        else
+        begin
+          ProtLait := PresSimulT.TabResult[69, Jour] * 50 ;
+          if AA = 0
+          then // Azote
+            result := Endogene(0, Jour) + Entretien(0, Jour) + ProtLait / kAA[0]
+          else // Lysine
+            result := (14.2 + 0.629 * ProtLait / 6.28) / 1.335 ;
+        end
+      else // Gestation ou ISSF
+        if AA = 0
+        then // Azote
+          result := Endogene(0, Jour) + Entretien(0, Jour) + (Portee(0, Jour) + Depot(0, Jour)) / kAA[0]
+        else
+          if AA = 12
+          then // Arginine
+            result := Endogene(12, Jour) + Entretien(12, Jour) + Portee(12, Jour) + Depot(12, Jour) 
+          else
+          begin
+            ProfilGest := ProtIdGest[AA] ;
+            if (AA = 3) or (AA = 7)
+            then // met + cys, phe + tyr
+              ProfilGest := ProfilGest + ProtIdGest[AA - 1] ;
+            result := (Endogene(1, Jour) + Entretien(1, Jour) + (Portee(1, Jour) + Depot(1, Jour)) / KLysGest) * ProfilGest / 100 ;
+          end ;
+    end;
+
+    function CumulPot(AA, Jour: integer): double;
+    var
+      ProfilGest : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := 0
+      else // Gestation ou ISSF
+        if AA = 0
+        then // Azote
+          result := Endogene(0, Jour) + Entretien(0, Jour) + (Portee(0, Jour) + DepotPot(0, Jour)) / kAA[0]
+        else
+          if AA = 12
+          then // Arginine
+            result := Endogene(12, Jour) + Entretien(12, Jour) + Portee(12, Jour) + DepotPot(12, Jour)
+          else
+          begin
+            ProfilGest := ProtIdGest[AA] ;
+            if (AA = 3) or (AA = 7)
+            then // met + cys, phe + tyr
+              ProfilGest := ProfilGest + ProtIdGest[AA - 1] ;
+            result := (Endogene(1, Jour) + Entretien(1, Jour) + (Portee(1, Jour) + DepotPot(1, Jour)) / KLysGest) * ProfilGest / 100 ;
+          end ;
+    end;
+
+    function Mobilisation(AA, Jour: integer): double;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := Max(Cumul(AA, Jour) - Digestible(AA, Jour), 0)
+      else // Gestation ou ISSF
+        result := 0 ;
+    end;
+
+    // AA du lait provenant de l'aliment
+    function Lait(AA, Jour: integer): double;
+    var
+      ProtLait, ProfilLait, ExportLait, BesoinLait, CoeffLait : double ;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+      begin
+        ProtLait := PresSimulT.TabResult[69, Jour] * 50 ;
+        BesoinLait := Cumul(AA, Jour) - Mobilisation(AA, Jour) - Endogene(AA, Jour) - Entretien(AA, Jour) ;
+        CoeffLait := Max ((BesoinLait - Mobilisation(AA, Jour)) / BesoinLait, 0) ;
+        if AA = 0
+        then // Azote
+          ExportLait := ProtLait
+        else
+        begin
+          ProfilLait := ProtIdLait[AA] ;
+          if (AA = 3) or (AA = 7)
+          then // met + cys, phe + tyr
+            ProfilLait := ProfilLait + ProtIdLait[AA - 1] ;
+          ExportLait := ProtLait * 0.075 * ProfilLait / 100 ;
+        end ;
+        result := CoeffLait * ExportLait ;
+      end
+      else // Gestation ou ISSF
+        result := 0 ;
+    end;
+
+    function Deficit(AA, Jour: integer): double;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := 0
+      else // Gestation ou ISSF
+        result := Max(CumulPot(AA, Jour) - Digestible(AA, Jour), 0) ;
+    end;
+
+    function Exces(AA, Jour: integer): double;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := Max(Digestible(AA, Jour) - Cumul(AA, Jour), 0)
+      else // Gestation ou ISSF
+        result := Max(Digestible(AA, Jour) - CumulPot(AA, Jour), 0) ;
+    end;
+
+    function Desequilibre(AA, Jour: integer): double;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+        result := 0
+      else // Gestation ou ISSF
+        result := Max(CumulPot(AA, Jour) - Cumul(AA, Jour) - Deficit(AA, Jour), 0) ;
+    end;
+
+    function Oxydation(AA, Jour: integer): double;
+    begin
+      if PresSimulT.TabResult[3, Jour] = 1
+      then // Lactation
+      begin
+        result := Cumul(AA, Jour) - Mobilisation(AA, Jour) - Endogene(AA, Jour) - Entretien(AA, Jour) - Lait(AA, Jour)
+      end
+      else // Gestation ou ISSF
+        result := Max(Cumul(AA, Jour) - Entretien(AA, Jour) - Endogene(AA, Jour) - Portee(AA, Jour) - Depot(AA, Jour), 0) ;
+    end;
+
+  begin
+    case CBAA1.ItemIndex of
+      0 : // R�partition
+      begin
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1 : // Dur�e
+            d := PresSimulT.NbJSim ;
+          2 : // Aliment ing�r�
+          begin
+            d := 0 ;
+            for h := 1 to PresSimulT.NbJSim do
+              d := d + PresSimulT.TabResult[11, h] ;
+          end ;
+          else
+            d := 1 ;
+        end ;
+        v := 0 ;
+        case i of
+          0 : // Indigestible
+            if CBAA5A.ItemIndex = 2
+            then // Total
+              for h := 1 to PresSimulT.NbJSim do
+                v := v + Ingere(CBAA3.ItemIndex, h) - Digestible(CBAA3.ItemIndex, h) ;
+          1 : // Endog�ne basal
+            if CBAA5A.ItemIndex <> 1
+            then // Total ou Digestible standardis�
+              for h := 1 to PresSimulT.NbJSim do
+                v := v + Endogene(CBAA3.ItemIndex, h) ;
+          2 : // Entretien
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Entretien(CBAA3.ItemIndex, h) ;
+          3 : // Port�e
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Portee(CBAA3.ItemIndex, h) ;
+          4 : // Oxydation minimale
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Oxydation(CBAA3.ItemIndex, h) ;
+          5 : // D�p�t
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Depot(CBAA3.ItemIndex, h) ;
+          6 : // Lait
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Lait(CBAA3.ItemIndex, h) ;
+          7 : // Mobilisation
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Mobilisation(CBAA3.ItemIndex, h) ;
+          8 : // D�s�quilibre
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Desequilibre(CBAA3.ItemIndex, h) ;
+          9 : // D�ficit
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + DEficit(CBAA3.ItemIndex, h) ;
+          10 : // Exc�s
+            for h := 1 to PresSimulT.NbJSim do
+              v := v + Exces(CBAA3.ItemIndex, h) ;
+        end ;
+        result := v / d ;
+      end ;
+      1 : // Apport
+      begin
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1 : // Lysine
+          begin
+            case CBAA5A.ItemIndex of
+              0 : // Standardis�
+                d := Digestible(1, j) ;
+              1 : // Apparent
+                d := Digestible(1, j) - Endogene(1, j) ;
+              2 : // Total
+                d := Ingere(1, j) ;
+              else
+                d := 1 ;
+            end ;
+            d := d / 100 ;
+          end ;
+          2 : // ED
+            d := PResSimulT.TabResult[71, j] ;
+          3 : // EM
+            d := PResSimulT.TabResult[72, j] ;
+          4 : // EN
+            d := PResSimulT.TabResult[73, j] ;
+          5 : // Aliment ing�r�
+            d := PResSimulT.TabResult[11, j] ;
+          else
+            d := 1 ;
+        end ;
+        case CBAA5A.ItemIndex of
+          0 : // Standardis�
+            v := Digestible(CBAA3.ItemIndex, j) ;
+          1 : // Apparent
+            v := Digestible(CBAA3.ItemIndex, j) - Endogene(CBAA3.ItemIndex, j) ;
+          2 : // Total
+            v := Ingere(CBAA3.ItemIndex, j) ;
+          else
+            v := 0 ;
+        end ;
+        result := v / d ;
+      end ;
+      2 : // Besoin
+      begin
+        PDmax := PResSimulT.TabResult[40, j] ;
+        PVV := PResSimulT.TabResult[58, j] * PV2PVV ;
+        if PResSimulT.TabResult[3, j] = 1
+        then // Lactation
+        begin
+          ProdLait := PResSimulT.TabResult[69, j] ;
+          Lys := (14.2 + 0.629 * ProdLait / 0.1325) / 1.335 ;
+        end
+        else // Gestation ou ISSF
+          Lys := (PDmax * 0.065 + 0.036 * Power (PVV, 0.75)) / KLysGest ;
+        // Diviseur
+        case CBAA4.ItemIndex of
+          1 : // Lysine
+          begin
+            case CBAA5B.ItemIndex of
+              0 : // Standardis�
+                d := Lys ;
+              1 : // Apparent
+                d := Lys - Endogene(1, j) ;
+              else
+                d := 1 ;
+            end ;
+            d := d / 100 ;
+          end ;
+          2 : // ED
+            d := PResSimulT.TabResult[71, j] ;
+          3 : // EM
+            d := PResSimulT.TabResult[72, j] ;
+          4 : // EN
+            d := PResSimulT.TabResult[73, j] ;
+          5 : // Aliment ing�r�
+            d := PResSimulT.TabResult[11, j] ;
+          else
+            d := 1 ;
+        end ;
+        if PResSimulT.TabResult[3, j] = 1
+        then // Lactation
+        begin
+          ProtId := ProtIdLact[CBAA3.ItemIndex] ;
+          if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+          then // met + cys, phe + tyr
+            ProtId := ProtId + ProtIdLact[CBAA3.ItemIndex - 1] ;
+        end
+        else // Gestation ou ISSF
+        begin
+          ProtId := ProtIdGest[CBAA3.ItemIndex] ;
+          if (CBAA3.ItemIndex = 3) or (CBAA3.ItemIndex = 7)
+          then // met + cys, phe + tyr
+            ProtId := ProtId + ProtIdGest[CBAA3.ItemIndex - 1] ;
+        end ;
+        case CBAA5B.ItemIndex of
+          0 : // Standardis�
+            if CBAA3.ItemIndex = 0
+            then // Mati�res azot�es
+              v := (PDmax + AAm75[0] * Power (PVV, 0.75) + Endogene(0, j)) / kAA[0]
+            else
+              v := Lys * ProtId / 100 ;
+          1 : // Apparent
+            if CBAA3.ItemIndex = 0
+            then // Mati�res azot�es
+              v := (PDmax + AAm75[0] * Power (PVV, 0.75)) / kAA[0]
+            else
+              v := Lys * ProtId / 100 - Endogene(CBAA3.ItemIndex, j) ;
+          else
+            v := 0 ;
+        end ;
+        result := v / d ;
+      end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphAA
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (Format ('%s : %s', [CBAA3.Text, CBAA1.Text])) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBAA3.Text, CBAA4.Text]) ;
+  case CBAA1.ItemIndex of
+    0 : // R�partition
+    begin
+      Graph.Legend.Inverted := TRUE ;
+      Graph.SubTitle.Text.Add (CBAA5A.Text) ;
+      case FSimulT.PC.ActivePageIndex of
+        1 : // Comparaison
+          Graph.BottomAxis.Title.Caption := 'Simulation' ;
+        2 : // Sensibilit�
+          Graph.BottomAxis.Title.Caption := 'Variation' ;
+      end ;
+      // Affichage des barres
+      for i := 0 to ListAA.Count - 1 do
+        BarAA[i].Active := TRUE ;
+      for i := 0 to ListAA.Count - 1 do
+        BarAA[i].Clear ;
+      if CBAA4.ItemIndex = 3
+      then
+        for i := 0 to ListAA.Count - 1 do
+          BarAA[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListAA.Count - 1 do
+          BarAA[i].MultiBar := mbStacked ;
+      for i := 0 to ListAA.Count - 1 do
+        for k := 1 to 5 do
+          if TabSimulT[k].Ok
+          then
+          begin
+            PResSimulT := TabSimulT[k].Result ;
+            case FSimulT.PC.ActivePageIndex of
+              1 : // Comparaison
+                s := Format ('%d', [k]) ;
+              2 : // Sensibilit�
+                s := Format ('%1.0f %%', [TabSimulT[k].Variation * 100]) ;
+            end ;
+            y := AAY ;
+            if y > PICO
+            then
+              BarAA[i].AddBar (y, s, clTeeColor)
+            else
+              BarAA[i].AddNull (s) ;
+          end ;
+    end ;
+    1, 2 : // Apport ou besoin
+    begin
+      Graph.Legend.Inverted := FALSE ;
+      if CBAA1.ItemIndex = 2
+      then // Besoin
+        Graph.SubTitle.Text.Add (CBAA5B.Text)
+      else
+        Graph.SubTitle.Text.Add (CBAA5A.Text) ;
+      Graph.BottomAxis.Title.Caption := CBAA2.Text ;
+      // Affichage des lignes
+      for k := 1 to 5 do
+        if TabSimulT[k].Ok
+        then
+        begin
+          LineAA[k].Active := TRUE ;
+          LineAA[k].Clear ;
+          PResSimulT := TabSimulT[k].Result ;
+          for j := 1 to PresSimulT.NbJSim do
+            LineAA[k].AddXY (AAX, AAY, '', clTeeColor) ;
+        end ;
+    end ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFCompSimulT.CBAA1Change (Sender : TObject) ;
+begin
+  CBAA4.Items.Clear ;
+  case CBAA1.ItemIndex of
+    0 : // R�partition
+    begin
+      CBAA2.Visible := FALSE ;
+      CBAA5A.Visible := TRUE ;
+      CBAA5B.Visible := FALSE ;
+      // Unit�s
+      CBAA4.Items.Add (StrG) ;
+      CBAA4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+      CBAA4.Items.Add ('%') ;
+    end ;
+    1, 2 : // Apport ou besoin
+    begin
+      CBAA2.Visible := TRUE ;
+      CBAA5A.Visible := (CBAA1.ItemIndex = 1) ;
+      CBAA5B.Visible := (CBAA1.ItemIndex = 2) ;
+      // Unit�s
+      CBAA4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBAA4.Items.Add (Format ('%% %s', [StrLys])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrED])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrEM])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrMJ, StrEN])) ;
+      CBAA4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+      if (CBAA1.ItemIndex = 2) and(CBAA5A.ItemIndex = 2)
+      then // Besoin -> Total
+        CBAA5A.ItemIndex := 0 ;
+    end ;
+  end ;
+  CBAA4.ItemIndex := 0 ;
+  AffGraphAA ;
+end ;
+
+procedure TFCompSimulT.CBAA2Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFCompSimulT.CBAA3Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFCompSimulT.CBAA4Change (Sender : TObject) ;
+begin
+  AffGraphAA ;
+end ;
+
+procedure TFCompSimulT.CBAA5Change (Sender : TObject) ;
+begin
+  if CBAA1.ItemIndex = 2
+  then // Besoin
+    CBAA5A.ItemIndex := CBAA5B.ItemIndex
+  else
+    if CBAA5A.ItemIndex = 2
+    then // Total
+      CBAA5B.ItemIndex := 0
+    else
+      CBAA5B.ItemIndex := CBAA5A.ItemIndex ;
+  AffGraphAA ;
+end ;
+
+/////////////////
+//   Energie   //
+/////////////////
+procedure TFCompSimulT.InitNRJ ;
+const
+  TabColor : array[0..9] of TColor
+    = (clTeal, clYellow, clOlive, clAqua, clFuchsia, clPurple, clWhite, clBlue,
+      clLime, clRed) ;
+var
+  i : integer ;
+begin
+  // ListNRJ : liste pour l'�nergie
+  ListNRJ := TStringList.Create ;
+  ListNRJ.Assign (LBNRJ.Items) ;
+  // BarNRJ : s�ries (barres) graphiques
+  SetLength (BarNRJ, ListNRJ.Count) ;
+  for i := 0 to ListNRJ.Count - 1 do
+  begin
+    BarNRJ[i] := TBarSeries.Create (Graph) ;
+    BarNRJ[i].ParentChart := Graph ;
+    BarNRJ[i].Title := ListNRJ[i] ;
+    BarNRJ[i].SeriesColor := TabColor[i] ;
+    BarNRJ[i].BarPen.Color := BarNRJ[i].SeriesColor ;
+    BarNRJ[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarNRJ[i]) ;
+  end ;
+end ;
+
+procedure TFCompSimulT.AffGraphNRJ ;
+var
+  i, j, k : integer ;
+  y : double ;
+  s : string ;
+
+  // Abscisse
+  function NRJX : double ;
+  begin
+    case CBNRJ2.ItemIndex of
+      0 : // Age
+        result := PresSimulT.TabResult[1, j] ;
+      1 : // Dur�e
+        result := j - 1 ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function NRJY : double ;
+  var
+    h : integer ;
+    v, d, EBIng, EDIng, EMIng, EMEnt, EMThe, EMAct, Chaleur, ENProd, Deficit,
+      ENProt, ENLip, EMProd, EMRes : double ;
+  begin
+    // Diviseur
+    case CBNRJ4.ItemIndex of
+      1 : // Dur�e
+        d := PresSimulT.NbJSim ;
+      2 : // Aliment ing�r�
+      begin
+        d := 0 ;
+        for h := 1 to PresSimulT.NbJSim do
+          d := d + PresSimulT.TabResult[11, h] ;
+      end ;
+      else
+        d := 1 ;
+    end ;
+    v := 0 ;
+    case i of
+      0 : // Indigestible
+        if CBNRJ3.ItemIndex = 0
+        then // EB
+          for h := 1 to PresSimulT.NbJSim do
+          begin
+            EBIng := PresSimulT.TabResult[13, h] ;
+            EDIng := PresSimulT.TabResult[71, h] ;
+            v := v + EBIng - EDIng ;
+          end ;
+      1 : // M�thane et urines
+        if CBNRJ3.ItemIndex <= 1
+        then // EB ou ED
+          for h := 1 to PresSimulT.NbJSim do
+          begin
+            EDIng := PresSimulT.TabResult[71, h] ;
+            EMIng := PresSimulT.TabResult[72, h] ;
+            v := v + EDIng - EMIng ;
+          end ;
+      2 : // Entretien et activit�
+        for h := 1 to PresSimulT.NbJSim do
+        begin
+          EMEnt := PresSimulT.TabResult[74, h] ;
+          EMAct := PresSimulT.TabResult[76, h] ;
+          if CBNRJ3.ItemIndex = 3
+          then // EN
+            v := v + (EMEnt + EMAct) * KGest
+          else // EB, ED ou EM
+            v := v + EMEnt + EMAct ;
+        end ;
+      3 : // Thermor�gulation
+        for h := 1 to PresSimulT.NbJSim do
+        begin
+          EMThe := PresSimulT.TabResult[75, h] ;
+          v := v + EMThe ;
+        end ;
+      4 : // Extrachaleur
+        if CBNRJ3.ItemIndex <= 2
+        then // EB ou ED ou EM
+          for h := 1 to PresSimulT.NbJSim do
+          begin
+            Chaleur := PresSimulT.TabResult[70, h] ;
+            EMEnt := PresSimulT.TabResult[74, h] ;
+            EMThe := PresSimulT.TabResult[75, h] ;
+            EMAct := PresSimulT.TabResult[76, h] ;
+            if PresSimulT.TabResult[3, h] = 1
+            then // Lactation
+            begin
+              EMIng := PresSimulT.TabResult[72, h] ;
+              EMProd := PresSimulT.TabResult[77, h] ;
+              EMRes := EMIng - EMEnt - EMThe - EMAct - EMProd ;
+              if EMRes > 0
+              then // D�p�t
+                v := v + Chaleur - EMEnt - EMThe - EMAct
+              else // Mobilisation
+                v := v + Chaleur - EMEnt - EMThe - EMAct - EMRes * KL / KResL * (1 - KResL) ;
+            end
+            else
+              v := v + Chaleur - EMEnt - EMThe - EMAct ;
+          end ;
+      5 : // Port�e
+        for h := 1 to PresSimulT.NbJSim do
+          if PresSimulT.TabResult[3, h] = 0
+          then // Gestation
+          begin
+            ENProd := PresSimulT.TabResult[77, h] * KU ;
+            ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+            ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+            Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) ;
+            if Deficit > Max (ENProt, 0)
+            then // Deficit
+              v := v + Max (ENProd + Max (ENProt, 0) - Deficit, 0)
+            else
+              v := v + ENProd ;
+          end ;
+      6 : // Lait
+        for h := 1 to PresSimulT.NbJSim do
+          if PresSimulT.TabResult[3, h] = 1
+          then // Lactation
+          begin
+            ENProd := PresSimulT.TabResult[77, h] * KL ;
+            ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+            ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+            Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) * KResL ;
+            v := v + Max (ENProd - Deficit, 0) ;
+          end ;
+      7 : // d�p�t de prot�ines
+        for h := 1 to PresSimulT.NbJSim do
+          if PresSimulT.TabResult[3, h] <> 1
+          then // Gestation ou ISSF
+          begin
+            ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+            ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+            Deficit := Abs (Min (ENProt, 0) + Min (ENLip, 0)) ;
+            v := v + Max (ENProt - Deficit, 0) ;
+          end ;
+      8 : // D�p�t de lipides
+        for h := 1 to PresSimulT.NbJSim do
+        begin
+          ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+          v := v + Max (ENLip, 0) ;
+        end ;
+      9 : // D�ficit (mobilisation)
+        for h := 1 to PresSimulT.NbJSim do
+        begin
+          ENProt := PresSimulT.TabResult[63, h] * 23.8 / 1000 ;
+          ENLip := PresSimulT.TabResult[66, h] * 39.7 / 1000 ;
+          if PresSimulT.TabResult[3, h] = 1
+          then // Lactation
+          begin
+            ENProd := PresSimulT.TabResult[77, h] * KL ;
+            Deficit := (Max (- ENProt, 0) + Max (- ENLip, 0)) * KResL ;
+            if Deficit > ENProd
+            then // on limite le d�ficit � la production de lait
+              Deficit := ENProd ;
+          end
+          else
+            Deficit := Max (- ENProt, 0) + Max (- ENLip, 0) ;
+          v := v + Deficit ;
+        end ;
+    end ;
+    result := v / d ;
+  end ;
+
+// AffGraphNRJ
+begin
+  ResetGraph ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]) ;
+  Graph.Title.Text.Add (CBNRJ3.Text) ;
+  Graph.Legend.Inverted := TRUE ;
+  case FSimulT.PC.ActivePageIndex of
+    1 : // Comparaison
+      Graph.BottomAxis.Title.Caption := 'Simulation' ;
+    2 : // Sensibilit�
+      Graph.BottomAxis.Title.Caption := 'Variation' ;
+  end ;
+  // Affichage des barres
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Active := TRUE ;
+  for i := 0 to ListNRJ.Count - 1 do
+    BarNRJ[i].Clear ;
+  if CBNRJ4.ItemIndex = 3
+  then
+    for i := 0 to ListNRJ.Count - 1 do
+      BarNRJ[i].MultiBar := mbStacked100
+  else
+    for i := 0 to ListNRJ.Count - 1 do
+      BarNRJ[i].MultiBar := mbStacked ;
+  for i := 0 to ListNRJ.Count - 1 do
+    for k := 1 to 5 do
+      if TabSimulT[k].Ok
+      then
+      begin
+        PResSimulT := TabSimulT[k].Result ;
+        case FSimulT.PC.ActivePageIndex of
+          1 : // Comparaison
+            s := Format ('%d', [k]) ;
+          2 : // Sensibilit�
+            s := Format ('%1.0f %%', [TabSimulT[k].Variation * 100]) ;
+        end ;
+        y := NRJY ;
+        if y > PICO
+        then
+          BarNRJ[i].AddBar (y, s, clTeeColor)
+        else
+          BarNRJ[i].AddNull (s) ;
+      end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFCompSimulT.CBNRJ2Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+procedure TFCompSimulT.CBNRJ3Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+procedure TFCompSimulT.CBNRJ4Change (Sender : TObject) ;
+begin
+  AffGraphNRJ ;
+end ;
+
+//////////////////
+//   Min�raux   //
+//////////////////
+procedure TFCompSimulT.InitMin ;
+const
+  TabColor1 : array[0..6] of TColor
+    = (clTeal, clOlive, clPurple, clPink, clWhite, clRed, clGreen) ;
+  TabColor2 : array[1..5] of TColor
+    = (clRed, clGreen, clYellow, clBlue, clFuchsia) ;
+var
+  i, k : integer ;
+begin
+  // ListMin : liste pour les min�raux
+  ListMin := TStringList.Create ;
+  ListMin.Assign (LBMin.Items) ;
+  // BarMin : s�ries (barres) graphiques
+  SetLength (BarMin, ListMin.Count) ;
+  for i := 0 to ListMin.Count - 1 do
+  begin
+    BarMin[i] := TBarSeries.Create (Graph) ;
+    BarMin[i].ParentChart := Graph ;
+    BarMin[i].Title := ListMin[i] ;
+    BarMin[i].SeriesColor := TabColor1[i] ;
+    BarMin[i].BarPen.Color := BarMin[i].SeriesColor ;
+    BarMin[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarMin[i]) ;
+  end ;
+  // LineMin : s�ries (lignes) graphiques
+  for k := 1 to 5 do
+    if TabSimulT[k].Ok
+    then
+    begin
+      LineMin[k] := TLineSeries.Create (Graph) ;
+      LineMin[k].ParentChart := Graph ;
+      case FSimulT.PC.ActivePageIndex of
+        1 : // Comparaison
+          LineMin[k].Title := Format ('Simulation %d', [k]) ;
+        2 : // Sensibilit�
+          LineMin[k].Title := Format ('%1.0f %%', [TabSimulT[k].Variation * 100]) ;
+      end ;
+      LineMin[k].SeriesColor := TabColor2[k] ;
+      LineMin[k].LinePen.Color := LineMin[k].SeriesColor ;
+      LineMin[k].LinePen.Width := 2 ;
+      Graph.AddSeries (LineMin[k]) ;
+    end ;
+end ;
+
+procedure TFCompSimulT.AffGraphMin ;
+var
+  i, j, k : integer ;
+  y : double ;
+  s : string ;
+
+  // Abscisse
+  function MinX : double ;
+  begin
+    case CBMin1.ItemIndex of
+      1, 2 : // Apport ou besoin
+        case CBMin2.ItemIndex of
+          0 : // Age
+            result := PResSimulT.TabResult[1, j] ;
+          1 : // Dur�e
+            result := j - 1 ;
+          else
+            result := 0 ;
+        end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+  // Ordonn�e
+  function MinY : double ;
+  var
+    h, Cycle, Jour : integer ;
+    v, d, Ptot, Pdig, PVtot, PVnet, GMQnet, PdsPortee, NesT, Foetus, Placenta,
+      Indigestible, Entretien, Portee, Retenu, Lait : double ;
+
+    // Composition des aliments
+    procedure Composition (jour : integer) ;
+    var
+      Aliment1, Aliment2 : integer ;
+      IngereFrais, Taux1, Taux2, IngereSec1, IngereSec2, Ptot1, Ptot2, Pdig1, Pdig2 : double ;
+      CC1, CC2 : CompositionChimique ;
+    begin
+      IngereFrais := PresSimulT.TabResult[11, jour] ;
+      // Aliment 1
+      Aliment1 := Round (PresSimulT.TabResult[7, jour]) ;
+      if Aliment1 = -1
+      then
+        CC1 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment1))] ;
+        CC1 := PAliment.CC ;
+      end ;
+      Taux1 := PresSimulT.TabResult[9, jour] / 100 ;
+      IngereSec1 := IngereFrais * Taux1 * CC1.MS / 1000 ;
+      Ptot1 := IngereSec1 * CC1.P ;
+      if Aliment1 = -1
+      then
+        Pdig1 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig1 := IngereSec1 * PAliment.CC.PdigG
+        else // Farine
+          Pdig1 := IngereSec1 * PAliment.CC.PdigF ;
+      // Aliment 2
+      Aliment2 := Round (PresSimulT.TabResult[8, jour]) ;
+      if Aliment2 = -1
+      then
+        CC2 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment2))] ;
+        CC2 := PAliment.CC ;
+      end ;
+      Taux2 := PresSimulT.TabResult[10, jour] / 100 ;
+      IngereSec2 := IngereFrais * Taux2 * CC2.MS / 1000 ;
+      Ptot2 := IngereSec2 * CC2.P ;
+      if Aliment2 = -1
+      then
+        Pdig2 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig2 := IngereSec2 * PAliment.CC.PdigG
+        else // Farine
+          Pdig2 := IngereSec2 * PAliment.CC.PdigF ;
+      // Cumul
+      Ptot := Ptot1 + Ptot2 ;
+      Pdig := Pdig1 + Pdig2 ;
+    end ;
+
+  begin
+    case CBMin1.ItemIndex of
+      0 : // R�partition
+      begin
+        // Diviseur
+        case CBMin4.ItemIndex of
+          1 : // Dur�e
+            d := PresSimulT.NbJSim ;
+          2 : // Aliment ing�r�
+          begin
+            d := 0 ;
+            for h := 1 to PresSimulT.NbJSim do
+              d := d + PresSimulT.TabResult[11, h] ;
+          end ;
+          else
+            d := 1 ;
+        end ;
+        v := 0 ;
+        case CBMin3.ItemIndex of
+          0 : // Phosphore
+            case i of
+              0 : // Indigestible
+                if CBMin5A.ItemIndex = 1
+                then // Total
+                  for h := 1 to PresSimulT.NbJSim do
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    v := v + Indigestible ;
+                  end ;
+              1 : // Entretien
+                for h := 1 to PresSimulT.NbJSim do
+                begin
+                  Composition (h) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, h] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  if Ptot < Indigestible + Entretien
+                  then // D�ficit
+                    v := v + Ptot - Indigestible
+                  else
+                    v := v + Entretien ;
+                end ;
+              2 : // Port�e
+                for h := 1 to PresSimulT.NbJSim do
+                  if PResSimulT.TabResult[3, h] = 0
+                  then // Gestation
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    PVtot := PResSimulT.TabResult[58, h] ;
+                    Entretien := 10 * PVtot / 1000 ;
+                    Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                    with PPRofilT.Porcelets[Cycle] do
+                    begin
+                      PdsPortee := NesTotaux * PdsNais ;
+                      NesT := NesTotaux ;
+                    end ;
+                    Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                    Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                      * Exp(-0.023998 * (Jour - 45)
+                        - 6.389 * Exp(-0.023998 * (Jour - 45))
+                        + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                    Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                      * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                        + 0.00759 * Jour + 0.06339 * NesT)
+                      * 0.0096 / 23.8 ;
+                    Portee := Foetus + Placenta ;
+                    if Ptot < Indigestible + Entretien + Portee
+                    then // D�ficit
+                      v := v + Max (Ptot - Indigestible - Entretien, 0)
+                    else
+                      v := v + Portee ;
+                  end ;
+              3 : // Retenu
+                for h := 1 to PresSimulT.NbJSim do
+                  if PResSimulT.TabResult[3, h] <> 1
+                  then // Gestation ou ISSF
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    PVtot := PResSimulT.TabResult[58, h] ;
+                    Entretien := 10 * PVtot / 1000 ;
+                    if PResSimulT.TabResult[3, h] = 0
+                    then // Gestation
+                    begin
+                      Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                      with PPRofilT.Porcelets[Cycle] do
+                      begin
+                        PdsPortee := NesTotaux * PdsNais ;
+                        NesT := NesTotaux ;
+                      end ;
+                      Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                      Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                        * Exp(-0.023998 * (Jour - 45)
+                          - 6.389 * Exp(-0.023998 * (Jour - 45))
+                          + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                      Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                        * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                          + 0.00759 * Jour + 0.06339 * NesT)
+                        * 0.0096 / 23.8 ;
+                      Portee := Foetus + Placenta ;
+                    end
+                    else
+                      Portee := 0 ;
+                    PVnet := PResSimulT.TabResult[60, h] ;
+                    GMQnet := PResSimulT.TabResult[61, h] ;
+                    Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                    if Ptot < Indigestible + Entretien + Portee + Retenu
+                    then // D�ficit
+                      v := v + Max (Ptot - Indigestible - Entretien - Portee, 0)
+                    else
+                      v := v + Retenu ;
+                  end ;
+              4 : // Lait
+                for h := 1 to PresSimulT.NbJSim do
+                  if PResSimulT.TabResult[3, h] = 1
+                  then // Lactation
+                  begin
+                    Composition (h) ;
+                    Indigestible := Ptot - Pdig ;
+                    PVtot := PResSimulT.TabResult[58, h] ;
+                    Entretien := 10 * PVtot / 1000 ;
+                    Lait := PResSimulT.TabResult[69, h] * 1.55 ;
+                    if Ptot < Indigestible + Entretien + Lait
+                    then // D�ficit
+                      v := v + Max (Ptot - Indigestible - Entretien, 0)
+                    else
+                      v := v + Lait ;
+                  end ;
+              5 : // D�ficit
+                for h := 1 to PresSimulT.NbJSim do
+                begin
+                  Composition (h) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, h] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  if PResSimulT.TabResult[3, h] = 0
+                  then // Gestation
+                  begin
+                    Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                    with PPRofilT.Porcelets[Cycle] do
+                    begin
+                      PdsPortee := NesTotaux * PdsNais ;
+                      NesT := NesTotaux ;
+                    end ;
+                    Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                    Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                      * Exp(-0.023998 * (Jour - 45)
+                        - 6.389 * Exp(-0.023998 * (Jour - 45))
+                        + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                    Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                      * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                        + 0.00759 * Jour + 0.06339 * NesT)
+                      * 0.0096 / 23.8 ;
+                    Portee := Foetus + Placenta ;
+                  end
+                  else
+                    Portee := 0 ;
+                  if PResSimulT.TabResult[3, h] <> 1
+                  then // Gestation ou ISSF
+                  begin
+                    PVnet := PResSimulT.TabResult[60, h] ;
+                    GMQnet := PResSimulT.TabResult[61, h] ;
+                    Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                  end
+                  else
+                    Retenu := 0 ;
+                  if PResSimulT.TabResult[3, h] = 1
+                  then // Lactation
+                    Lait := PResSimulT.TabResult[69, h] * 1.55
+                  else
+                    Lait := 0 ;
+                  if Ptot < Indigestible + Entretien + Portee + Retenu + Lait
+                  then
+                    v := v + Indigestible + Entretien + Portee + Retenu + Lait - Ptot ;
+                end ;
+              6 : // Exc�s
+                for h := 1 to PresSimulT.NbJSim do
+                begin
+                  Composition (h) ;
+                  Indigestible := Ptot - Pdig ;
+                  PVtot := PResSimulT.TabResult[58, h] ;
+                  Entretien := 10 * PVtot / 1000 ;
+                  if PResSimulT.TabResult[3, h] = 0
+                  then // Gestation
+                  begin
+                    Cycle := Trunc(PResSimulT.TabResult[2, h]) ;
+                    with PPRofilT.Porcelets[Cycle] do
+                    begin
+                      PdsPortee := NesTotaux * PdsNais ;
+                      NesT := NesTotaux ;
+                    end ;
+                    Jour := Trunc(PResSimulT.TabResult[78, h]) ;
+                    Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                      * Exp(-0.023998 * (Jour - 45)
+                        - 6.389 * Exp(-0.023998 * (Jour - 45))
+                        + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+                    Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                      * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                        + 0.00759 * Jour + 0.06339 * NesT)
+                      * 0.0096 / 23.8 ;
+                    Portee := Foetus + Placenta ;
+                  end
+                  else
+                    Portee := 0 ;
+                  if PResSimulT.TabResult[3, h] <> 1
+                  then // Gestation ou ISSF
+                  begin
+                    PVnet := PResSimulT.TabResult[60, h] ;
+                    GMQnet := PResSimulT.TabResult[61, h] ;
+                    Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+                  end
+                  else
+                    Retenu := 0 ;
+                  if PResSimulT.TabResult[3, h] = 1
+                  then // Lactation
+                    Lait := PResSimulT.TabResult[69, h] * 1.55
+                  else
+                    Lait := 0 ;
+                  if Ptot > Indigestible + Entretien + Portee + Retenu + Lait
+                  then
+                    v := v + Ptot - Indigestible - Entretien - Portee - Retenu - Lait ;
+                end ;
+            end ;
+        end ;
+        result := v / d ;
+      end ;
+      1 : // Apport
+      begin
+        // Diviseur
+        if CBMin4.ItemIndex = 1
+        then // Aliment ing�r�
+          d := PResSimulT.TabResult[11, j]
+        else
+          d := 1 ;
+        case CBMin3.ItemIndex of
+          0 : // Phosphore
+          begin
+            Composition (j) ;
+            if CBMin5A.ItemIndex = 0
+            then // Digestibilit� apparente
+              v := Pdig
+            else // Total
+              v := Ptot ;
+          end ;
+          else
+            v := 0 ;
+        end ;
+        result := v / d ;
+      end ;
+      2 : // Besoin
+      begin
+        // Diviseur
+        if CBMin4.ItemIndex = 1
+        then // Aliment ing�r�
+          d := PResSimulT.TabResult[11, j]
+        else
+          d := 1 ;
+        case CBMin3.ItemIndex of
+          0 : // Phosphore
+          begin
+            PVtot := PResSimulT.TabResult[58, j] ;
+            Entretien := 10 * PVtot / 1000 ;
+            if PResSimulT.TabResult[3, j] = 0
+            then // Gestation
+            begin
+              Cycle := Trunc(PResSimulT.TabResult[2, j]) ;
+              with PPRofilT.Porcelets[Cycle] do
+              begin
+                PdsPortee := NesTotaux * PdsNais ;
+                NesT := NesTotaux ;
+              end ;
+              Jour := Trunc(PResSimulT.TabResult[78, j]) ;
+              Foetus := 6.25 * 6.389 * 0.023998 * PdsPortee
+                * Exp(-0.023998 * (Jour - 45)
+                  - 6.389 * Exp(-0.023998 * (Jour - 45))
+                  + 6.389 * Exp(-0.023998 * (115 - 45))) ;
+              Placenta := (1.40598 * 0.06250 * Exp(-0.06250 * (Jour - 45)) + 0.00759)
+                * Exp(7.34264 - 1.40598 * Exp(-0.06250 * (Jour - 45))
+                  + 0.00759 * Jour + 0.06339 * NesT)
+                * 0.0096 / 23.8 ;
+              Portee := Foetus + Placenta ;
+            end
+            else
+              Portee := 0 ;
+            if PResSimulT.TabResult[3, j] <> 1
+            then // Gestation ou ISSF
+            begin
+              PVnet := PResSimulT.TabResult[60, j] ;
+              GMQnet := PResSimulT.TabResult[61, j] ;
+              Retenu := Max ((5.4199 - 2 * 0.002857 * PVnet) * GMQnet, 0) ;
+            end
+            else
+              Retenu := 0 ;
+            if PResSimulT.TabResult[3, j] = 1
+            then // Lactation
+              Lait := PResSimulT.TabResult[69, j] * 1.55
+            else
+              Lait := 0 ;
+            v := Entretien + Portee + Retenu + Lait ;
+          end ;
+          else
+            v := 0 ;
+        end ;
+        result := v / d ;
+      end ;
+      else
+        result := 0 ;
+    end ;
+  end ;
+
+// AffGraphMin
+begin
+  ResetGraph ;
+  Graph.Title.Text.Add (Format ('%s : %s', [CBMin3.Text, CBMin1.Text])) ;
+  if CBMin1.ItemIndex = 1
+  then // Besoin
+    Graph.SubTitle.Text.Add (CBMin5B.Text)
+  else
+    Graph.SubTitle.Text.Add (CBMin5A.Text) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBMin3.Text, CBMin4.Text]) ;
+  case CBMin1.ItemIndex of
+    0 : // R�partition
+    begin
+      Graph.Legend.Inverted := TRUE ;
+      case FSimulT.PC.ActivePageIndex of
+        1 : // Comparaison
+          Graph.BottomAxis.Title.Caption := 'Simulation' ;
+        2 : // Sensibilit�
+          Graph.BottomAxis.Title.Caption := 'Variation' ;
+      end ;
+      // Affichage des barres
+      for i := 0 to ListMin.Count - 1 do
+        BarMin[i].Active := TRUE ;
+      for i := 0 to ListMin.Count - 1 do
+        BarMin[i].Clear ;
+      if CBMin4.ItemIndex = 3
+      then
+        for i := 0 to ListMin.Count - 1 do
+          BarMin[i].MultiBar := mbStacked100
+      else
+        for i := 0 to ListMin.Count - 1 do
+          BarMin[i].MultiBar := mbStacked ;
+      for i := 0 to ListMin.Count - 1 do
+        for k := 1 to 5 do
+          if TabSimulT[k].Ok
+          then
+          begin
+            PResSimulT := TabSimulT[k].Result ;
+            PSimulT := ListSimulT[FindIdxSimulT(FindNomSimulT(TabSimulT[k].Simul))] ;
+            PProfilT := ListProfilT[FindIdxProfilT(FindNomProfilT(PSimulT.Profil))] ;
+            case FSimulT.PC.ActivePageIndex of
+              1 : // Comparaison
+                s := Format ('%d', [k]) ;
+              2 : // Sensibilit�
+                s := Format ('%1.0f %%', [TabSimulT[k].Variation * 100]) ;
+            end ;
+            y := MinY ;
+            if y > PICO
+            then
+              BarMin[i].AddBar (y, s, clTeeColor)
+            else
+              BarMin[i].AddNull (s) ;
+          end ;
+    end ;
+    1, 2 : // Apport ou besoin
+    begin
+      Graph.Legend.Inverted := FALSE ;
+      Graph.BottomAxis.Title.Caption := CBMin2.Text ;
+      // Affichage des lignes
+      for k := 1 to 5 do
+        if TabSimulT[k].Ok
+        then
+        begin
+          LineMin[k].Active := TRUE ;
+          LineMin[k].Clear ;
+          PResSimulT := TabSimulT[k].Result ;
+          for j := 1 to PresSimulT.NbJSim do
+            LineMin[k].AddXY (MinX, MinY, '', clTeeColor) ;
+        end ;
+    end ;
+  end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFCompSimulT.CBMin1Change(Sender: TObject);
+begin
+  CBMin4.Items.Clear ;
+  case CBMin1.ItemIndex of
+    0 : // R�partition
+    begin
+      CBMin2.Visible := FALSE ;
+      CBMin5A.Visible := TRUE ;
+      CBMin5B.Visible := FALSE ;
+      // Unit�s
+      CBMin4.Items.Add (StrG) ;
+      CBMin4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBMin4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+      CBMin4.Items.Add ('%') ;
+    end ;
+    1, 2 : // Apport ou besoin
+    begin
+      CBMin2.Visible := TRUE ;
+      CBMin5A.Visible := (CBMin1.ItemIndex = 1) ;
+      CBMin5B.Visible := (CBMin1.ItemIndex = 2) ;
+      // Unit�s
+      CBMin4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+      CBMin4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+    end ;
+  end ;
+  if CBMin1.ItemIndex = 2
+  then // Besoin
+    if CBMin5A.ItemIndex = 1
+    then // Total
+      CBMin5A.ItemIndex := 0 ;
+  CBMin4.ItemIndex := 0 ;
+  AffGraphMin ;
+end;
+
+procedure TFCompSimulT.CBMin2Change(Sender: TObject);
+begin
+  AffGraphMin ;
+end;
+
+procedure TFCompSimulT.CBMin3Change(Sender: TObject);
+begin
+  AffGraphMin ;
+end;
+
+procedure TFCompSimulT.CBMin4Change(Sender: TObject);
+begin
+  AffGraphMin ;
+end;
+
+procedure TFCompSimulT.CBMin5Change(Sender: TObject);
+begin
+  if CBMin1.ItemIndex = 2
+  then // Besoin
+    CBMin5A.ItemIndex := CBMin5B.ItemIndex
+  else
+    if CBMin5A.ItemIndex = 1
+    then // Total
+      CBMin5B.ItemIndex := 0
+    else
+      CBMin5B.ItemIndex := CBMin5A.ItemIndex ;
+  AffGraphMin ;
+end;
+
+////////////////
+//   Rejets   //
+////////////////
+procedure TFCompSimulT.InitRej ;
+const
+  TabColor : array[0..3] of TColor
+    = (clMaroon, clYellow, clPink, clMaroon) ;
+var
+  i : integer ;
+begin
+  // ListRej : liste pour les rejets
+  ListRej := TStringList.Create ;
+  ListRej.Assign (LBRej.Items) ;
+  // BarRej : s�ries (barres) graphiques
+  SetLength (BarRej, ListRej.Count) ;
+  for i := 0 to ListRej.Count - 1 do
+  begin
+    BarRej[i] := TBarSeries.Create (Graph) ;
+    BarRej[i].ParentChart := Graph ;
+    BarRej[i].Title := ListRej[i] ;
+    BarRej[i].SeriesColor := TabColor[i] ;
+    BarRej[i].BarPen.Color := BarRej[i].SeriesColor ;
+    BarRej[i].Marks.Visible := FALSE ;
+    Graph.AddSeries (BarRej[i]) ;
+  end ;
+end ;
+
+procedure TFCompSimulT.AffGraphRej ;
+var
+  i, k : integer ;
+  y : double ;
+  s : string ;
+
+  // Ordonn�e
+  function RejY : double ;
+  var
+    h : integer ;
+    v, d, IngereSec1, IngereSec2, Ptot, Pdig, Ingere, Digestible, Depose, Exporte : double ;
+    CC1, CC2 : CompositionChimique ;
+
+    // Composition des aliments
+    procedure Composition (jour : integer) ;
+    var
+      Aliment1, Aliment2 : integer ;
+      IngereFrais, Taux1, Taux2, Ptot1, Ptot2, Pdig1, Pdig2 : double ;
+    begin
+      IngereFrais := PresSimulT.TabResult[11, jour] ;
+      // Aliment 1
+      Aliment1 := Round (PresSimulT.TabResult[7, jour]) ;
+      if Aliment1 = -1
+      then
+        CC1 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment1))] ;
+        CC1 := PAliment.CC ;
+      end ;
+      Taux1 := PresSimulT.TabResult[9, jour] / 100 ;
+      IngereSec1 := IngereFrais * Taux1 * CC1.MS / 1000 ;
+      Ptot1 := IngereSec1 * CC1.P ;
+      if Aliment1 = -1
+      then
+        Pdig1 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig1 := IngereSec1 * PAliment.CC.PdigG
+        else // Farine
+          Pdig1 := IngereSec1 * PAliment.CC.PdigF ;
+      // Aliment 2
+      Aliment2 := Round (PresSimulT.TabResult[8, jour]) ;
+      if Aliment2 = -1
+      then
+        CC2 := CCVide
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Aliment2))] ;
+        CC2 := PAliment.CC ;
+      end ;
+      Taux2 := PresSimulT.TabResult[10, jour] / 100 ;
+      IngereSec2 := IngereFrais * Taux2 * CC2.MS / 1000 ;
+      Ptot2 := IngereSec2 * CC2.P ;
+      if Aliment2 = -1
+      then
+        Pdig2 := 0
+      else
+        if PAliment.Presentation = 0
+        then // Granul�s
+          Pdig2 := IngereSec2 * PAliment.CC.PdigG
+        else // Farine
+          Pdig2 := IngereSec2 * PAliment.CC.PdigF ;
+      // Cumul
+      Ptot := Ptot1 + Ptot2 ;
+      Pdig := Pdig1 + Pdig2 ;
+    end ;
+
+    // Calcul de l'ing�r�
+    function CalcIngere : Double ;
+    begin
+      case CBRej3.ItemIndex of
+        0 : // Azote
+          result := (IngereSec1*CC1.MAT + IngereSec2*CC2.MAT) * 0.16 ;
+        1 : // Phosphore
+          result := Ptot;
+        2 : // Calcium
+          result := IngereSec1*CC1.Ca + IngereSec2*CC2.Ca ;
+        3 : // Potassium
+          result := IngereSec1*CC1.K + IngereSec2*CC2.K ;
+        4 : // Cuivre
+          result := IngereSec1*CC1.Cu + IngereSec2*CC2.Cu ;
+        5 : // Zinc
+          result := IngereSec1*CC1.Zn + IngereSec2*CC2.Zn ;
+        else
+          result := 0 ;
+      end ;
+    end ;
+
+    // Calcul du digestible
+    function CalcDigestible : Double ;
+    begin
+      case CBRej3.ItemIndex of
+        0 : // Azote
+          result := (IngereSec1*CC1.MAT*CC1.dMAT_C/100 + IngereSec2*CC2.MAT*CC2.dMAT_C/100) * 0.16 ;
+        1 : // Phosphore
+          result := Pdig;
+        else
+          result := 0 ;
+      end ;
+    end ;
+
+    // Calcul du d�p�t (potentiel)
+    function CalcDepot (jour : integer) : Double ;
+    var
+      PV, GMQ, PD : Double ;
+    begin
+      PV := PresSimulT.TabResult[58, jour] ;
+      GMQ := PresSimulT.TabResult[59, jour] ;
+      PD := PResSimulT.TabResult[64, jour] ;
+      case CBRej3.ItemIndex of
+        0 : // Azote
+          result := PD * 0.16 ;
+        1 : // Phosphore
+          if GMQ > 0
+          then
+            result := -0.00227 * (Power(PV+GMQ, 2) - Power(PV, 2)) + 5.36335 * GMQ
+          else
+            result := 0 ;
+        2 : // Calcium
+          if GMQ > 0
+          then
+            result := -0.00180 * (Power(PV+GMQ, 2) - Power(PV, 2)) + 8.64633 * GMQ
+          else
+            result := 0 ;
+        3 : // Potassium
+          if GMQ > 0
+          then
+            result := -0.00345 * (Power(PV+GMQ, 2) - Power(PV, 2)) + 2.53338 * GMQ
+          else
+            result := 0 ;
+        4 : // Cuivre
+          if GMQ > 0
+          then
+            result := 1.0 * GMQ
+          else
+            result := 0 ;
+        5 : // Zinc
+          if GMQ > 0
+          then
+            result := 21.8 * GMQ
+          else
+            result := 0 ;
+        else
+          result := 0 ;
+      end ;
+    end ;
+
+    // Calcul de l'export (lait)
+    function CalcExport (jour : integer) : Double ;
+    var
+      Lait : Double ;
+    begin
+      Lait := PResSimulT.TabResult[69, jour] ;
+      case CBRej3.ItemIndex of
+        0 : // Azote
+          result := Lait / 0.1325 ;
+        1 : // Phosphore
+          result := Lait * 1.41 ;
+        2 : // Calcium
+          result := Lait * 1.95 ;
+        3 : // Potassium
+          result := Lait * 0.59 ;
+        4 : // Cuivre
+          result := Lait * 0.002 ;
+        5 : // Zinc
+          result := Lait * 0.007 ;
+        else
+          result := 0 ;
+      end ;
+    end ;
+
+  // RejY
+  begin
+    // Diviseur
+    case CBRej4.ItemIndex of
+      1 : // Dur�e
+        d := PresSimulT.NbJSim ;
+      2 : // Aliment ing�r�
+      begin
+        d := 0 ;
+        for h := 1 to PresSimulT.NbJSim do
+          d := d + PresSimulT.TabResult[11, h] ;
+      end ;
+      else
+        d := 1 ;
+    end ;
+    v := 0 ;
+    for h := 1 to PResSimulT.NbJSim do
+    begin
+      Composition (h) ;
+      Ingere := CalcIngere ;
+      Digestible := CalcDigestible ;
+      Depose := CalcDepot (h) ;
+      Exporte := CalcExport (h) ;
+      if CBRej3.ItemIndex < 2
+      then // Azote ou phosphore
+        case i of
+          0 : // F�cal
+            v := v + Ingere - Digestible ;
+          1 : // Urinaire
+            v := v + Max (Digestible - Depose - Exporte, 0) ;
+          2 : // Retenu ou export�
+            v := v + Min (Digestible, Depose + Exporte) ;
+        end
+      else // Autres
+        case i of
+          2 : // Retenu ou export�
+            v := v + Min (Ingere, Depose + Exporte) ;
+          3 : // Ecr�t�
+            v := v + Max (Ingere - Depose - Exporte, 0) ;
+        end ;
+    end ;
+    result := v / d ;
+  end ;
+
+// AffGraphRej
+begin
+  ResetGraph ;
+  Graph.Legend.Inverted := TRUE ;
+  Graph.Title.Text.Add (TabRej.Caption) ;
+  Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBRej3.Text, CBRej4.Text]) ;
+  case FSimulT.PC.ActivePageIndex of
+    1 : // Comparaison
+      Graph.BottomAxis.Title.Caption := 'Simulation' ;
+    2 : // Sensibilit�
+      Graph.BottomAxis.Title.Caption := 'Variation' ;
+  end ;
+  // Affichage des barres
+  if CBRej3.ItemIndex < 2
+  then // Azote ou phosphore : F�cal, Urinaire et Retenu
+    for i := 0 to 2 do
+      BarRej[i].Active := TRUE
+  else // Autres : Retenu et Excr�t�
+    for i := 2 to ListRej.Count - 1 do
+      BarRej[i].Active := TRUE ;
+  for i := 0 to ListRej.Count - 1 do
+    BarRej[i].Clear ;
+  if CBRej4.ItemIndex = 3
+  then
+    for i := 0 to ListRej.Count - 1 do
+      BarRej[i].MultiBar := mbStacked100
+  else
+    for i := 0 to ListRej.Count - 1 do
+      BarRej[i].MultiBar := mbStacked ;
+  for i := 0 to ListRej.Count - 1 do
+    for k := 1 to 5 do
+      if TabSimulT[k].Ok
+      then
+      begin
+        PResSimulT := TabSimulT[k].Result ;
+        case FSimulT.PC.ActivePageIndex of
+          1 : // Comparaison
+            s := Format ('%d', [k]) ;
+          2 : // Sensibilit�
+            s := Format ('%1.0f %%', [TabSimulT[k].Variation * 100]) ;
+        end ;
+        y := RejY ;
+        if y > PICO
+        then
+          BarRej[i].AddBar (y, s, clTeeColor)
+        else
+          BarRej[i].AddNull (s) ;
+      end ;
+  AjustEchelle (Graph) ;
+end ;
+
+procedure TFCompSimulT.CBRej3Change (Sender : TObject) ;
+begin
+  CBRej4.Items.Clear ;
+  if CBRej3.ItemIndex > 3
+  then // Oligo-�l�ment
+  begin
+    CBRej4.Items.Add (StrMG) ;
+    CBRej4.Items.Add (Format ('%s/%s', [StrMG, StrJ])) ;
+    CBRej4.Items.Add (Format ('%s/%s %s', [StrMG, StrKg, StrAlimentUnit])) ;
+    CBRej4.Items.Add ('%') ;
+  end
+  else // Macro-�l�ment
+  begin
+    CBRej4.Items.Add (StrG) ;
+    CBRej4.Items.Add (Format ('%s/%s', [StrG, StrJ])) ;
+    CBRej4.Items.Add (Format ('%s/%s %s', [StrG, StrKg, StrAlimentUnit])) ;
+    CBRej4.Items.Add ('%') ;
+  end ;
+  CBRej4.ItemIndex := 0 ;
+  AffGraphRej ;
+end ;
+
+procedure TFCompSimulT.CBRej4Change (Sender : TObject) ;
+begin
+  AffGraphRej ;
+end ;
+
+procedure TFCompSimulT.WMSysCommand(var Message: TWMSysCommand);
+begin
+  if Message.CmdType = SC_MINIMIZE
+  then
+    Application.Minimize
+  else
+    inherited;
+end;
+
+end.
Index: UInit.pas
===================================================================
--- UInit.pas	(révision 0)
+++ UInit.pas	(révision 3)
@@ -0,0 +1,2515 @@
+unit UInit;
+
+interface
+
+uses
+  Forms, Windows, Classes, StdCtrls, Dialogs, SysUtils, Types, UVariables,
+  Controls, gnugettext;
+
+// Licence
+procedure InitLicense;
+procedure LoadLicense;
+procedure SaveLicense;
+procedure LoadLicFile(FileName: string);
+procedure SaveLicFile(FileName: string);
+// Configuration
+procedure LoadConfig;
+procedure SaveConfig;
+// Donn�es
+procedure InitData;
+procedure FreeData;
+procedure LoadData;
+procedure SaveData;
+// Mati�re premi�re
+procedure InitMatiere;
+procedure FreeMatiere;
+procedure LoadMatiere;
+procedure SaveMatiere;
+function MatiereUsed(Numero: integer): boolean;
+function MatiereFound(Numero: integer): boolean;
+function MatiereValid(rec: PRecMatiere): boolean;
+procedure StringsMatiere(Liste: TStrings; TypeMatiere: Integer;
+  IncludeInvalid, IncludeInraAfz: Boolean);
+// Aliment
+procedure InitAliment;
+procedure FreeAliment;
+procedure LoadAliment;
+procedure SaveAliment;
+function AlimentUsed(Numero: integer): boolean;
+function AlimentFound(Numero: integer): boolean;
+function AlimentValid(rec: PRecAliment): boolean;
+procedure StringsAliment(Liste: TStrings; TypeAliment: Integer;
+  IncludeInvalid: Boolean);
+// S�quence alimentaire truie
+procedure InitSeqAliT;
+procedure FreeSeqAliT;
+procedure LoadSeqAliT;
+procedure SaveSeqAliT;
+function SeqAliTUsed (Numero : integer) : boolean ;
+function SeqAliTFound (Numero : integer) : boolean ;
+function SeqAliTValid (rec : PRecSeqAliT) : boolean ;
+procedure StringsSeqAliT (Liste : TStrings ; IncludeInvalid : Boolean) ;
+// Plan de rationnement truie
+procedure InitRationT;
+procedure FreeRationT;
+procedure LoadRationT;
+procedure SaveRationT;
+function RationTUsed(Numero: integer): boolean;
+function RationTFound(Numero: integer): boolean;
+function RationTValid(rec: PRecRationT): boolean;
+procedure StringsRationT(Liste: TStrings; IncludeInvalid: Boolean);
+// Logement truie
+procedure InitLogeT;
+procedure FreeLogeT;
+procedure LoadLogeT;
+procedure SaveLogeT;
+function LogeTUsed(Numero: integer): boolean;
+function LogeTFound(Numero: integer): boolean;
+function LogeTValid(rec: PRecLogeT): boolean;
+procedure StringsLogeT(Liste: TStrings; IncludeInvalid: Boolean);
+// Profil truie
+procedure InitProfilT;
+procedure FreeProfilT;
+procedure LoadProfilT;
+procedure SaveProfilT;
+function ProfilTUsed(Numero: integer): boolean;
+function ProfilTFound(Numero: integer): boolean;
+function ProfilTValid(rec: PRecProfilT): boolean;
+procedure StringsProfilT(Liste: TStrings; IncludeInvalid: Boolean);
+// Simulation truie
+procedure InitSimulT;
+procedure FreeSimulT;
+procedure LoadSimulT;
+procedure SaveSimulT;
+function SimulTValid(rec: PRecSimulT): boolean;
+procedure StringsSimulT(Liste: TStrings; IncludeInvalid: Boolean);
+// S�quence alimentaire porc
+procedure InitSeqAliP;
+procedure FreeSeqAliP;
+procedure LoadSeqAliP;
+procedure SaveSeqAliP;
+function SeqAliPUsed(Numero: integer): boolean;
+function SeqAliPFound(Numero: integer): boolean;
+function SeqAliPValid(rec: PRecSeqAliP): boolean;
+procedure StringsSeqAliP(Liste: TStrings; IncludeInvalid: Boolean);
+// Plan de rationnement porc
+procedure InitRationP;
+procedure FreeRationP;
+procedure ConvertRationP2;
+procedure LoadRationP;
+procedure SaveRationP;
+function RationPUsed(Numero: integer): boolean;
+function RationPFound(Numero: integer): boolean;
+function RationPValid(rec: PRecRationP): boolean;
+procedure StringsRationP(Liste: TStrings; IncludeInvalid: Boolean);
+// Profil porc
+procedure InitProfilP;
+procedure FreeProfilP;
+procedure ConvertProfilP2;
+procedure LoadProfilP;
+procedure SaveProfilP;
+function ProfilPUsed(Numero: integer): boolean;
+function ProfilPFound(Numero: integer): boolean;
+function ProfilPValid(rec: PRecProfilP): boolean;
+procedure StringsProfilP(Liste: TStrings; IncludeInvalid: Boolean);
+// Simulation porc
+procedure InitSimulP;
+procedure FreeSimulP;
+procedure LoadSimulP;
+procedure SaveSimulP;
+function SimulPValid(rec: PRecSimulP): boolean;
+procedure StringsSimulP(Liste: TStrings; IncludeInvalid: Boolean);
+
+implementation
+
+uses
+  SHFolder, Registry, IniFiles, UFindRec, UUtil, UStrings, UCalcul, UFMenu{, UFInraAfz};
+
+// Licence
+
+procedure InitLicense;
+var
+  Buffer: Pointer;
+  Version: PVSFixedFileInfo;
+  BufferSize, VersionSize: DWORD;
+  VolumeSerialNumber, MaximumComponentLength, FileSystemFlags: DWORD;
+  NormalLicFileName, VirtualStoreLicFileName, FileDrive, VirtualStore: string;
+  LocalAppData: array[0..MAX_PATH] of Char;
+begin
+  // Version du programme
+  MajorVersion := 0;
+  MinorVersion := 0;
+  ReleaseVersion := 0;
+  BuildVersion := 0;
+  BufferSize := GetFileVersionInfoSize(PChar(Application.ExeName), BufferSize);
+  if BufferSize > 0
+  then
+  begin
+    GetMem(Buffer, BufferSize);
+    if GetFileVersionInfo(PChar(Application.ExeName), 0, BufferSize, Buffer)
+    then
+    begin
+      VerQueryValue(Buffer, '\', Pointer(Version), VersionSize);
+      MajorVersion := Version.dwFileVersionMS shr 16;
+      MinorVersion := Version.dwFileVersionMS and $FFFF;
+      ReleaseVersion := Version.dwFileVersionLS shr 16;
+      BuildVersion := Version.dwFileVersionLS and $FFFF;
+    end;
+    FreeMem(Buffer, BufferSize);
+  end ;
+  VersionString := Format('%d.%d.%d.%d', [MajorVersion, MinorVersion, ReleaseVersion, BuildVersion]);
+  // Num�ro de s�rie du volume
+  Drive := IncludeTrailingPathDelimiter(ExtractFileDrive(Application.ExeName));
+  GetVolumeInformation(PChar(Drive), nil, 0, @VolumeSerialNumber, MaximumComponentLength, FileSystemFlags, nil, 0);
+  Volume := IntToHex(HiWord(VolumeSerialNumber), 4) + '-' + IntToHex(LoWord(VolumeSerialNumber), 4);
+  // Passage du fichier LIC � la base de registre
+  if not Reg.OpenKeyReadOnly('\Software\InraPorc\License')
+  then
+  begin
+    NormalLicFileName := ChangeFileExt(Application.ExeName, '.lic');
+    if FileExists(NormalLicFileName)
+    then // Importer les informations
+      LoadLicFile(NormalLicFileName);
+    // Prise en compte du VirtualStore (Windows Vista et Windows 7)
+    FileDrive := ExtractFileDrive(NormalLicFileName);
+    SHGetFolderPath(0, CSIDL_LOCAL_APPDATA, 0, SHGFP_TYPE_CURRENT, LocalAppData);
+    VirtualStore := IncludeTrailingPathDelimiter(LocalAppData) + 'VirtualStore';
+    VirtualStoreLicFileName := StringReplace(NormalLicFileName, FileDrive, VirtualStore, []);
+    if FileExists(VirtualStoreLicFileName)
+    then // Importer les informations
+      LoadLicFile(VirtualStoreLicFileName);
+    if FileExists(NormalLicFileName) or FileExists(VirtualStoreLicFileName)
+    then // Enregistrer les informations import�es
+      SaveLicense;
+  end;
+end ;
+
+procedure LoadLicense;
+begin
+  LicenseType := BdRReadInteger('\Software\InraPorc\License', 'LicenseType', 0);
+  LicenseNumber := BdRReadInteger('\Software\InraPorc\License', 'LicenseNumber', 0);
+  FirstName := BdRReadString('\Software\InraPorc\License', 'FirstName', '');
+  LastName := BdRReadString('\Software\InraPorc\License', 'LastName', '');
+  Company := BdRReadString('\Software\InraPorc\License', 'Company', '');
+  Address1 := BdRReadString('\Software\InraPorc\License', 'Address1', '');
+  Address2 := BdRReadString('\Software\InraPorc\License', 'Address2', '');
+  PostalCode := BdRReadString('\Software\InraPorc\License', 'PostalCode', '');
+  City := BdRReadString('\Software\InraPorc\License', 'City', '');
+  Country := BdRReadString('\Software\InraPorc\License', 'Country', '');
+  Phone := BdRReadString('\Software\InraPorc\License', 'Phone', '');
+  Fax := BdRReadString('\Software\InraPorc\License', 'Fax', '');
+  Mail := BdRReadString('\Software\InraPorc\License', 'Mail', '');
+  Course := BdRReadString('\Software\InraPorc\License', 'Course', '');
+  FinalDate := BdRReadString('\Software\InraPorc\License', 'FinalDate', '31/12/2099');
+  SoftwareEnableKey := BdRReadString('\Software\InraPorc\License', 'SoftwareEnableKey', '');
+end;
+
+procedure SaveLicense;
+begin
+  BdRWriteInteger('\Software\InraPorc\License', 'LicenseType', LicenseType);
+  BdRWriteInteger('\Software\InraPorc\License', 'LicenseNumber', LicenseNumber);
+  BdRWriteString('\Software\InraPorc\License', 'Version', VersionString);
+  BdRWriteString('\Software\InraPorc\License', 'FirstName', FirstName);
+  BdRWriteString('\Software\InraPorc\License', 'LastName', LastName);
+  BdRWriteString('\Software\InraPorc\License', 'Company', Company);
+  BdRWriteString('\Software\InraPorc\License', 'Address1', Address1);
+  BdRWriteString('\Software\InraPorc\License', 'Address2', Address2);
+  BdRWriteString('\Software\InraPorc\License', 'PostalCode', PostalCode);
+  BdRWriteString('\Software\InraPorc\License', 'City', City);
+  BdRWriteString('\Software\InraPorc\License', 'Country', Country);
+  BdRWriteString('\Software\InraPorc\License', 'Phone', Phone);
+  BdRWriteString('\Software\InraPorc\License', 'Fax', Fax);
+  BdRWriteString('\Software\InraPorc\License', 'Mail', Mail);
+  BdRWriteString('\Software\InraPorc\License', 'Course', Course);
+  BdRWriteString('\Software\InraPorc\License', 'VolumeSerialNumber', Volume);
+  BdRWriteString('\Software\InraPorc\License', 'FinalDate', FinalDate);
+  BdRWriteString('\Software\InraPorc\License', 'SoftwareEnableKey', SoftwareEnableKey);
+end;
+
+procedure LoadLicFile(FileName: string);
+begin
+  Lic := TIniFile.Create(FileName);
+  LicenseType := Lic.ReadInteger('License', 'LicenseType', 0);
+  LicenseNumber := Lic.ReadInteger('License', 'LicenseNumber', 0);
+  FirstName := Lic.ReadString('License', 'FirstName', '');
+  LastName := Lic.ReadString('License', 'LastName', '');
+  Company := Lic.ReadString('License', 'Company', '');
+  Address1 := Lic.ReadString('License', 'Address1', '');
+  Address2 := Lic.ReadString('License', 'Address2', '');
+  PostalCode := Lic.ReadString('License', 'PostalCode', '');
+  City := Lic.ReadString('License', 'City', '');
+  Country := Lic.ReadString('License', 'Country', '');
+  Phone := Lic.ReadString('License', 'Phone', '');
+  Fax := Lic.ReadString('License', 'Fax', '');
+  Mail := Lic.ReadString('License', 'Mail', '');
+  Course := Lic.ReadString('License', 'Course', '');
+  FinalDate := Lic.ReadString('License', 'FinalDate', '31/12/2099');
+  SoftwareEnableKey := Lic.ReadString('License', 'SoftwareEnableKey', '');
+  Lic.Free;
+end;
+
+procedure SaveLicFile(FileName: string);
+begin
+  Lic := TIniFile.Create(FileName);
+  Lic.WriteInteger('License', 'LicenseType', LicenseType);
+  Lic.WriteInteger('License', 'LicenseNumber', LicenseNumber);
+  Lic.WriteString('License', 'Version', VersionString);
+  Lic.WriteString('License', 'FirstName', FirstName);
+  Lic.WriteString('License', 'LastName', LastName);
+  Lic.WriteString('License', 'Company', Company);
+  Lic.WriteString('License', 'Address1', Address1);
+  Lic.WriteString('License', 'Address2', Address2);
+  Lic.WriteString('License', 'PostalCode', PostalCode);
+  Lic.WriteString('License', 'City', City);
+  Lic.WriteString('License', 'Country', Country);
+  Lic.WriteString('License', 'Phone', Phone);
+  Lic.WriteString('License', 'Fax', Fax);
+  Lic.WriteString('License', 'Mail', Mail);
+  Lic.WriteString('License', 'Course', Course);
+  Lic.WriteString('License', 'VolumeSerialNumber', Volume);
+  Lic.WriteString('License', 'FinalDate', FinalDate);
+  Lic.WriteString('License', 'SoftwareEnableKey', SoftwareEnableKey);
+  Lic.Free;
+end;
+
+// Configuration
+
+procedure LoadConfig;
+var
+//  Personal: string;
+  Personal: array[0..MAX_PATH] of Char;
+begin
+  if Reg.OpenKeyReadOnly('\Software\InraPorc\Config\Network')
+  and Reg.ValueExists('CheckForUpdates')
+  then
+    CheckForUpdates := BdRReadBoolean('\Software\InraPorc\Config\Network', 'CheckForUpdates', True)
+  else
+  begin
+    CheckForUpdates := MessageDlg(MsgCheckForUpdates, mtConfirmation, [mbYes, mbNo], 0) = mrYes;
+    Reg.CloseKey;
+    BdRWriteBoolean('\Software\InraPorc\Config\Network', 'CheckForUpdates', CheckForUpdates);
+  end;
+//  Personal := BdRReadString('\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', 'Personal', GetCurrentDir);
+  SHGetFolderPath(0, CSIDL_PERSONAL, 0, SHGFP_TYPE_CURRENT, Personal);
+  Folder := BdRReadString('\Software\InraPorc\Config\Data', 'Folder', IncludeTrailingPathDelimiter(Personal) + 'InraPorc');
+  ExcelFile := BdRReadString('\Software\InraPorc\Config\Data', 'ExcelFile', IncludeTrailingPathDelimiter(Folder) + 'InraPorc.xls');
+  MainLeft := BdRReadInteger('\Software\InraPorc\Config\Window', 'MainLeft', 0);
+  MainTop := BdRReadInteger('\Software\InraPorc\Config\Window', 'MainTop', 0);
+  MainWidth := BdRReadInteger('\Software\InraPorc\Config\Window', 'MainWidth', 1024);
+  MainHeight := BdRReadInteger('\Software\InraPorc\Config\Window', 'MainHeight', 768);
+  Logo := BdRReadString('\Software\InraPorc\Config\Window', 'Logo', '');
+  CurrencySign := BdRReadString('\Software\InraPorc\Config\International', 'CurrencySign', DefaultCurrency);
+  AffCorrCUD := BdRReadBoolean('\Software\InraPorc\Config\Messages', 'CorrCUD', True);
+  AffCalcAli := BdRReadBoolean('\Software\InraPorc\Config\Messages', 'CalcAli', True);
+  AffGraphAli := BdRReadBoolean('\Software\InraPorc\Config\Messages', 'GraphAli', True);
+  AffUnitProfilP := BdRReadBoolean('\Software\InraPorc\Config\Messages', 'UnitProfilP', True);
+  AffPDMoy := BdRReadBoolean('\Software\InraPorc\Config\Messages', 'PDMoy', True);
+  AffPrecocite := BdRReadBoolean('\Software\InraPorc\Config\Messages', 'Precocite', True);
+  AffEntretien := BdRReadBoolean('\Software\InraPorc\Config\Messages', 'Entretien', True);
+  AffOptInit := BdRReadBoolean('\Software\InraPorc\Config\Messages', 'OptInit', True);
+  AffSimulT := BdRReadBoolean('\Software\InraPorc\Config\Messages', 'SimulT', True);
+  AffBesoin := BdRReadBoolean('\Software\InraPorc\Config\Messages', 'Besoin', True);
+  ConfRap := BdRReadInteger('\Software\InraPorc\Config\Configuration', 'Rap', 0);
+  ConfDig := BdRReadInteger('\Software\InraPorc\Config\Configuration', 'Dig', 0);
+  ConfTCompo := BdRReadInteger('\Software\InraPorc\Config\Configuration', 'TCompo', 0);
+  ConfTAA := BdRReadInteger('\Software\InraPorc\Config\Configuration', 'TAA', 0);
+  ConfTAG := BdRReadInteger('\Software\InraPorc\Config\Configuration', 'TAG', 0);
+  ConfTMacro := BdRReadInteger('\Software\InraPorc\Config\Configuration', 'TMacro', 0);
+  ConfTOligo := BdRReadInteger('\Software\InraPorc\Config\Configuration', 'TOligo', 0);
+  ConfTFibres := BdRReadInteger('\Software\InraPorc\Config\Configuration', 'TFibres', 0);
+  ConfDCompo := BdRReadInteger('\Software\InraPorc\Config\Configuration', 'DCompo', 1);
+  ConfDAA := BdRReadInteger('\Software\InraPorc\Config\Configuration', 'DAA', 1);
+  ConfAffMP := BdRReadBoolean('\Software\InraPorc\Config\Configuration', 'AffMP', True);
+  TypeAliGest := BdRReadInteger('\Software\InraPorc\Config\AliGest', 'TypeAliGest', 2);
+  Duree1 := BdRReadInteger('\Software\InraPorc\Config\AliGest', 'Duree1', 28);
+  Duree3 := BdRReadInteger('\Software\InraPorc\Config\AliGest', 'Duree3', 21);
+  Quantite1 := BdRReadFloat('\Software\InraPorc\Config\AliGest', 'Quantite1', 3.0);
+  Quantite2 := BdRReadFloat('\Software\InraPorc\Config\AliGest', 'Quantite2', 2.5);
+  Quantite3 := BdRReadFloat('\Software\InraPorc\Config\AliGest', 'Quantite3', 3.0);
+  Augment := BdRReadFloat('\Software\InraPorc\Config\AliGest', 'Augment', 0.5);
+  XTruie := BdRReadInteger('\Software\InraPorc\Config\Graph', 'XTruie', 0);
+  XCrois := BdRReadInteger('\Software\InraPorc\Config\Graph', 'XCrois', 0);
+  CarTete := BdRReadBoolean('\Software\InraPorc\Config\Carcasse', 'Tete', True);
+  CarLangue := BdRReadBoolean('\Software\InraPorc\Config\Carcasse', 'Langue', True);
+  CarPieds := BdRReadBoolean('\Software\InraPorc\Config\Carcasse', 'Pieds', True);
+  CarQueue := BdRReadBoolean('\Software\InraPorc\Config\Carcasse', 'Queue', True);
+  CarHampe := BdRReadBoolean('\Software\InraPorc\Config\Carcasse', 'Hampe', False);
+  CarPanne := BdRReadBoolean('\Software\InraPorc\Config\Carcasse', 'Panne', False);
+  FeedInfo := BdRReadInteger('\Software\InraPorc\Config\InfoCrois', 'FeedInfo', 0);
+  FatInfo := BdRReadInteger('\Software\InraPorc\Config\InfoCrois', 'FatInfo', 0);
+  UserFatShortName := BdRReadString('\Software\InraPorc\Config\InfoCrois', 'UserFatShortName', '');
+  UserFatLongName := BdRReadString('\Software\InraPorc\Config\InfoCrois', 'UserFatLongName', '');
+  UserFatPVV := BdRReadBoolean('\Software\InraPorc\Config\InfoCrois', 'UserFatPVV', False);
+  UserFatA := BdRReadFloat('\Software\InraPorc\Config\InfoCrois', 'UserFatA', 0);
+  UserFatB := BdRReadFloat('\Software\InraPorc\Config\InfoCrois', 'UserFatB', 0);
+  UserFatC := BdRReadFloat('\Software\InraPorc\Config\InfoCrois', 'UserFatC', 0);
+  LeanInfo := BdRReadInteger('\Software\InraPorc\Config\InfoCrois', 'LeanInfo', 0);
+  UserLeanShortName := BdRReadString('\Software\InraPorc\Config\InfoCrois', 'UserLeanShortName', '');
+  UserLeanLongName := BdRReadString('\Software\InraPorc\Config\InfoCrois', 'UserLeanLongName', '');
+  UserLeanPVV := BdRReadBoolean('\Software\InraPorc\Config\InfoCrois', 'UserLeanPVV', False);
+  UserLeanA := BdRReadFloat('\Software\InraPorc\Config\InfoCrois', 'UserLeanA', 0);
+  UserLeanB := BdRReadFloat('\Software\InraPorc\Config\InfoCrois', 'UserLeanB', 0);
+  UserLeanC := BdRReadFloat('\Software\InraPorc\Config\InfoCrois', 'UserLeanC', 0);
+  ConfigChanged := False;
+end;
+
+procedure SaveConfig;
+begin
+  BdRWriteBoolean('\Software\InraPorc\Config\Network', 'CheckForUpdates', CheckForUpdates);
+  BdRWriteString('\Software\InraPorc\Config\Data', 'Folder', Folder);
+  BdRWriteString('\Software\InraPorc\Config\Data', 'ExcelFile', ExcelFile);
+  BdRWriteInteger('\Software\InraPorc\Config\Window', 'MainLeft', MainLeft);
+  BdRWriteInteger('\Software\InraPorc\Config\Window', 'MainTop', MainTop);
+  BdRWriteInteger('\Software\InraPorc\Config\Window', 'MainWidth', MainWidth);
+  BdRWriteInteger('\Software\InraPorc\Config\Window', 'MainHeight', MainHeight);
+  BdRWriteString('\Software\InraPorc\Config\Window', 'Logo', Logo);
+  BdRWriteString('\Software\InraPorc\Config\International', 'LanguageCode', LanguageCode);
+  BdRWriteString('\Software\InraPorc\Config\International', 'CurrencySign', CurrencySign);
+  BdRWriteInteger('\Software\InraPorc\Config\Configuration', 'Rap', ConfRap);
+  BdRWriteInteger('\Software\InraPorc\Config\Configuration', 'Dig', ConfDig);
+  BdRWriteInteger('\Software\InraPorc\Config\Configuration', 'TCompo', ConfTCompo);
+  BdRWriteInteger('\Software\InraPorc\Config\Configuration', 'TAA', ConfTAA);
+  BdRWriteInteger('\Software\InraPorc\Config\Configuration', 'TAG', ConfTAG);
+  BdRWriteInteger('\Software\InraPorc\Config\Configuration', 'TMacro', ConfTMacro);
+  BdRWriteInteger('\Software\InraPorc\Config\Configuration', 'TOligo', ConfTOligo);
+  BdRWriteInteger('\Software\InraPorc\Config\Configuration', 'TFibres', ConfTFibres);
+  BdRWriteInteger('\Software\InraPorc\Config\Configuration', 'DCompo', ConfDCompo);
+  BdRWriteInteger('\Software\InraPorc\Config\Configuration', 'DAA', ConfDAA);
+  BdRWriteBoolean('\Software\InraPorc\Config\Configuration', 'AffMP', ConfAffMP);
+  BdRWriteInteger('\Software\InraPorc\Config\AliGest', 'TypeAliGest', TypeAliGest);
+  BdRWriteInteger('\Software\InraPorc\Config\AliGest', 'Duree1', Duree1);
+  BdRWriteInteger('\Software\InraPorc\Config\AliGest', 'Duree3', Duree3);
+  BdRWriteFloat('\Software\InraPorc\Config\AliGest', 'Quantite1', Quantite1);
+  BdRWriteFloat('\Software\InraPorc\Config\AliGest', 'Quantite2', Quantite2);
+  BdRWriteFloat('\Software\InraPorc\Config\AliGest', 'Quantite3', Quantite3);
+  BdRWriteFloat('\Software\InraPorc\Config\AliGest', 'Augment', Augment);
+  BdRWriteInteger('\Software\InraPorc\Config\Graph', 'XTruie', XTruie);
+  BdRWriteInteger('\Software\InraPorc\Config\Graph', 'XCrois', XCrois);
+  BdRWriteBoolean('\Software\InraPorc\Config\Carcasse', 'Tete', CarTete);
+  BdRWriteBoolean('\Software\InraPorc\Config\Carcasse', 'Langue', CarLangue);
+  BdRWriteBoolean('\Software\InraPorc\Config\Carcasse', 'Pieds', CarPieds);
+  BdRWriteBoolean('\Software\InraPorc\Config\Carcasse', 'Queue', CarQueue);
+  BdRWriteBoolean('\Software\InraPorc\Config\Carcasse', 'Hampe', CarHampe);
+  BdRWriteBoolean('\Software\InraPorc\Config\Carcasse', 'Panne', CarPanne);
+  BdRWriteInteger('\Software\InraPorc\Config\InfoCrois', 'FeedInfo', FeedInfo);
+  BdRWriteInteger('\Software\InraPorc\Config\InfoCrois', 'FatInfo', FatInfo);
+  BdRWriteString('\Software\InraPorc\Config\InfoCrois', 'UserFatShortName', UserFatShortName);
+  BdRWriteString('\Software\InraPorc\Config\InfoCrois', 'UserFatLongName', UserFatLongName);
+  BdRWriteBoolean('\Software\InraPorc\Config\InfoCrois', 'UserFatPVV', UserFatPVV);
+  BdRWriteFloat('\Software\InraPorc\Config\InfoCrois', 'UserFatA', UserFatA);
+  BdRWriteFloat('\Software\InraPorc\Config\InfoCrois', 'UserFatB', UserFatB);
+  BdRWriteFloat('\Software\InraPorc\Config\InfoCrois', 'UserFatC', UserFatC);
+  BdRWriteInteger('\Software\InraPorc\Config\InfoCrois', 'LeanInfo', LeanInfo);
+  BdRWriteString('\Software\InraPorc\Config\InfoCrois', 'UserLeanShortName', UserLeanShortName);
+  BdRWriteString('\Software\InraPorc\Config\InfoCrois', 'UserLeanLongName', UserLeanLongName);
+  BdRWriteBoolean('\Software\InraPorc\Config\InfoCrois', 'UserLeanPVV', UserLeanPVV);
+  BdRWriteFloat('\Software\InraPorc\Config\InfoCrois', 'UserLeanA', UserLeanA);
+  BdRWriteFloat('\Software\InraPorc\Config\InfoCrois', 'UserLeanB', UserLeanB);
+  BdRWriteFloat('\Software\InraPorc\Config\InfoCrois', 'UserLeanC', UserLeanC);
+  ConfigChanged := False;
+end;
+
+// Donn�es
+
+procedure InitData;
+begin
+  InitMatiere;
+  InitAliment;
+  InitSeqAliT;
+  InitRationT;
+  InitLogeT;
+  InitProfilT;
+  InitSimulT;
+  InitSeqAliP;
+  InitRationP;
+  InitProfilP;
+  InitSimulP;
+end;
+
+procedure FreeData;
+begin
+  FreeMatiere;
+  FreeAliment;
+  FreeSeqAliT;
+  FreeRationT;
+  FreeLogeT;
+  FreeProfilT;
+  FreeSimulT;
+  FreeSeqAliP;
+  FreeRationP;
+  FreeProfilP;
+  FreeSimulP;
+end;
+
+procedure LoadData;
+begin
+  if (not FileExists(NFicRationP) and FileExists(NFicRationPold))
+  or (not FileExists(NFicProfilP) and FileExists(NFicProfilPold))
+  then // Conversion n�cessaire
+    if IsComplete or IsEducation
+    then // Proposer la conversion
+      ConvertData := MessageDlg(MsgConvert, mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    else // Conversion automatique (pas d'enregistrement)
+      ConvertData := True
+  else // Pas de conversion
+    ConvertData := False;
+  LoadMatiere;
+  LoadAliment;
+  LoadSeqAliT;
+  LoadRationT;
+  LoadLogeT;
+  LoadProfilT;
+  LoadSimulT;
+  LoadSeqAliP;
+  LoadRationP;
+  LoadProfilP;
+  LoadSimulP;
+end;
+
+procedure SaveData;
+begin
+  SaveMatiere;
+  SaveAliment;
+  SaveSeqAliT;
+  SaveRationT;
+  SaveLogeT;
+  SaveProfilT;
+  SaveSimulT;
+  SaveSeqAliP;
+  SaveRationP;
+  SaveProfilP;
+  SaveSimulP;
+end;
+
+// Mati�re premi�re
+
+procedure InitMatiere ;
+begin
+  ListMatiere := TList.Create ;
+  NFicMatiere := 'Matiere.rec' ;
+  NFicMatInraAfz := ExtractFilePath (Application.ExeName) + 'InraAfz.rec' ;
+end ;
+
+procedure FreeMatiere ;
+var
+  i : integer ;
+  rec : PRecMatiere ;
+begin
+  if ListMatiere.Count > 0
+  then
+    for i := 0 to ListMatiere.Count - 1 do
+    begin
+      rec := ListMatiere[i] ;
+      Dispose (rec) ;
+    end ;
+  ListMatiere.Free ;
+end ;
+
+procedure LoadMatiere ;
+var
+  i : integer ;
+  fic : file of RecMatiere ;
+  rec : PRecMatiere ;
+begin
+  // effacement de la liste avant chargement
+  if ListMatiere.Count > 0
+  then
+    for i := 0 to ListMatiere.Count - 1 do
+    begin
+      rec := ListMatiere[i] ;
+      Dispose (rec) ;
+    end ;
+  ListMatiere.Clear ;
+  // chargement des mati�res premi�res INRA-AFZ
+  NumMatInraAfz := 0 ;
+  if FileExists (NFicMatInraAfz)
+  then
+  begin
+    FileMode := fmOpenRead;
+    AssignFile (fic, NFicMatInraAfz) ;
+    Reset (fic) ;
+    while not Eof (fic) do
+    begin
+      New (rec) ;
+      Read (fic, rec^) ;
+      // Traduction
+//      rec.Nom := FInraAfz.LBNom.Items[NumMatInraAfz] ;
+//      rec.Memo := FInraAfz.LBMemo.Items[NumMatInraAfz] ;
+      ListMatiere.Add (rec) ;
+      Inc (NumMatInraAfz) ;
+    end ;
+    CloseFile (fic) ;
+    FileMode := fmOpenReadWrite;
+  end ;
+  // chargement du fichier
+  if FileExists (NFicMatiere)
+  then
+  begin
+    AssignFile (fic, NFicMatiere) ;
+    Reset (fic) ;
+    while not Eof (fic) do
+    begin
+      New (rec) ;
+      Read (fic, rec^) ;
+      ListMatiere.Add (rec) ;
+    end ;
+    CloseFile (fic) ;
+  end ;
+end ;
+
+procedure SaveMatiere ;
+var
+  i : integer ;
+  fic : file of RecMatiere ;
+  rec : PRecMatiere ;
+begin
+  if not IsComplete and not IsEducation
+  then
+    Exit ;
+  AssignFile (fic, NFicMatiere) ;
+  Rewrite (fic) ;
+  if ListMatiere.Count > NumMatInraAfz
+  then
+    for i := NumMatInraAfz to ListMatiere.Count - 1 do
+    begin
+      rec := ListMatiere[i] ;
+      Write (fic, rec^) ;
+    end ;
+  CloseFile (fic) ;
+end ;
+
+function MatiereUsed (Numero : integer) : boolean ;
+var
+  i, j : integer ;
+  ok : boolean ;
+  recAliment : PRecAliment ;
+begin
+  ok := FALSE ;
+  // Utilisation d'une mati�re premi�re dans un aliment
+  if ListAliment.Count > 0
+  then
+    for i := 0 to ListAliment.Count - 1 do
+    begin
+      recAliment := ListAliment[i] ;
+      if recAliment.MP.NbMat > 0
+      then
+        for j := 0 to recAliment.MP.NbMat - 1 do
+          if recAliment.MP.NumMat[j] = Numero
+          then
+            ok := TRUE ;
+    end ;
+  result := ok ;
+end ;
+
+function MatiereFound (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recMatiere : PRecMatiere ;
+begin
+  ok := FALSE ;
+  i := 0 ;
+  while (i < ListMatiere.Count) and not ok do
+  begin
+    recMatiere := ListMatiere[i] ;
+    if recMatiere.Num = Numero
+    then
+      ok := TRUE
+    else
+      Inc (i) ;
+  end ;
+  result := ok ;
+end ;
+
+function MatiereValid (rec : PRecMatiere) : boolean ;
+var
+  ok : boolean ;
+begin
+  ok := TRUE ;
+  with rec^ do
+    if CC.MS = 0 then ok := FALSE ;
+  result := ok ;
+end ;
+
+procedure StringsMatiere (Liste : TStrings ; TypeMatiere : Integer ;
+  IncludeInvalid, IncludeInraAfz : Boolean) ;
+var
+  i : integer ;
+  rec : PRecMatiere ;
+begin
+  Liste.Clear ;
+  if ListMatiere.Count > 0
+  then
+    for i := 0 to ListMatiere.Count - 1 do
+    begin
+      rec := ListMatiere[i] ;
+      if ((TypeMatiere = 0) or (rec.Typ = TypeMatiere))
+      and (IncludeInvalid or MatiereValid (rec))
+      and (IncludeInraAfz or (rec.Num > 0))
+//      and (IsComplete or (rec.Num <= 10))
+      then
+//        Liste.Add (rec.Nom) ;
+        if rec.Num > 0
+        then // Mati�re premi�re utilisateur
+          Liste.Add(rec.Nom)
+        else // Mati�re premi�re INRA-AFZ (traduction)
+          Liste.Add(dgettext('InraAfz', rec.Nom));
+    end ;
+end ;
+
+// Aliment
+
+procedure InitAliment ;
+begin
+  ListAliment := TList.Create ;
+  NFicAliment := 'Aliment.rec' ;
+end ;
+
+procedure FreeAliment ;
+var
+  i : integer ;
+  rec : PRecAliment ;
+begin
+  if ListAliment.Count > 0
+  then
+    for i := 0 to ListAliment.Count - 1 do
+    begin
+      rec := ListAliment[i] ;
+      Dispose (rec) ;
+    end ;
+  ListAliment.Free ;
+end ;
+
+procedure LoadAliment ;
+var
+  i : integer ;
+  fic : file of RecAliment ;
+  rec : PRecAliment ;
+begin
+  // effacement de la liste avant chargement
+  if ListAliment.Count > 0
+  then
+    for i := 0 to ListAliment.Count - 1 do
+    begin
+      rec := ListAliment[i] ;
+      Dispose (rec) ;
+    end ;
+  ListAliment.Clear ;
+  // chargement du fichier
+  if FileExists (NFicAliment)
+  then
+  begin
+    AssignFile (fic, NFicAliment) ;
+    Reset (fic) ;
+    while not Eof (fic) do
+    begin
+      New (rec) ;
+      Read (fic, rec^) ;
+      ListAliment.Add (rec) ;
+    end ;
+    CloseFile (fic) ;
+  end ;
+end ;
+
+procedure SaveAliment ;
+var
+  i : integer ;
+  fic : file of RecAliment ;
+  rec : PRecAliment ;
+begin
+  if not IsComplete and not IsEducation
+  then
+    Exit ;
+  AssignFile (fic, NFicAliment) ;
+  Rewrite (fic) ;
+  if ListAliment.Count > 0
+  then
+    for i := 0 to ListAliment.Count - 1 do
+    begin
+      rec := ListAliment[i] ;
+      Write (fic, rec^) ;
+    end ;
+  CloseFile (fic) ;
+end ;
+
+function AlimentUsed (Numero : integer) : boolean ;
+var
+  i, j : integer ;
+  ok : boolean ;
+  recSeqAliT : PRecSeqAliT ;
+  recSeqAliP : PRecSeqAliP ;
+begin
+  ok := FALSE ;
+  // Utilisation de l'aliment dans une s�quence alimentaire truie
+  if ListSeqAliT.Count > 0
+  then
+    for i := 0 to ListSeqAliT.Count - 1 do
+    begin
+      recSeqAliT := ListSeqAliT[i] ;
+      for j := 1 to recSeqAliT.NbRuleGest do
+        if (recSeqAliT.RuleGest[j].NumAli1 = Numero)
+          or (recSeqAliT.RuleGest[j].NumAli2 = Numero)
+        then
+          ok := TRUE ;
+      for j := 1 to recSeqAliT.NbRuleLact do
+        if (recSeqAliT.RuleLact[j].NumAli1 = Numero)
+          or (recSeqAliT.RuleLact[j].NumAli2 = Numero)
+        then
+          ok := TRUE ;
+      for j := 1 to recSeqAliT.NbRuleISSF do
+        if (recSeqAliT.RuleISSF[j].NumAli1 = Numero)
+          or (recSeqAliT.RuleISSF[j].NumAli2 = Numero)
+        then
+          ok := TRUE ;
+    end ;
+  // Utilisation de l'aliment dans une s�quence alimentaire porc
+  if ListSeqAliP.Count > 0
+  then
+    for i := 0 to ListSeqAliP.Count - 1 do
+    begin
+      recSeqAliP := ListSeqAliP[i] ;
+      for j := 1 to recSeqAliP.NbRule do
+        if (recSeqAliP.Rule[j].NumAli1 = Numero)
+          or (recSeqAliP.Rule[j].NumAli2 = Numero)
+        then
+          ok := TRUE ;
+    end ;
+  result := ok ;
+end ;
+
+function AlimentFound (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recAliment : PRecAliment ;
+begin
+  ok := FALSE ;
+  i := 0 ;
+  while (i < ListAliment.Count) and not ok do
+  begin
+    recAliment := ListAliment[i] ;
+    if recAliment.Num = Numero
+    then
+      ok := TRUE
+    else
+      Inc (i) ;
+  end ;
+  result := ok ;
+end ;
+
+function AlimentValid (rec : PRecAliment) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+begin
+  ok := TRUE ;
+  with rec^ do
+  begin
+    if CC.MS = 0 then ok := FALSE ;
+    if MP.NbMat > 0
+    then
+      for i := 0 to MP.NbMat - 1 do
+        if MP.NumMat[i] = 0 then ok := FALSE ;
+  end ;
+  result := ok ;
+end ;
+
+procedure StringsAliment (Liste : TStrings ; TypeAliment : Integer ;
+  IncludeInvalid : Boolean) ;
+var
+  i : integer ;
+  rec : PRecAliment ;
+begin
+  Liste.Clear ;
+  if ListAliment.Count > 0
+  then
+    for i := 0 to ListAliment.Count - 1 do
+    begin
+      rec := ListAliment[i] ;
+      if ((TypeAliment = 0) or (rec.Typ = TypeAliment))
+      and (IncludeInvalid or AlimentValid (rec))
+//      and (IsComplete or (rec.Num <= 10))
+      then
+        Liste.Add (rec.Nom) ;
+    end ;
+end ;
+
+// S�quence alimentaire truie
+
+procedure InitSeqAliT ;
+begin
+  ListSeqAliT := TList.Create ;
+  NFicSeqAliT := 'SeqAliT.rec' ;
+end ;
+
+procedure FreeSeqAliT ;
+var
+  i : integer ;
+  rec : PRecSeqAliT ;
+begin
+  if ListSeqAliT.Count > 0
+  then
+    for i := 0 to ListSeqAliT.Count - 1 do
+    begin
+      rec := ListSeqAliT[i] ;
+      Dispose (rec) ;
+    end ;
+  ListSeqAliT.Free ;
+end ;
+
+procedure LoadSeqAliT ;
+var
+  i : integer ;
+  fic : file of RecSeqAliT ;
+  rec : PRecSeqAliT ;
+begin
+  // effacement de la liste avant chargement
+  if ListSeqAliT.Count > 0
+  then
+    for i := 0 to ListSeqAliT.Count - 1 do
+    begin
+      rec := ListSeqAliT[i] ;
+      Dispose (rec) ;
+    end ;
+  ListSeqAliT.Clear ;
+  // chargement du fichier
+  if FileExists (NFicSeqAliT)
+  then
+  begin
+    AssignFile (fic, NFicSeqAliT) ;
+    Reset (fic) ;
+    while not Eof (fic) do
+    begin
+      New (rec) ;
+      Read (fic, rec^) ;
+      ListSeqAliT.Add (rec) ;
+    end ;
+    CloseFile (fic) ;
+  end ;
+end ;
+
+procedure SaveSeqAliT ;
+var
+  i : integer ;
+  fic : file of RecSeqAliT ;
+  rec : PRecSeqAliT ;
+begin
+  if not IsComplete and not IsEducation
+  then
+    Exit ;
+  AssignFile (fic, NFicSeqAliT) ;
+  Rewrite (fic) ;
+  if ListSeqAliT.Count > 0
+  then
+    for i := 0 to ListSeqAliT.Count - 1 do
+    begin
+      rec := ListSeqAliT[i] ;
+      Write (fic, rec^) ;
+    end ;
+  CloseFile (fic) ;
+end ;
+
+function SeqAliTUsed (Numero : integer) : boolean ;
+var
+  i, j : integer ;
+  ok : boolean ;
+  recProfilT : PRecProfilT ;
+  recSimulT : PRecSimulT ;
+begin
+  ok := FALSE ;
+  // Utilisation de la s�quence alimentaire dans un profil animal
+  if ListProfilT.Count > 0
+  then
+    for i := 0 to ListProfilT.Count - 1 do
+    begin
+      recProfilT := ListProfilT[i] ;
+      if recProfilT.SeqAli = Numero
+      then
+        ok := TRUE ;
+    end ;
+  // Utilisation de la s�quence alimentaire dans une simulation
+  if ListSimulT.Count > 0
+  then
+    for i := 0 to ListSimulT.Count - 1 do
+    begin
+      recSimulT := ListSimulT[i] ;
+      for j := recSimulT.StadeInit div 3 to recSimulT.StadeFin div 3 do
+        if recSimulT.SeqAli[j] = Numero
+        then
+          ok := TRUE ;
+    end ;
+  result := ok ;
+end ;
+
+function SeqAliTFound (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recSeqAliT : PRecSeqAliT ;
+begin
+  ok := FALSE ;
+  i := 0 ;
+  while (i < ListSeqAliT.Count) and not ok do
+  begin
+    recSeqAliT := ListSeqAliT[i] ;
+    if recSeqAliT.Num = Numero
+    then
+      ok := TRUE
+    else
+      Inc (i) ;
+  end ;
+  result := ok ;
+end ;
+
+function SeqAliTValid (rec : PRecSeqAliT) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+begin
+  ok := TRUE ;
+  with rec^ do
+  begin
+    for i := 1 to NbRuleGest do
+      if RuleGest[i].NumAli1 = -1
+      then
+        ok := FALSE
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (RuleGest[i].NumAli1))] ;
+        if not AlimentValid (PAliment) then ok := FALSE ;
+      end ;
+    for i := 1 to NbRuleLact do
+      if RuleLact[i].NumAli1 = -1
+      then
+        ok := FALSE
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (RuleLact[i].NumAli1))] ;
+        if not AlimentValid (PAliment) then ok := FALSE ;
+      end ;
+    for i := 1 to NbRuleISSF do
+      if RuleISSF[i].NumAli1 = -1
+      then
+        ok := FALSE
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (RuleISSF[i].NumAli1))] ;
+        if not AlimentValid (PAliment) then ok := FALSE ;
+      end ;
+  end ;
+  result := ok ;
+end ;
+
+procedure StringsSeqAliT (Liste : TStrings ; IncludeInvalid : Boolean) ;
+var
+  i : integer ;
+  rec : PRecSeqAliT ;
+begin
+  Liste.Clear ;
+  if ListSeqAliT.Count > 0
+  then
+    for i := 0 to ListSeqAliT.Count - 1 do
+    begin
+      rec := ListSeqAliT[i] ;
+      if (IncludeInvalid or SeqAliTValid (rec))
+//      and (IsComplete or (rec.Num <= 5))
+      then
+        Liste.Add (rec.Nom) ;
+    end ;
+end ;
+
+// Plan de rationnement truie
+
+procedure InitRationT ;
+begin
+  ListRationT := TList.Create ;
+  NFicRationT := 'RationT.rec' ;
+end ;
+
+procedure FreeRationT ;
+var
+  i : integer ;
+  rec : PRecRationT ;
+begin
+  if ListRationT.Count > 0
+  then
+    for i := 0 to ListRationT.Count - 1 do
+    begin
+      rec := ListRationT[i] ;
+      Dispose (rec) ;
+    end ;
+  ListRationT.Free ;
+end ;
+
+procedure LoadRationT ;
+var
+  i : integer ;
+  fic : file of RecRationT ;
+  rec : PRecRationT ;
+begin
+  // effacement de la liste avant chargement
+  if ListRationT.Count > 0
+  then
+    for i := 0 to ListRationT.Count - 1 do
+    begin
+      rec := ListRationT[i] ;
+      Dispose (rec) ;
+    end ;
+  ListRationT.Clear ;
+  // chargement du fichier
+  if FileExists (NFicRationT)
+  then
+  begin
+    AssignFile (fic, NFicRationT) ;
+    Reset (fic) ;
+    while not Eof (fic) do
+    begin
+      New (rec) ;
+      Read (fic, rec^) ;
+      ListRationT.Add (rec) ;
+    end ;
+    CloseFile (fic) ;
+  end ;
+end ;
+
+procedure SaveRationT ;
+var
+  i : integer ;
+  fic : file of RecRationT ;
+  rec : PRecRationT ;
+begin
+  if not IsComplete and not IsEducation
+  then
+    Exit ;
+  AssignFile (fic, NFicRationT) ;
+  Rewrite (fic) ;
+  if ListRationT.Count > 0
+  then
+    for i := 0 to ListRationT.Count - 1 do
+    begin
+      rec := ListRationT[i] ;
+      Write (fic, rec^) ;
+    end ;
+  CloseFile (fic) ;
+end ;
+
+function RationTUsed (Numero : integer) : boolean ;
+var
+  i, j : integer ;
+  ok : boolean ;
+  recSimulT : PRecSimulT ;
+begin
+  ok := FALSE ;
+  // Utilisation du plan de rationnement dans une simulation
+  if ListSimulT.Count > 0
+  then
+    for i := 0 to ListSimulT.Count - 1 do
+    begin
+      recSimulT := ListSimulT[i] ;
+      for j := recSimulT.StadeInit div 3 to recSimulT.StadeFin div 3 do
+        if recSimulT.Ration[j] = Numero
+        then
+          ok := TRUE ;
+    end ;
+  result := ok ;
+end ;
+
+function RationTFound (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recRationT : PRecRationT ;
+begin
+  ok := FALSE ;
+  i := 0 ;
+  while (i < ListRationT.Count) and not ok do
+  begin
+    recRationT := ListRationT[i] ;
+    if recRationT.Num = Numero
+    then
+      ok := TRUE
+    else
+      Inc (i) ;
+  end ;
+  result := ok ;
+end ;
+
+function RationTValid (rec : PRecRationT) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+begin
+  ok := TRUE ;
+  with rec^ do
+  begin
+    for i := 1 to NbRuleGest do
+      if RuleGest[i].a = 0 then ok := FALSE ;
+    for i := 1 to NbRuleLact do
+      case RuleLact[i].Equation of
+        1 : // Lin�aire
+        begin
+          if RuleLact[i].a = 0 then ok := FALSE ;
+          if RuleLact[i].b = 0 then ok := FALSE ;
+        end ;
+        2 : // Lin�aire-plateau
+        begin
+          if RuleLact[i].a = 0 then ok := FALSE ;
+          if RuleLact[i].b = 0 then ok := FALSE ;
+          if RuleLact[i].c <= RuleLact[i].a then ok := FALSE ;
+        end ;
+        3 : // Curvilin�aire
+        begin
+          if RuleLact[i].a = 0 then ok := FALSE ;
+          if RuleLact[i].c <= RuleLact[i].a then ok := FALSE ;
+        end ;
+        else // Constant
+          if RuleLact[i].a = 0 then ok := FALSE ;
+      end ;
+    for i := 1 to NbRuleISSF do
+      if RuleISSF[i].a = 0 then ok := FALSE ;
+  end ;
+  result := ok ;
+end ;
+
+procedure StringsRationT (Liste : TStrings ; IncludeInvalid : Boolean) ;
+var
+  i : integer ;
+  rec : PRecRationT ;
+begin
+  Liste.Clear ;
+  if ListRationT.Count > 0
+  then
+    for i := 0 to ListRationT.Count - 1 do
+    begin
+      rec := ListRationT[i] ;
+      if (IncludeInvalid or RationTValid (rec))
+//      and (IsComplete or (rec.Num <= 5))
+      then
+        Liste.Add (rec.Nom) ;
+    end ;
+end ;
+
+// Logement truie
+
+procedure InitLogeT ;
+begin
+  ListLogeT := TList.Create ;
+  NFicLogeT := 'LogeT.rec' ;
+end ;
+
+procedure FreeLogeT ;
+var
+  i : integer ;
+  rec : PRecLogeT ;
+begin
+  if ListLogeT.Count > 0
+  then
+    for i := 0 to ListLogeT.Count - 1 do
+    begin
+      rec := ListLogeT[i] ;
+      Dispose (rec) ;
+    end ;
+  ListLogeT.Free ;
+end ;
+
+procedure LoadLogeT ;
+var
+  i : integer ;
+  fic : file of RecLogeT ;
+  rec : PRecLogeT ;
+begin
+  // effacement de la liste avant chargement
+  if ListLogeT.Count > 0
+  then
+    for i := 0 to ListLogeT.Count - 1 do
+    begin
+      rec := ListLogeT[i] ;
+      Dispose (rec) ;
+    end ;
+  ListLogeT.Clear ;
+  // chargement du fichier
+  if FileExists (NFicLogeT)
+  then
+  begin
+    AssignFile (fic, NFicLogeT) ;
+    Reset (fic) ;
+    while not Eof (fic) do
+    begin
+      New (rec) ;
+      Read (fic, rec^) ;
+      ListLogeT.Add (rec) ;
+    end ;
+    CloseFile (fic) ;
+  end ;
+end ;
+
+procedure SaveLogeT ;
+var
+  i : integer ;
+  fic : file of RecLogeT ;
+  rec : PRecLogeT ;
+begin
+  if not IsComplete and not IsEducation
+  then
+    Exit ;
+  AssignFile (fic, NFicLogeT) ;
+  Rewrite (fic) ;
+  if ListLogeT.Count > 0
+  then
+    for i := 0 to ListLogeT.Count - 1 do
+    begin
+      rec := ListLogeT[i] ;
+      Write (fic, rec^) ;
+    end ;
+  CloseFile (fic) ;
+end ;
+
+function LogeTUsed (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recProfilT : PRecProfilT ;
+  recSimulT : PRecSimulT ;
+begin
+  ok := FALSE ;
+  // Utilisation du logement dans un profil animal
+  if ListProfilT.Count > 0
+  then
+    for i := 0 to ListProfilT.Count - 1 do
+    begin
+      recProfilT := ListProfilT[i] ;
+      if recProfilT.Loge = Numero
+      then
+        ok := TRUE ;
+    end ;
+  // Utilisation du logement dans une simulation
+  if ListSimulT.Count > 0
+  then
+    for i := 0 to ListSimulT.Count - 1 do
+    begin
+      recSimulT := ListSimulT[i] ;
+      if recSimulT.Logement = Numero
+      then
+        ok := TRUE ;
+    end ;
+  result := ok ;
+end ;
+
+function LogeTFound (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recLogeT : PRecLogeT ;
+begin
+  ok := FALSE ;
+  i := 0 ;
+  while (i < ListLogeT.Count) and not ok do
+  begin
+    recLogeT := ListLogeT[i] ;
+    if recLogeT.Num = Numero
+    then
+      ok := TRUE
+    else
+      Inc (i) ;
+  end ;
+  result := ok ;
+end ;
+
+function LogeTValid (rec : PRecLogeT) : boolean ;
+begin
+  result := TRUE ;
+end ;
+
+procedure StringsLogeT (Liste : TStrings ; IncludeInvalid : Boolean) ;
+var
+  i : integer ;
+  rec : PRecLogeT ;
+begin
+  Liste.Clear ;
+  if ListLogeT.Count > 0
+  then
+    for i := 0 to ListLogeT.Count - 1 do
+    begin
+      rec := ListLogeT[i] ;
+      if (IncludeInvalid or LogeTValid (rec))
+//      and (IsComplete or (rec.Num <= 5))
+      then
+        Liste.Add (rec.Nom) ;
+    end ;
+end ;
+
+// Profil truie
+
+procedure InitProfilT ;
+begin
+  ListProfilT := TList.Create ;
+  NFicProfilT := 'ProfilT.rec' ;
+end ;
+
+procedure FreeProfilT ;
+var
+  i : integer ;
+  rec : PRecProfilT ;
+begin
+  if ListProfilT.Count > 0
+  then
+    for i := 0 to ListProfilT.Count - 1 do
+    begin
+      rec := ListProfilT[i] ;
+      Dispose (rec) ;
+    end ;
+  ListProfilT.Free ;
+end ;
+
+procedure LoadProfilT ;
+var
+  i : integer ;
+  fic : file of RecProfilT ;
+  rec : PRecProfilT ;
+begin
+  // effacement de la liste avant chargement
+  if ListProfilT.Count > 0
+  then
+    for i := 0 to ListProfilT.Count - 1 do
+    begin
+      rec := ListProfilT[i] ;
+      Dispose (rec) ;
+    end ;
+  ListProfilT.Clear ;
+  // chargement du fichier
+  if FileExists (NFicProfilT)
+  then
+  begin
+    AssignFile (fic, NFicProfilT) ;
+    Reset (fic) ;
+    while not Eof (fic) do
+    begin
+      New (rec) ;
+      Read (fic, rec^) ;
+      ListProfilT.Add (rec) ;
+    end ;
+    CloseFile (fic) ;
+  end ;
+end ;
+
+procedure SaveProfilT ;
+var
+  i : integer ;
+  fic : file of RecProfilT ;
+  rec : PRecProfilT ;
+begin
+  if not IsComplete and not IsEducation
+  then
+    Exit ;
+  AssignFile (fic, NFicProfilT) ;
+  Rewrite (fic) ;
+  if ListProfilT.Count > 0
+  then
+    for i := 0 to ListProfilT.Count - 1 do
+    begin
+      rec := ListProfilT[i] ;
+      Write (fic, rec^) ;
+    end ;
+  CloseFile (fic) ;
+end ;
+
+function ProfilTUsed (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recSimulT : PRecSimulT ;
+begin
+  ok := FALSE ;
+  // Utilisation du profil dans une simulation
+  if ListSimulT.Count > 0
+  then
+    for i := 0 to ListSimulT.Count - 1 do
+    begin
+      recSimulT := ListSimulT[i] ;
+      if recSimulT.Profil = Numero
+      then
+        ok := TRUE ;
+    end ;
+  result := ok ;
+end ;
+
+function ProfilTFound (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recProfilT : PRecProfilT ;
+begin
+  ok := FALSE ;
+  i := 0 ;
+  while (i < ListProfilT.Count) and not ok do
+  begin
+    recProfilT := ListProfilT[i] ;
+    if recProfilT.Num = Numero
+    then
+      ok := TRUE
+    else
+      Inc (i) ;
+  end ;
+  result := ok ;
+end ;
+
+function ProfilTValid (rec : PRecProfilT) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+begin
+  ok := TRUE ;
+  with rec^ do
+  begin
+    if Truies[1].AgeSail = 0 then ok := FALSE ;
+    for i := 2 to NB_CYCLES do
+      if Truies[i].AgeSail <= Truies[i - 1].AgeSail + DureeGest + DureeLact
+      then ok := FALSE ;
+    for i := 1 to NB_CYCLES do
+    begin
+      with Truies[i] do
+      begin
+        if PdsSail = 0 then ok := FALSE ;
+        if P2Sail = 0 then ok := FALSE ;
+        if PdsAvMB <= PdsApMB then ok := FALSE ;
+        if PdsApMB <= PdsSail then ok := FALSE ;
+        if P2MB <= P2Sail then ok := FALSE ;
+      end ;
+      with Porcelets[i] do
+      begin
+        if NesTotaux < NesVivants then ok := FALSE ;
+        if NesVivants < Sevres then ok := FALSE ;
+        if Sevres = 0 then ok := FALSE ;
+        if PdsNais = 0 then ok := FALSE ;
+        if PdsSev <= PdsNais then ok := FALSE ;
+      end ;
+      if Gest[i] = 0 then ok := FALSE ;
+      if Lact[i] = 0 then ok := FALSE ;
+    end ;
+    if SeqAli = -1
+    then
+      ok := FALSE
+    else
+    begin
+      PSeqAliT := ListSeqAliT[FindIdxSeqAliT (FindNomSeqAliT (SeqAli))] ;
+      if not SeqAliTValid (PSeqAliT) then ok := FALSE ;
+    end ;
+    if Loge = -1
+    then
+      ok := FALSE
+    else
+    begin
+      PLogeT := ListLogeT[FindIdxLogeT (FindNomLogeT (Loge))] ;
+      if not LogeTValid (PLogeT) then ok := FALSE ;
+    end ;
+  end ;
+  result := ok ;
+end ;
+
+procedure StringsProfilT (Liste : TStrings ; IncludeInvalid : Boolean) ;
+var
+  i : integer ;
+  rec : PRecProfilT ;
+begin
+  Liste.Clear ;
+  if ListProfilT.Count > 0
+  then
+    for i := 0 to ListProfilT.Count - 1 do
+    begin
+      rec := ListProfilT[i] ;
+      if (IncludeInvalid or ProfilTValid (rec))
+//      and (IsComplete or (rec.Num <= 5))
+      then
+        Liste.Add (rec.Nom) ;
+    end ;
+end ;
+
+// Simulation truie
+
+procedure InitSimulT ;
+begin
+  ListSimulT := TList.Create ;
+  NFicSimulT := 'SimulT.rec' ;
+end ;
+
+procedure FreeSimulT ;
+var
+  i : integer ;
+  rec : PRecSimulT ;
+begin
+  if ListSimulT.Count > 0
+  then
+    for i := 0 to ListSimulT.Count - 1 do
+    begin
+      rec := ListSimulT[i] ;
+      Dispose (rec) ;
+    end ;
+  ListSimulT.Free ;
+end ;
+
+procedure LoadSimulT ;
+var
+  i : integer ;
+  fic : file of RecSimulT ;
+  rec : PRecSimulT ;
+begin
+  // effacement de la liste avant chargement
+  if ListSimulT.Count > 0
+  then
+    for i := 0 to ListSimulT.Count - 1 do
+    begin
+      rec := ListSimulT[i] ;
+      Dispose (rec) ;
+    end ;
+  ListSimulT.Clear ;
+  // chargement du fichier
+  if FileExists (NFicSimulT)
+  then
+  begin
+    AssignFile (fic, NFicSimulT) ;
+    Reset (fic) ;
+    while not Eof (fic) do
+    begin
+      New (rec) ;
+      Read (fic, rec^) ;
+      ListSimulT.Add (rec) ;
+    end ;
+    CloseFile (fic) ;
+  end ;
+end ;
+
+procedure SaveSimulT ;
+var
+  i : integer ;
+  fic : file of RecSimulT ;
+  rec : PRecSimulT ;
+begin
+  if not IsComplete and not IsEducation
+  then
+    Exit ;
+  AssignFile (fic, NFicSimulT) ;
+  Rewrite (fic) ;
+  if ListSimulT.Count > 0
+  then
+    for i := 0 to ListSimulT.Count - 1 do
+    begin
+      rec := ListSimulT[i] ;
+      Write (fic, rec^) ;
+    end ;
+  CloseFile (fic) ;
+end ;
+
+function SimulTValid (rec : PRecSimulT) : boolean ;
+var
+  ok : boolean ;
+begin
+  ok := TRUE ;
+  with rec^ do
+  begin
+    if Profil = -1
+    then
+      ok := FALSE
+    else
+    begin
+      PProfilT := ListProfilT[FindIdxProfilT (FindNomProfilT (Profil))] ;
+      if not ProfilTValid (PProfilT) then ok := FALSE ;
+    end ;
+    if Logement = -1
+    then
+      ok := FALSE
+    else
+    begin
+      PLogeT := ListLogeT[FindIdxLogeT (FindNomLogeT (Logement))] ;
+      if not LogeTValid (PLogeT) then ok := FALSE ;
+    end ;
+  end ;
+  result := ok ;
+end ;
+
+procedure StringsSimulT (Liste : TStrings ; IncludeInvalid : Boolean) ;
+var
+  i : integer ;
+  rec : PRecSimulT ;
+begin
+  Liste.Clear ;
+  if ListSimulT.Count > 0
+  then
+    for i := 0 to ListSimulT.Count - 1 do
+    begin
+      rec := ListSimulT[i] ;
+      if (IncludeInvalid or SimulTValid (rec))
+//      and (IsComplete or (rec.Num <= 5))
+      then
+        Liste.Add (rec.Nom) ;
+    end ;
+end ;
+
+// S�quence alimentaire porc
+
+procedure InitSeqAliP ;
+begin
+  ListSeqAliP := TList.Create ;
+  NFicSeqAliP := 'SeqAliP.rec' ;
+end ;
+
+procedure FreeSeqAliP ;
+var
+  i : integer ;
+  rec : PRecSeqAliP ;
+begin
+  if ListSeqAliP.Count > 0
+  then
+    for i := 0 to ListSeqAliP.Count - 1 do
+    begin
+      rec := ListSeqAliP[i] ;
+      Dispose (rec) ;
+    end ;
+  ListSeqAliP.Free ;
+end ;
+
+procedure LoadSeqAliP ;
+var
+  i : integer ;
+  fic : file of RecSeqAliP ;
+  rec : PRecSeqAliP ;
+begin
+  // effacement de la liste avant chargement
+  if ListSeqAliP.Count > 0
+  then
+    for i := 0 to ListSeqAliP.Count - 1 do
+    begin
+      rec := ListSeqAliP[i] ;
+      Dispose (rec) ;
+    end ;
+  ListSeqAliP.Clear ;
+  // chargement du fichier
+  if FileExists (NFicSeqAliP)
+  then
+  begin
+    AssignFile (fic, NFicSeqAliP) ;
+    Reset (fic) ;
+    while not Eof (fic) do
+    begin
+      New (rec) ;
+      Read (fic, rec^) ;
+      ListSeqAliP.Add (rec) ;
+    end ;
+    CloseFile (fic) ;
+  end ;
+end ;
+
+procedure SaveSeqAliP ;
+var
+  i : integer ;
+  fic : file of RecSeqAliP ;
+  rec : PRecSeqAliP ;
+begin
+  if not IsComplete and not IsEducation
+  then
+    Exit ;
+  AssignFile (fic, NFicSeqAliP) ;
+  Rewrite (fic) ;
+  if ListSeqAliP.Count > 0
+  then
+    for i := 0 to ListSeqAliP.Count - 1 do
+    begin
+      rec := ListSeqAliP[i] ;
+      Write (fic, rec^) ;
+    end ;
+  CloseFile (fic) ;
+end ;
+
+function SeqAliPUsed (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recProfilP : PRecProfilP ;
+  recSimulP : PRecSimulP ;
+begin
+  ok := FALSE ;
+  // Utilisation de la s�quence alimentaire dans un profil animal
+  if ListProfilP.Count > 0
+  then
+    for i := 0 to ListProfilP.Count - 1 do
+    begin
+      recProfilP := ListProfilP[i] ;
+      if recProfilP.SeqAli = Numero
+      then
+        ok := TRUE ;
+    end ;
+  // Utilisation de la s�quence alimentaire dans une simulation
+  if ListSimulP.Count > 0
+  then
+    for i := 0 to ListSimulP.Count - 1 do
+    begin
+      recSimulP := ListSimulP[i] ;
+      if recSimulP.SeqAli = Numero
+      then
+        ok := TRUE ;
+    end ;
+  result := ok ;
+end ;
+
+function SeqAliPFound (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recSeqAliP : PRecSeqAliP ;
+begin
+  ok := FALSE ;
+  i := 0 ;
+  while (i < ListSeqAliP.Count) and not ok do
+  begin
+    recSeqAliP := ListSeqAliP[i] ;
+    if recSeqAliP.Num = Numero
+    then
+      ok := TRUE
+    else
+      Inc (i) ;
+  end ;
+  result := ok ;
+end ;
+
+function SeqAliPValid (rec : PRecSeqAliP) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+begin
+  ok := TRUE ;
+  with rec^ do
+    for i := 1 to NbRule do
+      if Rule[i].NumAli1 = -1
+      then
+        ok := FALSE
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (Rule[i].NumAli1))] ;
+        if not AlimentValid (PAliment) then ok := FALSE ;
+      end ;
+  result := ok ;
+end ;
+
+procedure StringsSeqAliP (Liste : TStrings ; IncludeInvalid : Boolean) ;
+var
+  i : integer ;
+  rec : PRecSeqAliP ;
+begin
+  Liste.Clear ;
+  if ListSeqAliP.Count > 0
+  then
+    for i := 0 to ListSeqAliP.Count - 1 do
+    begin
+      rec := ListSeqAliP[i] ;
+      if (IncludeInvalid or SeqAliPValid (rec))
+//      and (IsComplete or (rec.Num <= 5))
+      then
+        Liste.Add (rec.Nom) ;
+    end ;
+end ;
+
+// Plan de rationnement porc
+
+procedure InitRationP ;
+begin
+  NFicRationPold := 'RationP.rec' ;
+  ListRationP := TList.Create ;
+  NFicRationP := 'RationP2.rec' ;
+end ;
+
+procedure FreeRationP ;
+var
+  i : integer ;
+  rec : PRecRationP ;
+begin
+  if ListRationP.Count > 0
+  then
+    for i := 0 to ListRationP.Count - 1 do
+    begin
+      rec := ListRationP[i] ;
+      Dispose (rec) ;
+    end ;
+  ListRationP.Free ;
+end ;
+
+procedure ConvertRationP2;
+var
+  i: integer;
+  oldfic: file of RecRationPold;
+  oldrec: PRecRationPold;
+  newfic: file of RecRationP;
+  newrec: PRecRationP;
+begin
+  AssignFile(oldfic, NFicRationPold);
+  Reset(oldfic);
+  New(oldrec);
+  while not Eof(oldfic) do
+  begin
+    Read(oldfic, oldrec^);
+    New(newrec);
+    newrec.Num := oldrec.Num;
+    newrec.Nom := oldrec.Nom;
+    newrec.Memo := oldrec.Memo;
+    newrec.NbRule := oldrec.NbRule;
+    for i := 1 to MAX_RULE do
+    begin
+      newrec.Rule[i].ModeFin := oldrec.Rule[i].ModeFin;
+      newrec.Rule[i].ValFin := oldrec.Rule[i].ValFin;
+      newrec.Rule[i].Gaspillage := 0;
+      case oldrec.Rule[i].Equation of
+        2..5: // f(poids vif)
+          newrec.Rule[i].RuleType := 3;
+        6..8: // f(dur�e)
+          newrec.Rule[i].RuleType := 2;
+        9: // % Ad libitum
+          newrec.Rule[i].RuleType := 0;
+        else // Ad libitum ou Constant
+          newrec.Rule[i].RuleType := oldrec.Rule[i].Equation;
+      end;
+      newrec.Rule[i].Unite := oldrec.Rule[i].Unite;
+      if newrec.Rule[i].RuleType = 2
+      then // f(dur�e)
+        newrec.Rule[i].EqDuree := oldrec.Rule[i].Equation - 7
+      else
+        newrec.Rule[i].EqDuree := -1;
+      if newrec.Rule[i].RuleType = 3
+      then // f(poids vif)
+        newrec.Rule[i].EqPV := oldrec.Rule[i].Equation - 3
+      else
+        newrec.Rule[i].EqPV := -1;
+      // Valeurs par d�faut
+      newrec.Rule[i].Percent := 1;
+      newrec.Rule[i].Quantity := 0;
+      newrec.Rule[i].aDuree := 0;
+      newrec.Rule[i].bDuree := 0;
+      newrec.Rule[i].aPV := 0;
+      newrec.Rule[i].bPV := 0;
+      // Valeurs utilis�es
+      case oldrec.Rule[i].Equation of
+        1: // Constant
+          newrec.Rule[i].Quantity := oldrec.Rule[i].a;
+        3..5: // f(poids vif)
+        begin
+          newrec.Rule[i].aPV := oldrec.Rule[i].a;
+          newrec.Rule[i].bPV := oldrec.Rule[i].b;
+        end;
+        7..8: // f(dur�e)
+        begin
+          newrec.Rule[i].aDuree := oldrec.Rule[i].a;
+          newrec.Rule[i].bDuree := oldrec.Rule[i].b;
+        end;
+        9: // % Ad libitum
+          newrec.Rule[i].Percent := oldrec.Rule[i].a;
+      end;
+    end ;
+    ListRationP.Add(newrec);
+  end;
+  CloseFile(oldfic);
+  if not IsComplete and not IsEducation
+  then
+    Exit;
+//  RenameFile(NFicRationPold, 'RationP.old');
+//  DeleteFile(NFicRationPold);
+  AssignFile(newfic, NFicRationP);
+  Rewrite(newfic);
+  if ListRationP.Count > 0
+  then
+    for i := 0 to ListRationP.Count - 1 do
+    begin
+      newrec := ListRationP[i];
+      Write(newfic, newrec^);
+    end;
+  CloseFile(newfic);
+end;
+
+procedure LoadRationP ;
+var
+  i : integer ;
+  fic : file of RecRationP ;
+  rec : PRecRationP ;
+begin
+  // effacement de la liste avant chargement
+  if ListRationP.Count > 0
+  then
+    for i := 0 to ListRationP.Count - 1 do
+    begin
+      rec := ListRationP[i] ;
+      Dispose (rec) ;
+    end ;
+  ListRationP.Clear ;
+  if not FileExists(NFicRationP) and FileExists(NFicRationPold) and ConvertData
+  then // Conversion
+    ConvertRationP2
+  else // chargement du fichier
+    if FileExists (NFicRationP)
+    then
+    begin
+      AssignFile (fic, NFicRationP) ;
+      Reset (fic) ;
+      while not Eof (fic) do
+      begin
+        New (rec) ;
+        Read (fic, rec^) ;
+        ListRationP.Add (rec) ;
+      end ;
+      CloseFile (fic) ;
+    end ;
+end ;
+
+procedure SaveRationP ;
+var
+  i : integer ;
+  fic : file of RecRationP ;
+  rec : PRecRationP ;
+begin
+  if not IsComplete and not IsEducation
+  then
+    Exit ;
+  AssignFile (fic, NFicRationP) ;
+  Rewrite (fic) ;
+  if ListRationP.Count > 0
+  then
+    for i := 0 to ListRationP.Count - 1 do
+    begin
+      rec := ListRationP[i] ;
+      Write (fic, rec^) ;
+    end ;
+  CloseFile (fic) ;
+end ;
+
+function RationPUsed (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recProfilP : PRecProfilP ;
+  recSimulP : PRecSimulP ;
+begin
+  ok := FALSE ;
+  // Utilisation du plan de rationnement dans un profil animal
+  if ListProfilP.Count > 0
+  then
+    for i := 0 to ListProfilP.Count - 1 do
+    begin
+      recProfilP := ListProfilP[i] ;
+      if recProfilP.Ration = Numero
+      then
+        ok := TRUE ;
+    end ;
+  // Utilisation du plan de rationnement dans une simulation
+  if ListSimulP.Count > 0
+  then
+    for i := 0 to ListSimulP.Count - 1 do
+    begin
+      recSimulP := ListSimulP[i] ;
+      if recSimulP.Ration = Numero
+      then
+        ok := TRUE ;
+    end ;
+  result := ok ;
+end ;
+
+function RationPFound (Numero : integer) : boolean ;
+var
+  i : integer ;
+  ok : boolean ;
+  recRationP : PRecRationP ;
+begin
+  ok := FALSE ;
+  i := 0 ;
+  while (i < ListRationP.Count) and not ok do
+  begin
+    recRationP := ListRationP[i] ;
+    if recRationP.Num = Numero
+    then
+      ok := TRUE
+    else
+      Inc (i) ;
+  end ;
+  result := ok ;
+end ;
+
+function RationPValid(rec: PRecRationP): boolean;
+var
+  i: integer;
+  ok: boolean;
+begin
+  ok := True;
+  with rec^ do
+    for i := 1 to NbRule do
+      with Rule[i] do
+      begin
+        if (ModeFin = -1) and (i < NbRule) then ok := False;
+        case RuleType of
+          0: // % AdLib
+            if Percent <= 0 then ok := False;
+          1: // Constant
+          begin
+            if Unite = -1 then ok := False;
+            if Quantity <= 0 then ok := False;
+          end;
+          2: // f(dur�e)
+          begin
+            if Unite = -1 then ok := False;
+            if EqDuree = -1 then ok := False;
+            if aDuree <= 0 then ok := False;
+            if bDuree <= 0 then ok := False;
+          end;
+          3: // f(poids vif)
+          begin
+            if Unite = -1 then ok := False;
+            case EqPV of
+              0: // Mod�le lin�aire
+              begin
+                if bPV <= 0 then ok := False;
+              end;
+              1: // Mod�le puissance
+              begin
+                if aPV <= 0 then ok := False;
+                if bPV <= 0 then ok := False;
+              end;
+              2: // Mod�le exponentiel
+              begin
+                if aPV <= 0 then ok := False;
+                if bPV <= 0 then ok := False;
+              end;
+              else
+                ok := False;
+            end;
+          end;
+          else
+            ok := False;
+        end;
+      end;
+  result := ok;
+end;
+
+procedure StringsRationP (Liste : TStrings ; IncludeInvalid : Boolean) ;
+var
+  i : integer ;
+  rec : PRecRationP ;
+begin
+  Liste.Clear ;
+  if ListRationP.Count > 0
+  then
+    for i := 0 to ListRationP.Count - 1 do
+    begin
+      rec := ListRationP[i] ;
+      if (IncludeInvalid or RationPValid (rec))
+//      and (IsComplete or (rec.Num <= 5))
+      then
+        Liste.Add (rec.Nom) ;
+    end ;
+end ;
+
+// Profil porc
+
+procedure InitProfilP;
+begin
+  NFicProfilPold := 'ProfilP.rec';
+  ListProfilP := TList.Create;
+  NFicProfilP := 'ProfilP2.rec';
+end;
+
+procedure FreeProfilP;
+var
+  i: integer;
+  rec: PRecProfilP;
+begin
+  if ListProfilP.Count > 0
+  then
+    for i := 0 to ListProfilP.Count - 1 do
+    begin
+      rec := ListProfilP[i];
+      Dispose(rec);
+    end;
+  ListProfilP.Free;
+end;
+
+procedure ConvertProfilP2;
+var
+  i: integer;
+  oldfic: file of RecProfilPold;
+  oldrec: PRecProfilPold;
+  newfic: file of RecProfilP;
+  newrec: PRecProfilP;
+begin
+  AssignFile(oldfic, NFicProfilPold);
+  Reset(oldfic);
+  New(oldrec);
+  while not Eof(oldfic) do
+  begin
+    Read(oldfic, oldrec^);
+    New(newrec);
+    newrec.Num := oldrec.Num;
+    newrec.Nom := oldrec.Nom;
+    newrec.Memo := oldrec.Memo;
+    newrec.Sexe := -1;
+    // Conditions d'�levage
+    newrec.SeqAli := oldrec.SeqAli ;
+    newrec.Ration := -1;
+    newrec.AgeInit := oldrec.AgeInit ;
+    newrec.PVInit := oldrec.PVInit ;
+    newrec.ProtInit := oldrec.ProtInit;
+    newrec.LipInit := oldrec.LipInit;
+    newrec.ModeFin := oldrec.ModeFin ;
+    newrec.Duree := oldrec.Duree ;
+    newrec.PVFin := oldrec.PVFin ;
+    newrec.Carcasse := oldrec.Carcasse ;
+    // Consommation et performances ad libitum
+    newrec.Unite := oldrec.Unite ;
+    newrec.Equation := oldrec.Equation ;
+    newrec.a := oldrec.a;
+    newrec.b := oldrec.b;
+    newrec.PDMoy := oldrec.PDMoy ;
+    newrec.BGompertz := oldrec.BGompertz ;
+    newrec.Entretien := oldrec.Entretien ;
+    // R�ponse � une restriction alimentaire
+    newrec.PVmr2 := oldrec.PVmr2 ;
+    ListProfilP.Add(newrec);
+  end;
+  CloseFile(oldfic);
+  if not IsComplete and not IsEducation
+  then
+    Exit;
+//  RenameFile(NFicProfilPold, 'ProfilP.old');
+//  DeleteFile(NFicProfilPold);
+  AssignFile(newfic, NFicProfilP);
+  Rewrite(newfic);
+  if ListProfilP.Count > 0
+  then
+    for i := 0 to ListProfilP.Count - 1 do
+    begin
+      newrec := ListProfilP[i];
+      Write(newfic, newrec^);
+    end;
+  CloseFile(newfic);
+end;
+
+procedure LoadProfilP;
+var
+  i: integer;
+  fic: file of RecProfilP;
+  rec: PRecPRofilP;
+begin
+  // effacement de la liste avant chargement
+  if ListProfilP.Count > 0
+  then
+    for i := 0 to ListProfilP.Count - 1 do
+    begin
+      rec := ListProfilP[i];
+      Dispose(rec);
+    end ;
+  ListProfilP.Clear;
+  if not FileExists(NFicProfilP) and FileExists(NFicProfilPold) and ConvertData
+  then // Conversion
+    ConvertProfilP2
+  else // chargement du fichier
+    if FileExists(NFicProfilP)
+    then
+    begin
+      AssignFile(fic, NFicProfilP);
+      Reset(fic);
+      while not Eof(fic) do
+      begin
+        New(rec);
+        Read(fic, rec^);
+        ListProfilP.Add(rec);
+      end;
+      CloseFile(fic);
+    end;
+end;
+
+procedure SaveProfilP;
+var
+  i: integer;
+  fic: file of RecProfilP;
+  rec: PRecProfilP;
+begin
+  if not IsComplete and not IsEducation
+  then
+    Exit;
+  AssignFile(fic, NFicProfilP);
+  Rewrite(fic);
+  if ListProfilP.Count > 0
+  then
+    for i := 0 to ListProfilP.Count - 1 do
+    begin
+      rec := ListProfilP[i];
+      Write(fic, rec^);
+    end;
+  CloseFile(fic);
+end;
+
+function ProfilPUsed(Numero: integer): boolean;
+var
+  i: integer;
+  ok: boolean;
+  recSimulP: PRecSimulP;
+begin
+  ok := False;
+  // Utilisation du profil dans une simulation
+  if ListSimulP.Count > 0
+  then
+    for i := 0 to ListSimulP.Count - 1 do
+    begin
+      recSimulP := ListSimulP[i];
+      if recSimulP.Profil = Numero
+      then
+        ok := True;
+    end;
+  result := ok;
+end;
+
+function ProfilPFound(Numero: integer): boolean;
+var
+  i: integer;
+  ok: boolean;
+  recProfilP: PRecProfilP;
+begin
+  ok := False;
+  i := 0;
+  while (i < ListProfilP.Count) and not ok do
+  begin
+    recProfilP := ListProfilP[i];
+    if recProfilP.Num = Numero
+    then
+      ok := True
+    else
+      Inc(i);
+  end ;
+  result := ok;
+end;
+
+function ProfilPValid(rec: PRecProfilP): boolean;
+var
+  ok: boolean;
+  T1, T2: Double;
+begin
+  ok := True;
+  with rec^ do
+  begin
+    {
+    if SeqAli = -1
+    then
+      ok := False
+    else
+    begin
+      PSeqAliP := ListSeqAliP[FindIdxSeqAliP(FindNomSeqAliP(SeqAli))];
+      if not SeqAliPValid(PSeqAliP) then ok := False;
+    end;
+    }
+    if ProtInit <= 0 then ok := False;
+    if LipInit <= 0 then ok := False;
+    if Unite = -1 then ok := False;
+    case Equation of
+      0: // Mod�le lin�aire
+      begin
+        if b <= 0 then ok := False;
+        if CalcIngere(0, Unite, a, b, PVInit) <= 0 then ok := False;
+      end;
+      1: // Mod�le puissance
+      begin
+        if a <= 0 then ok := False;
+        if b <= 0 then ok := False;
+        if CalcIngere(1, Unite, a, b, PVInit) <= 0 then ok := False;
+      end;
+      2: // Mod�le exponentiel
+      begin
+        if a <= 0 then ok := False;
+        if b <= 0 then ok := False;
+        if CalcIngere(2, Unite, a, b, PVInit) <= 0 then ok := False;
+      end;
+      3: // Mod�le Gamma
+      begin
+        if a <= 0 then ok := False;
+        if b <= 0 then ok := False;
+        case Unite of
+          0: // Quantit� (kg/j)
+          begin
+            T1 := -CalcIngere(3, Unite, a, b, 100) + cGammaFrais * Exp(Ln(100) * dGamma);
+            T2 := -CalcIngere(3, Unite, a, b, 50) + cGammaFrais * Exp(Ln(50) * dGamma);
+          end;
+          1: // ED (MJ/j)
+          begin
+            T1 := -CalcIngere(3, Unite, a, b, 100) + cGammaED * Exp(Ln(100) * dGamma);
+            T2 := -CalcIngere(3, Unite, a, b, 50) + cGammaED * Exp(Ln(50) * dGamma);
+          end;
+          2: // EM (MJ/j)
+          begin
+            T1 := -CalcIngere(3, Unite, a, b, 100) + cGammaEM * Exp(Ln(100) * dGamma);
+            T2 := -CalcIngere(3, Unite, a, b, 50) + cGammaEM * Exp(Ln(50) * dGamma);
+          end;
+          3: // EN (MJ/j)
+          begin
+            T1 := -CalcIngere(3, Unite, a, b, 100) + cGammaEN * Exp(Ln(100) * dGamma);
+            T2 := -CalcIngere(3, Unite, a, b, 50) + cGammaEN * Exp(Ln(50) * dGamma);
+          end;
+          4: // MS (kg/j)
+          begin
+            T1 := -CalcIngere(3, Unite, a, b, 100) + cGammaMS * Exp(Ln(100) * dGamma);
+            T2 := -CalcIngere(3, Unite, a, b, 50) + cGammaMS * Exp(Ln(50) * dGamma);
+          end;
+          else
+          begin
+            T1 := 0;
+            T2 := 0;
+          end;
+        end;
+        if T1 = 0 then ok := False;
+        if T2 = 0 then ok := False;
+        if (T1 > 0) and (T2 < 0) then ok := False;
+        if (T1 < 0) and (T2 > 0) then ok := False;
+      end;
+      else
+        ok := False;
+    end;
+  end;
+  result := ok;
+end;
+
+procedure StringsProfilP(Liste: TStrings; IncludeInvalid: Boolean);
+var
+  i: integer;
+  rec: PRecProfilP;
+begin
+  Liste.Clear;
+  if ListProfilP.Count > 0
+  then
+    for i := 0 to ListProfilP.Count - 1 do
+    begin
+      rec := ListProfilP[i];
+      if (IncludeInvalid or ProfilPValid(rec))
+//      and (IsComplete or (rec.Num <= 5))
+      then
+        Liste.Add(rec.Nom);
+    end;
+end;
+
+// Simulation porc
+
+procedure InitSimulP ;
+begin
+  ListSimulP := TList.Create ;
+  NFicSimulP := 'SimulP.rec' ;
+end ;
+
+procedure FreeSimulP ;
+var
+  i : integer ;
+  rec : PRecSimulP ;
+begin
+  if ListSimulP.Count > 0
+  then
+    for i := 0 to ListSimulP.Count - 1 do
+    begin
+      rec := ListSimulP[i] ;
+      Dispose (rec) ;
+    end ;
+  ListSimulP.Free ;
+end ;
+
+procedure LoadSimulP ;
+var
+  i : integer ;
+  fic : file of RecSimulP ;
+  rec : PRecSimulP ;
+begin
+  // effacement de la liste avant chargement
+  if ListSimulP.Count > 0
+  then
+    for i := 0 to ListSimulP.Count - 1 do
+    begin
+      rec := ListSimulP[i] ;
+      Dispose (rec) ;
+    end ;
+  ListSimulP.Clear ;
+  // chargement du fichier
+  if FileExists (NFicSimulP)
+  then
+  begin
+    AssignFile (fic, NFicSimulP) ;
+    Reset (fic) ;
+    while not Eof (fic) do
+    begin
+      New (rec) ;
+      Read (fic, rec^) ;
+      ListSimulP.Add (rec) ;
+    end ;
+    CloseFile (fic) ;
+  end ;
+end ;
+
+procedure SaveSimulP ;
+var
+  i : integer ;
+  fic : file of RecSimulP ;
+  rec : PRecSimulP ;
+begin
+  if not IsComplete and not IsEducation
+  then
+    Exit ;
+  AssignFile (fic, NFicSimulP) ;
+  Rewrite (fic) ;
+  if ListSimulP.Count > 0
+  then
+    for i := 0 to ListSimulP.Count - 1 do
+    begin
+      rec := ListSimulP[i] ;
+      Write (fic, rec^) ;
+    end ;
+  CloseFile (fic) ;
+end ;
+
+function SimulPValid (rec : PRecSimulP) : boolean ;
+var
+  ok : boolean ;
+begin
+  ok := TRUE ;
+  with rec^ do
+  begin
+    if Profil = -1
+    then
+      ok := FALSE
+    else
+    begin
+      PProfilP := ListProfilP[FindIdxProfilP (FindNomProfilP (Profil))] ;
+      if not ProfilPValid (PProfilP) then ok := FALSE ;
+    end ;
+    if SeqAli = -1
+    then
+      ok := FALSE
+    else
+    begin
+      PSeqAliP := ListSeqAliP[FindIdxSeqAliP (FindNomSeqAliP (SeqAli))] ;
+      if not SeqAliPValid (PSeqAliP) then ok := FALSE ;
+    end ;
+    if Ration = -1
+    then
+      ok := FALSE
+    else
+    begin
+      PRationP := ListRationP[FindIdxRationP (FindNomRationP (Ration))] ;
+      if not RationPValid (PRationP) then ok := FALSE ;
+    end ;
+  end ;
+  result := ok ;
+end ;
+
+procedure StringsSimulP (Liste : TStrings ; IncludeInvalid : Boolean) ;
+var
+  i : integer ;
+  rec : PRecSimulP ;
+begin
+  Liste.Clear ;
+  if ListSimulP.Count > 0
+  then
+    for i := 0 to ListSimulP.Count - 1 do
+    begin
+      rec := ListSimulP[i] ;
+      if (IncludeInvalid or SimulPValid (rec))
+//      and (IsComplete or (rec.Num <= 5))
+      then
+        Liste.Add (rec.Nom) ;
+    end ;
+end ;
+
+end.
Index: UFMenu.pas
===================================================================
--- UFMenu.pas	(révision 0)
+++ UFMenu.pas	(révision 3)
@@ -0,0 +1,1200 @@
+unit UFMenu;
+
+{$WARN UNIT_PLATFORM OFF}
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, Dialogs, Graphics, StdCtrls, Buttons,
+  ExtCtrls, ComCtrls, Menus, XPMan, IdBaseComponent, IdComponent,
+  IdTCPConnection, IdTCPClient, IdHTTP, IdIOHandler, IdIOHandlerSocket,
+  IdIOHandlerStack, IdSSL, IdSSLOpenSSL;
+
+type
+  TFMenu = class (TForm)
+    StatusLine : TStatusBar ;
+    IBackground: TImage;
+    MainMenu: TMainMenu;
+    MFile: TMenuItem;
+    MLicense: TMenuItem;
+    MConfig: TMenuItem;
+    MFolder: TMenuItem;
+    N11: TMenuItem;
+    MExit: TMenuItem;
+    MAliments: TMenuItem;
+    MMatiere: TMenuItem;
+    N21: TMenuItem;
+    MAliment: TMenuItem;
+    MTarif: TMenuItem;
+    N22: TMenuItem;
+    MImpExp: TMenuItem;
+    MTruie: TMenuItem;
+    MSeqAliT: TMenuItem;
+    MRationT: TMenuItem;
+    MLogeT: TMenuItem;
+    MProfilT: TMenuItem;
+    N31: TMenuItem;
+    MSimulT: TMenuItem;
+    N32: TMenuItem;
+    MBesGest: TMenuItem;
+    MBesGestT: TMenuItem;
+    MBesGestE: TMenuItem;
+    MBesLact: TMenuItem;
+    MBesLactT: TMenuItem;
+    MBesLactE: TMenuItem;
+    MPorc: TMenuItem;
+    MSeqAliP: TMenuItem;
+    MRationP: TMenuItem;
+    MProfilP: TMenuItem;
+    N41: TMenuItem;
+    MSimulP: TMenuItem;
+    MWindow: TMenuItem;
+    MCascade: TMenuItem;
+    MTileHorizontal: TMenuItem;
+    MTileVertical: TMenuItem;
+    MMinimizeAll: TMenuItem;
+    MRetoreAll: TMenuItem;
+    MArrange: TMenuItem;
+    MHelp: TMenuItem;
+    MContents: TMenuItem;
+    N61: TMenuItem;
+    MIntro: TMenuItem;
+    N62: TMenuItem;
+    MWeb: TMenuItem;
+    MAbout: TMenuItem;
+    ILogo: TImage;
+    XPManifestStyle: TXPManifest;
+    MUpdate: TMenuItem;
+    IdHTTPCheckVersion: TIdHTTP;
+    MDataset: TMenuItem;
+    IdSSL: TIdSSLIOHandlerSocketOpenSSL;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure MConfigClick(Sender: TObject);
+    procedure MExitClick(Sender: TObject);
+    procedure MMatiereClick(Sender: TObject);
+    procedure MAlimentClick(Sender: TObject);
+    procedure MTarifClick(Sender: TObject);
+    procedure MImpExpClick(Sender: TObject);
+    procedure MSeqAliTClick(Sender: TObject);
+    procedure MRationTClick(Sender: TObject);
+    procedure MLogeTClick(Sender: TObject);
+    procedure MProfilTClick(Sender: TObject);
+    procedure MSimulTClick(Sender: TObject);
+    procedure MSeqAliPClick(Sender: TObject);
+    procedure MRationPClick(Sender: TObject);
+    procedure MProfilPClick(Sender: TObject);
+    procedure MSimulPClick(Sender: TObject);
+    procedure WindowCascade(Sender: TObject);
+    procedure MTileHorizontalClick(Sender: TObject);
+    procedure MTileVerticalClick(Sender: TObject);
+    procedure MMinimizeAllClick(Sender: TObject);
+    procedure MRetoreAllClick(Sender: TObject);
+    procedure MArrangeClick(Sender: TObject);
+    procedure HelpContentsClick(Sender: TObject);
+    procedure HelpIndexClick(Sender: TObject);
+    procedure MAboutClick(Sender: TObject);
+    procedure MBesGestTClick(Sender: TObject);
+    procedure MBesGestEClick(Sender: TObject);
+    procedure MBesLactTClick(Sender: TObject);
+    procedure MBesLactEClick(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure MLicenseClick(Sender: TObject);
+    procedure MFolderClick(Sender: TObject);
+    procedure MIntroClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure MWebClick(Sender: TObject);
+    procedure MHelpSearchClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure MUpdateClick(Sender: TObject);
+    procedure MDatasetClick(Sender: TObject);
+  private
+    { Private declarations }
+    procedure VerifyData;
+  public
+    { Public declarations }
+  end ;
+
+var
+  FMenu : TFMenu ;
+
+implementation
+
+uses
+  FileCtrl, Math, Messages, ShellAPI, SysUtils, gnugettext, UVariables,
+  UStrings, UInit, UUtil, UFindRec, UFLicense, UFConfig, {UFInraAfz,}
+  UFMatiere, UFAliment, UFTarif, UFImpExp, UFSeqAliT, UFRationT, UFLogeT,
+  UFProfilT, UFSimulT, UFBesGestT, UFBesGestE, UFBesLactT, UFBesLactE,
+  UFSeqAliP, UFRationP, UFProfilP, UFSimulP, UFIntro, UFAbout, UFError,
+  UFWarning;
+
+{$r *.dfm}
+
+var
+  OldWndProc: Pointer;
+  WndMsg: DWORD;
+
+function NewWndProc(WindowHandle: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT stdcall;
+begin
+  if Msg = WndMsg
+  then // Appel par une autre instance : restauration
+  begin
+    Result := SendMessage(Application.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
+    SetForegroundWindow(Application.Handle);
+    Exit;
+  end;
+  if WParam = VK_F1
+  then // F1 = Help
+    Result := HtmlHelp(Application.Handle, PChar(Application.CurrentHelpFile), HH_HELP_CONTEXT, FMenu.HelpContext)
+  else
+    Result := CallWindowProc(OldWndProc, WindowHandle, Msg, WParam, LParam);
+end;
+
+procedure TFMenu.FormCreate(Sender: TObject);
+begin
+  WndMsg := RegisterWindowMessage('InraPorc');
+  OldWndProc := Pointer(SetWindowLong(Handle, GWL_WNDPROC, Longint(@NewWndProc)));
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+  begin
+    Font.Name := 'Arial Unicode MS';
+    StatusLine.Font.Name := 'Arial Unicode MS';
+  end;
+  TranslateComponent(Self);
+  Constraints.MinHeight := Min(768, Screen.WorkAreaHeight);
+  Constraints.MinWidth := Min(1024, Screen.WorkAreaWidth);
+end;
+
+procedure TFMenu.FormDestroy(Sender: TObject);
+begin
+  SetWindowLong(Handle, GWL_WNDPROC, Longint(OldWndProc));
+end;
+
+procedure TFMenu.FormShow(Sender: TObject);
+var
+  CurrentVersion: string;
+begin
+  // Recherche automatique de mises-�-jours
+  if CheckForUpdates then
+  begin
+    IdHTTPCheckVersion.ConnectTimeout := 10000;
+    try
+      CurrentVersion := IdHTTPCheckVersion.Get(URL_HTTPS + 'CheckVersion.php');
+      if Length(CurrentVersion) = 7 then
+        if CompareString(LOCALE_INVARIANT, NORM_IGNORECASE, PChar(CurrentVersion), Length(CurrentVersion), PChar(VersionString), Length(VersionString)) = CSTR_GREATER_THAN then
+        begin
+          if Copy(LanguageCode, 1, 2) = 'fr'
+          then // Fran�ais
+            ShellExecute(Handle, 'open', PChar(URL_HTTPS + 'history_fr.php'), nil, nil, SW_SHOWNORMAL)
+          else // Anglais
+            ShellExecute(Handle, 'open', PChar(URL_HTTPS + 'history_en.php'), nil, nil, SW_SHOWNORMAL);
+          if MessageDlg(Format(MsgUpdateFound, [CurrentVersion]), mtConfirmation, [mbYes, mbNo], 0) = mrYes then
+            ShellExecute(Handle, 'open', PChar(URL_HTTPS + Format('Downloads/%s/InraPorcSetup.exe', [CurrentVersion])), nil, nil, SW_SHOWNORMAL);
+        end;
+    except
+    end;
+  end;
+  // Initialisation du contr�le des fen�tres MDI
+  NumWinMatiere := -1;
+  NumWinAliment := -1;
+  NumWinTarif := -1;
+  NumWinImpExp := -1;
+  NumWinSeqAliT := -1;
+  NumWinRationT := -1;
+  NumWinLogeT := -1;
+  NumWinProfilT := -1;
+  NumWinSimulT := -1;
+  NumWinBesGestT := -1;
+  NumWinBesGestE := -1;
+  NumWinBesLactT := -1;
+  NumWinBesLactE := -1;
+  NumWinSeqAliP := -1;
+  NumWinRationP := -1;
+  NumWinProfilP := -1;
+  NumWinSimulP := -1;
+  // Taille et position de la fen�tre principale
+  SetBounds(MainLeft, MainTop, MainWidth, MainHeight);
+  FormResize(nil);
+  if FileExists(Logo)
+  then
+    ILogo.Picture.LoadFromFile(Logo);
+  if DataFolderExists
+  then
+    VerifyData
+  else
+  begin
+    MAliments.Enabled := False;
+    MTruie.Enabled := False;
+    MPorc.Enabled := False;
+  end;
+end;
+
+procedure TFMenu.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  i: Integer;
+begin
+  if MDIChildCount > 0
+  then
+    for i := MDIChildCount - 1 downto 0 do
+      MDIChildren[i].Close;
+  FreeData ;
+//  FreeLicense;
+//  FreeRegistry;
+end;
+
+procedure TFMenu.FormResize(Sender: TObject);
+var
+  {BorderSize,} TextSize: Integer;
+begin
+  MImpExp.Enabled := IsComplete ;
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    StatusLine.Panels[1].Text := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    StatusLine.Panels[1].Text := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    StatusLine.Panels[1].Text := StrEvaluation
+  else
+    StatusLine.Panels[1].Text := StrReadOnly;
+//  BorderSize := Width - ClientWidth;
+  TextSize := StatusLine.Canvas.TextWidth(StatusLine.Panels[1].Text);
+  with StatusLine do
+    Panels[0].Width := ClientWidth - TextSize - 24;
+end;
+
+procedure TFMenu.VerifyData;
+const
+  SEP = '        ';
+var
+  i, j, ErrorCount: Integer;
+  ErrorInraAfz, ok: Boolean;
+begin
+  if (not FileExists(NFicRationP) and FileExists(NFicRationPold))
+  or (not FileExists(NFicProfilP) and FileExists(NFicProfilPold))
+  then // L'ancien jeu de donn�es n'a pas �t� converti
+    Exit;
+  ErrorCount := 0;
+  ErrorInraAfz := FALSE;
+  FError := TFError.Create(Self);
+  FError.MErrors.Lines.Add(MAliments.Caption);
+  // Mati�re premi�re
+  FError.MErrors.Lines.Add(SEP + MMatiere.Caption);
+  if not FileExists(NFicMatInraAfz)
+  then
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicMatInraAfz]));
+  if not FileExists(NFicMatiere)
+  then
+  begin
+    Inc(ErrorCount);
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicMatiere]));
+  end;
+  // Aliment
+  FError.MErrors.Lines.Add(SEP + MAliment.Caption);
+  if not FileExists(NFicAliment)
+  then
+  begin
+    Inc(ErrorCount);
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicAliment]));
+  end;
+  if ListAliment.Count > 0
+  then
+    for i := 0 to ListAliment.Count - 1 do
+    begin
+      PAliment := ListAliment[i];
+      if (PAliment.MP.NbMat < 0) or (PAliment.MP.NbMat > MAX_MP)
+      then // Bug lors de l'importation (correction du 1/3/2007)
+        PAliment.MP.NbMat := 0;
+      if PAliment.MP.NbMat > 0
+      then
+        for j := 0 to PAliment.MP.NbMat - 1 do
+          if (PAliment.MP.NumMat[j] <> 0) and not MatiereFound(PAliment.MP.NumMat[j])
+          then
+          begin
+            Inc(ErrorCount);
+            if PAliment.MP.NumMat[j] < 0
+            then
+              ErrorInraAfz := TRUE;
+            FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PAliment.Nom, MMatiere.Caption, PAliment.MP.NumMat[j]]));
+            PAliment.MP.NumMat[j] := 0;
+          end;
+    end;
+  FError.MErrors.Lines.Add(MTruie.Caption);
+  // S�quence alimentaire truie
+  FError.MErrors.Lines.Add(SEP + MSeqAliT.Caption);
+  if not FileExists(NFicSeqAliT)
+  then
+  begin
+    Inc(ErrorCount);
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicSeqAliT]));
+  end;
+  if ListSeqAliT.Count > 0
+  then
+    for i := 0 to ListSeqAliT.Count - 1 do
+    begin
+      PSeqAliT := ListSeqAliT[i];
+      for j := 1 to PSeqAliT.NbRuleGest do
+      begin
+        if (PSeqAliT.RuleGest[j].NumAli1 <> -1) and not AlimentFound(PSeqAliT.RuleGest[j].NumAli1)
+        then
+        begin
+          Inc(ErrorCount);
+          FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSeqAliT.Nom, MAliment.Caption, PSeqAliT.RuleGest[j].NumAli1]));
+          PSeqAliT.RuleGest[j].NumAli1 := -1;
+        end;
+        if (PSeqAliT.RuleGest[j].NumAli2 <> -1) and not AlimentFound(PSeqAliT.RuleGest[j].NumAli2)
+        then
+        begin
+          Inc(ErrorCount);
+          FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSeqAliT.Nom, MAliment.Caption, PSeqAliT.RuleGest[j].NumAli2]));
+          PSeqAliT.RuleGest[j].NumAli2 := -1;
+        end;
+      end;
+      for j := 1 to PSeqAliT.NbRuleLact do
+      begin
+        if (PSeqAliT.RuleLact[j].NumAli1 <> -1) and not AlimentFound(PSeqAliT.RuleLact[j].NumAli1)
+        then
+        begin
+          Inc(ErrorCount);
+          FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSeqAliT.Nom, MAliment.Caption, PSeqAliT.RuleLact[j].NumAli1]));
+          PSeqAliT.RuleLact[j].NumAli1 := -1;
+        end;
+        if (PSeqAliT.RuleLact[j].NumAli2 <> -1) and not AlimentFound(PSeqAliT.RuleLact[j].NumAli2)
+        then
+        begin
+          Inc(ErrorCount);
+          FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSeqAliT.Nom, MAliment.Caption, PSeqAliT.RuleLact[j].NumAli2]));
+          PSeqAliT.RuleLact[j].NumAli2 := -1;
+        end;
+      end;
+      for j := 1 to PSeqAliT.NbRuleISSF do
+      begin
+        if (PSeqAliT.RuleISSF[j].NumAli1 <> -1) and not AlimentFound(PSeqAliT.RuleISSF[j].NumAli1)
+        then
+        begin
+          Inc(ErrorCount);
+          FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSeqAliT.Nom, MAliment.Caption, PSeqAliT.RuleISSF[j].NumAli1]));
+          PSeqAliT.RuleISSF[j].NumAli1 := -1;
+        end;
+        if (PSeqAliT.RuleISSF[j].NumAli2 <> -1) and not AlimentFound(PSeqAliT.RuleISSF[j].NumAli2)
+        then
+        begin
+          Inc(ErrorCount);
+          FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSeqAliT.Nom, MAliment.Caption, PSeqAliT.RuleISSF[j].NumAli2]));
+          PSeqAliT.RuleISSF[j].NumAli2 := -1;
+        end;
+      end;
+    end;
+  // Plan de rationnement truie
+  FError.MErrors.Lines.Add(SEP + MRationT.Caption);
+  if not FileExists(NFicRationT)
+  then
+  begin
+    Inc(ErrorCount);
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicRationT]));
+  end;
+  // Logement truie
+  FError.MErrors.Lines.Add(SEP + MLogeT.Caption);
+  if not FileExists(NFicLogeT)
+  then
+  begin
+    Inc(ErrorCount);
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicLogeT]));
+  end;
+  // Profil truie
+  FError.MErrors.Lines.Add(SEP + MProfilT.Caption);
+  if not FileExists(NFicProfilT)
+  then
+  begin
+    Inc(ErrorCount);
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicProfilT]));
+  end;
+  if ListProfilT.Count > 0
+  then
+    for i := 0 to ListProfilT.Count - 1 do
+    begin
+      PProfilT := ListProfilT[i];
+      if (PProfilT.SeqAli <> -1) and not SeqAliTFound(PProfilT.SeqAli)
+      then
+      begin
+        Inc(ErrorCount);
+        FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PProfilT.Nom, MSeqAliT.Caption, PProfilT.SeqAli]));
+        PProfilT.SeqAli := -1;
+      end;
+      if (PProfilT.Loge <> -1) and not LogeTFound(PProfilT.Loge)
+      then
+      begin
+        Inc(ErrorCount);
+        FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PProfilT.Nom, MLogeT.Caption, PProfilT.Loge]));
+        PProfilT.Loge := -1;
+      end;
+    end ;
+  // Simulation truie
+  FError.MErrors.Lines.Add(SEP + MSimulT.Caption);
+  if not FileExists(NFicSimulT)
+  then
+  begin
+    Inc(ErrorCount);
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicSimulT]));
+  end;
+  if ListSimulT.Count > 0
+  then
+    for i := 0 to ListSimulT.Count - 1 do
+    begin
+      PSimulT := ListSimulT[i];
+      if (PSimulT.Profil <> -1) and not ProfilTFound(PSimulT.Profil)
+      then
+      begin
+        Inc(ErrorCount);
+        FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSimulT.Nom, MProfilT.Caption, PSimulT.Profil]));
+        PSimulT.Profil := -1;
+      end;
+      if (PSimulT.Logement <> -1) and not LogeTFound(PSimulT.Logement)
+      then
+      begin
+        Inc(ErrorCount);
+        FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSimulT.Nom, MLogeT.Caption, PSimulT.Logement]));
+        PSimulT.Logement := -1;
+      end;
+      for j := 1 to NB_CYCLES do
+        if (PSimulT.SeqAli[j] <> -1) and not SeqAliTFound(PSimulT.SeqAli[j])
+        then
+          if (j < PSimulT.StadeInit div 3) or (j > PSimulT.StadeFin div 3)
+          then // Port�e masqu�e => correction silencieuse
+            PSimulT.SeqAli[j] := -1
+          else
+          begin
+            Inc(ErrorCount);
+            FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSimulT.Nom, MSeqAliT.Caption, PSimulT.SeqAli[j]]));
+            PSimulT.SeqAli[j] := -1;
+          end;
+      for j := 1 to NB_CYCLES do
+        if (PSimulT.Ration[j] <> -1) and not RationTFound(PSimulT.Ration[j])
+        then
+          if (j < PSimulT.StadeInit div 3) or (j > PSimulT.StadeFin div 3)
+          then // Port�e masqu�e => correction silencieuse
+            PSimulT.Ration[j] := -1
+          else
+          begin
+            Inc(ErrorCount);
+            FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSimulT.Nom, MRationT.Caption, PSimulT.Ration[j]]));
+            PSimulT.Ration[j] := -1;
+          end;
+    end ;
+  FError.MErrors.Lines.Add(MPorc.Caption);
+  // S�quence alimentaire porc
+  FError.MErrors.Lines.Add(SEP + MSeqAliP.Caption);
+  if not FileExists(NFicSeqAliP)
+  then
+  begin
+    Inc(ErrorCount);
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicSeqAliP]));
+  end;
+  if ListSeqAliP.Count > 0
+  then
+    for i := 0 to ListSeqAliP.Count - 1 do
+    begin
+      PSeqAliP := ListSeqAliP[i];
+      for j := 1 to PSeqAliP.NbRule do
+      begin
+        if (PSeqAliP.Rule[j].NumAli1 <> -1) and not AlimentFound(PSeqAliP.Rule[j].NumAli1)
+        then
+        begin
+          Inc(ErrorCount);
+          FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSeqAliP.Nom, MAliment.Caption, PSeqAliP.Rule[j].NumAli1]));
+          PSeqAliP.Rule[j].NumAli1 := -1;
+        end;
+        if (PSeqAliP.Rule[j].NumAli2 <> -1) and not AlimentFound(PSeqAliP.Rule[j].NumAli2)
+        then
+        begin
+          Inc(ErrorCount);
+          FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSeqAliP.Nom, MAliment.Caption, PSeqAliP.Rule[j].NumAli2]));
+          PSeqAliP.Rule[j].NumAli2 := -1;
+        end;
+      end;
+    end;
+  // Plan de rationnement porc
+  FError.MErrors.Lines.Add(SEP + MRationP.Caption);
+  if not FileExists(NFicRationP)
+  then
+  begin
+    Inc(ErrorCount);
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicRationP]));
+  end;
+  // Profil porc
+  FError.MErrors.Lines.Add(SEP + MProfilP.Caption);
+  if not FileExists(NFicProfilP)
+  then
+  begin
+    Inc(ErrorCount);
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicProfilP]));
+  end;
+  if ListProfilP.Count > 0
+  then
+    for i := 0 to ListProfilP.Count - 1 do
+    begin
+      PProfilP := ListProfilP[i];
+      if (PProfilP.SeqAli <> -1) and not SeqAliPFound(PProfilP.SeqAli)
+      then
+      begin
+        Inc(ErrorCount);
+        FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PProfilP.Nom, MSeqAliP.Caption, PProfilP.SeqAli]));
+        PProfilP.SeqAli := -1;
+      end;
+    end ;
+  // Simulation porc
+  FError.MErrors.Lines.Add(SEP + MSimulP.Caption);
+  if not FileExists(NFicSimulP)
+  then
+  begin
+    Inc(ErrorCount);
+    FError.MErrors.Lines.Add(SEP + SEP + Format(MsgFileNotFound, [NFicSimulP]));
+  end;
+  if ListSimulP.Count > 0
+  then
+    for i := 0 to ListSimulP.Count - 1 do
+    begin
+      PSimulP := ListSimulP[i];
+      if (PSimulP.Profil <> -1) and not ProfilPFound(PSimulP.Profil)
+      then
+      begin
+        Inc(ErrorCount);
+        FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSimulP.Nom, MProfilP.Caption, PSimulP.Profil]));
+        PSimulP.Profil := -1;
+      end;
+      if (PSimulP.SeqAli <> -1) and not SeqAliPFound(PSimulP.SeqAli)
+      then
+      begin
+        Inc(ErrorCount);
+        FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSimulP.Nom, MSeqAliP.Caption, PSimulP.SeqAli]));
+        PSimulP.SeqAli := -1;
+      end;
+      if (PSimulP.Ration <> -1) and not RationPFound(PSimulP.Ration)
+      then
+      begin
+        Inc(ErrorCount);
+        FError.MErrors.Lines.Add(SEP + SEP + Format('%s - %s %d', [PSimulP.Nom, MRationP.Caption, PSimulP.Ration]));
+        PSimulP.Ration := -1;
+      end;
+    end ;
+  // Traitement des erreurs
+  ok := ErrorCount = 0;
+  if not ok
+  then
+    if ErrorInraAfz
+    then
+    begin
+      FWarning := TFWarning.Create (Self) ;
+      with FWarning do
+      begin
+        Msg := 'InraAfz';
+        CBDisplay.Visible := FALSE;
+        ShowModal;
+        Release;
+      end;
+    end
+    else
+      ok := FError.ShowModal = mrYes;
+  MAliments.Enabled := ok;
+  MTruie.Enabled := ok;
+  MPorc.Enabled := ok;
+end;
+
+// "Menu Fichier"
+
+procedure TFMenu.MLicenseClick(Sender: TObject);
+begin
+  FLicense := TFLicense.Create(Self);
+  FLicense.ShowModal;
+  FLicense.Release;
+  // Adaptation taille StatusLine
+  FormResize(nil);
+end;
+
+procedure TFMenu.MConfigClick(Sender: TObject);
+var
+  i, typ, mat, typmat, typali: Integer;
+//  rec: PRecMatiere;
+  FileName: String;
+begin
+  FConfig := TFConfig.Create(Self);
+  if FConfig.ShowModal <> mrOK
+  then // chargement de la configuration
+    LoadConfig
+  else
+    if ConfigChanged
+    then
+    begin
+      if NewFolder <> Folder
+      then // Changement du dossier de donn�es par d�faut
+      begin
+        Folder := NewFolder;
+        // Fermeture de toutes les fen�tres enfants
+        if MDIChildCount > 0
+        then
+          for i := MDIChildCount - 1 downto 0 do
+            MDIChildren[i].Close;
+        // Changement de r�pertoire
+        SetCurrentDir(Folder);
+        // Rechargement des donn�es
+        LoadData;
+        VerifyData;
+        if ((LicenseType = 0) or (LicenseType = 1)) and TooMuchRecords
+        then // Trop d'enregistrements
+          MessageDlg(MsgTooMuchRecords, mtWarning, [mbOk], 0);
+        // Adaptation taille StatusLine
+        FormResize(nil);
+      end;
+      if NewLogo <> Logo
+      then // Changement du logo
+      begin
+        Logo := NewLogo;
+        if FileExists(Logo)
+        then
+          ILogo.Picture.LoadFromFile(Logo)
+        else
+          ILogo.Picture.LoadFromFile('');
+        InvalidateRect(ClientHandle, nil, TRUE);
+      end;
+      {
+      if NewLanguageExt <> LanguageExt
+      then // Changement de la langue
+      begin
+        LanguageExt := NewLanguageExt;
+        MessageDlg(MsgLang, mtWarning, [mbOk], 0);
+      end;
+      }
+      if NewLanguageCode <> LanguageCode
+      then // Changement de la langue
+      begin
+        mat := -1;
+        typ := -1;
+        typmat := -1;
+        typali := -1;
+        if NumWinMatiere <> -1
+        then // Composition mati�re premi�re
+          if FMatiere.CBMatiere.ItemIndex <> -1
+          then // Sauvegarder la position courante
+            mat := FindNumMatiere(FMatiere.CBMatiere.Text);
+        if NumWinAliment <> -1
+        then // Composition aliment
+          typ := FAliment.CBType.ItemIndex;
+        if NumWinImpExp <> -1
+        then // Import / export
+        begin
+          typmat := FImpExp.CBTypeMat.ItemIndex;
+          typali := FImpExp.CBTypeAli.ItemIndex;
+        end;
+        LanguageCode := NewLanguageCode;
+        UseLanguage(LanguageCode);
+        RetranslateComponent(Self);
+        if MDIChildCount > 0
+        then // Traduction des fen�tres MDI ouvertes
+          for i := MDIChildCount - 1 downto 0 do
+            RetranslateComponent(MDIChildren[i]);
+        // R�affichage des enregistrements pour prendre en compte la traduction
+        if NumWinMatiere <> -1
+        then // Composition mati�re premi�re
+        begin
+          StringsMatiere(FMatiere.CBMatiere.Items, 0, TRUE, TRUE);
+          if mat <> -1
+          then // Res�lectionner l'enregistrement courant
+            FMatiere.CBMatiere.ItemIndex := FMatiere.CBMatiere.Items.IndexOf(FindNomMatiere(mat));
+          FMatiere.CBMatiereChange(nil);
+        end;
+        if NumWinAliment <> -1
+        then // Composition aliment
+        begin
+          FAliment.CBType.ItemIndex := typ;
+          FAliment.CBTypeChange(nil);
+          FAliment.CBAlimentChange(nil);
+        end;
+        if NumWinImpExp <> -1
+        then // Import / export
+        begin
+          FImpExp.CBTypeMat.ItemIndex := typmat;
+          FImpExp.CBTypeMatChange(nil);
+          FImpExp.CBTypeAli.ItemIndex := typali;
+          FImpExp.CBTypeAliChange(nil);
+        end;
+        if NumWinSeqAliT <> -1
+        then // S�quence alimentaire truie
+          FSeqAliT.CBSeqAliChange(nil);
+        if NumWinRationT <> -1
+        then // Plan de rationnement truie
+          FRationT.CBRationChange(nil);
+        if NumWinLogeT <> -1
+        then // Logement truie
+          FLogeT.CBLogeChange(nil);
+        if NumWinProfilT <> -1
+        then // Profil truie
+          FProfilT.CBProfilChange(nil);
+        if NumWinSimulT <> -1
+        then // Simulation truie
+          FSimulT.CBSimulChange(nil);
+        {
+        if NumWinBesGestT <> -1
+        then // Besoin gestation truie
+        begin
+          FBesGestT.CBLoge.Clear;
+          FBesGestT.CBLoge.Items.Add(StrSaisieManuelle);
+          if ListLogeT.Count > 0
+          then
+            for i := 0 to ListLogeT.Count - 1 do
+            begin
+              PLogeT := ListLogeT[i];
+              if LogeTValid(PLogeT)
+              then
+                FBesGestT.CBLoge.Items.Add(PLogeT.Nom);
+            end;
+          FBesGestT.CBLoge.ItemIndex := 0;
+          FBesGestT.CBLogeChange(nil);
+          FBesGestT.CBProfilChange(nil);
+        end;
+        if NumWinBesGestE <> -1
+        then // Besoin gestation �levage
+          FBesGestE.CBProfilChange(nil);
+        if NumWinBesLactT <> -1
+        then // Besoin lactation truie
+          FBesLactT.CBProfilChange(nil);
+        if NumWinBesLactE <> -1
+        then // Besoin lactation �levage
+          FBesLactE.CBProfilChange(nil);
+        }
+        if NumWinSeqAliP <> -1
+        then // S�quence alimentaire porc
+          FSeqAliP.CBSeqAliChange(nil);
+        if NumWinRationP <> -1
+        then // Plan de rationnement porc
+          FRationP.CBRationChange(nil);
+        if NumWinProfilP <> -1
+        then // Profil porc
+          FProfilP.CBProfilChange(nil);
+        if NumWinSimulP <> -1
+        then // Simulation porc
+          FSimulP.CBSimulChange(nil);
+        FormResize(nil);
+        // Aide
+        if Copy(LanguageCode, 1, 2) = 'fr'
+        then // Fran�ais
+          FileName := ChangeFileExt(Application.ExeName, '_fr.chm')
+        else // Anglais
+          FileName := ChangeFileExt(Application.ExeName, '_en.chm');
+        if FileExists(FileName)
+        then
+          Application.HelpFile := FileName;
+      end;
+      SaveConfig;
+      if NumWinMatiere <> -1
+      then // Composition mati�re premi�re : Mode d'expression
+      begin
+        FMatiere.AjustCaption;
+        FMatiere.AjustDecimals;
+        FMatiere.IdxMatiere := -1; // Eviter la sauvegarde automatique
+        FMatiere.CBMatiereChange(nil); // R�afficher l'enregistrement
+      end ;
+      if NumWinAliment <> -1
+      then // Composition aliment : Mode d'expression
+      begin
+        FAliment.AjustCaption;
+        FAliment.AjustDecimals;
+        FAliment.IdxAliment := -1; // Eviter la sauvegarde automatique
+        FAliment.CBAlimentChange(nil); // R�afficher l'enregistrement
+      end ;
+      if NumWinProfilP <> -1
+      then // ProfilP : Caract�ristiques de la carcasse
+        FProfilP.PCChange(nil); // Recalculer les simulations
+      if NumWinImpExp <> -1
+      then // Import / Export : Mode d'expression
+        FImpExp.DisplayConfig;
+    end;
+  FConfig.Release;
+end;
+
+procedure TFMenu.MDatasetClick(Sender: TObject);
+var
+  FileName: String;
+begin
+  FileName := ExtractFilePath(Application.ExeName) + 'InstData.exe';
+  if FileExists(FileName)
+  then
+    ShellExecute(Handle, 'open', PChar(FileName), nil, nil, SW_SHOWNORMAL);
+end;
+
+procedure TFMenu.MFolderClick(Sender: TObject);
+var
+  i: Integer;
+  NewDir: String;
+begin
+  // Fermeture de toutes les fen�tres enfants
+  if MDIChildCount > 0
+  then
+    for i := MDIChildCount - 1 downto 0 do
+      MDIChildren[i].Close;
+  // Changement de r�pertoire
+  NewDir := GetCurrentDir;
+  if SelectDirectory(StrSelectDir, '', NewDir)
+  and DirectoryExists(NewDir)
+  and (NewDir <> GetCurrentDir)
+  then
+  begin
+    SetCurrentDir(NewDir);
+    // Rechargement des donn�es
+    LoadData;
+    VerifyData;
+  end;
+  if ((LicenseType = 0) or (LicenseType = 1)) and TooMuchRecords
+  then // Trop d'enregistrements
+    MessageDlg(MsgTooMuchRecords, mtWarning, [mbOk], 0);
+  FormResize(nil);
+end;
+
+procedure TFMenu.MExitClick(Sender: TObject);
+begin
+  Close;
+end;
+
+// Menu "Aliment"
+
+procedure TFMenu.MMatiereClick(Sender: TObject);
+begin
+  if NumWinMatiere < 0
+  then // Cr�ation
+  begin
+    NumWinMatiere := MDIChildCount;
+    FMatiere := TFMatiere.Create(Self);
+    FMatiere.Show;
+  end
+  else // Mise au premier plan
+    FMatiere.BringToFront;
+end;
+
+procedure TFMenu.MAlimentClick(Sender: TObject);
+begin
+  if NumWinAliment < 0
+  then // Cr�ation
+  begin
+    NumWinAliment := MDIChildCount;
+    FAliment := TFAliment.Create(Self);
+    FAliment.Show;
+  end
+  else // Mise au premier plan
+    FAliment.BringToFront;
+end;
+
+procedure TFMenu.MTarifClick(Sender: TObject);
+begin
+  if NumWinTarif < 0
+  then // Cr�ation
+  begin
+    NumWinTarif := MDIChildCount;
+    FTarif := TFTarif.Create(Self);
+    FTarif.Show;
+  end
+  else // Mise au premier plan
+    FTarif.BringToFront;
+end;
+
+procedure TFMenu.MImpExpClick(Sender: TObject);
+begin
+  if NumWinImpExp < 0
+  then // Cr�ation
+  begin
+    NumWinImpExp := MDIChildCount;
+    FImpExp := TFImpExp.Create(Self);
+    FImpExp.Show;
+  end
+  else // Mise au premier plan
+    FImpExp.BringToFront;
+end;
+
+// Menu "Truie reproductrice"
+
+procedure TFMenu.MSeqAliTClick(Sender: TObject);
+begin
+  if NumWinSeqAliT < 0
+  then // Cr�ation
+  begin
+    NumWinSeqAliT := MDIChildCount;
+    FSeqAliT := TFSeqAliT.Create(Self);
+    FSeqAliT.Show;
+  end
+  else // Mise au premier plan
+    FSeqAliT.BringToFront;
+end;
+
+procedure TFMenu.MRationTClick(Sender: TObject);
+begin
+  if NumWinRationT < 0
+  then // Cr�ation
+  begin
+    NumWinRationT := MDIChildCount;
+    FRationT := TFRationT.Create(Self);
+    FRationT.Show;
+  end
+  else // Mise au premier plan
+    FRationT.BringToFront;
+end;
+
+procedure TFMenu.MLogeTClick(Sender: TObject);
+begin
+  if NumWinLogeT < 0
+  then // Cr�ation
+  begin
+    NumWinLogeT := MDIChildCount;
+    FLogeT := TFLogeT.Create(Self);
+    FLogeT.Show;
+  end
+  else // Mise au premier plan
+    FLogeT.BringToFront;
+end;
+
+procedure TFMenu.MProfilTClick(Sender: TObject);
+begin
+  if NumWinProfilT < 0
+  then // Cr�ation
+  begin
+    NumWinProfilT := MDIChildCount;
+    FProfilT := TFProfilT.Create(Self);
+    FProfilT.Show;
+  end
+  else // Mise au premier plan
+    FProfilT.BringToFront;
+end;
+
+procedure TFMenu.MSimulTClick(Sender: TObject);
+begin
+  if NumWinSimulT < 0
+  then // Cr�ation
+  begin
+    NumWinSimulT := MDIChildCount;
+    FSimulT := TFSimulT.Create(Self);
+    FSimulT.Show;
+  end
+  else // Mise au premier plan
+    FSimulT.BringToFront;
+end;
+
+procedure TFMenu.MBesGestTClick(Sender: TObject);
+begin
+  if NumWinBesGestT < 0
+  then // Cr�ation
+  begin
+    NumWinBesGestT := MDIChildCount;
+    FBesGestT := TFBesGestT.Create(Self);
+    FBesGestT.Show;
+  end
+  else // Mise au premier plan
+    FBesGestT.BringToFront;
+end;
+
+procedure TFMenu.MBesGestEClick(Sender: TObject);
+begin
+  if NumWinBesGestE < 0
+  then // Cr�ation
+  begin
+    NumWinBesGestE := MDIChildCount;
+    FBesGestE := TFBesGestE.Create(Self);
+    FBesGestE.Show;
+  end
+  else // Mise au premier plan
+    FBesGestE.BringToFront;
+end;
+
+procedure TFMenu.MBesLactTClick(Sender: TObject);
+begin
+  if NumWinBesLactT < 0
+  then // Cr�ation
+  begin
+    NumWinBesLactT := MDIChildCount;
+    FBesLactT := TFBesLactT.Create(Self);
+    FBesLactT.Show;
+  end
+  else // Mise au premier plan
+    FBesLactT.BringToFront;
+end;
+
+procedure TFMenu.MBesLactEClick(Sender: TObject);
+begin
+  if NumWinBesLactE < 0
+  then // Cr�ation
+  begin
+    NumWinBesLactE := MDIChildCount;
+    FBesLactE := TFBesLactE.Create(Self);
+    FBesLactE.Show;
+  end
+  else // Mise au premier plan
+    FBesLactE.BringToFront;
+end;
+
+// Menu "Porc croissance"
+
+procedure TFMenu.MSeqAliPClick(Sender: TObject);
+begin
+  if NumWinSeqAliP < 0
+  then // Cr�ation
+  begin
+    NumWinSeqAliP := MDIChildCount;
+    FSeqAliP := TFSeqAliP.Create(Self);
+    FSeqAliP.Show;
+  end
+  else // Mise au premier plan
+    FSeqAliP.BringToFront;
+end;
+
+procedure TFMenu.MRationPClick(Sender: TObject);
+begin
+  if NumWinRationP < 0
+  then // Cr�ation
+  begin
+    NumWinRationP := MDIChildCount;
+    FRationP := TFRationP.Create(Self);
+    FRationP.Show;
+  end
+  else // Mise au premier plan
+    FRationP.BringToFront;
+end;
+
+procedure TFMenu.MProfilPClick(Sender: TObject);
+begin
+  if NumWinProfilP < 0
+  then // Cr�ation
+  begin
+    NumWinProfilP := MDIChildCount;
+    FProfilP := TFProfilP.Create(Self);
+    FProfilP.Show;
+  end
+  else // Mise au premier plan
+    FProfilP.BringToFront;
+end;
+
+procedure TFMenu.MSimulPClick(Sender: TObject);
+begin
+  if NumWinSimulP < 0
+  then // Cr�ation
+  begin
+    NumWinSimulP := MDIChildCount;
+    FSimulP := TFSimulP.Create(Self);
+    FSimulP.Show;
+  end
+  else // Mise au premier plan
+    FSimulP.BringToFront;
+end;
+
+// Menu "Fen�tre"
+
+procedure TFMenu.WindowCascade(Sender: TObject);
+begin
+  Cascade;
+end;
+
+procedure TFMenu.MTileHorizontalClick(Sender: TObject);
+begin
+  TileMode := tbHorizontal;
+  Tile;
+end;
+
+procedure TFMenu.MTileVerticalClick(Sender: TObject);
+begin
+  TileMode := tbVertical;
+  Tile;
+end;
+
+procedure TFMenu.MMinimizeAllClick(Sender: TObject);
+var
+  i: Integer;
+begin
+  if MDIChildCount > 0
+  then
+    for i := MDIChildCount - 1 downto 0 do
+      MDIChildren[i].WindowState := wsMinimized;
+end;
+
+procedure TFMenu.MRetoreAllClick(Sender: TObject);
+var
+  i: Integer;
+begin
+  if MDIChildCount > 0
+  then
+    for i := MDIChildCount - 1 downto 0 do
+      MDIChildren[i].WindowState := wsNormal;
+end;
+
+procedure TFMenu.MArrangeClick(Sender: TObject);
+begin
+  ArrangeIcons;
+end;
+
+// Menu "Aide"
+
+procedure TFMenu.HelpContentsClick(Sender: TObject);
+begin
+//  Application.HelpCommand(HELP_CONTENTS, 0);
+//  HtmlHelp(Application.Handle, PChar(Application.CurrentHelpFile), HH_DISPLAY_TOC, 0);
+  Application.HelpShowTableOfContents;
+end;
+
+procedure TFMenu.HelpIndexClick(Sender: TObject);
+begin
+//  Application.HelpCommand(HELP_INDEX, 0);
+  HtmlHelp(Application.Handle, PChar(Application.CurrentHelpFile), HH_DISPLAY_INDEX, 0);
+end;
+
+procedure TFMenu.MHelpSearchClick(Sender: TObject);
+var
+  q: THH_Fts_Query;
+begin
+//  Application.HelpCommand(HELP_FINDER, 0);
+  with q do
+  begin //D�finition de la requ�te
+    cbStruct := SizeOf(q); // Taille de la requ�te
+    fUniCodeStrings := False; // Mettre � true si toute la cha�ne recherch�e est de type Unicode
+    pszSearchQuery := nil; // Cha�ne recherch�e
+    iProximity := -1; // Recherche en respectant les mots similaires
+    fStemmedSearch := False; // Mettre � true pour rechercher dans les r�sultats pr�c�dents
+    fTitleOnly := False; // Mettre � true si la recherche se fait uniquement sur les titres de rubriques
+    fExecute := True; // Mettre � true pour ex�cuter la requ�te
+    pszWindow := nil; // Type de fen�tre � afficher, ici c'est celle par d�faut
+  end;
+  HtmlHelp(Application.Handle, PChar(Application.CurrentHelpFile), HH_DISPLAY_SEARCH, DWORD(@q));
+end;
+
+procedure TFMenu.MIntroClick(Sender: TObject);
+begin
+  FIntro := TFIntro.Create(Self);
+  FIntro.BBOk.Visible := False;
+  FIntro.BBCancel.Visible := False;
+  FIntro.BBClose.Visible := True;
+  FIntro.ShowModal;
+  FIntro.Release;
+end;
+
+procedure TFMenu.MWebClick(Sender: TObject);
+begin
+  ShellExecute(Handle, 'open', PChar(URL_HTTPS), nil, nil, SW_SHOWNORMAL);
+end;
+
+procedure TFMenu.MUpdateClick(Sender: TObject);
+var
+  UpdateURL: string;
+begin
+  if Copy(LanguageCode, 1, 2) = 'fr'
+  then // Fran�ais
+    UpdateURL := URL_HTTPS + 'update_fr.php?version=' + VersionString
+  else // Anglais
+    UpdateURL := URL_HTTPS + 'update_en.php?version=' + VersionString;
+  ShellExecute(Handle, 'open', PChar(UpdateURL), nil, nil, SW_SHOWNORMAL);
+end;
+
+procedure TFMenu.MAboutClick(Sender: TObject);
+begin
+  FAbout := TFAbout.Create(Self);
+  FAbout.ShowModal;
+  FAbout.Release;
+end;
+
+end.
Index: UUtil.pas
===================================================================
--- UUtil.pas	(révision 0)
+++ UUtil.pas	(révision 3)
@@ -0,0 +1,303 @@
+unit UUtil;
+
+{$WARN SYMBOL_PLATFORM OFF}
+
+interface
+
+uses
+  Windows, Forms, SysUtils, Messages, UVariables, lbCipher;
+
+function BdRReadString(RegKey, RegValue, Default: String): String;
+function BdRReadInteger(RegKey, RegValue: String; Default: Integer): Integer;
+function BdRReadFloat(RegKey, RegValue: String; Default: Double): Double;
+function BdRReadBoolean(RegKey, RegValue: String; Default: Boolean): Boolean;
+procedure BdRWriteString(RegKey, RegValue, Value: String);
+procedure BdRWriteInteger(RegKey, RegValue: String; Value: Integer);
+procedure BdRWriteFloat(RegKey, RegValue: String; Value: Double);
+procedure BdRWriteBoolean(RegKey, RegValue: String; Value: Boolean);
+function WideToBool(Value: String): Boolean;
+function BoolToWide(Value: Boolean): String;
+function DblToStr(Value: Double; Digits: Integer): String;
+function ExtToLCID(Ext: String): Cardinal;
+function ExtToName(Ext: String): String;
+function DefaultCurrency: String;
+function DecimalSeparator: String;
+function ThousandSeparator: String;
+function ListSeparator: String;
+function DriveType(Drive: String): UINT;
+function MD5Str(Digest: TMD5Digest): String;
+function CompleteKey: String;
+function EducationKey: String;
+function TooMuchRecords: Boolean;
+function IsComplete: Boolean;
+function IsEducation: Boolean;
+function IsEvaluation: Boolean;
+
+implementation
+
+type
+  WindowsString = type AnsiString(1252);
+
+function BdRReadString(RegKey, RegValue, Default: String): String;
+begin
+  if Reg.OpenKeyReadOnly(RegKey)
+  and Reg.ValueExists(RegValue)
+  then
+    Result := Reg.ReadString(RegValue)
+  else
+    Result := Default;
+  Reg.CloseKey;
+end;
+
+function BdRReadInteger(RegKey, RegValue: String; Default: Integer): Integer;
+begin
+  if Reg.OpenKeyReadOnly(RegKey)
+  and Reg.ValueExists(RegValue)
+  then
+    Result := Reg.ReadInteger(RegValue)
+  else
+    Result := Default;
+  Reg.CloseKey;
+end;
+
+function BdRReadFloat(RegKey, RegValue: String; Default: Double): Double;
+begin
+  if Reg.OpenKeyReadOnly(RegKey)
+  and Reg.ValueExists(RegValue)
+  then
+    Result := Reg.ReadFloat(RegValue)
+  else
+    Result := Default;
+  Reg.CloseKey;
+end;
+
+function BdRReadBoolean(RegKey, RegValue: String; Default: Boolean): Boolean;
+begin
+  if Reg.OpenKeyReadOnly(RegKey)
+  and Reg.ValueExists(RegValue)
+  then
+//    Result := Reg.ReadBool(RegValue);
+    // TRegistry stocke les valeurs Boolean en tant que Integer (REG_DWORD)
+    // TRegistryIniFile utilisait le type String (REG_SZ)
+    // pour garder la compatibilit� avec l'ancienne version,
+    // je lis une valeur String que je convertis en Boolean
+    Result := WideToBool(Reg.ReadString(RegValue))
+  else
+    Result := Default;
+  Reg.CloseKey;
+end;
+
+procedure BdRWriteString(RegKey, RegValue, Value: String);
+begin
+  Reg.Access := KEY_WRITE;
+  if Reg.OpenKey(RegKey, True)
+  then
+    Reg.WriteString(RegValue, Value);
+  Reg.CloseKey;
+end;
+
+procedure BdRWriteInteger(RegKey, RegValue: String; Value: Integer);
+begin
+  Reg.Access := KEY_WRITE;
+  if Reg.OpenKey(RegKey, True)
+  then
+    Reg.WriteInteger(RegValue, Value);
+  Reg.CloseKey;
+end;
+
+procedure BdRWriteFloat(RegKey, RegValue: String; Value: Double);
+begin
+  Reg.Access := KEY_WRITE;
+  if Reg.OpenKey(RegKey, True)
+  then
+    Reg.WriteFloat(RegValue, Value);
+  Reg.CloseKey;
+end;
+
+procedure BdRWriteBoolean(RegKey, RegValue: String; Value: Boolean);
+begin
+  Reg.Access := KEY_WRITE;
+  if Reg.OpenKey(RegKey, True)
+  then
+//    Reg.WriteBool(RegValue, Value);
+    // TRegistry stocke les valeurs Boolean en tant que Integer (REG_DWORD)
+    // TRegistryIniFile utilisait le type String (REG_SZ)
+    // pour garder la compatibilit� avec l'ancienne version,
+    // je convertis les valeurs Boolean en String avant de l'enregistrer
+    Reg.WriteString(RegValue, BoolToWide(Value));
+  Reg.CloseKey;
+end;
+
+function WideToBool(Value: String): Boolean;
+begin
+  Result := Value <> '0';
+end;
+
+function BoolToWide(Value: Boolean): String;
+const
+  Values: array[Boolean] of string = ('0', '1');
+begin
+  Result := Values[Value];
+end;
+
+function DblToStr(Value: Double; Digits: Integer): String;
+var
+  s: String;
+  l: Integer;
+begin
+  s := FloatToStrF(Value, ffFixed, 15, Digits); // Conversion en cha�ne
+  s := Trim(s); // Suppression des espaces
+  l := Length(s);
+  if Pos('.', s) > 0
+  then
+    while (l > 0) and (s[l] = '0') do Dec(l); // Suppression des z�ros
+  if (l > 0) and (s[l] = '.') then Dec(l); // Suppression du point
+  Result := Copy(s, 1, l);
+end;
+
+function ExtToLCID(Ext: String): Cardinal;
+var
+  i: Integer;
+begin
+  // Recherche du LCID correspondant � l'extension
+  i := 0;
+  while (i < Languages.Count) and (UpperCase(Languages.Ext[i]) <> Ext) do
+    Inc(i);
+  if i = Languages.Count
+  then // Introuvable
+    Result := 0
+  else
+    Result := Languages.LocaleID[i];
+end;
+
+function ExtToName(Ext: String): String;
+var
+  i: Integer;
+begin
+  i := 0;
+  while (i < Languages.Count) and (Languages.Ext[i] <> Ext) do
+    Inc(i);
+  if i = Languages.Count
+  then // Introuvable
+    Result := ''
+  else
+    Result := Languages.Name[i];
+end;
+
+function DefaultCurrency: String;
+begin
+  Result := GetLocaleStr(LOCALE_USER_DEFAULT, LOCALE_SCURRENCY, '$');
+end;
+
+function DecimalSeparator: String;
+begin
+  Result := GetLocaleStr(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, '.');
+end;
+
+function ThousandSeparator: String;
+begin
+  Result := GetLocaleStr(LOCALE_USER_DEFAULT, LOCALE_STHOUSAND, '');
+end;
+
+function ListSeparator: String;
+begin
+  Result := GetLocaleStr(LOCALE_USER_DEFAULT, LOCALE_SLIST, ';');
+end;
+
+function DriveType(Drive: String): UINT;
+begin
+  Result := GetDriveType(PChar(Drive));
+end;
+
+function MD5Str(Digest: TMD5Digest): String;
+var
+	i: Byte;
+  sb: TStringBuilder;
+const
+	Digits: array[0..15] of Char =
+		('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
+begin
+  sb := TStringBuilder.Create;
+  for i := 0 to 15 do
+    sb.Append(Digits[(Digest[I] shr 4) and $0f]).Append(Digits[Digest[I] and $0f]);
+  sb.Insert(24, '-').Insert(16, '-').Insert(8, '-');
+  Result := sb.ToString;
+  FreeAndNil(sb);
+end;
+
+function CompleteKey: String;
+var
+  sb: TStringBuilder;
+  Digest: TMD5Digest;
+begin
+  sb := TStringBuilder.Create;
+  sb.Append(Format('InraPorc version %d : ', [MajorVersion]));
+  sb.Append(Format('licence num�ro %d ', [LicenseNumber]));
+  sb.Append(Format('sur le volume %s ', [Volume]));
+  sb.Append(Format('accord�e � %s %s (%s) ', [FirstName, LastName, Company]));
+  sb.Append(Format('valable jusqu''au %s', [FinalDate]));
+  StringHashMD5(Digest, WindowsString(sb.ToString));
+  FreeAndNil(sb);
+  Result := MD5Str(Digest);
+end;
+
+function EducationKey: String;
+var
+  sb: TStringBuilder;
+  Digest: TMD5Digest;
+begin
+  sb := TStringBuilder.Create;
+  sb.Append(Format('InraPorc version %d : ', [MajorVersion]));
+  sb.Append('licence limit�e � l''�ducation ');
+  sb.Append(Format('sur le volume %s ', [Volume]));
+  sb.Append(Format('accord�e � %s %s (%s) ', [FirstName, LastName, Company]));
+  sb.Append(Format('valable jusqu''au %s', [FinalDate]));
+  StringHashMD5(Digest, WindowsString(sb.ToString));
+  FreeAndNil(sb);
+  Result := MD5Str(Digest);
+end;
+
+function TooMuchRecords: Boolean;
+begin
+  Result := (ListMatiere.Count - NumMatInraAfz > 10)
+    or (ListAliment.Count > 10)
+    or (ListSeqAliT.Count > 5)
+    or (ListRationT.Count > 5)
+    or (ListLogeT.Count > 5)
+    or (ListProfilT.Count > 5)
+    or (ListSimulT.Count > 5)
+    or (ListSeqAliP.Count > 5)
+    or (ListRationP.Count > 5)
+    or (ListProfilP.Count > 5)
+    or (ListSimulP.Count > 5);
+end;
+
+function IsComplete: Boolean;
+begin
+  Result := (LicenseType = 2)
+    and (LicenseNumber > 0)
+    and (Length(FirstName) > 0)
+    and (Length(LastName) > 0)
+    and (StrToInt(FormatDateTime('yyyymmdd', Date)) <= StrToInt(Copy(FinalDate, 7, 4) + Copy(FinalDate, 4, 2) + Copy(FinalDate, 1, 2)))
+    and (DriveType(Drive) = DRIVE_FIXED)
+    and AnsiSameText(SoftwareEnableKey, CompleteKey);
+end;
+
+function IsEducation: Boolean;
+begin
+  Result := (LicenseType = 1)
+    and (Length(FirstName) > 0)
+    and (Length(LastName) > 0)
+    and (Length(Company) > 0)
+    and (StrToInt(FormatDateTime('yyyymmdd', Date)) <= StrToInt(Copy(FinalDate, 7, 4) + Copy(FinalDate, 4, 2) + Copy(FinalDate, 1, 2)))
+    and AnsiSameText(SoftwareEnableKey, EducationKey)
+    and not TooMuchRecords;
+end;
+
+function IsEvaluation: Boolean;
+begin
+  Result := (LicenseType = 0)
+    and not TooMuchRecords;
+end;
+
+end.
Index: UFRapAliElem.pas
===================================================================
--- UFRapAliElem.pas	(révision 0)
+++ UFRapAliElem.pas	(révision 3)
@@ -0,0 +1,202 @@
+unit UFRapAliElem ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapAliElem = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLTitre: TQRLabel;
+    QRLAliment: TQRLabel;
+    CDSRapport: TClientDataSet;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    SFAliment: TStringField;
+    QRDBAliment: TQRDBText;
+    QRLTFecale: TQRLabel;
+    QRLMS: TQRLabel;
+    QRDBTTMS: TQRDBText;
+    QRLFecale: TQRLabel;
+    QRLdFecale: TQRLabel;
+    QRSdFecale: TQRShape;
+    QRLdFecale_C: TQRLabel;
+    QRLdFecale_T: TQRLabel;
+    QRLMO: TQRLabel;
+    QRDBTTMO: TQRDBText;
+    QRLMAT: TQRLabel;
+    QRDBTTMAT: TQRDBText;
+    QRLSucres: TQRLabel;
+    QRDBTTSucres: TQRDBText;
+    QRLMM: TQRLabel;
+    QRDBTTMM: TQRDBText;
+    QRLLip: TQRLabel;
+    QRDBTTLip: TQRDBText;
+    QRLAmidon: TQRLabel;
+    QRDBTTAmidon: TQRDBText;
+    QRDBTdMO_C: TQRDBText;
+    QRDBTdMAT_C: TQRDBText;
+    QRDBTdLip_C: TQRDBText;
+    QRDBTdMO_T: TQRDBText;
+    QRDBTdMAT_T: TQRDBText;
+    QRDBTdLip_T: TQRDBText;
+    QRDBTdSucres_C: TQRDBText;
+    QRDBTdAmidon_C: TQRDBText;
+    QRDBTdSucres_T: TQRDBText;
+    QRDBTdAmidon_T: TQRDBText;
+    SFTMS: TStringField;
+    SFTMM: TStringField;
+    SFdMO_T: TStringField;
+    SFdLip_T: TStringField;
+    SFdMAT_T: TStringField;
+    SFdAmidon: TStringField;
+    SFdSucres: TStringField;
+    SFTMO: TStringField;
+    SFTLip: TStringField;
+    SFTMAT: TStringField;
+    SFTAmidon: TStringField;
+    SFTSucres: TStringField;
+    SFdMO_C: TStringField;
+    SFdLip_C: TStringField;
+    SFdMAT_C: TStringField;
+    QRLEB: TQRLabel;
+    QRDBTEB_C: TQRDBText;
+    QRLEnergie: TQRLabel;
+    QRLEVal: TQRLabel;
+    QRSEVal: TQRShape;
+    QRLEVal_C: TQRLabel;
+    QRLEVal_T: TQRLabel;
+    QRLabel1: TQRLabel;
+    QRDBTEM_C: TQRDBText;
+    QRLabel2: TQRLabel;
+    QRDBTED_C: TQRDBText;
+    QRLabel3: TQRLabel;
+    QRDBTEN_C: TQRDBText;
+    QRDBTEB_T: TQRDBText;
+    QRDBTEM_T: TQRDBText;
+    QRDBTED_T: TQRDBText;
+    QRDBTEN_T: TQRDBText;
+    SFEM_C: TStringField;
+    SFEB: TStringField;
+    SFEN_C: TStringField;
+    SFED_C: TStringField;
+    SFED_T: TStringField;
+    SFEM_T: TStringField;
+    SFEN_T: TStringField;
+    QRLTFibres: TQRLabel;
+    QRLCB: TQRLabel;
+    QRDBTCB: TQRDBText;
+    QRLFibres: TQRLabel;
+    QRLADF: TQRLabel;
+    QRDBTADF: TQRDBText;
+    QRLParois: TQRLabel;
+    QRDBTParois: TQRDBText;
+    QRLNDF: TQRLabel;
+    QRDBTNDF: TQRDBText;
+    QRLADL: TQRLabel;
+    QRDBTADL: TQRDBText;
+    SFCB: TStringField;
+    SFNDF: TStringField;
+    SFADF: TStringField;
+    SFADL: TStringField;
+    SFParois: TStringField;
+    QRLCompo: TQRLabel;
+    QRIInraPorc: TQRImage;
+    QRLInraPorc: TQRLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapAliElem: TFRapAliElem;
+
+implementation
+
+uses
+  UStrings, UCalcul, UUtil, UFAliment, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapAliElem }
+
+procedure TFRapAliElem.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    Append;
+    FieldValues['_Aliment_']:= FAliment.CBAliment.Text;
+    FieldValues['_TMS_']:= FAliment.PBTMS.Text;
+    FieldValues['_TMM_']:= FAliment.PBTMM.Text;
+    FieldValues['_TMO_']:= FAliment.PBTMO.Text;
+    FieldValues['_TLip_']:= FAliment.PBTLip.Text;
+    FieldValues['_TMAT_']:= FAliment.PBTMAT.Text;
+    FieldValues['_TAmidon_']:= FAliment.PBTAmidon.Text;
+    FieldValues['_TSucres_']:= FAliment.PBTSucres.Text;
+    FieldValues['_dMO_C_']:= FAliment.PBdMO_C.Text;
+    FieldValues['_dMO_T_']:= FAliment.PBdMO_T.Text;
+    FieldValues['_dLip_C_']:= FAliment.PBdLip_C.Text;
+    FieldValues['_dLip_T_']:= FAliment.PBdLip_T.Text;
+    FieldValues['_dMAT_C_']:= FAliment.PBdMAT_C.Text;
+    FieldValues['_dMAT_T_']:= FAliment.PBdMAT_T.Text;
+    FieldValues['_dAmidon_']:= FAliment.PBdAmidon_C.Text;
+    FieldValues['_dSucres_']:= FAliment.PBdSucres_C.Text;
+    FieldValues['_EB_']:= FAliment.PBEB_C.Text;
+    FieldValues['_ED_C_']:= FAliment.PBED_C.Text;
+    FieldValues['_ED_T_']:= FAliment.PBED_T.Text;
+    FieldValues['_EM_C_']:= FAliment.PBEM_C.Text;
+    FieldValues['_EM_T_']:= FAliment.PBEM_T.Text;
+    FieldValues['_EN_C_']:= FAliment.PBEN_C.Text;
+    FieldValues['_EN_T_']:= FAliment.PBEN_T.Text;
+    FieldValues['_CB_']:= FAliment.PBCB.Text;
+    FieldValues['_NDF_']:= FAliment.PBNDF.Text;
+    FieldValues['_ADF_']:= FAliment.PBADF.Text;
+    FieldValues['_ADL_']:= FAliment.PBADL.Text;
+    FieldValues['_Parois_']:= FAliment.PBParois.Text;
+    Post;
+  end ;
+  QRMMemo.Lines.Add(FAliment.CBAliment.Hint);
+  QRLCompo.Caption:= FAliment.Hint;
+  QRLTFecale.Caption:= FAliment.GBTFecale.Caption;
+  QRLdFecale.Caption:= FAliment.GBdFecale.Caption;
+  QRLTFibres.Caption:= FAliment.GBFibres.Caption;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFRapLogeT.pas
===================================================================
--- UFRapLogeT.pas	(révision 0)
+++ UFRapLogeT.pas	(révision 3)
@@ -0,0 +1,133 @@
+unit UFRapLogeT ;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, OleCtrls, StdCtrls, ComCtrls, DB, DBClient, ExtCtrls, QRCtrls,
+  QuickRpt, QRPrntr, MidasLib, UVariables, gnugettext;
+
+type
+  TFRapLogeT = class(TForm)
+    QRRapport: TQuickRep;
+    PHBRapport: TQRBand;
+    DBRapport: TQRBand;
+    QRLInraPorc: TQRLabel;
+    QRLTitre: TQRLabel;
+    CDSRapport: TClientDataSet;
+    SFLoge: TStringField;
+    PFBRapport: TQRBand;
+    QRLUser: TQRLabel;
+    QRLWarning: TQRLabel;
+    QRLLoge: TQRLabel;
+    QRDBTLoge: TQRDBText;
+    QRLMemo: TQRLabel;
+    QRMMemo: TQRMemo;
+    QRSDDate: TQRSysData;
+    QRSEntete: TQRShape;
+    DSRelation: TDataSource;
+    CDSRegles: TClientDataSet;
+    SFLogeKey: TStringField;
+    IFNo: TIntegerField;
+    SFModeFin: TStringField;
+    SFAliment: TStringField;
+    QRLRegles: TQRLabel;
+    QRLNo: TQRLabel;
+    QRDBTNo: TQRDBText;
+    QRShape2: TQRShape;
+    QRLModeFin: TQRLabel;
+    QRDBTModeFin: TQRDBText;
+    QRSDRegles: TQRSubDetail;
+    TBRapport: TQRBand;
+    QRDBTEtat: TQRDBText;
+    IFEtatKey: TIntegerField;
+    IFEtat: TIntegerField;
+    SFStrEtat: TStringField;
+    QRIInraPorc: TQRImage;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FRapLogeT: TFRapLogeT;
+
+implementation
+
+uses
+  UStrings, UUtil, UFLogeT, UFPrevRap ;
+
+{$R *.dfm}
+
+{ TFRapLogeT }
+
+procedure TFRapLogeT.FormCreate(Sender: TObject);
+var
+  etat, regle, nb : integer;
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  // Licence
+  if IsEducation and (Length (Course) > 0)
+  then
+    QRLUSer.Caption := Format('%s (%s)', [Course, Company])
+  else
+  if IsComplete or IsEducation
+  then
+    QRLUSer.Caption := Format('%s %s (%s)', [FirstName, LastName, Company])
+  else
+  if IsEvaluation
+  then
+    QRLUSer.Caption := StrEvaluation
+  else
+  begin
+    QRLUSer.Caption := StrReadOnly;
+    QRLUser.Font.Color := clRed;
+  end;
+  with CDSRapport do
+  begin
+    CreateDataSet;
+    for etat := 0 to 2 do
+    begin
+      Append;
+      FieldValues['_Loge_'] := FLogeT.CBLoge.Text;
+      FieldValues['_Etat_'] := etat;
+      FieldValues['_StrEtat_'] := FLogeT.TC.Tabs[etat];
+      Post;
+    end;
+  end;
+  QRMMemo.Lines.Add(FLogeT.CBLoge.Hint);
+  with CDSRegles do
+  begin
+    CreateDataSet;
+    for etat := 0 to 2 do
+    begin
+      case etat of
+        0 : // Gestation
+          nb := PLogeT.NbRuleGest;
+        1 : // Lactation
+          nb := PLogeT.NbRuleLact;
+        else // I.S.S.F.
+          nb := PLogeT.NbRuleISSF;
+      end;
+      for regle := 1 to nb do
+      begin
+        Append;
+        FieldValues['_Loge_'] := FLogeT.CBLoge.Text;
+        FieldValues['_Etat_'] := etat;
+        FieldValues['_No_'] := regle;
+        FieldValues['_ModeFin_'] := FLogeT.StrModeFin(etat, regle);
+        Post;
+      end;
+    end;
+  end;
+  RegisterPreviewClass(TQRPrevRapInterface);
+//  QRRapport.PreviewModal;
+//  RegisterPreviewClass(TQRStandardPreviewInterface);
+end;
+
+end.
Index: UFObservProfilP.dfm
===================================================================
--- UFObservProfilP.dfm	(révision 0)
+++ UFObservProfilP.dfm	(révision 3)
@@ -0,0 +1,412 @@
+object FObservProfilP: TFObservProfilP
+  Left = 200
+  Top = 200
+  HelpContext = 5330
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Observed data'
+  ClientHeight = 408
+  ClientWidth = 760
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  DesignSize = (
+    760
+    408)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object SBAddLine: TSpeedButton
+    Left = 16
+    Top = 216
+    Width = 80
+    Height = 24
+    Caption = 'Insert'
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000030000000100000000100
+      18000000000000090000120B0000120B00000000000000000000FF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+      8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+      8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+      0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+      80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+      0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+      FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+      0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+      8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+      FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+      00008000008000000000FF00FFFF00FFFF00FF00000000000000000000000000
+      000000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FF00FFFF00FF
+      FF00FF8080808080808080808080808080808080808080808080808080808080
+      80808080808080808080FF00FFFF00FFFF00FF00000000000000000000000000
+      0000008000008000008000008000008000008000008000000000FF00FFFF00FF
+      FF00FFFF00FF000000FF00FFFF00FF00000000FF0000FF0000FF0000FF0000FF
+      0000FF0000FF00000000FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FF80
+      8080808080808080808080808080808080808080808080808080FF00FFFF00FF
+      FF00FFFF00FF000000FF00FFFF00FF0000000080000080000080000080000080
+      00008000008000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+      0000000000000000000000000000000000000000000000000000FF00FFFF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FF8080808080808080808080808080808080
+      80808080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00
+      0000000000000000000000000000000000000000000000000000FF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+      8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+      8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBAddLineClick
+  end
+  object SBDelLine: TSpeedButton
+    Left = 104
+    Top = 216
+    Width = 80
+    Height = 24
+    Caption = 'Delete'
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000030000000100000000100
+      18000000000000090000120B0000120B00000000000000000000FF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+      8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+      8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+      0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF00FF808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+      0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+      FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+      8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+      FF00FF000000000080000080000080000080000080000080000080000000FF00
+      FFFF00FF000000FF00FFFF00FFFF00FFFF00FF0000000000FF0000FF0000FF00
+      00FF0000FF0000FF0000FF000000000000000000000000000000FF00FFFF00FF
+      FF00FF8080808080808080808080808080808080808080808080808080808080
+      80808080808080808080FF00FFFF00FFFF00FF00000000008000008000008000
+      0080000080000080000080000000000000000000000000000000FF00FFFF00FF
+      FF00FF0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF000000FF00
+      FFFF00FF000000FF00FFFF00FFFF00FFFF00FF80808080808080808080808080
+      8080808080808080808080808080FF00FFFF00FF808080FF00FFFF00FFFF00FF
+      FF00FF000000000080000080000080000080000080000080000080000000FF00
+      FFFF00FF000000FF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+      0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF00FF808080808080808080808080808080808080808080808080808080FF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000
+      0000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+      8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+      8080808080808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
+      000000000000000000000000000000000000000000000000FF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBDelLineClick
+  end
+  object SBImport: TSpeedButton
+    Left = 664
+    Top = 216
+    Width = 80
+    Height = 24
+    Anchors = [akTop, akRight]
+    Caption = 'Import'
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000030000000100000000100
+      1800000000000009000000000000000000000000000000000000FF00FFFF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+      8080808080808080808080808080808080808080FF00FFFF00FFFF00FFFF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF80808080808080808080808080808080808080
+      8080808080808080808080808080808080808080FF00FFFF00FF000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00808080FF00FFFF00FF80808080808080808080808080808080808080808080
+      8080808080808080808080808080808080FF00FFFF00FFFF00FF000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00808080FF00FFFF00FF00000000808000808000808000808000808000808000
+      8080008080008080008080008080000000808080FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+      80FF00FFFF00FFFF00FF00000000FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF000000808080FF00FFFF00FF000000008080
+      0080800080800080800080800080800080800080800080800080800080800000
+      00808080FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF000000000000
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF000000808080FF00FF00000000808000808000808000808000808000808000
+      8080008080008080008080008080000000808080FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+      80FF00FFFF00FFFF00FF00000000000000FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF000000808080FF00FF000000008080
+      0080800080800080800080800080800080800080800080800080800080800000
+      00808080FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF000000008080
+      00000000FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF00FFFF00000080808000000000808000808000808000808000808000808000
+      8080008080008080008080008080000000808080FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+      80FF00FFFF00FFFF00FF00000000808000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FF00FF000000008080
+      0080800080800080800080800080800080800080800080800080800080800000
+      00808080FF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FF000000008080
+      0080800080800080800080800080800080800080800080800080800080800000
+      00808080FF00FFFF00FF00000000808000808000808000808000808000808000
+      8080008080008080008080008080000000808080FF00FFFF00FF808080FF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF8080
+      80FF00FFFF00FFFF00FF00000000808000808000808000808000808000808000
+      8080008080008080008080008080000000808080FF00FFFF00FF000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00FF00FFFF00FFFF00FF80808080808080808080808080808080808080808080
+      8080808080808080808080808080808080FF00FFFF00FFFF00FF000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00FF00FFFF00FFFF00FFFF00FF000000008080008080008080008080000000FF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF808080
+      FF00FFFF00FFFF00FFFF00FF808080FF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FF000000008080008080008080008080000000FF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FF808080808080808080808080FF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+      FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+      FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBImportClick
+  end
+  object JvEnterAsTab1: TJvEnterAsTab
+    Left = 104
+    Top = 376
+    Width = 28
+    Height = 28
+  end
+  object BBOk: TBitBtn
+    Left = 586
+    Top = 376
+    Width = 80
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    NumGlyphs = 2
+    TabOrder = 1
+  end
+  object BBCancel: TBitBtn
+    Left = 674
+    Top = 376
+    Width = 80
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Cancel = True
+    Caption = 'Cancel'
+    ModalResult = 2
+    NumGlyphs = 2
+    TabOrder = 2
+  end
+  object DBGridObserv: TDBGrid
+    Left = 8
+    Top = 8
+    Width = 744
+    Height = 200
+    Anchors = [akLeft, akTop, akRight]
+    DataSource = DataSourceObservProfilP
+    Options = [dgEditing, dgTitles, dgColLines, dgRowLines, dgTabs, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit]
+    TabOrder = 0
+    TitleFont.Charset = DEFAULT_CHARSET
+    TitleFont.Color = clWindowText
+    TitleFont.Height = -11
+    TitleFont.Name = 'MS Sans Serif'
+    TitleFont.Style = []
+    OnKeyDown = DBGridObservKeyDown
+    Columns = <
+      item
+        Alignment = taCenter
+        Expanded = False
+        FieldName = 'Line'
+        ReadOnly = True
+        Title.Alignment = taCenter
+        Width = 40
+        Visible = True
+      end
+      item
+        Alignment = taCenter
+        Expanded = False
+        FieldName = 'Age'
+        Title.Alignment = taCenter
+        Visible = True
+      end
+      item
+        Alignment = taCenter
+        Expanded = False
+        FieldName = 'Feed'
+        Title.Alignment = taCenter
+        Visible = True
+      end
+      item
+        Alignment = taCenter
+        Expanded = False
+        FieldName = 'Weight'
+        Title.Alignment = taCenter
+        Visible = True
+      end
+      item
+        Alignment = taCenter
+        Expanded = False
+        FieldName = 'Backfat'
+        Title.Alignment = taCenter
+        Visible = True
+      end
+      item
+        Alignment = taCenter
+        Expanded = False
+        FieldName = 'Lean'
+        Title.Alignment = taCenter
+        Visible = True
+      end>
+  end
+  object MErrors: TMemo
+    Left = 8
+    Top = 248
+    Width = 744
+    Height = 120
+    TabStop = False
+    Anchors = [akLeft, akTop, akRight]
+    BorderStyle = bsNone
+    Color = clBtnFace
+    ReadOnly = True
+    TabOrder = 3
+    WantReturns = False
+    WordWrap = False
+  end
+  object DataSourceObservProfilP: TDataSource
+    DataSet = FProfilP.ASQLite3TableObservProfilP
+    Left = 8
+    Top = 376
+  end
+  object JvCsvDataSetImport: TJvCsvDataSet
+    ReadOnly = True
+    SavesChanges = False
+    AutoBackupCount = 0
+    Left = 40
+    Top = 376
+  end
+  object OpenDialogImport: TOpenDialog
+    DefaultExt = 'csv'
+    Filter = 'Comma-separated values (CSV)|*.csv'
+    Options = [ofHideReadOnly, ofNoChangeDir, ofPathMustExist, ofFileMustExist, ofEnableSizing]
+    Title = 'Import file'
+    Left = 72
+    Top = 376
+  end
+end
Index: UFBesGestT.pas
===================================================================
--- UFBesGestT.pas	(révision 0)
+++ UFBesGestT.pas	(révision 3)
@@ -0,0 +1,1511 @@
+unit UFBesGestT ;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, ComCtrls, PBNumEdit, PBSuperSpin,
+  Buttons, ExtCtrls, UVariables;
+
+type
+  TFBesGestT = class(TForm)
+    GBProfil: TGroupBox;
+    GBResult: TGroupBox;
+    GBLoge: TGroupBox;
+    CBProfil: TComboBox;
+    CBLoge: TComboBox;
+    GBComport: TGroupBox;
+    LDebout: TLabel;
+    LCalme: TLabel;
+    LMoyenne: TLabel;
+    LActive: TLabel;
+    TBAct: TTrackBar;
+    GBParam: TGroupBox;
+    LTyp: TLabel;
+    LSol: TLabel;
+    LTemp: TLabel;
+    CBTyp: TComboBox;
+    CBSol: TComboBox;
+    PBTemp: TPBSuperSpin;
+    GBSaillie: TGroupBox;
+    GBMiseBas: TGroupBox;
+    LAgeSail: TLabel;
+    LPdsSail: TLabel;
+    LP2Sail: TLabel;
+    PBAgeSail: TPBNumEdit;
+    PBPdsSail: TPBNumEdit;
+    PBP2Sail: TPBNumEdit;
+    ChkAgeSail: TCheckBox;
+    ChkPdsSail: TCheckBox;
+    ChkP2Sail: TCheckBox;
+    LP2MB: TLabel;
+    PBPdsApMB: TPBNumEdit;
+    PBP2MB: TPBNumEdit;
+    LPdsApMB: TLabel;
+    ChkPdsApMB: TCheckBox;
+    ChkP2MB: TCheckBox;
+    LNesTotaux: TLabel;
+    PBNesTotaux: TPBNumEdit;
+    LPdsNais: TLabel;
+    PBPdsNais: TPBNumEdit;
+    ChkNesTotaux: TCheckBox;
+    ChkPdsNais: TCheckBox;
+    GBAliment: TGroupBox;
+    LRation: TLabel;
+    LSeqAli: TLabel;
+    CBRation: TComboBox;
+    CBSeqAli: TComboBox;
+    LAppAli: TLabel;
+    LEMAli: TLabel;
+    PBAppAli: TPBNumEdit;
+    PBEMAli: TPBNumEdit;
+    LPortee: TLabel;
+    PBPortee: TPBSuperSpin;
+    LRegle: TLabel;
+    PBRegle: TPBSuperSpin;
+    ChkLoge: TCheckBox;
+    ChkSeqAli: TCheckBox;
+    ChkRation: TCheckBox;
+    ChkAppAli: TCheckBox;
+    ChkEMAli: TCheckBox;
+    PAct: TPanel;
+    PRegle: TPanel;
+    PBAct: TPBNumEdit;
+    PBAliment: TPBNumEdit;
+    PBEM: TPBNumEdit;
+    PBEN: TPBNumEdit;
+    PBdLys: TPBNumEdit;
+    LAliment: TLabel;
+    LEM: TLabel;
+    LEN: TLabel;
+    LdLys: TLabel;
+    LBesoins: TLabel;
+    BBRapGest: TBitBtn;
+    BBResGest: TBitBtn;
+    CBRationProfil: TComboBox;
+    LNbRegles: TLabel;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormActivate(Sender: TObject);
+    procedure CBProfilChange(Sender: TObject);
+    procedure PBAgeSailChange(Sender: TObject);
+    procedure ChkAgeSailClick(Sender: TObject);
+    procedure PBPdsSailChange(Sender: TObject);
+    procedure ChkPdsSailClick(Sender: TObject);
+    procedure PBP2SailChange(Sender: TObject);
+    procedure ChkP2SailClick(Sender: TObject);
+    procedure PBPdsApMBChange(Sender: TObject);
+    procedure ChkPdsApMBClick(Sender: TObject);
+    procedure PBP2MBChange(Sender: TObject);
+    procedure ChkP2MBClick(Sender: TObject);
+    procedure PBNesTotauxChange(Sender: TObject);
+    procedure ChkNesTotauxClick(Sender: TObject);
+    procedure PBPdsNaisChange(Sender: TObject);
+    procedure ChkPdsNaisClick(Sender: TObject);
+    procedure CBLogeChange(Sender: TObject);
+    procedure CBTypChange(Sender: TObject);
+    procedure CBSolChange(Sender: TObject);
+    procedure PBTempChange(Sender: TObject);
+    procedure TBActChange(Sender: TObject);
+    procedure CBSeqAliChange(Sender: TObject);
+    procedure CBRationChange(Sender: TObject);
+    procedure PBPorteeChange(Sender: TObject);
+    procedure ChkSeqAliClick(Sender: TObject);
+    procedure ChkRationClick(Sender: TObject);
+    procedure ChkLogeClick(Sender: TObject);
+    procedure PBRegleChange(Sender: TObject);
+    procedure ChkAppAliClick(Sender: TObject);
+    procedure PBAppAliChange(Sender: TObject);
+    procedure PBEMAliChange(Sender: TObject);
+    procedure ChkEMAliClick(Sender: TObject);
+    procedure BBResGestClick(Sender: TObject);
+    procedure BBRapGestClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+    Update, Modal: boolean;
+    cycle, regle: integer;
+//    pmax, a, b: double;
+    procedure CalcApport;
+    procedure CalcResult;
+    procedure AjustEnabled;
+  public
+    { D�clarations publiques }
+    AppAliTot, AppEDTot, AppEMTot, AppENTot: double;
+    BesEMTot, BesEMEntTot, BesEMActTot, BesEMTheTot, BesEMPortTot, BesEMResTot: double;
+    AppAli, AppED, AppEM, AppEN: array [1..DureeGest] of double;
+    BesEMEnt, BesEMAct, BesEMThe, BesEMPort, BesP, BesCa: array [1..DureeGest] of double;
+    AppAA, BesAA, BesAAEnt, BesAAPort, BesAARes: array[1..14, 1..DureeGest] of double;
+  end;
+
+var
+  FBesGestT: TFBesGestT;
+
+implementation
+
+uses
+  Math, SysUtils, gnugettext, UStrings, UInit, UFindRec, UCalcul, UFResBesGestT,
+  UFRapBesGestT;
+
+{$R *.dfm}
+
+{ TFBesGestT }
+
+procedure TFBesGestT.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  Constraints.MinWidth := 624 + (Width - ClientWidth);
+  Width := Constraints.MinWidth;
+  Constraints.MaxWidth := Constraints.MinWidth;
+  Constraints.MinHeight := 464 + (Height - ClientHeight);
+  Height := Constraints.MinHeight;
+  Constraints.MaxHeight := Constraints.MinHeight;
+  CBRationProfil.ItemIndex := 0;
+  LTemp.Caption := Format('%s (%s)', [LTemp.Caption, StrDegC]);
+end;
+
+procedure TFBesGestT.FormShow(Sender: TObject);
+begin
+  Modal := False;
+  Update := TRUE;
+  PBTemp.AsInteger := 20;
+  Update := FALSE;
+end;
+
+procedure TFBesGestT.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  Action := caFree;
+  NumWinBesGestT := -1;
+end;
+
+procedure TFBesGestT.FormActivate(Sender: TObject);
+var
+  i: integer;
+begin
+  if not Modal
+  then
+  begin
+    StringsProfilT(CBProfil.Items, False);
+    CBLoge.Clear;
+    CBLoge.Items.Add(StrSaisieManuelle);
+    if ListLogeT.Count > 0
+    then
+      for i := 0 to ListLogeT.Count - 1 do
+      begin
+        PLogeT := ListLogeT[i];
+        if LogeTValid(PLogeT)
+        then
+          CBLoge.Items.Add(PLogeT.Nom);
+      end;
+    CBLoge.ItemIndex := 0;
+    CBLogeChange(nil);
+    StringsSeqAliT(CBSeqAli.Items, False);
+    StringsRationT(CBRation.Items, False);
+    CBProfilChange(nil);
+  end;
+end;
+
+procedure TFBesGestT.CBProfilChange(Sender: TObject);
+{
+const
+  DELTA = 0.3 ;
+  SEUIL = 0.001 ;
+  MAX_TOURS = 1000 ;
+var
+  i, j, tour, mini : integer ;
+  delta_pmax, delta_a, delta_b : double ;
+  tab_pmax, tab_a, tab_b, tab_ecart : array[0..NB_CYCLES] of double ;
+  ok : boolean ;
+}
+begin
+  if CBProfil.ItemIndex = -1
+  then
+  begin
+    CBProfil.Hint := '' ;
+    Update := TRUE ;
+    ChkAgeSail.Checked := FALSE ;
+    ChkPdsSail.Checked := FALSE ;
+    ChkP2Sail.Checked := FALSE ;
+    ChkPdsApMB.Checked := FALSE ;
+    ChkP2MB.Checked := FALSE ;
+    ChkNesTotaux.Checked := FALSE ;
+    ChkPdsNais.Checked := FALSE ;
+    ChkLoge.Checked := FALSE ;
+    ChkSeqAli.Checked := FALSE ;
+    ChkRation.Checked := FALSE ;
+    ChkAppAli.Checked := FALSE ;
+    ChkEMAli.Checked := FALSE ;
+    CalcApport ; // L'apport est recalcul� avec des teneurs standards
+    CalcResult ;
+    Update := FALSE ;
+  end
+  else
+  begin
+    PProfilT := ListProfilT[FindIdxProfilT (CBProfil.Text)] ;
+    CBProfil.Hint := PProfilT.Memo ;
+{
+    // Recherche des param�tres pour la courbe de poids apr�s mise-bas
+    tab_pmax[0] := 0 ;
+    for i := 1 to NB_CYCLES do
+      with PProfilT.Truies[i] do
+        if PdsApMB > tab_pmax[0]
+        then
+          tab_pmax[0] := PdsApMB ;
+    tab_a[0] := 1.5 ;
+    tab_b[0] := 1.1 ;
+    delta_pmax := tab_pmax[0] * DELTA ;
+    delta_a := tab_a[0] * DELTA ;
+    delta_b := tab_b[0] * DELTA ;
+    tour := 0 ;
+    repeat
+      // �value les points
+      for i := 1 to NB_CYCLES do
+        tab_pmax[i] := tab_pmax[0] + Power (-1, i) * delta_pmax ;
+      for i := 1 to NB_CYCLES do
+        tab_a[i] := tab_a[0] + Power (-1, i) * delta_a ;
+      for i := 1 to NB_CYCLES do
+        tab_b[i] := tab_b[0] + Power (-1, (i + 1) div 2) * delta_b ;
+      for j := 0 to NB_CYCLES do
+      begin
+        tab_ecart[j] := 0 ;
+        for i := 1 to NB_CYCLES do
+          with PProfilT.Truies[i] do
+            tab_ecart[j] := tab_ecart[j] + Power (tab_pmax[j] * (1 - Exp ((- tab_a[j] / 1000) * Power (AgeSail + 114, tab_b[j]))) - PdsApMB, 2) ;
+      end ;
+      // recherche le meilleur point
+      mini := 0 ;
+      for i := 1 to NB_CYCLES do
+        if tab_ecart[i] < tab_ecart[mini]
+        then
+          mini := i ;
+      // d�termine le point central
+      if mini = 0
+      then
+      begin
+        delta_pmax := delta_pmax * 0.8 ;
+        delta_a := delta_a * 0.8 ;
+        delta_b := delta_b * 0.8 ;
+      end
+      else
+      begin
+        tab_pmax[0] := tab_pmax[mini] ;
+        tab_a[0] := tab_a[mini] ;
+        tab_b[0] := tab_b[mini] ;
+      end ;
+     // �value si les crit�res de sortie sont satisfaits
+      ok := (delta_pmax < Abs (tab_pmax [mini] * SEUIL))
+        and (delta_a < Abs (tab_a [mini] * SEUIL))
+        and (delta_b < Abs (tab_b [mini] * SEUIL)) ;
+      Inc (tour) ;
+    until ok or (tour > MAX_TOURS) ;
+    if ok
+    then
+    begin
+      pmax := tab_pmax[0] ;
+      a := tab_a[0] ;
+      b := tab_b[0] ;
+    end ;
+}
+    // Remplissage des champs avec les valeurs du profil
+    Update := TRUE ;
+    if ChkAgeSail.Checked
+    then
+      ChkAgeSailClick (nil)
+    else
+      ChkAgeSail.Checked := TRUE ;
+    if ChkPdsSail.Checked
+    then
+      ChkPdsSailClick (nil)
+    else
+      ChkPdsSail.Checked := TRUE ;
+    if ChkP2Sail.Checked
+    then
+      ChkP2SailClick (nil)
+    else
+      ChkP2Sail.Checked := TRUE ;
+    if ChkPdsApMB.Checked
+    then
+      ChkPdsApMBClick (nil)
+    else
+      ChkPdsApMB.Checked := TRUE ;
+    if ChkP2MB.Checked
+    then
+      ChkP2MBClick (nil)
+    else
+      ChkP2MB.Checked := TRUE ;
+    if ChkNesTotaux.Checked
+    then
+      ChkNesTotauxClick (nil)
+    else
+      ChkNesTotaux.Checked := TRUE ;
+    if ChkPdsNais.Checked
+    then
+      ChkPdsNaisClick (nil)
+    else
+      ChkPdsNais.Checked := TRUE ;
+    if ChkLoge.Checked
+    then
+      ChkLogeClick (nil)
+    else
+      ChkLoge.Checked := TRUE ;
+    regle := 1 ;
+    if PBRegle.AsInteger = regle
+    then
+      PBRegleChange (nil)
+    else
+      PBRegle.AsInteger := regle ;
+    PBRegle.MaxValue := PLogeT.NbRuleGest ;
+    LNbRegles.Caption := Format ('/ %d', [PLogeT.NbRuleGest]) ;
+    // Remplissage des champs avec les valeurs du logement
+    CBTyp.ItemIndex := PLogeT.RuleGest[regle].Typ ;
+    if CBTyp.ItemIndex = 2
+    then // Plein-air
+    begin
+      CBSol.ItemIndex := -1 ;
+      CBSol.Enabled := FALSE ;
+    end
+    else
+      CBSol.ItemIndex := PLogeT.RuleGest[regle].Sol ;
+    PBTemp.AsInteger := PLogeT.RuleGest[regle].Temp ;
+    TBAct.Position := PLogeT.RuleGest[regle].Act ;
+    if ChkSeqAli.Checked
+    then
+      ChkSeqAliClick (nil)
+    else
+      ChkSeqAli.Checked := TRUE ;
+    if ChkRation.Checked
+    then
+      ChkRationClick (nil)
+    else
+      ChkRation.Checked := TRUE ;
+    ChkAppAli.Checked := TRUE ;
+    ChkEMAli.Checked := TRUE ;
+    CalcApport ;
+    ChkAppAliClick (nil) ;
+    ChkEMAliClick (nil) ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+  AjustEnabled ;
+end;
+
+procedure TFBesGestT.PBPorteeChange(Sender: TObject);
+begin
+  cycle := PBPortee.AsInteger ;
+  if CBProfil.ItemIndex <> -1
+  then
+  begin
+    // Remplissage des champs avec les valeurs du profil
+    Update := TRUE ;
+    if ChkAgeSail.Checked
+    then
+      ChkAgeSailClick (nil)
+    else
+      ChkAgeSail.Checked := TRUE ;
+    if ChkPdsSail.Checked
+    then
+      ChkPdsSailClick (nil)
+    else
+      ChkPdsSail.Checked := TRUE ;
+    if ChkP2Sail.Checked
+    then
+      ChkP2SailClick (nil)
+    else
+      ChkP2Sail.Checked := TRUE ;
+    if ChkPdsApMB.Checked
+    then
+      ChkPdsApMBClick (nil)
+    else
+      ChkPdsApMB.Checked := TRUE ;
+    if ChkP2MB.Checked
+    then
+      ChkP2MBClick (nil)
+    else
+      ChkP2MB.Checked := TRUE ;
+    if ChkNesTotaux.Checked
+    then
+      ChkNesTotauxClick (nil)
+    else
+      ChkNesTotaux.Checked := TRUE ;
+    if ChkPdsNais.Checked
+    then
+      ChkPdsNaisClick (nil)
+    else
+      ChkPdsNais.Checked := TRUE ;
+    if ChkRation.Checked
+    then
+      ChkRationClick (nil)
+    else
+      ChkRation.Checked := TRUE ;
+    ChkAppAli.Checked := TRUE ;
+    ChkEMAli.Checked := TRUE ;
+    CalcApport ;
+    ChkAppAliClick (nil) ;
+    ChkEMAliClick (nil) ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.PBAgeSailChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    if ChkPdsApMB.Checked
+    then
+      ChkPdsApMBClick (nil) ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.ChkAgeSailClick(Sender: TObject);
+begin
+  PBAgeSail.Enabled := not ChkAgeSail.Checked ;
+  if ChkAgeSail.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      PBAgeSail.AsInteger := PProfilT.Truies[cycle].AgeSail ;
+      if ChkPdsApMB.Checked
+      then
+        ChkPdsApMBClick (nil) ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBAgeSail.AsInteger := PProfilT.Truies[cycle].AgeSail ;
+end;
+
+procedure TFBesGestT.PBPdsSailChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.ChkPdsSailClick(Sender: TObject);
+begin
+  PBPdsSail.Enabled := not ChkPdsSail.Checked ;
+  if ChkPdsSail.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      PBPdsSail.AsFloat := PProfilT.Truies[cycle].PdsSail ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBPdsSail.AsFloat := PProfilT.Truies[cycle].PdsSail ;
+end;
+
+procedure TFBesGestT.PBP2SailChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.ChkP2SailClick(Sender: TObject);
+begin
+  PBP2Sail.Enabled := not ChkP2Sail.Checked ;
+  if ChkP2Sail.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      PBP2Sail.AsFloat := PProfilT.Truies[cycle].P2Sail ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBP2Sail.AsFloat := PProfilT.Truies[cycle].P2Sail ;
+end;
+
+procedure TFBesGestT.PBPdsApMBChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.ChkPdsApMBClick(Sender: TObject);
+begin
+  PBPdsApMB.Enabled := not ChkPdsApMB.Checked ;
+  if ChkPdsApMB.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      // Calcul de PdsApMB � partir de AgeSail
+      PBPdsApMB.AsFloat := PProfilT.pmax * (1 - Exp ((- PProfilT.a / 1000) * Power (PBAgeSail.AsInteger + DureeGest, PProfilT.b))) ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      // Calcul de PdsApMB � partir de AgeSail
+      PBPdsApMB.AsFloat := PProfilT.pmax * (1 - Exp ((- PProfilT.a / 1000) * Power (PBAgeSail.AsInteger + DureeGest, PProfilT.b))) ;
+end;
+
+procedure TFBesGestT.PBP2MBChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.ChkP2MBClick(Sender: TObject);
+begin
+  PBP2MB.Enabled := not ChkP2MB.Checked ;
+  if ChkP2MB.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      PBP2MB.AsFloat := PProfilT.Truies[cycle].P2MB ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBP2MB.AsFloat := PProfilT.Truies[cycle].P2MB ;
+end;
+
+procedure TFBesGestT.PBNesTotauxChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.ChkNesTotauxClick(Sender: TObject);
+begin
+  PBNesTotaux.Enabled := not ChkNesTotaux.Checked ;
+  if ChkNesTotaux.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      PBNesTotaux.AsFloat := PProfilT.Porcelets[cycle].NesTotaux ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBNesTotaux.AsFloat := PProfilT.Porcelets[cycle].NesTotaux ;
+end;
+
+procedure TFBesGestT.PBPdsNaisChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.ChkPdsNaisClick(Sender: TObject);
+begin
+  PBPdsNais.Enabled := not ChkPdsNais.Checked ;
+  if ChkPdsNais.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      PBPdsNais.AsFloat := PProfilT.Porcelets[cycle].PdsNais ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBPdsNais.AsFloat := PProfilT.Porcelets[cycle].PdsNais ;
+end;
+
+procedure TFBesGestT.CBLogeChange(Sender: TObject);
+begin
+  if CBLoge.ItemIndex > 0
+  then // Logement
+  begin
+    PLogeT := ListLogeT[FindIdxLogeT (CBLoge.Text)] ;
+    CBLoge.Hint := PLogeT.Memo ;
+    PRegle.Visible := TRUE ;
+    CBTyp.Enabled := FALSE ;
+    CBSol.Enabled := FALSE ;
+    PBTemp.Enabled := FALSE ;
+    TBAct.Enabled := FALSE ;
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      regle := 1 ;
+      if PBRegle.AsInteger = regle
+      then
+        PBRegleChange (nil)
+      else
+        PBRegle.AsInteger := regle ;
+      PBRegle.MaxValue := PLogeT.NbRuleGest ;
+      LNbRegles.Caption := Format ('/ %d', [PLogeT.NbRuleGest]) ;
+      // Remplissage des champs avec les valeurs du logement
+      CBTyp.ItemIndex := PLogeT.RuleGest[regle].Typ ;
+      if CBTyp.ItemIndex = 2
+      then // Plein-air
+      begin
+        CBSol.ItemIndex := -1 ;
+        CBSol.Enabled := FALSE ;
+      end
+      else
+        CBSol.ItemIndex := PLogeT.RuleGest[regle].Sol ;
+      PBTemp.AsInteger := PLogeT.RuleGest[regle].Temp ;
+      TBAct.Position := PLogeT.RuleGest[regle].Act ;
+      CalcResult ;
+      Update := FALSE ;
+    end ;
+    CalcResult ;
+  end
+  else // Saisie manuelle
+  begin
+    PRegle.Visible := FALSE ;
+    CBTyp.Enabled := TRUE ;
+    CBSol.Enabled := TRUE ;
+    PBTemp.Enabled := TRUE ;
+    TBAct.Enabled := TRUE ;
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.ChkLogeClick(Sender: TObject);
+begin
+  CBLoge.Enabled := not ChkLoge.Checked ;
+  if ChkLoge.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CBLoge.ItemIndex := CBLoge.Items.IndexOf (FindNomLogeT (PProfilT.Loge)) ;
+      CBLogeChange (nil) ;
+      regle := 1 ;
+      if PBRegle.AsInteger = regle
+      then
+        PBRegleChange (nil)
+      else
+        PBRegle.AsInteger := regle ;
+      PBRegle.MaxValue := PLogeT.NbRuleGest ;
+      LNbRegles.Caption := Format ('/ %d', [PLogeT.NbRuleGest]) ;
+      // Remplissage des champs avec les valeurs du logement
+      CBTyp.ItemIndex := PLogeT.RuleGest[regle].Typ ;
+      if CBTyp.ItemIndex = 2
+      then // Plein-air
+      begin
+        CBSol.ItemIndex := -1 ;
+        CBSol.Enabled := FALSE ;
+      end
+      else
+        CBSol.ItemIndex := PLogeT.RuleGest[regle].Sol ;
+      PBTemp.AsInteger := PLogeT.RuleGest[regle].Temp ;
+      TBAct.Position := PLogeT.RuleGest[regle].Act ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+    begin
+      CBLoge.ItemIndex := CBLoge.Items.IndexOf (FindNomLogeT (PProfilT.Loge)) ;
+      CBLogeChange (nil) ;
+    end ;
+end;
+
+procedure TFBesGestT.PBRegleChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    regle := PBRegle.AsInteger ;
+    // Remplissage des champs avec les valeurs du logement
+    CBTyp.ItemIndex := PLogeT.RuleGest[regle].Typ ;
+    if CBTyp.ItemIndex = 2
+    then // Plein-air
+    begin
+      CBSol.ItemIndex := -1 ;
+      CBSol.Enabled := FALSE ;
+    end
+    else
+      CBSol.ItemIndex := PLogeT.RuleGest[regle].Sol ;
+    PBTemp.AsInteger := PLogeT.RuleGest[regle].Temp ;
+    TBAct.Position := PLogeT.RuleGest[regle].Act ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.CBTypChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    if CBTyp.ItemIndex = 2
+    then // Plein-air
+    begin
+      CBSol.ItemIndex := -1 ;
+      CBSol.Enabled := FALSE ;
+    end
+    else
+      if CBSol.ItemIndex = -1
+      then
+      begin
+        CBSol.ItemIndex := 0 ;
+        CBSol.Enabled := TRUE ;
+      end ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.CBSolChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.PBTempChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.TBActChange(Sender: TObject);
+begin
+  TBAct.SelEnd := TBAct.Position ;
+  PBAct.AsInteger := TBAct.Position ;
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.CBSeqAliChange(Sender: TObject);
+begin
+  if CBSeqAli.ItemIndex = -1
+  then
+    CBSeqAli.Hint := ''
+  else
+  begin
+    PSeqAliT := ListSeqAliT[FindIdxSeqAliT (CBSeqAli.Text)] ;
+    CBSeqAli.Hint := PSeqAliT.Memo ;
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      ChkEMAli.Checked := TRUE ;
+      CalcApport ;
+      ChkAppAliClick (nil) ;
+      ChkEMAliClick (nil) ;
+      CalcResult ;
+      Update := FALSE ;
+    end ;
+  end ;
+  AjustEnabled ;
+end;
+
+procedure TFBesGestT.ChkSeqAliClick(Sender: TObject);
+begin
+  CBSeqAli.Enabled := not ChkSeqAli.Checked ;
+  if ChkSeqAli.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliT (PProfilT.SeqAli)) ;
+      CBSeqAliChange (nil) ;
+      ChkEMAli.Checked := TRUE ;
+      CalcApport ;
+      ChkAppAliClick (nil) ;
+      ChkEMAliClick (nil) ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+    begin
+      CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliT (PProfilT.SeqAli)) ;
+      CBSeqAliChange (nil) ;
+    end ;
+end;
+
+procedure TFBesGestT.CBRationChange(Sender: TObject);
+begin
+  if CBRation.ItemIndex = -1
+  then
+    CBRation.Hint := ''
+  else
+  begin
+    PRationT := ListRationT[FindIdxRationT (CBRation.Text)] ;
+    CBRation.Hint := PRationT.Memo ;
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      ChkAppAli.Checked := TRUE ;
+      CalcApport ;
+      ChkAppAliClick (nil) ;
+      if ChkEMAli.Checked
+      then
+        ChkEMAliClick (nil) ;
+      CalcResult ;
+      Update := FALSE ;
+    end ;
+  end ;
+  AjustEnabled ;
+end;
+
+procedure TFBesGestT.ChkRationClick(Sender: TObject);
+begin
+  CBRation.Visible := not ChkRation.Checked ;
+  CBRationProfil.Visible := ChkRation.Checked ;
+  if ChkRation.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CBRation.ItemIndex := -1 ;
+      CBRationChange (nil) ;
+      ChkAppAli.Checked := TRUE ;
+      CalcApport ;
+      ChkAppAliClick (nil) ;
+      if ChkEMAli.Checked
+      then
+        ChkEMAliClick (nil) ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+    begin
+      CBRation.ItemIndex := -1 ;
+      CBRationChange (nil) ;
+    end ;
+end;
+
+procedure TFBesGestT.PBAppAliChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcApport ;
+    if ChkEMAli.Checked
+    then
+      ChkEMAliClick (nil) ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.ChkAppAliClick(Sender: TObject);
+begin
+  PBAppAli.Enabled := not ChkAppAli.Checked ;
+  if ChkAppAli.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CalcApport ;
+      PBAppAli.AsFloat := AppAliTot / DureeGest ;
+      if ChkEMAli.Checked
+      then
+        ChkEMAliClick (nil) ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      PBAppAli.AsFloat := AppAliTot / DureeGest ;
+end;
+
+procedure TFBesGestT.PBEMAliChange(Sender: TObject);
+begin
+  if not Update
+  then
+  begin
+    Update := TRUE ;
+    CalcApport ;
+    CalcResult ;
+    Update := FALSE ;
+  end ;
+end;
+
+procedure TFBesGestT.ChkEMAliClick(Sender: TObject);
+begin
+  PBEMAli.Enabled := not ChkEMAli.Checked ;
+  if ChkEMAli.Checked
+  then
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CalcApport ;
+      if AppAliTot = 0
+      then
+        PBEMAli.Text := ''
+      else
+        PBEMAli.AsFloat := AppEMTot / AppAliTot ;
+      CalcResult ;
+      Update := FALSE ;
+    end
+    else
+      if AppAliTot = 0
+      then
+        PBEMAli.Text := ''
+      else
+        PBEMAli.AsFloat := AppEMTot / AppAliTot
+  else
+    if not Update
+    then
+    begin
+      Update := TRUE ;
+      CalcApport ; // L'apport est recalcul� avec des teneurs standards
+      CalcResult ;
+      Update := FALSE ;
+    end ;
+end;
+
+procedure TFBesGestT.CalcApport ;
+var
+  i, Jour, AA, Unite : integer ;
+  PctAli1, PctAli2, Quantite, Ingere, IngSec1, IngSec2 : double ;
+  NumRuleSeqAli, NumRuleRation : integer ;
+  RuleSeqAli : array[1..MAX_RULE] of RecRuleSeqAliT ;
+  RuleRation : array[1..MAX_RULE] of RecRuleRationT ;
+  RuleSeqAliInit, RuleRationInit, Ecart : integer ;
+  RecCC1, RecCC2 : CompositionChimique ;
+  TabAAtotal1, TabAAtotal2, TabCUDAA1, TabCUDAA2 : array[0..12] of double ;
+  ok : boolean ;
+begin
+  // Initialisation
+  AppAliTot := 0 ;
+  AppEDTot := 0 ;
+  AppEMTot := 0 ;
+  AppENTot := 0 ;
+  for Jour := 1 to DureeGest do
+  begin
+    AppAli[Jour] := 0 ;
+    AppED[Jour] := 0 ;
+    AppEM[Jour] := 0 ;
+    AppEN[Jour] := 0 ;
+    for AA := 1 to 14 do
+      AppAA[AA, Jour] := 0 ;
+  end ;
+  if ChkEMAli.Checked
+  then // S�quence alimentaire
+    if CBSeqAli.ItemIndex = -1
+    then
+      Exit
+    else // Chargement des r�gles
+      for i := 1 to PSeqAliT.NbRuleGest do
+        RuleSeqAli[i] := PSeqAliT.RuleGest[i]
+  else // Teneur en EM
+    if PBEMAli.AsFloat = 0
+    then
+      Exit
+    else
+      if CBSeqAli.ItemIndex = -1
+      then // Cr�ation d'une r�gle sans aliment
+        with RuleSeqAli[1] do
+        begin
+          ModeFin := -1 ;
+          NumAli1 := -1 ;
+          NumAli2 := -1 ;
+          PctAli1Init := 100 ;
+          PctAli1Fin := 100 ;
+        end
+      else // Chargement des r�gles
+        for i := 1 to PSeqAliT.NbRuleGest do
+          RuleSeqAli[i] := PSeqAliT.RuleGest[i] ;
+  NumRuleSeqAli := 1 ;
+  RuleSeqAliInit := 1 ;
+  if ChkAppAli.Checked
+  then
+    if ChkRation.Checked
+    then // Profil animal
+      if CBProfil.ItemIndex = -1
+      then
+        Exit
+      else // Cr�ation d'une r�gle � partir du profil animal
+      begin
+        with RuleRation[1] do
+        begin
+          ModeFin := -1 ;
+          Equation := 0 ; // Constant
+          a := PProfilT.Gest[Cycle] ;
+        end ;
+        Unite := PProfilT.Unite ;
+      end
+    else // Plan de rationnement
+      if CBRation.ItemIndex = -1
+      then
+        Exit
+      else // Chargement des r�gles
+      begin
+        for i := 1 to PRationT.NbRuleGest do
+          RuleRation[i] := PRationT.RuleGest[i] ;
+        Unite := PRationT.UniteGest ;
+      end
+  else // Consommation moyenne
+    if PBAppAli.AsFloat = 0
+    then
+      Exit
+    else // Cr�ation d'une r�gle � partir de la consommation moyenne
+    begin
+      with RuleRation[1] do
+      begin
+        ModeFin := -1 ;
+        Equation := 0 ; // Constant
+        a := PBAppAli.AsFloat ;
+      end ;
+      Unite := 0 ; // Quantit�
+    end ;
+  NumRuleRation := 1 ;
+  RuleRationInit := 1 ;
+  // Boucle des jours
+  for Jour := 1 to DureeGest do
+  begin
+    // Aliment(s) distribu�(s)
+    repeat
+      ok := TRUE ;
+      with RuleSeqAli[NumRuleSeqAli] do
+        if ModeFin = 0
+        then // Dur�e
+          if (Jour - RuleSeqAliInit + 1 > ValFin) then ok := FALSE ;
+      if not (ok)
+      then // Changement de r�gle
+      begin
+        Inc (NumRuleSeqAli) ;
+        RuleSeqAliInit := Jour ;
+      end ;
+    until ok ;
+    with RuleSeqAli[NumRuleSeqAli] do
+    begin
+      // Composition aliment 1
+      if NumAli1 = -1
+      then
+      begin
+        RecCC1 := CCVide ;
+        for i := 0 to 12 do
+          TabAAtotal1[i] := 0 ;
+        for i := 0 to 12 do
+          TabCUDAA1[i] := 0 ;
+      end
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (NumAli1))] ;
+        RecCC1 := PAliment.CC ;
+        for i := 0 to 12 do
+          TabAAtotal1[i] := PAliment.AAtotal[i] ;
+        for i := 0 to 12 do
+          TabCUDAA1[i] := PAliment.CUDAA[i] ;
+      end ;
+      if not ChkEMAli.Checked
+      then // Teneur en EM
+        with RecCC1 do
+        begin
+          ED_T := (PBEMAli.AsFloat / 0.96) / MS * 1000 ;
+          EM_T := (PBEMAli.AsFloat) / MS * 1000 ;
+          EN_T := (PBEMAli.AsFloat * 0.74) / MS * 1000 ;
+        end ;
+      // Composition aliment 2
+      if NumAli2 = -1
+      then
+      begin
+        RecCC2 := CCVide ;
+        for i := 0 to 12 do
+          TabAAtotal2[i] := 0 ;
+        for i := 0 to 12 do
+          TabCUDAA2[i] := 0 ;
+      end
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment (FindNomAliment (NumAli2))] ;
+        RecCC2 := PAliment.CC ;
+        for i := 0 to 12 do
+          TabAAtotal2[i] := PAliment.AAtotal[i] ;
+        for i := 0 to 12 do
+          TabCUDAA2[i] := PAliment.CUDAA[i] ;
+      end ;
+      if not ChkEMAli.Checked
+      then // Teneur en EM
+        with RecCC2 do
+        begin
+          ED_T := (PBEMAli.AsFloat / 0.96) / MS * 1000 ;
+          EM_T := (PBEMAli.AsFloat) / MS * 1000 ;
+          EN_T := (PBEMAli.AsFloat * 0.74) / MS * 1000 ;
+        end ;
+      // Calcul des % aliments
+      if PctAli1Init = PctAli1Fin
+      then
+        PctAli1 := PctAli1Init
+      else // Transition
+      begin
+        Ecart := PctAli1Fin - PctAli1Init ;
+        if ModeFin = 0
+        then // Dur�e
+          PctAli1 := PctAli1Init + (Jour - RuleSeqAliInit) * Ecart / ValFin
+        else // Fin
+          PctAli1 := PctAli1Init + (Jour - RuleSeqAliInit) * Ecart / (DureeGest - RuleSeqAliInit) ;
+      end ;
+    end ;
+    PctAli2 := 100 - PctAli1 ;
+    // Quantit�(s) distribu�e(s)
+    repeat
+      ok := TRUE ;
+      with RuleRation[NumRuleRation] do
+        if ModeFin = 0
+        then // Dur�e
+          if Jour - RuleRationInit + 1 > ValFin then ok := FALSE ;
+      if not (ok)
+      then // Changement de r�gle
+      begin
+        Inc (NumRuleRation) ;
+        RuleRationInit := Jour ;
+      end ;
+    until ok ;
+    with RuleRation[NumRuleRation] do
+    begin
+      // Calcul des quantit�s
+      case Equation of
+        0 : // Constant
+          Quantite := a ;
+        1 : // Lin�aire
+          Quantite := a + b * (Jour - RuleRationInit) ;
+        2 : // Lin�aire-plateau
+          Quantite := LPvaleur (a, b, c, Jour - RuleRationInit + 1, d) ;
+        3 : // Curvilin�aire
+          Quantite := CLvaleur (a, c, Jour - RuleRationInit + 1, d) ;
+        else
+          Quantite := 0 ;
+      end ;
+      // Convertion de ED, EM, EN en quantit� si besoin
+      case Unite of
+        1 : // ED (MJ/j)
+          Ingere := Quantite
+            / (PctAli1 / 100 * RecCC1.ED_T * RecCC1.MS / 1000
+              + PctAli2 / 100 * RecCC2.ED_T * RecCC2.MS / 1000) ;
+        2 : // EM (MJ/j)
+          Ingere := Quantite
+            / (PctAli1 / 100 * RecCC1.EM_T * RecCC1.MS / 1000
+              + PctAli2 / 100 * RecCC2.EM_T * RecCC2.MS / 1000) ;
+        3 : // EN (MJ/j)
+          Ingere := Quantite
+            / (PctAli1 / 100 * RecCC1.EN_T * RecCC1.MS / 1000
+              + PctAli2 / 100 * RecCC2.EN_T * RecCC2.MS / 1000) ;
+        4 : // MS (kg/j)
+          Ingere := Quantite
+            / (PctAli1 / 100 * RecCC1.MS / 1000
+              + PctAli2 / 100 * RecCC2.MS / 1000) ;
+        else // QI (kg/j)
+          Ingere := Quantite ;
+      end ;
+    end ;
+    // Aliment ing�r�
+    AppAli[Jour] := Ingere ;
+    IngSec1 := Ingere * PctAli1 / 100 * RecCC1.MS / 1000 ;
+    IngSec2 := Ingere * PctAli2 / 100 * RecCC2.MS / 1000 ;
+    // Energie ing�r�e
+    AppED[Jour] := IngSec1 * RecCC1.ED_T + IngSec2 * RecCC2.ED_T ;
+    AppEM[Jour] := IngSec1 * RecCC1.EM_T + IngSec2 * RecCC2.EM_T ;
+    AppEN[Jour] := IngSec1 * RecCC1.EN_T + IngSec2 * RecCC2.EN_T ;
+    // Acides amin�s digestibles
+    for AA := 1 to 12 do
+      AppAA[AA, Jour] := IngSec1 * TabAAtotal1[AA] * TabCUDAA1[AA] / 100
+        + IngSec2 * TabAAtotal2[AA] * TabCUDAA2[AA] / 100 ;
+    // met+cys
+    AppAA[13, Jour] := AppAA[2, Jour] + AppAA[3, Jour] ;
+    // phe+tyr
+    AppAA[14, Jour] := AppAA[6, Jour] + AppAA[7, Jour] ;
+  end ;
+  // Totaux
+  AppAliTot := Sum (AppAli) ;
+  AppEDTot := Sum (AppED) ;
+  AppEMTot := Sum (AppEM) ;
+  AppENTot := Sum (AppEN) ;
+end ;
+
+procedure TFBesGestT.CalcResult ;
+var
+  i, Temperature, Jour, AA, NumRuleLoge, RuleLogeInit, Ecart : integer ;
+  PdsPort, PdsAvMB, EMSail, EMApMB, GMQ, PV, PFoetus, PPlacenta : double ;
+  BesEMBaseTot, EMEntSail, CorrJ, CorrNR, NRUterus, NR, LysRet, LysEnt : double ;
+  BesEMBase : array [1..DureeGest] of double ;
+  EMPortCum : array [0..DureeGest] of double ;
+  RuleLoge : array[1..MAX_RULE] of RecRuleLogeT ;
+  ok : boolean ;
+begin
+  if (PBPdsSail.AsFloat > 0)
+    and (PBP2Sail.AsFloat > 0)
+    and (PBPdsApMB.AsFloat >= PBPdsSail.AsFloat)
+    and (PBP2MB.AsFloat >= PBP2Sail.AsFloat)
+    and (PBNesTotaux.AsFloat > 0)
+    and (PBPdsNais.AsFloat > 0)
+    and (PBAppAli.AsFloat > 0)
+    and (PBEMAli.AsFloat > 0)
+  then
+  begin
+    //
+    // Besoins �n�rg�tiques
+    //
+    if CBLoge.ItemIndex > 0
+    then // Logement
+      for i := 1 to PLogeT.NbRuleGest do
+        RuleLoge[i] := PLogeT.RuleGest[i]
+    else // Saisie manuelle
+      with RuleLoge[1] do
+      begin
+        ModeFin := -1 ;
+        Typ := CBTyp.ItemIndex ;
+        Sol := CBSol.ItemIndex ;
+        Temp := PBTemp.AsInteger ;
+        Act := TBAct.Position ;
+      end ;
+    NumRuleLoge := 1 ;
+    RuleLogeInit := 1 ;
+    // Poids port�e
+    PdsPort := PBNesTotaux.AsFloat * PBPdsNais.AsFloat ;
+    // Poids avant mise-bas
+    PdsAvMB := PBPdsApMB.AsFloat + 0.3 + 1.329 * PdsPort ;
+    // Gain de poids (lin�aire)
+    GMQ := (PdsAvMB - PBPdsSail.AsFloat) / DureeGest ;
+    // Energie pour la constitution de r�serves
+    EMSail := (-256.8 + 3.2672 * PBPdsSail.AsFloat * PV2PVV + 10.992 * PBP2Sail.AsFloat) * 4.18 ;
+    EMApMB := (-256.8 + 3.2672 * PBPdsApMB.AsFloat * PV2PVV + 10.992 * PBP2MB.AsFloat) * 4.18 ;
+    BesEMResTot := (EMApMB - EMSail) / DureeGest / 0.77 ;
+    EMPortCum[0] := 0 ;
+    for Jour := 1 to DureeGest do
+    begin
+      repeat
+        ok := TRUE ;
+        with RuleLoge[NumRuleLoge] do
+          if ModeFin = 0
+          then // Dur�e
+            if Jour - RuleLogeInit + 1 > ValFin then ok := FALSE ;
+        if not (ok)
+        then // Changement de r�gle
+        begin
+          Inc (NumRuleLoge) ;
+          RuleLogeInit := Jour ;
+        end ;
+      until ok ;
+      PV := PBPdsSail.AsFloat + GMQ * Jour ;
+      BesEMEnt[Jour] := Power (PV, 0.75) * EEGest
+        - 0.3 * Power (PV, 0.75) * 240 / 1000 ;
+      EMPortCum[Jour] := Exp (11.72 - 8.62 * Exp (-0.01382 * Jour) + 0.0932 * PBNesTotaux.AsFloat) / 1000
+        * (PdsPort * 1.3 * 4.18) / (Exp (11.72 - 8.62 * Exp (-0.01382 * DureeGest) + 0.0932 * PBNesTotaux.AsFloat) / 1000) ;
+      BesEMPort[Jour] := (EMPortCum[Jour] - EMPortCum[Jour - 1]) / 0.48 ;
+      BesEMBase[Jour] := BesEMEnt[Jour] + BesEMPort[Jour] + BesEMResTot
+        + 0.3 * Power (PV, 0.75) * 240 / 1000 ; // Activit� de base
+      BesEMAct[Jour] := 0.3 * Power (PV, 0.75) * RuleLoge[NumRuleLoge].Act / 1000 ;
+      if (RuleLoge[NumRuleLoge].Sol = 1)
+      then // Paill�
+        Temperature := RuleLoge[NumRuleLoge].Temp + 3
+      else
+        Temperature := RuleLoge[NumRuleLoge].Temp ;
+      if (RuleLoge[NumRuleLoge].Typ = 1)
+      then // Collectif
+        if Temperature < TCICol
+        then
+          BesEMThe[Jour] := (TCICol - Temperature) * Power (PV, 0.75) * EThCol / 1000
+        else
+          BesEMThe[Jour] := 0
+      else
+        if Temperature < TCIInd
+        then
+          BesEMThe[Jour] := (TCIInd - Temperature) * Power (PV, 0.75) * EThInd / 1000
+        else
+          BesEMThe[Jour] := 0 ;
+    end ;
+    BesEMEntTot := Mean (BesEMEnt) ;
+    BesEMPortTot := Mean (BesEMPort) ;
+    BesEMBaseTot := Mean (BesEMBase) ;
+    BesEMActTot := Mean (BesEMAct) ;
+    BesEMTheTot := Mean (BesEMThe) ;
+    // Besoin total en �nergie
+    BesEMTot := BesEMEntTot + BesEMActTot + BesEMResTot + BesEMPortTot + BesEMTheTot ;
+    //
+    // Besoins en acides amin�s
+    //
+    EMEntSail := Power (PBPdsSail.AsFloat, 0.75) * EEGest ;
+    for Jour := 1 to DureeGest do
+    begin
+      NRUterus := Exp (8.09 - 8.71 * Exp (-0.01494 * Jour) + 0.0872 * PBNesTotaux.AsFloat) / 6.25
+        - Exp (8.09 - 8.71 * Exp (-0.01494 * (Jour - 1)) + 0.0872 * PBNesTotaux.AsFloat) / 6.25 ;
+      if (Jour < 98)
+      then
+        CorrJ := Jour
+      else
+        CorrJ := Jour - 6 / 16 * (Jour - 98) ;
+      Case cycle of
+        1 : // Port�e 1
+          CorrNR := 0.5708 ;
+        2 : // Port�e 2
+          CorrNR := 0.4345 ;
+        else
+          CorrNR := 0.3664 ;
+      end ;
+      NR := (-0.43 + 45.92 * CorrJ / 100 - 105.35 * Power (CorrJ / 100, 2) + 64.388 * Power (CorrJ / 100, 3)
+        + CorrNR * (BesEMBaseTot - EMEntSail) + NRUterus) * 0.85 ;
+      LysRet := NR * 6.25 * 0.067 ;
+      LysEnt := power ((PBPdsSail.AsFloat + (Jour * (PdsAvMB - PBPdsSail.AsFloat) / DureeGest)), 0.75) * 0.036 ;
+      // 1) Besoin total
+      BesAA[1, Jour] := (LysRet / 0.65) + LysEnt ;
+      for AA := 2 to 12 do
+        BesAA[AA, Jour] := BesAA[1, Jour] * ProtIdGest[AA] / 100 ;
+      // met+cys
+      BesAA[13, Jour] := BesAA[1, Jour] * (ProtIdGest[2] + ProtIdGest[3]) / 100 ;
+      // phe+tyr
+      BesAA[14, Jour] := BesAA[1, Jour] * (ProtIdGest[6] + ProtIdGest[7]) / 100 ;
+      // 2) Besoin d'entretien
+      BesAAEnt[1, Jour] := LysEnt ;
+      for AA := 2 to 12 do
+        BesAAEnt[AA, Jour] := BesAAEnt[1, Jour] * ProtIdEnt[AA] / 100 ;
+      // met+cys
+      BesAAEnt[13, Jour] := BesAAEnt[1, Jour] * (ProtIdEnt[2] + ProtIdEnt[3]) / 100 ;
+      // phe+tyr
+      BesAAEnt[14, Jour] := BesAAEnt[1, Jour] * (ProtIdEnt[6] + ProtIdEnt[7]) / 100 ;
+      // 3) Besoin pour la port�e
+      for AA := 1 to 14 do
+        BesAAPort[AA, Jour] := (BesAA[AA, Jour] - BesAAEnt[AA, Jour]) / NR * NRUterus ;
+      // 4) Besoin pour la constitution de r�serves
+      for AA := 1 to 14 do
+        BesAARes[AA, Jour] := BesAA[AA, Jour] - BesAAEnt[AA, Jour] - BesAAPort[AA, Jour] ;
+    end ;
+    //
+    // Besoin en min�raux
+    //
+    for Jour := 1 to DureeGest do
+    begin
+      PV := PBPdsSail.AsFloat + GMQ * Jour ;
+      PFoetus := (Exp (4.591 - 6.389 * Exp (0.02398 * (45 - Jour)) + 0.0897 * PBNesTotaux.AsFloat)
+          - Exp (4.591 - 6.389 * Exp (0.02398 * (45 - (Jour - 1))) + 0.0897 * PBNesTotaux.AsFloat))
+        * PdsPort * 6.25 / Exp (4.591 - 6.389 * Exp (0.02398 * (45 - DureeGest)) + 0.0897 * PBNesTotaux.AsFloat) ;
+      PPlacenta := Exp (7.34264 - 1.40598 * Exp (0.0625 * (45 - Jour)) + 0.00759 * Jour + 0.06339 * PBNesTotaux.AsFloat) * 0.0096 / 23.8
+        - Exp (7.34264 - 1.40598 * Exp (0.0625 * (45 - (Jour - 1))) + 0.00759 * (Jour - 1) + 0.06339 * PBNesTotaux.AsFloat) * 0.0096 / 23.8 ;
+      // Phosphore digestible
+      BesP[Jour] := 10 * PV / 1000
+        + (5.42 - 0.002857 * 2 * PV) * (PBPdsApMB.AsFloat - PBPdsSail.AsFloat) / DureeGest
+        + PFoetus + PPlacenta ;
+      // Calcium total
+      BesCa[Jour] := BesP[Jour] * 3.6 ;
+    end ;
+    //
+    // Affichage des r�sultats
+    //
+    if (AppEMTot = 0)
+    then
+      PBAliment.AsFloat := 0
+    else
+      PBAliment.AsFloat := BesEMTot * AppAliTot / AppEMTot ;
+    PBEM.AsFloat := BesEMTot ;
+    if (AppEMTot = 0)
+    then
+      PBEN.AsFloat := 0
+    else
+      PBEN.AsFloat := BesEMTot * AppENTot / AppEMTot ;
+    if (PBAliment.AsFloat = 0)
+    then
+      PBdLys.AsFloat := 0
+    else
+      PBdLys.AsFloat := BesAA[1, 105] ;
+    BBResGest.Enabled := TRUE ;
+    BBRapGest.Enabled := TRUE ;
+  end
+  else
+  begin
+    PBAliment.Text := '' ;
+    PBEM.Text := '' ;
+    PBEN.Text := '' ;
+    PBdLys.Text := '' ;
+    BBResGest.Enabled := FALSE ;
+    BBRapGest.Enabled := FALSE ;
+  end ;
+end ;
+
+procedure TFBesGestT.BBResGestClick(Sender: TObject);
+begin
+  Modal := True;
+  FResBesGestT := TFResBesGestT.Create (Self) ;
+  FResBesGestT.ShowModal ;
+  FResBesGestT.Release ;
+  Modal := False;
+end;
+
+procedure TFBesGestT.BBRapGestClick(Sender: TObject);
+begin
+  Modal := True;
+  FRapBesGestT := TFRapBesGestT.Create(Self);
+  FRapBesGestT.QRRapport.PreviewModal ;
+  FRapBesGestT.Release;
+  Modal := False;
+end;
+
+procedure TFBesGestT.AjustEnabled;
+begin
+  ChkAgeSail.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkPdsSail.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkP2Sail.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkPdsApMB.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkP2MB.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkNesTotaux.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkPdsNais.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkLoge.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkSeqAli.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkRation.Visible := CBProfil.ItemIndex <> -1 ;
+  ChkAppAli.Visible := (CBProfil.ItemIndex <> -1) or (CBRation.ItemIndex <> -1) ;
+  ChkEMAli.Visible := (CBProfil.ItemIndex <> -1) or (CBSeqAli.ItemIndex <> -1) ;
+end;
+
+end.
Index: UFPrevGraph.dfm
===================================================================
--- UFPrevGraph.dfm	(révision 0)
+++ UFPrevGraph.dfm	(révision 3)
@@ -0,0 +1,81 @@
+object FPrevGraph: TFPrevGraph
+  Left = 200
+  Top = 200
+  Caption = 'Graph preview'
+  ClientHeight = 480
+  ClientWidth = 640
+  Color = clBtnFace
+  Constraints.MinHeight = 360
+  Constraints.MinWidth = 416
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object LBas: TPanel
+    Left = 0
+    Top = 0
+    Width = 640
+    Height = 40
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 0
+    object LPrinter: TLabel
+      Left = 8
+      Top = 12
+      Width = 30
+      Height = 13
+      Caption = 'Printer'
+    end
+    object BBPrint: TBitBtn
+      Left = 320
+      Top = 8
+      Width = 80
+      Height = 24
+      Caption = 'Print'
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        0400000000000001000000000000000000001000000000000000000000000000
+        80000080000000808000800000008000800080800000C0C0C000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDD00000000000DDDDD88888888888DDDD07777777770
+        70DDD8DDDDDDDDD8D8DD000000000000070D8888888888888D8D0777777BBB77
+        000D8DDDDDDDDDDD888D077777788877070D8DDDDDDDDDDD8D8D000000000000
+        07708888888888888DD807777777777070708DDDDDDDDDD8D8D8D00000000007
+        0700D8888888888D8D88DD0FFFFFFFF07070DD8DDDDDDDD8D8D8DDD0F00000F0
+        000DDDD8D88888D8888DDDD0FFFFFFFF0DDDDDD8DDDDDDDD8DDDDDDD0F00000F
+        0DDDDDDD8D88888D8DDDDDDD0FFFFFFFF0DDDDDD8DDDDDDDD8DDDDDDD0000000
+        00DDDDDDD888888888DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+      NumGlyphs = 2
+      TabOrder = 0
+      OnClick = BBPrintClick
+    end
+    object CBPrinter: TComboBox
+      Left = 72
+      Top = 8
+      Width = 240
+      Height = 21
+      Style = csDropDownList
+      ItemHeight = 13
+      TabOrder = 1
+      OnChange = CBPrinterChange
+    end
+  end
+  object TPPGraph: TTeePreviewPanel
+    Left = 0
+    Top = 40
+    Width = 640
+    Height = 440
+    Orientation = ppoLandscape
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 1
+  end
+end
Index: UFUserEquation.pas
===================================================================
--- UFUserEquation.pas	(révision 0)
+++ UFUserEquation.pas	(révision 3)
@@ -0,0 +1,51 @@
+unit UFUserEquation;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Buttons, PBNumEdit, JvExStdCtrls, JvEdit, JvValidateEdit, 
+  gnugettext;
+
+type
+  TFUserEquation = class(TForm)
+    BBOk: TBitBtn;
+    BBCancel: TBitBtn;
+    LLongName: TLabel;
+    LShortName: TLabel;
+    LEquation: TLabel;
+    LA: TLabel;
+    LB: TLabel;
+    LC: TLabel;
+    RBMass: TRadioButton;
+    RBRatioPVV: TRadioButton;
+    ELongName: TEdit;
+    VEA: TJvValidateEdit;
+    VEB: TJvValidateEdit;
+    VEC: TJvValidateEdit;
+    EShortName: TEdit;
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FUserEquation: TFUserEquation;
+
+implementation
+
+{$R *.dfm}
+
+{ TFCommentAli }
+
+procedure TFUserEquation.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+end;
+
+end.
Index: UFBesLactT.dfm
===================================================================
--- UFBesLactT.dfm	(révision 0)
+++ UFBesLactT.dfm	(révision 3)
@@ -0,0 +1,669 @@
+object FBesLactT: TFBesLactT
+  Left = 25
+  Top = 167
+  HelpContext = 4900
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Requirements during lactation (sow)'
+  ClientHeight = 464
+  ClientWidth = 624
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBProfil: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 296
+    Height = 288
+    Caption = 'Animal profile'
+    TabOrder = 0
+    object LPortee: TLabel
+      Left = 16
+      Top = 44
+      Width = 23
+      Height = 13
+      Caption = 'Litter'
+    end
+    object CBProfil: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBProfilChange
+    end
+    object PBPortee: TPBSuperSpin
+      Left = 80
+      Top = 40
+      Width = 48
+      Height = 22
+      Cursor = crDefault
+      Alignment = taRightJustify
+      Decimals = 0
+      MaxValue = 8.000000000000000000
+      MinValue = 1.000000000000000000
+      NumberFormat = Standard
+      OnChange = PBPorteeChange
+      ParentShowHint = False
+      ShowHint = False
+      TabOrder = 1
+      EditorEnabled = False
+      Increment = 1.000000000000000000
+      RoundValues = False
+      Wrap = False
+    end
+    object GBSevrage: TGroupBox
+      Left = 8
+      Top = 136
+      Width = 280
+      Height = 144
+      Caption = 'Weaning'
+      TabOrder = 3
+      object LSevres: TLabel
+        Left = 8
+        Top = 44
+        Width = 78
+        Height = 13
+        Caption = 'Number weaned'
+      end
+      object LPdsNais: TLabel
+        Left = 8
+        Top = 68
+        Width = 76
+        Height = 13
+        Caption = 'Birth weight (kg)'
+      end
+      object LDureeLact: TLabel
+        Left = 8
+        Top = 20
+        Width = 110
+        Height = 13
+        Caption = 'Duration of lactation (d)'
+      end
+      object LPdsSev: TLabel
+        Left = 8
+        Top = 92
+        Width = 98
+        Height = 13
+        Caption = 'Weaning weight (kg)'
+      end
+      object LGMQ: TLabel
+        Left = 8
+        Top = 116
+        Width = 66
+        Height = 13
+        Caption = 'ADG litter (kg)'
+      end
+      object PBSevres: TPBNumEdit
+        Left = 200
+        Top = 40
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 1
+        NumberFormat = Standard
+        OnChange = PBSevresChange
+        TabOrder = 1
+      end
+      object PBPdsNais: TPBNumEdit
+        Left = 200
+        Top = 64
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 3
+        NumberFormat = Standard
+        OnChange = PBPdsNaisChange
+        TabOrder = 3
+      end
+      object ChkSevres: TCheckBox
+        Left = 256
+        Top = 42
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to use the information from the animal profil' +
+          'e'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        OnClick = ChkSevresClick
+      end
+      object ChkPdsNais: TCheckBox
+        Left = 256
+        Top = 66
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to use the information from the animal profil' +
+          'e'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 4
+        OnClick = ChkPdsNaisClick
+      end
+      object PBDureeLact: TPBSuperSpin
+        Left = 200
+        Top = 16
+        Width = 48
+        Height = 22
+        Cursor = crDefault
+        Alignment = taRightJustify
+        Decimals = 0
+        MaxValue = 28.000000000000000000
+        MinValue = 14.000000000000000000
+        NumberFormat = Standard
+        OnChange = PBDureeLactChange
+        ParentShowHint = False
+        ShowHint = False
+        TabOrder = 0
+        EditorEnabled = False
+        Increment = 1.000000000000000000
+        RoundValues = False
+        Wrap = False
+      end
+      object PBPdsSev: TPBNumEdit
+        Left = 200
+        Top = 88
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 3
+        NumberFormat = Standard
+        OnChange = PBPdsSevChange
+        TabOrder = 5
+      end
+      object ChkPdsSev: TCheckBox
+        Left = 256
+        Top = 90
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to calculate the information from the animal ' +
+          'profile and the duration of lactation'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 6
+        OnClick = ChkPdsSevClick
+      end
+      object PBGMQ: TPBNumEdit
+        Left = 200
+        Top = 112
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Enabled = False
+        Decimals = 3
+        NumberFormat = Standard
+        TabOrder = 7
+      end
+      object ChkDureeLact: TCheckBox
+        Left = 256
+        Top = 18
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to use the information from the animal profil' +
+          'e'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 8
+        OnClick = ChkDureeLactClick
+      end
+    end
+    object GBMiseBas: TGroupBox
+      Left = 8
+      Top = 64
+      Width = 280
+      Height = 72
+      Caption = 'Farrowing'
+      TabOrder = 2
+      object LP2MB: TLabel
+        Left = 8
+        Top = 44
+        Width = 110
+        Height = 13
+        Caption = 'Backfat thickness (mm)'
+      end
+      object LPdsApMB: TLabel
+        Left = 8
+        Top = 20
+        Width = 79
+        Height = 13
+        Caption = 'Weight after (kg)'
+      end
+      object PBPdsApMB: TPBNumEdit
+        Left = 200
+        Top = 16
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 1
+        NumberFormat = Standard
+        OnChange = PBPdsApMBChange
+        TabOrder = 0
+      end
+      object PBP2MB: TPBNumEdit
+        Left = 200
+        Top = 40
+        Width = 48
+        Height = 21
+        Alignment = taRightJustify
+        Decimals = 1
+        NumberFormat = Standard
+        OnChange = PBP2MBChange
+        TabOrder = 2
+      end
+      object ChkPdsApMB: TCheckBox
+        Left = 256
+        Top = 18
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to use the information from the animal profil' +
+          'e'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = ChkPdsApMBClick
+      end
+      object ChkP2MB: TCheckBox
+        Left = 256
+        Top = 42
+        Width = 17
+        Height = 17
+        Hint = 
+          'Check the checkbox to use the information from the animal profil' +
+          'e'
+        TabStop = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+        OnClick = ChkP2MBClick
+      end
+    end
+  end
+  object GBAliment: TGroupBox
+    Left = 0
+    Top = 288
+    Width = 296
+    Height = 176
+    Hint = 'Feed supply at which the calcuated requirements are compared'
+    Caption = 'Reference feed'
+    Color = clSilver
+    ParentBackground = False
+    ParentColor = False
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 1
+    object LRation: TLabel
+      Left = 16
+      Top = 68
+      Width = 90
+      Height = 13
+      Caption = 'Feed rationing plan'
+      ParentShowHint = False
+      ShowHint = False
+    end
+    object LSeqAli: TLabel
+      Left = 16
+      Top = 20
+      Width = 97
+      Height = 13
+      Caption = 'Feed sequence plan'
+      ParentShowHint = False
+      ShowHint = False
+    end
+    object LAppAli: TLabel
+      Left = 16
+      Top = 124
+      Width = 104
+      Height = 13
+      Caption = 'Average intake (kg/d)'
+      ParentShowHint = False
+      ShowHint = False
+    end
+    object LEMAli: TLabel
+      Left = 16
+      Top = 148
+      Width = 125
+      Height = 13
+      Caption = 'ME content (MJ/(kg feed))'
+      ParentShowHint = False
+      ShowHint = False
+    end
+    object CBRation: TComboBox
+      Left = 16
+      Top = 88
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 2
+      OnChange = CBRationChange
+    end
+    object CBSeqAli: TComboBox
+      Left = 16
+      Top = 40
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBSeqAliChange
+    end
+    object PBAppAli: TPBNumEdit
+      Left = 208
+      Top = 120
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 3
+      NumberFormat = Standard
+      OnChange = PBAppAliChange
+      ParentShowHint = False
+      ShowHint = False
+      TabOrder = 4
+    end
+    object PBEMAli: TPBNumEdit
+      Left = 208
+      Top = 144
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      OnChange = PBEMAliChange
+      ParentShowHint = False
+      ShowHint = False
+      TabOrder = 6
+    end
+    object ChkSeqAli: TCheckBox
+      Left = 264
+      Top = 42
+      Width = 17
+      Height = 17
+      Hint = 
+        'Check the checkbox to use the information from the animal profil' +
+        'e'
+      TabStop = False
+      TabOrder = 1
+      OnClick = ChkSeqAliClick
+    end
+    object ChkRation: TCheckBox
+      Left = 264
+      Top = 90
+      Width = 17
+      Height = 17
+      Hint = 
+        'Check the checkbox to use the information from the animal profil' +
+        'e'
+      TabStop = False
+      TabOrder = 3
+      OnClick = ChkRationClick
+    end
+    object ChkAppAli: TCheckBox
+      Left = 264
+      Top = 122
+      Width = 17
+      Height = 17
+      Hint = 
+        'Check the checkbox to use the information from the feed rationin' +
+        'g plan'
+      TabStop = False
+      TabOrder = 5
+      OnClick = ChkAppAliClick
+    end
+    object ChkEMAli: TCheckBox
+      Left = 264
+      Top = 146
+      Width = 17
+      Height = 17
+      Hint = 
+        'Check the checkbox to calculate the information from the feed se' +
+        'quence plan and the feed rationing plan'
+      TabStop = False
+      TabOrder = 7
+      OnClick = ChkEMAliClick
+    end
+    object CBRationProfil: TComboBox
+      Left = 16
+      Top = 88
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      Enabled = False
+      ItemHeight = 13
+      ItemIndex = 0
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 8
+      Text = '(Reference feed of the animal profile)'
+      Visible = False
+      OnChange = CBRationChange
+      Items.Strings = (
+        '(Reference feed of the animal profile)')
+    end
+  end
+  object GBResult: TGroupBox
+    Left = 304
+    Top = 288
+    Width = 320
+    Height = 176
+    Caption = 'Results'
+    Color = clMoneyGreen
+    ParentBackground = False
+    ParentColor = False
+    TabOrder = 2
+    object LAliment: TLabel
+      Left = 16
+      Top = 36
+      Width = 107
+      Height = 13
+      Caption = 'Quantity of feed (kg/d)'
+    end
+    object LBesoins: TLabel
+      Left = 152
+      Top = 12
+      Width = 80
+      Height = 13
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'Requirements'
+    end
+    object LdLys: TLabel
+      Left = 16
+      Top = 108
+      Width = 101
+      Height = 13
+      Caption = 'Digestible lysine (g/d)'
+    end
+    object LEN: TLabel
+      Left = 16
+      Top = 84
+      Width = 86
+      Height = 13
+      Caption = 'Net energy (MJ/d)'
+    end
+    object LEM: TLabel
+      Left = 16
+      Top = 60
+      Width = 134
+      Height = 13
+      Caption = 'Metabolizable energy (MJ/d)'
+    end
+    object Label2: TLabel
+      Left = 232
+      Top = 12
+      Width = 80
+      Height = 13
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'Deficiency'
+    end
+    object PBBesdLys: TPBNumEdit
+      Left = 168
+      Top = 104
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      ReadOnly = True
+      TabOrder = 3
+    end
+    object PBBesEN: TPBNumEdit
+      Left = 168
+      Top = 80
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      ReadOnly = True
+      TabOrder = 2
+    end
+    object PBBesEM: TPBNumEdit
+      Left = 168
+      Top = 56
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      ReadOnly = True
+      TabOrder = 1
+    end
+    object PBBesAli: TPBNumEdit
+      Left = 168
+      Top = 32
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      ReadOnly = True
+      TabOrder = 0
+    end
+    object BBRapLact: TBitBtn
+      Left = 128
+      Top = 144
+      Width = 80
+      Height = 24
+      Hint = 'Show the simulation results as a report'
+      Caption = 'Report'
+      Enabled = False
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        333333333333333333333333333333333333333333FFFFF3333333333CCCCC33
+        33333FFFF77777FFFFFFCCCCCC808CCCCCC377777737F777777F008888070888
+        8003773FFF7773FFF77F0F0770F7F0770F037F777737F777737F70FFFFF7FFFF
+        F07373F3FFF7F3FFF37F70F000F7F000F07337F77737F777373330FFFFF7FFFF
+        F03337FF3FF7F3FF37F3370F00F7F00F0733373F7737F77337F3370FFFF7FFFF
+        0733337F33373F337333330FFF030FFF03333373FF7373FF7333333000333000
+        3333333777333777333333333333333333333333333333333333333333333333
+        3333333333333333333333333333333333333333333333333333}
+      NumGlyphs = 2
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 8
+      OnClick = BBRapLactClick
+    end
+    object BBResLact: TBitBtn
+      Left = 32
+      Top = 144
+      Width = 80
+      Height = 24
+      Hint = 'Show the simulation results as graphs'
+      Caption = 'Graphs'
+      Enabled = False
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
+        000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
+        033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
+        B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
+        C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
+        033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
+        3000773373FFFF73377733333700073333333333377777333333333333333333
+        3333333333333333333333333333333333333333333333333333}
+      NumGlyphs = 2
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 7
+      OnClick = BBResLactClick
+    end
+    object PBDefEN: TPBNumEdit
+      Left = 248
+      Top = 80
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      ReadOnly = True
+      TabOrder = 6
+    end
+    object PBDefEM: TPBNumEdit
+      Left = 248
+      Top = 56
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      ReadOnly = True
+      TabOrder = 5
+    end
+    object PBDefAli: TPBNumEdit
+      Left = 248
+      Top = 32
+      Width = 48
+      Height = 21
+      Alignment = taRightJustify
+      Decimals = 2
+      NumberFormat = Standard
+      ReadOnly = True
+      TabOrder = 4
+    end
+  end
+end
Index: UFBesGestE.dfm
===================================================================
--- UFBesGestE.dfm	(révision 0)
+++ UFBesGestE.dfm	(révision 3)
@@ -0,0 +1,144 @@
+object FBesGestE: TFBesGestE
+  Left = 28
+  Top = 168
+  HelpContext = 4850
+  ActiveControl = CBProfil
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Requirements during gestation (herd)'
+  ClientHeight = 160
+  ClientWidth = 296
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GBProfil: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 296
+    Height = 48
+    Caption = 'Animal profile'
+    TabOrder = 0
+    object CBProfil: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBProfilChange
+    end
+  end
+  object GBResult: TGroupBox
+    Left = 0
+    Top = 96
+    Width = 296
+    Height = 64
+    Caption = 'Results'
+    Color = clMoneyGreen
+    ParentBackground = False
+    ParentColor = False
+    TabOrder = 2
+    object BBRapGest: TBitBtn
+      Left = 120
+      Top = 24
+      Width = 80
+      Height = 24
+      Hint = 'Show the simulation results as a report'
+      Caption = 'Report'
+      Enabled = False
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        333333333333333333333333333333333333333333FFFFF3333333333CCCCC33
+        33333FFFF77777FFFFFFCCCCCC808CCCCCC377777737F777777F008888070888
+        8003773FFF7773FFF77F0F0770F7F0770F037F777737F777737F70FFFFF7FFFF
+        F07373F3FFF7F3FFF37F70F000F7F000F07337F77737F777373330FFFFF7FFFF
+        F03337FF3FF7F3FF37F3370F00F7F00F0733373F7737F77337F3370FFFF7FFFF
+        0733337F33373F337333330FFF030FFF03333373FF7373FF7333333000333000
+        3333333777333777333333333333333333333333333333333333333333333333
+        3333333333333333333333333333333333333333333333333333}
+      NumGlyphs = 2
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      OnClick = BBRapGestClick
+    end
+    object BBResGest: TBitBtn
+      Left = 32
+      Top = 24
+      Width = 80
+      Height = 24
+      Hint = 'Show the simulation results as graphs'
+      Caption = 'Graphs'
+      Enabled = False
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
+        000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
+        033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
+        B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
+        C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
+        033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
+        3000773373FFFF73377733333700073333333333377777333333333333333333
+        3333333333333333333333333333333333333333333333333333}
+      NumGlyphs = 2
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      OnClick = BBResGestClick
+    end
+  end
+  object GBLoge: TGroupBox
+    Left = 0
+    Top = 48
+    Width = 296
+    Height = 48
+    Caption = 'Housing'
+    TabOrder = 1
+    object CBLoge: TComboBox
+      Left = 16
+      Top = 16
+      Width = 240
+      Height = 21
+      AutoCompleteDelay = 1500
+      Style = csDropDownList
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnChange = CBLogeChange
+    end
+    object ChkLoge: TCheckBox
+      Left = 264
+      Top = 18
+      Width = 17
+      Height = 17
+      TabStop = False
+      TabOrder = 1
+      OnClick = ChkLogeClick
+    end
+  end
+end
Index: UFImpExp.dfm
===================================================================
--- UFImpExp.dfm	(révision 0)
+++ UFImpExp.dfm	(révision 3)
@@ -0,0 +1,420 @@
+object FImpExp: TFImpExp
+  Left = 164
+  Top = 154
+  HelpContext = 3000
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Import / export'
+  ClientHeight = 416
+  ClientWidth = 792
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Scaled = False
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object SBExpMat: TSpeedButton
+    Left = 264
+    Top = 72
+    Width = 40
+    Height = 21
+    Hint = 'Append the selected feed ingredient(s) to the CSV file'
+    Glyph.Data = {
+      F6010000424DF601000000000000760000002800000030000000100000000100
+      04000000000080010000120B0000120B00001000000000000000000000000000
+      80000080000000808000800000008000800080800000C0C0C000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDD88DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD88DDD
+      DDDDDDDDDD00888DDDDDDDDDDD88DDDDDDDDDDDDDD00888DDDDDDDDDDD0C0088
+      8DDDDDDDDD8D88DDDDDDDDDDDD0400888DDDDD88880CCC00888DDDDDDD8DDD88
+      DDDDDD8888044400888DD000000CCCCC0088D888888DDDDD88DDD00040044444
+      0088D0CCCCCCCCCCCC08D8DDDDDDDDDDDD8DD044444444444408D0CCCCCCCCCC
+      CC0DD8DDDDDDDDDDDD8DD04444444444440DD000000CCCCC00DDD888888DDDDD
+      88DDD0000004444400DDDDDDDD0CCC00DDDDDDDDDD8DDD88DDDDDDDDDD044400
+      DDDDDDDDDD0C00DDDDDDDDDDDD8D88DDDDDDDDDDDD0400DDDDDDDDDDDD00DDDD
+      DDDDDDDDDD88DDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBExpMatClick
+  end
+  object SBImpMat: TSpeedButton
+    Left = 264
+    Top = 144
+    Width = 40
+    Height = 21
+    Hint = 
+      'Import the selected item(s) from the CSV file as feed ingredient' +
+      '(s)'
+    Glyph.Data = {
+      F6010000424DF601000000000000760000002800000030000000100000000100
+      04000000000080010000120B0000120B00001000000000000000000000000000
+      80000080000000808000800000008000800080800000C0C0C000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDD88DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD88D
+      DDDDDDDDDDD8008DDDDDDDDDDDDD88DDDDDDDDDDDDD8008DDDDDDDDDD800C08D
+      DDDDDDDDDD88D8DDDDDDDDDDD800408DDDDDDDD800CCC0888888DDDD88DDD8DD
+      DDDDDDD8004440888888DD00CCCCC0000008DD88DDDDD88888DDDD0044444000
+      0008D0CCCCCCCCCCCC08D8DDDDDDDDDDD8DDD044444444444408D0CCCCCCCCCC
+      CC08D8DDDDDDDDDDD8DDD044444444444408DD00CCCCC000000DDD88DDDDD888
+      88DDDD0044444000000DDDDD00CCC0DDDDDDDDDD88DDD8DDDDDDDDDD004440DD
+      DDDDDDDDDD00C0DDDDDDDDDDDD88D8DDDDDDDDDDDD0040DDDDDDDDDDDDDD00DD
+      DDDDDDDDDDDD88DDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBImpMatClick
+  end
+  object SBExpAli: TSpeedButton
+    Left = 264
+    Top = 280
+    Width = 40
+    Height = 21
+    Hint = 'Append the selected feed(s) to the CSV file'
+    Glyph.Data = {
+      F6010000424DF601000000000000760000002800000030000000100000000100
+      04000000000080010000120B0000120B00001000000000000000000000000000
+      80000080000000808000800000008000800080800000C0C0C000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDD88DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD88DDD
+      DDDDDDDDDD00888DDDDDDDDDDD88DDDDDDDDDDDDDD00888DDDDDDDDDDD0C0088
+      8DDDDDDDDD8D88DDDDDDDDDDDD0400888DDDDD88880CCC00888DDDDDDD8DDD88
+      DDDDDD8888044400888DD000000CCCCC0088D888888DDDDD88DDD00040044444
+      0088D0CCCCCCCCCCCC08D8DDDDDDDDDDDD8DD044444444444408D0CCCCCCCCCC
+      CC0DD8DDDDDDDDDDDD8DD04444444444440DD000000CCCCC00DDD888888DDDDD
+      88DDD0000004444400DDDDDDDD0CCC00DDDDDDDDDD8DDD88DDDDDDDDDD044400
+      DDDDDDDDDD0C00DDDDDDDDDDDD8D88DDDDDDDDDDDD0400DDDDDDDDDDDD00DDDD
+      DDDDDDDDDD88DDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBExpAliClick
+  end
+  object SBImpAli: TSpeedButton
+    Left = 264
+    Top = 352
+    Width = 40
+    Height = 21
+    Hint = 'Import the selected item(s) from the CSV file as feed(s)'
+    Glyph.Data = {
+      F6010000424DF601000000000000760000002800000030000000100000000100
+      04000000000080010000120B0000120B00001000000000000000000000000000
+      80000080000000808000800000008000800080800000C0C0C000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDD88DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD88D
+      DDDDDDDDDDD8008DDDDDDDDDDDDD88DDDDDDDDDDDDD8008DDDDDDDDDD800C08D
+      DDDDDDDDDD88D8DDDDDDDDDDD800408DDDDDDDD800CCC0888888DDDD88DDD8DD
+      DDDDDDD8004440888888DD00CCCCC0000008DD88DDDDD88888DDDD0044444000
+      0008D0CCCCCCCCCCCC08D8DDDDDDDDDDD8DDD044444444444408D0CCCCCCCCCC
+      CC08D8DDDDDDDDDDD8DDD044444444444408DD00CCCCC000000DDD88DDDDD888
+      88DDDD0044444000000DDDDD00CCC0DDDDDDDDDD88DDD8DDDDDDDDDD004440DD
+      DDDDDDDDDD00C0DDDDDDDDDDDD88D8DDDDDDDDDDDD0040DDDDDDDDDDDDDD00DD
+      DDDDDDDDDDDD88DDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}
+    NumGlyphs = 3
+    ParentShowHint = False
+    ShowHint = True
+    OnClick = SBImpAliClick
+  end
+  object GBMatiere: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 256
+    Height = 208
+    Caption = 'List of feed ingredients'
+    TabOrder = 1
+    object LTypeMat: TLabel
+      Left = 8
+      Top = 20
+      Width = 24
+      Height = 13
+      Caption = 'Type'
+    end
+    object LBMatiere: TListBox
+      Left = 8
+      Top = 40
+      Width = 240
+      Height = 160
+      Style = lbOwnerDrawFixed
+      ItemHeight = 13
+      MultiSelect = True
+      Sorted = True
+      TabOrder = 1
+    end
+    object CBTypeMat: TComboBox
+      Left = 48
+      Top = 16
+      Width = 200
+      Height = 21
+      Style = csDropDownList
+      ItemHeight = 13
+      ItemIndex = 0
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Text = '(All)'
+      OnChange = CBTypeMatChange
+      Items.Strings = (
+        '(All)'
+        'Cereals and cereal by-products'
+        'Protein and oil containing products'
+        'Oilseed meals'
+        'Other plant products'
+        'Animal products'
+        'Fats and oils'
+        'Free amino acids'
+        'Vitamin and mineral products'
+        'Not referenced')
+    end
+  end
+  object GBAliment: TGroupBox
+    Left = 0
+    Top = 208
+    Width = 256
+    Height = 208
+    Caption = 'List of feeds'
+    TabOrder = 2
+    object LTypeAli: TLabel
+      Left = 8
+      Top = 20
+      Width = 24
+      Height = 13
+      Caption = 'Type'
+    end
+    object LBAliment: TListBox
+      Left = 8
+      Top = 40
+      Width = 240
+      Height = 160
+      Style = lbOwnerDrawFixed
+      ItemHeight = 13
+      MultiSelect = True
+      Sorted = True
+      TabOrder = 1
+    end
+    object CBTypeAli: TComboBox
+      Left = 48
+      Top = 16
+      Width = 200
+      Height = 21
+      Style = csDropDownList
+      ItemHeight = 13
+      ItemIndex = 0
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Text = '(All)'
+      OnChange = CBTypeAliChange
+      Items.Strings = (
+        '(All)'
+        'Growing pig'
+        'Sow')
+    end
+  end
+  object GBFichier: TGroupBox
+    Left = 312
+    Top = 0
+    Width = 256
+    Height = 416
+    Caption = 'Import / export file'
+    TabOrder = 0
+    object SBFichier: TSpeedButton
+      Left = 8
+      Top = 16
+      Width = 21
+      Height = 21
+      Hint = 'Open (or create) a CSV file'
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00555555555555
+        5555555555555555555555555555555555555555555555555555555555555555
+        555555555555555555555555555555555555555FFFFFFFFFF555550000000000
+        55555577777777775F55500B8B8B8B8B05555775F555555575F550F0B8B8B8B8
+        B05557F75F555555575F50BF0B8B8B8B8B0557F575FFFFFFFF7F50FBF0000000
+        000557F557777777777550BFBFBFBFB0555557F555555557F55550FBFBFBFBF0
+        555557F555555FF7555550BFBFBF00055555575F555577755555550BFBF05555
+        55555575FFF75555555555700007555555555557777555555555555555555555
+        5555555555555555555555555555555555555555555555555555}
+      NumGlyphs = 2
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = SBFichierClick
+    end
+    object LBFichier: TListBox
+      Left = 8
+      Top = 40
+      Width = 240
+      Height = 368
+      Style = lbOwnerDrawFixed
+      ItemHeight = 13
+      MultiSelect = True
+      TabOrder = 1
+    end
+    object EFichier: TEdit
+      Left = 32
+      Top = 16
+      Width = 216
+      Height = 21
+      ReadOnly = True
+      TabOrder = 0
+    end
+  end
+  object GBExpr: TGroupBox
+    Left = 574
+    Top = 0
+    Width = 216
+    Height = 416
+    Caption = 'Mode of expression'
+    TabOrder = 3
+    object LFibres: TLabel
+      Left = 8
+      Top = 296
+      Width = 23
+      Height = 13
+      Caption = 'Fiber'
+    end
+    object LGal: TLabel
+      Left = 8
+      Top = 16
+      Width = 90
+      Height = 13
+      Caption = 'General expression'
+    end
+    object LCompo: TLabel
+      Left = 8
+      Top = 72
+      Width = 111
+      Height = 13
+      Caption = 'Elementary composition'
+    end
+    object LAA: TLabel
+      Left = 8
+      Top = 128
+      Width = 57
+      Height = 13
+      Caption = 'Amino acids'
+    end
+    object LAG: TLabel
+      Left = 8
+      Top = 184
+      Width = 51
+      Height = 13
+      Caption = 'Fatty acids'
+    end
+    object LMacro: TLabel
+      Left = 8
+      Top = 224
+      Width = 122
+      Height = 13
+      Caption = 'Minerals (macro-elements)'
+    end
+    object LOligo: TLabel
+      Left = 8
+      Top = 256
+      Width = 115
+      Height = 13
+      Caption = 'Minerals (oligo-elements)'
+    end
+    object LTFibres: TLabel
+      Left = 16
+      Top = 312
+      Width = 23
+      Height = 13
+      Caption = 'g/kg'
+    end
+    object LTOligo: TLabel
+      Left = 16
+      Top = 272
+      Width = 31
+      Height = 13
+      Caption = 'mg/kg'
+    end
+    object LTMacro: TLabel
+      Left = 16
+      Top = 240
+      Width = 23
+      Height = 13
+      Caption = 'g/kg'
+    end
+    object LTAG: TLabel
+      Left = 16
+      Top = 200
+      Width = 23
+      Height = 13
+      Caption = 'g/kg'
+    end
+    object LTAA: TLabel
+      Left = 16
+      Top = 144
+      Width = 23
+      Height = 13
+      Caption = 'g/kg'
+    end
+    object LdAA: TLabel
+      Left = 16
+      Top = 160
+      Width = 8
+      Height = 13
+      Caption = '%'
+    end
+    object LTCompo: TLabel
+      Left = 16
+      Top = 88
+      Width = 23
+      Height = 13
+      Caption = 'g/kg'
+    end
+    object LdCompo: TLabel
+      Left = 16
+      Top = 104
+      Width = 8
+      Height = 13
+      Caption = '%'
+    end
+    object LRap: TLabel
+      Left = 16
+      Top = 32
+      Width = 29
+      Height = 13
+      Caption = 'as-fed'
+    end
+    object LDig: TLabel
+      Left = 16
+      Top = 48
+      Width = 52
+      Height = 13
+      Caption = 'Digestibility'
+    end
+  end
+  object SDFichier: TSaveDialog
+    DefaultExt = 'csv'
+    Filter = 'CSV text|*.csv'
+    Options = [ofHideReadOnly, ofNoChangeDir, ofPathMustExist, ofEnableSizing]
+    Title = 'Import / export file'
+    Left = 272
+    Top = 8
+  end
+end
Index: UCalcSimulP.pas
===================================================================
--- UCalcSimulP.pas	(révision 0)
+++ UCalcSimulP.pas	(révision 3)
@@ -0,0 +1,710 @@
+unit UCalcSimulP;
+
+interface
+
+uses
+  UVariables;
+
+ // Simul = N� de la simulation (-1 pour profil)
+ // Profil, SeqAli, Ration = N� d'enregistrement pour comparaison
+ // Variable = N� de la variable � moduler
+ // Variation = Coefficient de variation
+ // Restrict = Coefficient de restriction
+ // PResSimulP = Tableau de r�sultats
+procedure CalcSimulP(Simul, Profil, SeqAli, Ration, Variable: integer;
+  Variation: double; PResSimulP: PTabResSimulP; AALimit: Boolean = True);
+
+implementation
+
+uses
+  Math, UFindRec, UCalcul;
+
+procedure CalcSimulP(Simul, Profil, SeqAli, Ration, Variable: integer;
+  Variation: double; PResSimulP: PTabResSimulP; AALimit: Boolean = True);
+const
+  Standing = 4;
+  PVmr1 = 19.999;
+  mrPV1 = 8.4 * GEProtJaap;
+  mrPV2 = 0;
+var
+  i, j: integer;
+  FinSimul, ErrSimul, ok: boolean;
+  NumRuleSeqAli, NumRuleRation, RuleSeqAliInit, RuleRationInit, Unite: integer;
+  Age, Ecart, AgeInit, AgeFin, ModeFinSim, Duree: integer;
+  PDMoy, BGompertz, Entretien, PVmr2, ProtInit, ProtFin, PVFin: double;
+  PV, p, PD, EnergyPD, l, LD, EnergyLD, PVVafter, PVafter, GMQ, PVV: double;
+  PctAli1, PctAli2, Cumul, Init, QuantiteAL, Quantite: double;
+  IngereAL, Ingere, IngereSec, IngSec1, IngSec2, Gaspillage: double;
+  DEcrois, MEcrois, NEcrois: double;
+  PDFirstLimit, FHP60, NEmAL, NEm, NEintakeAL: double;
+  PDAL, px1AL, py1AL, mr, F, a, b, PDmaxE, NEintake, px1, py1, PfreeNE: double;
+  ExcessProt, ObligUrinELoss, UrinEnergy, MEexcessProt, NEexcessProt: double;
+  PDfreeNEintake, NEintakeSim, MEintake, PDfreeNEPD, PDfreeNEreq: double;
+  TabAAdig, TabAAm, TabAAfG, TabPDAA: array[0..12] of double;
+  TabDEIntake, TabProtFreeNE, TabProtFreeME: array[1..6] of double;
+  RecCC1, RecCC2: CompositionChimique;
+  TabAAtotal1, TabAAtotal2, TabCUDAA1, TabCUDAA2: array[0..12] of double;
+  Gompertz, Pmat: Extended;
+begin
+  FinSimul := False;
+  ErrSimul := False;
+  // Initialisation du tableau de r�sultat
+  for i := 1 to NB_COL_PORC do
+    for j := 1 to MAX_LIG_PORC do
+      PResSimulP.TabResult[i, j] := 0;
+  // Initialisation de la simulation
+  PResSimulP.NbJSim := 0;
+  NumRuleSeqAli  := 1;
+  RuleSeqAliInit := 1;
+  NumRuleRation  := 1;
+  RuleRationInit := 1;
+  if Simul = -1 then // Profil
+  begin
+    // Initialisation du profil animal
+    PProfilP := ListProfilP[FindIdxProfilP(FindNomProfilP(Profil))];
+    // Initialisation de la s�quence alimentaire
+    //    PSeqAliP := ListSeqAliP[FindIdxSeqAliP(FindNomSeqAliP(PProfilP.SeqAli))];
+    PSeqAliP := ListSeqAliP[FindIdxSeqAliP(FindNomSeqAliP(SeqAli))];
+    // Initialisation du plan de rationnement
+    //    if PProfilP.Ration <> -1
+    //    then
+    //      PRationP := ListRationP[FindIdxRationP(FindNomRationP(PProfilP.Ration))];
+    if Ration <> -1 then // plan de rationnement de la simulation
+      PRationP := ListRationP[FindIdxRationP(FindNomRationP(Ration))];
+    // D�but et fin de simulation
+    Age := PProfilP.AgeInit;
+    PV := PProfilP.PVInit;
+    p  := PProfilP.ProtInit;
+    l  := PProfilP.LipInit;
+    ModeFinSim := PProfilP.ModeFin;
+    Duree := PProfilP.Duree;
+    PVFin := PProfilP.PVFin;
+  end
+  else // Simulation
+  begin
+    // Initialisation des param�tres de simulation
+    PSimulP := ListSimulP[FindIdxSimulP(FindNomSimulP(Simul))];
+    // Initialisation du profil animal
+    if Profil = -1 then // Profil de la simulation
+      PProfilP := ListProfilP[FindIdxProfilP(FindNomProfilP(PSimulP.Profil))]
+    else
+      PProfilP := ListProfilP[FindIdxProfilP(FindNomProfilP(Profil))];
+    // Initialisation de la s�quence alimentaire
+    if SeqAli = -1 then // S�quence alimentaire de la simulation
+      PSeqAliP := ListSeqAliP[FindIdxSeqAliP(FindNomSeqAliP(PSimulP.SeqAli))]
+    else
+      PSeqAliP := ListSeqAliP[FindIdxSeqAliP(FindNomSeqAliP(SeqAli))];
+    // Initialisation du plan de rationnement
+    if Ration = -1 then // plan de rationnement de la simulation
+      PRationP := ListRationP[FindIdxRationP(FindNomRationP(PSimulP.Ration))]
+    else
+      PRationP := ListRationP[FindIdxRationP(FindNomRationP(Ration))];
+    // D�but et fin de simulation
+    if PSimulP.AgeInitProfil then // Profil
+      Age := PProfilP.AgeInit
+    else // Simulation
+      Age := PSimulP.AgeInit;
+    if PSimulP.PVInitProfil then // Profil
+      PV := PProfilP.PVInit
+    else // Simulation
+      PV := PSimulP.PVInit;
+    if PSimulP.ProtLipInitProfil then // Profil
+      if PSimulP.PVInitProfil then // Valeurs stock�es
+      begin
+        p := PProfilP.ProtInit;
+        l := PProfilP.LipInit;
+      end
+      else // Valeurs calcul�es
+      begin
+        p := CalcProt(PV);
+        l := CalcLipProt(PV, p);
+      end
+    else // Simulation
+    begin
+      p := PSimulP.ProtInit;
+      l := PSimulP.LipInit;
+    end;
+    if PSimulP.FinProfil then // Profil
+    begin
+      ModeFinSim := PProfilP.ModeFin;
+      Duree := PProfilP.Duree;
+      PVFin := PProfilP.PVFin;
+    end
+    else // Simulation
+    begin
+      ModeFinSim := PSimulP.ModeFin;
+      Duree := PSimulP.Duree;
+      PVFin := PSimulP.PVFin;
+    end;
+  end;
+  AgeInit := Age;
+  ProtInit := p;
+  PDMoy := PProfilP.PDMoy;
+  BGompertz := PProfilP.BGompertz;
+  Entretien := PProfilP.Entretien;
+  PVmr2 := PProfilP.PVmr2;
+  // Sensibilit� (animal)
+  case Variable of
+    0: // PD moyen
+      PDMoy := PDMoy * Variation;
+    1: // Pr�cocit�
+      BGompertz := BGompertz * Variation;
+    2: // Entretien
+      Entretien := Entretien * Variation;
+    3: // PV PDMax
+      PVmr2 := PVmr2 * Variation;
+    4: // Etat final
+    begin
+      Duree := Round(Duree * Variation);
+      PVFin := PVFin * Variation;
+    end;
+  end;
+  // Poids de prot�ines � la maturit�
+  if PProfilP.ModeFin = 0 then // Dur�e
+  begin
+    AgeFin  := PProfilP.AgeInit + PProfilP.Duree;
+    ProtFin := PProfilP.Duree * (PDMoy / 1000) + PProfilP.ProtInit;
+  end
+  else // Poids
+  begin
+    AgeFin  := Round((CalcProt(PProfilP.PVFin) - PProfilP.ProtInit) / (PDMoy / 1000)) + PProfilP.AgeInit;
+    ProtFin := (AgeFin - PProfilP.AgeInit) * (PDMoy / 1000) + PProfilP.ProtInit;
+  end;
+  Gompertz := Exp(-BGompertz * (AgeFin - PProfilP.AgeInit));
+  Pmat := ProtFin * Power(ProtFin / PProfilP.ProtInit, Gompertz / (1 - Gompertz));
+  repeat
+    Inc(PResSimulP.NbJSim);
+    PVV := CalcPVV(PV);
+    PResSimulP.TabResult[1, PResSimulP.NbJSim] := Age;
+    PResSimulP.TabResult[2, PResSimulP.NbJSim] := PV;
+    PResSimulP.TabResult[48, PResSimulP.NbJSim] := PVV;
+    PResSimulP.TabResult[49, PResSimulP.NbJSim] := p;
+    PResSimulP.TabResult[50, PResSimulP.NbJSim] := l;
+    PResSimulP.TabResult[70, PResSimulP.NbJSim] := Standing * Entretien;
+
+    PResSimulP.TabResult[85, PResSimulP.NbJSim] := Pmat;
+    PResSimulP.TabResult[107, PResSimulP.NbJSim] := AgeFin;
+    PResSimulP.TabResult[108, PResSimulP.NbJSim] := ProtFin;
+    // Muscle
+    //    PResSimulP.TabResult[107, PResSimulP.NbJSim] := CalcMuscle(PVV, l);
+    // TVM
+    //    PResSimulP.TabResult[108, PResSimulP.NbJSim] := CalcTVM(PVV, l);
+    /////////////////////////
+    // Apports journaliers //
+    /////////////////////////
+    // Aliment(s) distribu�(s)
+    repeat
+      ok := True;
+      with PSeqAliP.Rule[NumRuleSeqAli] do
+        case ModeFin of
+          0: // Dur�e
+            if PResSimulP.NbJSim - RuleSeqAliInit >= ValFin then
+              ok := False;
+          1: // Age
+            if Age > ValFin then
+              ok := False;
+          2: // Poids vif
+            if PV >= ValFin then
+              ok := False;
+          3: // Cumul aliment
+          begin
+            Cumul := 0;
+            for i := RuleSeqAliInit to PResSimulP.NbJSim do
+              Cumul := Cumul + PResSimulP.TabResult[113, i];
+            if Cumul >= ValFin then
+              ok := False;
+          end;
+        end;
+      if not ok then // Changement de r�gle
+      begin
+        Inc(NumRuleSeqAli);
+        RuleSeqAliInit := PResSimulP.NbJSim;
+      end;
+    until ok;
+    with PSeqAliP.Rule[NumRuleSeqAli] do
+    begin
+      PResSimulP.TabResult[3, PResSimulP.NbJSim] := NumRuleSeqAli;
+      PResSimulP.TabResult[4, PResSimulP.NbJSim] := ModeFin;
+      PResSimulP.TabResult[7, PResSimulP.NbJSim] := NumAli1;
+      PResSimulP.TabResult[8, PResSimulP.NbJSim] := NumAli2;
+      // Composition aliment 1
+      if NumAli1 = -1 then
+      begin
+        RecCC1 := CCVide;
+        for i := 0 to 12 do
+          TabAAtotal1[i] := 0;
+        for i := 0 to 12 do
+          TabCUDAA1[i] := 0;
+      end
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment(FindNomAliment(NumAli1))];
+        RecCC1 := PAliment.CC;
+        for i := 0 to 12 do
+          TabAAtotal1[i] := PAliment.AAtotal[i];
+        for i := 0 to 12 do
+          TabCUDAA1[i] := PAliment.CUDAA[i];
+      end;
+      // Composition aliment 2
+      if NumAli2 = -1 then
+      begin
+        RecCC2 := CCVide;
+        for i := 0 to 12 do
+          TabAAtotal2[i] := 0;
+        for i := 0 to 12 do
+          TabCUDAA2[i] := 0;
+      end
+      else
+      begin
+        PAliment := ListAliment[FindIdxAliment(FindNomAliment(NumAli2))];
+        RecCC2 := PAliment.CC;
+        for i := 0 to 12 do
+          TabAAtotal2[i] := PAliment.AAtotal[i];
+        for i := 0 to 12 do
+          TabCUDAA2[i] := PAliment.CUDAA[i];
+      end;
+      // Calcul des % aliments
+      if PctAli1Init = PctAli1Fin then
+        PctAli1 := PctAli1Init
+      else // Transition
+      begin
+        Ecart := PctAli1Fin - PctAli1Init;
+        case ModeFin of
+          -1: // Fin de simulation
+            case ModeFinSim of
+              0: // Dur�e
+                PctAli1 := PctAli1Init + (PResSimulP.NbJSim - RuleSeqAliInit) * Ecart / (Duree - 1);
+              1: // Poids vif
+              begin
+                Init := PResSimulP.TabResult[2, RuleSeqAliInit];
+                PctAli1 := PctAli1Init + (PV - Init) * Ecart / (PVFin - Init);
+              end;
+              else
+                PctAli1 := PctAli1Init;
+            end;
+          0: // Dur�e
+            PctAli1 := PctAli1Init + (PResSimulP.NbJSim - RuleSeqAliInit) * Ecart / (ValFin - 1);
+          1: // Age
+          begin
+            Init := PResSimulP.TabResult[1, RuleSeqAliInit];
+            PctAli1 := PctAli1Init + (Age - Init) * Ecart / (ValFin - Init);
+          end;
+          2: // Poids vif
+          begin
+            Init := PResSimulP.TabResult[2, RuleSeqAliInit];
+            PctAli1 := PctAli1Init + (PV - Init) * Ecart / (ValFin - Init);
+          end;
+          else
+            PctAli1 := PctAli1Init;
+        end;
+        if (PctAli1 > 100) then
+          PctAli1 := 100;
+        if (PctAli1 < 0) then
+          PctAli1 := 0;
+      end;
+    end;
+    PResSimulP.TabResult[9, PResSimulP.NbJSim] := PctAli1;
+    PctAli2 := 100 - PctAli1;
+    PResSimulP.TabResult[10, PResSimulP.NbJSim] := PctAli2;
+    // Ing�r� AdLib
+    with PProfilP^ do
+    begin
+      // Calcul des quantit�s
+      {
+      case Equation of
+        0 : // a+b*PV
+          QuantiteAL := a + b * PV ;
+        1 : // a*PV^b
+          QuantiteAL := a * Power (PV, b) ;
+        2 : // a*(1-exp(-b*PV))
+          QuantiteAL := a * (1 - Exp (-b * PV)) ;
+        else
+          QuantiteAL := 0 ;
+      end ;
+      }
+      QuantiteAL := CalcIngere(Equation, Unite, a, b, PV);
+      // Convertion de ED, EM, EN en quantit� si besoin
+      case Unite of
+        1: // ED (MJ/j)
+          IngereAL := QuantiteAL / (PctAli1 / 100 *
+            RecCC1.ED_C * RecCC1.MS / 1000 + PctAli2 / 100 *
+            RecCC2.ED_C * RecCC2.MS / 1000);
+        2: // EM (MJ/j)
+          IngereAL := QuantiteAL / (PctAli1 / 100 *
+            RecCC1.EM_C * RecCC1.MS / 1000 + PctAli2 / 100 *
+            RecCC2.EM_C * RecCC2.MS / 1000);
+        3: // EN (MJ/j)
+          IngereAL := QuantiteAL / (PctAli1 / 100 *
+            RecCC1.EN_C * RecCC1.MS / 1000 + PctAli2 / 100 *
+            RecCC2.EN_C * RecCC2.MS / 1000);
+        4: // MS (kg/j)
+          IngereAL := QuantiteAL / (PctAli1 / 100 *
+            RecCC1.MS / 1000 + PctAli2 / 100 * RecCC2.MS / 1000);
+        else // Quantit� (kg/j)
+          IngereAL := QuantiteAL;
+      end;
+    end;
+    PResSimulP.TabResult[78, PResSimulP.NbJSim] := IngereAL;
+    // Quantit�(s) distribu�e(s)
+    if (Simul = -1) and (Ration = -1) then // Consommation AdLib
+      Ingere := IngereAL
+    else // Plan de rationnement
+    begin
+      repeat
+        ok := True;
+        with PRationP.Rule[NumRuleRation] do
+          case ModeFin of
+            0: // Dur�e
+              if PResSimulP.NbJSim - RuleRationInit >= ValFin then
+                ok := False;
+            1: // Age
+              if Age > ValFin then
+                ok := False;
+            2: // Poids vif
+              if PV >= ValFin then
+                ok := False;
+            3: // Cumul aliment
+            begin
+              Cumul := 0;
+              for i := RuleRationInit to PResSimulP.NbJSim do
+                Cumul := Cumul + PResSimulP.TabResult[113, i];
+              if Cumul >= ValFin then
+                ok := False;
+            end;
+            4..8: // Consommation
+              if PResSimulP.NbJSim > 1 then
+              begin
+                i := PResSimulP.NbJSim - 1;
+                case ModeFin of
+                  4: // Consommation (aliment)
+                    if PResSimulP.TabResult[113, i] >= ValFin then
+                      ok := False;
+                  5: // Consommation (MS)
+                    if PResSimulP.TabResult[106, i] * PResSimulP.TabResult[113, i] >=
+                      ValFin then
+                      ok := False;
+                  6: // Consommation (ED)
+                    if PResSimulP.TabResult[109, i] * PResSimulP.TabResult[113, i] >=
+                      ValFin then
+                      ok := False;
+                  7: // Consommation (EM)
+                    if PResSimulP.TabResult[89, i] * PResSimulP.TabResult[113, i] >=
+                      ValFin then
+                      ok := False;
+                  8: // Consommation (EN)
+                    if PResSimulP.TabResult[90, i] * PResSimulP.TabResult[113, i] >=
+                      ValFin then
+                      ok := False;
+                end;
+              end;
+          end;
+        if not ok then // Changement de r�gle
+        begin
+          Inc(NumRuleRation);
+          RuleRationInit := PResSimulP.NbJSim;
+        end;
+      until ok;
+      with PRationP.Rule[NumRuleRation] do
+      begin
+        PResSimulP.TabResult[5, PResSimulP.NbJSim] := NumRuleRation;
+        PResSimulP.TabResult[6, PResSimulP.NbJSim] := ModeFin;
+        // Calcul des quantit�s
+        case RuleType of
+          0: // % Ad libitum
+            Quantite := QuantiteAL * Percent;
+          1: // Constant
+            Quantite := Quantity;
+          2: // f(dur�e)
+            case EqDuree of
+              0: // a+b*jour
+              begin
+                Init := PResSimulP.TabResult[1, RuleRationInit];
+                Quantite := aDuree + bDuree * (Age - Init);
+              end;
+              1: // a+b*semaine
+              begin
+                Init := PResSimulP.TabResult[1, RuleRationInit];
+                Quantite := aDuree + bDuree * Trunc((Age - Init) / 7);
+              end;
+              else
+                Quantite := 0;
+            end;
+          3: // f(poids vif)
+            {
+            case EqPV of
+              0: // a+b*PV
+                Quantite := aPV + bPV * PV;
+              1: // a*PV^b
+                Quantite := aPV * Power(PV, bPV);
+              2: // a*(1-exp(-b*PV))
+                Quantite := aPV * (1 - Exp(-bPV * PV));
+              else
+                Quantite := 0;
+            end;
+            }
+            Quantite := CalcIngere(EqPV, Unite, aPV, bPV, PV);
+          else
+            Quantite := 0;
+        end;
+      end;
+      // Convertion de ED, EM, EN en quantit� si besoin
+      if PRationP.Rule[NumRuleRation].RuleType = 0 then
+        // % AdLib : Unite est d�finie au niveau du profil
+        Unite := PProfilP.Unite
+      else
+        Unite := PRationP.Rule[NumRuleRation].Unite;
+      case Unite of
+        1: // ED (MJ/j)
+          Ingere := Quantite / (PctAli1 / 100 * RecCC1.ED_C *
+            RecCC1.MS / 1000 + PctAli2 / 100 * RecCC2.ED_C * RecCC2.MS / 1000);
+        2: // EM (MJ/j)
+          Ingere := Quantite / (PctAli1 / 100 * RecCC1.EM_C *
+            RecCC1.MS / 1000 + PctAli2 / 100 * RecCC2.EM_C * RecCC2.MS / 1000);
+        3: // EN (MJ/j)
+          Ingere := Quantite / (PctAli1 / 100 * RecCC1.EN_C *
+            RecCC1.MS / 1000 + PctAli2 / 100 * RecCC2.EN_C * RecCC2.MS / 1000);
+        4: // MS (kg/j)
+          Ingere := Quantite / (PctAli1 / 100 * RecCC1.MS /
+            1000 + PctAli2 / 100 * RecCC2.MS / 1000);
+        else // Quantit� (kg/j)
+          Ingere := Quantite;
+      end;
+    end;
+    // Gaspillage
+    if (Simul = -1) and (Ration = -1) then // Ad libitum : pas de gaspillage
+      Gaspillage := 0
+    else
+      Gaspillage := PRationP.Rule[NumRuleRation].Gaspillage;
+    // Sensibilit� (aliment)
+    case Variable of
+      5: // Quantit� d'aliment
+        Ingere := Ingere * Variation;
+      6: // Gaspillage
+        Gaspillage := Max(Gaspillage + Variation, 0);
+      7..18: // Acides amin�s
+      begin
+        TabAAtotal1[Variable - 6] := TabAAtotal1[Variable - 6] * Variation;
+        TabAAtotal2[Variable - 6] := TabAAtotal2[Variable - 6] * Variation;
+        if (Variable = 9) or (Variable = 13) then // met+cys ou phe+tyr
+        begin
+          TabAAtotal1[Variable - 7] := TabAAtotal1[Variable - 7] * Variation;
+          TabAAtotal2[Variable - 7] := TabAAtotal2[Variable - 7] * Variation;
+        end;
+      end;
+    end;
+    PResSimulP.TabResult[11, PResSimulP.NbJSim] := Ingere;
+    PResSimulP.TabResult[112, PResSimulP.NbJSim] := Gaspillage;
+    PResSimulP.TabResult[113, PResSimulP.NbJSim] := Ingere / (1 - Gaspillage);
+    // Calcul des apports journaliers
+    IngSec1 := Ingere * PctAli1 / 100 * RecCC1.MS / 1000;
+    IngSec2 := Ingere * PctAli2 / 100 * RecCC2.MS / 1000;
+    IngereSec := IngSec1 + IngSec2;
+    if Ingere <> 0 then
+      PResSimulP.TabResult[106, PResSimulP.NbJSim] := IngereSec / Ingere;
+    // Energie brute ing�r�e
+    PResSimulP.TabResult[12, PResSimulP.NbJSim] :=
+      IngSec1 * RecCC1.EB + IngSec2 * RecCC2.EB;
+    // Composants digestibles ing�r�s
+    TabDEIntake[1] := IngSec1 * RecCC1.MAT * RecCC1.dMAT_C / 100 +
+      IngSec2 * RecCC2.MAT * RecCC2.dMAT_C / 100;
+    TabDEIntake[2] := IngSec1 * RecCC1.Lip * RecCC1.dLip_C / 100 +
+      IngSec2 * RecCC2.Lip * RecCC2.dLip_C / 100;
+    TabDEIntake[3] := IngSec1 * RecCC1.Amidon + IngSec2 * RecCC2.Amidon;
+    TabDEIntake[4] := IngSec1 * RecCC1.Sucres + IngSec2 * RecCC2.Sucres;
+    TabDEIntake[5] := IngSec1 * RecCC1.CB * RecCC1.dCB_C / 100 +
+      IngSec2 * RecCC2.CB * RecCC2.dCB_C / 100;
+    TabDEIntake[6] := IngSec1 * RecCC1.Residu * RecCC1.dResidu_C /
+      100 + IngSec2 * RecCC2.Residu * RecCC2.dResidu_C / 100;
+    for i := 1 to 6 do
+      PResSimulP.TabResult[12 + i, PResSimulP.NbJSim] := TabDEIntake[i];
+    // Acides amin�s totaux ing�r�s
+    for i := 0 to 12 do
+      PResSimulP.TabResult[93 + i, PResSimulP.NbJSim] :=
+        IngSec1 * TabAAtotal1[i] + IngSec2 * TabAAtotal2[i];
+    // Acides amin�s digestibles ing�r�s
+    for i := 0 to 12 do
+      TabAAdig[i] := IngSec1 * TabAAtotal1[i] * TabCUDAA1[i] / 100 +
+        IngSec2 * TabAAtotal2[i] * TabCUDAA2[i] / 100;
+    for i := 0 to 12 do
+      PResSimulP.TabResult[19 + i, PResSimulP.NbJSim] := TabAAdig[i];
+    ////////////////
+    // Simulation //
+    ////////////////
+    // Calcul de l'ED croissance
+    if Ingere = 0 then
+      DEcrois := 0
+    else
+      DEcrois := (IngSec1 * RecCC1.ED_C + IngSec2 * RecCC2.ED_C) / Ingere;
+    PResSimulP.TabResult[109, PResSimulP.NbJSim] := DEcrois;
+    // Calcul de l'EM croissance
+    if Ingere = 0 then
+      MEcrois := 0
+    else
+      MEcrois := (IngSec1 * RecCC1.EM_C + IngSec2 * RecCC2.EM_C) / Ingere;
+    PResSimulP.TabResult[89, PResSimulP.NbJSim] := MEcrois;
+    // Calcul de l'EN croissance
+    if Ingere = 0 then
+      NEcrois := 0
+    else
+      NEcrois := (IngSec1 * RecCC1.EN_C + IngSec2 * RecCC2.EN_C) / Ingere;
+    PResSimulP.TabResult[90, PResSimulP.NbJSim] := NEcrois;
+    // D�pot de prot�ines et d'acides amin�s
+    for i := 0 to 12 do
+    begin
+      TabAAm[i]  := AAm75[i] * Power(PV, 0.75) + IngereSec * AAendogene[i];
+      TabAAfG[i] := (TabAAdig[i] - TabAAm[i]) * kAA[i];
+      TabPDAA[i] := TabAAfG[i] / AAbody[i];
+      PResSimulP.TabResult[32 + i, PResSimulP.NbJSim] := TabPDAA[i];
+    end;
+    // met+cys
+    PResSimulP.TabResult[45, PResSimulP.NbJSim] :=
+      (TabAAfG[2] + TabAAfG[3]) / (AAbody[2] + AAbody[3]);
+    // phe+tyr
+    PResSimulP.TabResult[46, PResSimulP.NbJSim] :=
+      (TabAAfG[6] + TabAAfG[7]) / (AAbody[6] + AAbody[7]);
+    // Premier facteur limitant le d�pot de prot�ines
+    PDFirstLimit := PResSimulP.TabResult[32, PResSimulP.NbJSim];
+    for i := 33 to 46 do
+      if (i <> 35) and (i <> 39) // Ignorer 'cys' et 'tyr'
+      then
+        if PResSimulP.TabResult[i, PResSimulP.NbJSim] < PDFirstLimit then
+          PDFirstLimit := PResSimulP.TabResult[i, PResSimulP.NbJSim];
+    PResSimulP.TabResult[47, PResSimulP.NbJSim] := PDFirstLimit;
+    // Besoins en �nergie nette
+    // 1) NEmAL
+    FHP60 := FHPint + FHPpente * IngereAL * 1000 * NEcrois / Power(PV, 0.6);
+    NEmAL := Entretien * (Standing * NEact60h + kBR * FHP60) * Power(PV, 0.6);
+    PResSimulP.TabResult[71, PResSimulP.NbJSim] := NEmAL;
+    // 2) NEm
+    FHP60 := FHPint + FHPpente * Ingere * 1000 * NEcrois / Power(PV, 0.6);
+    PResSimulP.TabResult[91, PResSimulP.NbJSim] := FHP60;
+    NEm := Entretien * (Standing * NEact60h + kBR * FHP60) * Power(PV, 0.6);
+    PResSimulP.TabResult[72, PResSimulP.NbJSim] := NEm;
+    // R�partition de l'�nergie
+    NEintakeAL := 1000 * IngereAL * NEcrois;
+    PDAL := 1000 * BGompertz * p * Ln(Pmat / p);
+    px1AL := (NEintakeAL - NEmAL) / NEmAL + 1;
+    py1AL := PDAL * GEProtJaap;
+    PResSimulP.TabResult[110, PResSimulP.NbJSim] := px1AL;
+    PResSimulP.TabResult[111, PResSimulP.NbJSim] := py1AL;
+    mr := (mrPV1 * PVmr2 - mrPV2 * PVmr1 - PV * mrPV1 + PV * mrPV2) /
+      (-PVmr1 + PVmr2) * (NEmAL / 1000);
+    PResSimulP.TabResult[51, PResSimulP.NbJSim] := mr;
+    F  := 1 / 2 * (mr * power(px1AL, 2) - 2 * px1AL * py1AL - mr) /
+      (-py1AL + px1AL * mr - mr);
+    if (F <= 1) or (py1AL / (px1AL - 1) <= mr) then // Minimum (courbure convexe)
+    begin
+      F := INFINI;
+      a := py1AL / (px1AL - 1);
+      b := 0;
+    end
+    else
+    if mr >= 0 then
+    begin
+      a := -(px1AL * mr - mr - 2 * py1AL) / (px1AL - 1);
+      b := (-py1AL + px1AL * mr - mr) / (power(px1AL, 2) - 2 * px1AL + 1);
+    end
+    else
+    begin
+      a := 2 * py1AL / (F - 1);
+      b := -py1AL / power((F - 1), 2);
+    end;
+    PResSimulP.TabResult[52, PResSimulP.NbJSim] := F;
+    PResSimulP.TabResult[74, PResSimulP.NbJSim] := a;
+    PResSimulP.TabResult[75, PResSimulP.NbJSim] := b;
+    if px1AL < F then
+      PDmaxE := a * (F - 1) + b * Power((F - 1), 2)
+    else
+      PDmaxE := py1AL;
+    PResSimulP.TabResult[69, PResSimulP.NbJSim] := PDmaxE;
+    NEintake := 1000 * Ingere * NEcrois;
+    px1 := (NEintake - NEm) / NEmAL + 1;
+    PResSimulP.TabResult[76, PResSimulP.NbJSim] := px1;
+    if px1 < F then
+      py1 := a * (px1 - 1) + b * Power(px1 - 1, 2)
+    else
+      py1 := PDmaxE;
+    PResSimulP.TabResult[77, PResSimulP.NbJSim] := py1;
+    // D�p�t de prot�ines
+    if AALimit
+    then
+      PD := Min(py1 / GEProtJaap, PDFirstLimit)
+    else
+      PD := py1 / GEProtJaap;
+    PResSimulP.TabResult[79, PResSimulP.NbJSim] := PD;
+    EnergyPD := PD * GEProtJaap;
+    PResSimulP.TabResult[66, PResSimulP.NbJSim] := EnergyPD;
+    // Apport en �nergie
+    PfreeNE := 0;
+    for i := 1 to 6 do
+    begin
+      TabProtFreeME[i] := TabDEIntake[i] * ValEnergie[i, 4] * ValEnergie[i, 2];
+      TabProtFreeNE[i] := TabProtFreeME[i] * ValEnergie[i, 5];
+      PfreeNE := PfreeNE + TabProtFreeNE[i];
+      PResSimulP.TabResult[i + 52, PResSimulP.NbJSim] := TabProtFreeNE[i];
+    end;
+    PResSimulP.TabResult[59, PResSimulP.NbJSim] := PfreeNE;
+    // Exc�s de prot�ines
+    ExcessProt  := TabDEIntake[1] - PD;
+    PResSimulP.TabResult[60, PResSimulP.NbJSim] := ExcessProt;
+    ObligUrinELoss := 168 * Power(PV, 0.175);
+    PResSimulP.TabResult[61, PResSimulP.NbJSim] := ObligUrinELoss;
+    UrinEnergy  := ((ExcessProt / 6.25) * VarUrinELoss) + ObligUrinELoss;
+    PResSimulP.TabResult[62, PResSimulP.NbJSim] := UrinEnergy;
+    MEexcessProt := (ExcessProt * GEProtJaap) - UrinEnergy;
+    PResSimulP.TabResult[63, PResSimulP.NbJSim] := MEexcessProt;
+    NEexcessProt := MEexcessProt * kProtJaap;
+    PResSimulP.TabResult[64, PResSimulP.NbJSim] := NEexcessProt;
+    PDfreeNEintake := PfreeNE + NEexcessProt;
+    PResSimulP.TabResult[65, PResSimulP.NbJSim] := PDfreeNEintake;
+    NEintakeSim := EnergyPD + PDfreeNEintake;
+    PResSimulP.TabResult[67, PResSimulP.NbJSim] := NEintakeSim;
+    if Ingere <> 0 then
+      PResSimulP.TabResult[88, PResSimulP.NbJSim] := NEintakeSim / (Ingere * 1000);
+    MEintake := TabProtFreeME[1] + TabProtFreeME[2] + TabProtFreeME[3] +
+      TabProtFreeME[4] + TabProtFreeME[5] + TabProtFreeME[6] + MEexcessProt + EnergyPD;
+    PResSimulP.TabResult[86, PResSimulP.NbJSim] := MEintake;
+    if Ingere <> 0 then
+      PResSimulP.TabResult[87, PResSimulP.NbJSim] := MEintake / (Ingere * 1000);
+    // Besoin en �nergie pour le d�pot de prot�ines
+    PDfreeNEPD := PD * GEProtJaap * NEPD;
+    PResSimulP.TabResult[68, PResSimulP.NbJSim] := PDfreeNEPD;
+    PDfreeNEreq := PDfreeNEPD + NEm;
+    PResSimulP.TabResult[73, PResSimulP.NbJSim] := PDfreeNEreq;
+    PResSimulP.TabResult[92, PResSimulP.NbJSim] := NEintakeSim - NEm;
+    // D�p�t de lipides
+    EnergyLD := PDfreeNEintake - PDfreeNEreq;
+    LD := EnergyLD / ValEnergie[2, 2];
+    PResSimulP.TabResult[80, PResSimulP.NbJSim] := LD;
+    // Performances
+    p  := p + PD / 1000;
+    PResSimulP.TabResult[81, PResSimulP.NbJSim] := p;
+    l  := l + LD / 1000;
+    PResSimulP.TabResult[82, PResSimulP.NbJSim] := l;
+    if (p > 0) and (l > 0) then
+      // Calcul du PVV � partir des poids de prot�ines et lipides
+      PVVafter := ((Pallom * Power(p * 1000, Ballom)) +
+        (Lallom * Power(l * 1000, Ballom))) / 1000
+    else
+    begin
+      PVVafter := PVV;
+      ErrSimul := True;
+    end;
+    PVafter := CalcPV(PVVafter);
+    PResSimulP.TabResult[83, PResSimulP.NbJSim] := PVafter;
+    GMQ := PVafter - PV;
+    PResSimulP.TabResult[84, PResSimulP.NbJSim] := GMQ;
+    //    if GMQ <> 0
+    //    then
+    //      PResSimulP.TabResult[85, PResSimulP.NbJSim] := Ingere / GMQ ;
+    // Test de fin de simulation
+    if ModeFinSim = 0 then // Dur�e
+      FinSimul := PResSimulP.NbJSim >= Duree
+    else // Poids vif
+      FinSimul := PV >= PVFin;
+    Inc(Age);
+    PV := PVafter;
+  until FinSimul or ErrSimul or (PResSimulP.NbJSim = MAX_LIG_PORC);
+end;
+
+end.
Index: UFRapSensSimulP.dfm
===================================================================
--- UFRapSensSimulP.dfm	(révision 0)
+++ UFRapSensSimulP.dfm	(révision 3)
@@ -0,0 +1,4978 @@
+object FRapSensSimulP: TFRapSensSimulP
+  Left = 0
+  Top = 80
+  Caption = 'Sensitivity report for growing pigs'
+  ClientHeight = 800
+  ClientWidth = 817
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  Scaled = False
+  WindowState = wsMinimized
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object QRRapport: TQuickRep
+    Left = 0
+    Top = 0
+    Width = 794
+    Height = 1123
+    Frame.Color = clBlack
+    Frame.DrawTop = False
+    Frame.DrawBottom = False
+    Frame.DrawLeft = False
+    Frame.DrawRight = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Arial'
+    Font.Style = []
+    Functions.Strings = (
+      'PAGENUMBER'
+      'COLUMNNUMBER'
+      'REPORTTITLE')
+    Functions.DATA = (
+      '0'
+      '0'
+      #39#39)
+    Options = [FirstPageHeader, LastPageFooter]
+    Page.Columns = 1
+    Page.Orientation = poPortrait
+    Page.PaperSize = A4
+    Page.Continuous = False
+    Page.Values = (
+      100.000000000000000000
+      2970.000000000000000000
+      100.000000000000000000
+      2100.000000000000000000
+      100.000000000000000000
+      100.000000000000000000
+      0.000000000000000000)
+    PrinterSettings.Copies = 1
+    PrinterSettings.OutputBin = Auto
+    PrinterSettings.Duplex = False
+    PrinterSettings.FirstPage = 0
+    PrinterSettings.LastPage = 0
+    PrinterSettings.UseStandardprinter = False
+    PrinterSettings.UseCustomBinCode = False
+    PrinterSettings.CustomBinCode = 0
+    PrinterSettings.ExtendedDuplex = 0
+    PrinterSettings.UseCustomPaperCode = False
+    PrinterSettings.CustomPaperCode = 0
+    PrinterSettings.PrintMetaFile = False
+    PrinterSettings.PrintQuality = 0
+    PrinterSettings.Collate = 0
+    PrinterSettings.ColorOption = 0
+    PrintIfEmpty = True
+    ShowProgress = False
+    SnapToGrid = True
+    Units = MM
+    Zoom = 100
+    PrevFormStyle = fsNormal
+    PreviewInitialState = wsNormal
+    PrevInitialZoom = qrZoomToFit
+    PreviewDefaultSaveType = stQRP
+    PreviewLeft = 0
+    PreviewTop = 0
+    object PHBRapport: TQRBand
+      Left = 38
+      Top = 38
+      Width = 718
+      Height = 80
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        211.666666666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageHeader
+      object QRLTitre: TQRLabel
+        Left = 80
+        Top = 40
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          105.833333333333000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'Sensitivity analysis growing pigs'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -21
+        Font.Name = 'Verdana'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = False
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 16
+      end
+      object QRSEntete: TQRShape
+        Left = 0
+        Top = 76
+        Width = 718
+        Height = 4
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          10.583333333333300000
+          0.000000000000000000
+          201.083333333333000000
+          1899.708333333330000000)
+        Pen.Color = clGreen
+        Pen.Width = 2
+        Shape = qrsRectangle
+        VertAdjust = 0
+      end
+      object QRIInraPorc: TQRImage
+        Left = 8
+        Top = 8
+        Width = 64
+        Height = 64
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          169.333333333333000000
+          21.166666666666700000
+          21.166666666666700000
+          169.333333333333000000)
+        Picture.Data = {
+          07544269746D617036400000424D364000000000000036000000280000004000
+          0000400000000100200000000000004000000000000000000000000000000000
+          0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DCDCDB2498999876787A77AB6C70
+          6BC36C6F6AC86D706BC86C6F69C8696D66C8696D65C8686D64C8696D65C8696D
+          66C8686D66C9666B62C9656A60C9666C63C9666C62C9656B62C9656A61C9646A
+          61C9636A60C9626A5FC961685CC95C6555CA5B6555CA5B6453CA5C6556CA5E66
+          5BCA5E665ACA5D6659CA5C6657CA5C6557CA5B6557CA5B6556CA5A6355CB5963
+          54CB586353CB586253CB586253CB535E4ACB505D45CB4F5C44CB4F5C44CB545F
+          4ECB55604FCB55604FCB54604FCB545F4ECB545F4DCB535F4DCB535F4DCB4C5B
+          41CB53604AC76B7565AD93989079DEDFDD24FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00F7F7F70867676798162610FC8C9089FFAEB4ABFFBCC2
+          B9FFC0C6BDFFBEC5B8FFBAC3B2FFB8C1AFFFB7C0ADFFB6C0AEFFB9C3B4FFB8C3
+          B3FFB7C2B1FFB6C1B0FFB4C0ADFFB4BFADFFB2BFABFFB0BFAAFFAFBDA9FFAEBC
+          A7FFADBCA6FFABBAA2FFA4B595FF9FB18FFF9EB18DFF9CB08BFF9DB08DFFA3B5
+          99FFA3B599FFA2B497FFA0B496FF9FB394FF9EB293FF9DB291FF9BB190FF9AB0
+          8FFF99AF8EFF98AF8CFF96AE8BFF8EA87BFF87A36EFF84A26CFF83A06AFF85A2
+          6DFF8FA97DFF8FAA82FF8FAA81FF8EA980FF8DA97EFF8DA87EFF8CA87DFF88A5
+          76FF87A378FF7E9A70FF6C845EFF4F6442FC8592799CF6F6F609FFFFFF00FFFF
+          FF00FFFFFF00F2F2F20D373937C8002600FF075700FFDBE4D6FFEDF4EAFFEBF3
+          E7FFE7EFE0FFE4EFDDFFE3EDDBFFE2ECD9FFE0EBD6FFDFEBD4FFDDE9D2FFDFEB
+          D9FFE0ECDAFFDFEBD8FFDDEBD7FFDCE9D4FFDBE8D3FFD8E8D1FFD7E7CFFFD6E6
+          CDFFD2E3C7FFC9DDB8FFC6DBB5FFC4DAB1FFC3D9B0FFC1D8ADFFBFD7AAFFBED5
+          AAFFC5DBB7FFC7DCBCFFC5DCB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED8
+          B1FFBDD7AFFFB6D2A3FFABCA91FFA9C88DFFA7C88BFFAAC990FFA6C689FFA2C4
+          84FFA1C383FFA4C689FFAFCE9EFFB0CEA0FFAFCE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFA9CA96FFA0C287FF89AD68FF68884CFF71875FC8F4F4F30CFFFF
+          FF00FFFFFF00575C57A8002D00FF005600FF005F00FF9FC18FFFEEF5EAFFE8F1
+          E2FFE7F0DFFFE4EFDCFFE5EEDEFFE6F0E1FFE2ECDAFFDFEBD4FFDCE9D1FFDBE8
+          D0FFDDEAD4FFDFEBD7FFDDEBD7FFDCE9D4FFDAE8D3FFD8E8D1FFD7E7CFFFD1E3
+          C5FFCBDDBAFFC8DCB6FFC6DBB5FFCADDBBFFCCE0C2FFC6DBB6FFBFD7AAFFBDD5
+          A8FFBCD4A6FFC1D8B0FFC4DBB9FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFB8D2A6FFACCA91FFA9C98FFFA9C88CFFACCB94FFB5D2A6FFB1CEA0FFA5C6
+          8AFFA1C483FFA0C281FFA2C485FFAECD9CFFAECE9EFFAECD9DFFADCD9DFFADCD
+          9BFFAACB97FF9CC27FFF96BD74FF94BB72FF90B670FF83A16FFF9BAC93AAFFFF
+          FF00CACCCD3A143521FF005300FF005F00FF006000FF4E8F46FFEBF2E7FFE8F1
+          E1FFE7EFDFFFE8F1E3FFE8F2E4FFE7F0E3FFE6F0E0FFE2EDDBFFDCE9D1FFDBE8
+          CFFFD8E7CDFFD9E7CEFFDCEAD6FFDCE9D4FFDAE8D3FFD8E8D1FFD5E5CCFFCCDF
+          BCFFC9DDB9FFC8DDB7FFCCDFBFFFD0E2C5FFCEE1C4FFCCE0C2FFC5DBB6FFBED5
+          A9FFBCD4A6FFB9D2A3FFBCD5ABFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFB8D2
+          A6FFAECC94FFABCA91FFAAC98FFFB3CFA0FFB7D3A8FFB6D2A7FFB5D2A6FFB3D0
+          A3FFA9C991FFA0C282FF9EC27FFFAACA97FFAFCE9EFFAECD9EFFADCD9DFFAACB
+          99FF9CC17FFF97BD74FF96BD74FF95BC72FFA1C487FFA3C492FF88A578FFCED2
+          CC3F8B959D9C708586FF005E00FF006000FF006000FF096600FFD4E0CEFFE8F1
+          E2FFE9F1E3FFEAF2E6FFE8F2E4FFE7F0E3FFE5EFDFFFE0EBD6FFDFEAD4FFDCE8
+          D2FFD8E7CCFFD7E6CAFFD8E6CCFFDBE8D3FFDAE8D3FFD8E8D1FFD6E6CDFFCDDF
+          BDFFCBDEBBFFCFE2C3FFD1E3C8FFCFE2C5FFCDE1C4FFCBDFC0FFCADEBFFFC6DC
+          B9FFBED5A9FFB9D3A3FFBAD4A7FFC4DBB8FFC2DAB5FFC1D9B4FFC0D8B2FFB4CF
+          9FFFADCB93FFADCA93FFB5D1A3FFB5D1A4FFB0CE9BFFB5D1A7FFB4D2A5FFB4D1
+          A5FFB2D0A2FFA6C78CFF9FC280FFAACB97FFAFCE9EFFAECD9DFFA9CB96FF9CC0
+          7EFF97BD76FF97BD74FF9CC17FFF98BD78FF95BC74FF9EC283FF9FC08EFFB4C6
+          AAA773808BE09FB9CBFF2B752DFF006000FF006000FF006000FF78A86DFFEBF2
+          E6FFEBF3E7FFEAF2E6FFE8F2E4FFE6F0E1FFE1EBD8FFDFEBD3FFE0EBD8FFE1EC
+          DBFFDBE8D0FFD7E6CAFFD5E5C8FFDAE8D2FFDAE8D2FFD8E8D1FFD7E6CEFFCFE1
+          C1FFD3E4CAFFD2E4C9FFD1E3C7FFC9DDBAFFCADEBCFFC2D8AFFFC8DDBBFFC9DF
+          BFFFC6DBB9FFBCD4A7FFBAD4A7FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B3FFB8D2
+          A5FFAECC95FFB7D2A7FFBAD5ACFFB2D0A1FFA6C68AFFA9C88FFFACCA96FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFADCC9BFFAECE9EFFAECD9DFFA8C994FF98BE
+          78FF97BD76FF9DC281FFA9CA98FF9CC07EFF94BC73FF94BC72FF9BC07FFFA7C1
+          99E2788893F6AECBE0FF73A387FF006000FF006000FF006000FF196F11FFDDE5
+          D9FFEBF3E7FFEAF2E6FFE7EFE0FFE2ECD9FFE0EBD6FFDFEBD4FFE0EBD7FFE1ED
+          DCFFDFEBDAFFDAE7CFFFD4E3C6FFD8E5D0FFD7E4CFFFD3E2CBFFD0E0C9FFCEDE
+          C7FFCDDEC5FFCBDDC3FFCADCC1FFC3D6B1FFBFD5ABFFBFD5ABFFC8DCBBFFC9DF
+          BFFFC8DDBDFFC4DBB8FFC0D8B1FFC4DBB8FFC2DAB6FFC1D9B4FFC0D8B2FFBCD6
+          ADFFBBD5ACFFBCD6AEFFBAD5ACFFB3D0A2FFA6C78BFFA5C688FFA5C588FFB0CE
+          9EFFB3D1A3FFB2D0A2FFB1D0A1FFAFCEA0FFAECE9EFFAECD9DFFA9C995FF99BE
+          78FF9EC282FFA9CB98FFAACA98FFA7C893FF98BE79FF94BC72FF97BE76FF9CBF
+          81FB788B99F7B8D2E6FFB2CDE0FF136C13FF006000FF006000FF006000FF7FAA
+          75FFE9F0E5FFE8F0E2FFE4EDDBFFE0EAD7FFDAE5D0FFD4DFCAFFCCD6C7FFC1CB
+          BCFFB5BFAFFFABB6A6FF9EA996FF95A08FFF8E9A8AFF889483FF848E7EFF838E
+          7CFF818E7BFF808D79FF7C8A73FF7A8B6DFF7F8F71FF849674FF93A486FF9EB0
+          95FFA8BB9EFFB1C5A7FFBACFAEFFBCD3B0FFBFD6B3FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFBCD6AEFFBAD4ACFFAFCC97FFA6C78BFFA5C689FFA4C587FFA3C5
+          87FFAECD9AFFB2D0A2FFB1D0A1FFAFCE9FFFAECE9EFFAECD9EFFA9CA97FFA6C7
+          8EFFABCB99FFAACC9AFFAACB98FFA8C996FF9BC17FFF94BC72FF99BF79FF9BBF
+          7CFE7E909BF7B4D2E5FFBAD7EEFF689E79FF006000FF006000FF006000FF156D
+          0EFFD1DBCAFFDAE2D1FFC1C9B8FFA5AD9DFF8D9586FF7B8474FF6A7663FF5C6F
+          52FF4A6A3AFF3B6731FF2F642BFF266221FF21601AFF1C6011FF156008FF1360
+          06FF136005FF135F04FF115E01FF145D05FF195D0EFF1E5E14FF235E1BFF2D61
+          26FF3D662EFF506B42FF647759FF72836AFF7F9276FF8FA284FF9BB08FFFA5BD
+          9AFFAEC6A1FFB3CDA6FFB0CB9AFFA8C88CFFA6C78BFFA5C589FFA4C588FFA2C4
+          85FFA3C585FFA9C790FFB0CF9FFFB0CEA0FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9AFFAACC9AFFA8C995FF9CC181FF94BC73FF94BC72FF9BC07DFF9DC0
+          7DFE6F8596F7B6D2E5FFC4DFF2FFA2C7DDFF126C13FF006000FF006000FF0060
+          00FF598B4BFF8B9286FF616F56FF3C6630FF23611AFF0E6001FF016000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF005F00FF065E00FF155D09FF235F1CFF316228FF4466
+          33FF566F49FF627752FF70885BFF86A26DFF9CB984FFB1CC9EFFAFCD9AFFA2C4
+          85FFA0C382FF94B577FF8EAC75FF99B78BFFA6C496FFACCB9CFFADCD9DFFACCC
+          9BFFABCC9AFFA7C893FF98BF79FF95BC73FF94BC72FF99BE7AFFAACB98FFA6C8
+          8EFE788B99F7B1CCE3FFB8D8EEFFC2DDF1FF6AA386FF006000FF006000FF0060
+          00FF036000FF2C6222FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF025D00FF105B04FF235C19FF4D6E3BFF7E9472FFA5C197FFAECC
+          9CFF92B079FF546D3FFF395821FF3C5F27FF5C764DFF809A73FF9EBD8FFFAACB
+          99FFA6C892FF98BE78FF96BD74FF95BC73FF99BE7AFFA7C995FFADCD9CFFAECD
+          9EFE748A98F7B6D0E4FFBFDBEFFFB9DAEFFFB4D3E9FF1D7323FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF005F00FF0E5F06FF4D7A41FFA3BE
+          95FF7B936EFF1B580BFF005F00FF006000FF005E00FF175E0CFF486F3AFF7895
+          64FF8FB370FF96BC74FF97BD74FFA1C487FF9CC07FFFA4C78FFFADCD9DFFAFCE
+          9FFE6A8294F7AFCBE1FFB5D6EDFFB5D5EDFFC7E0F3FF9ABFB2FF016300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0061
+          00FF006600FF016700FF046900FF026800FF026800FF036800FF006500FF0064
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF578F
+          57FF799586FF005F00FF006000FF006000FF006000FF006000FF005F00FF105C
+          07FF497231FF86A866FFA0C488FFA9CA97FF97BE77FF94BC72FFA4C68BFFAFCE
+          9FFE7D8F9BF7B9D4E7FFBEDAEFFFBCD9EEFFC1DCEFFFC9E1F1FF54945EFF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006200FF0E6F
+          03FF2F8230FF418E50FF5CA36DFF6DAC7BFF82B597FF8EBCAEFF9BC4BDFF9EC4
+          C4FF89B7C6FF97BECCFFA2C3D8FF9FC3D7FF9BC0D5FFA6C8D9FFB0D0D4FFA7CC
+          CCFF9AC2BDFF8CBBABFF75AE8EFF61A472FF569C66FF448C4DFF2E7E32FF1A74
+          11FF0B6C00FF016600FF006100FF006000FF006000FF006000FF006000FF096B
+          01FF95B5BDFF026300FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF005F00FF376E24FF97B587FFA8C997FF99BF7AFF94BC73FF99BF79FFA8C8
+          91FE718595F7B7D1E6FFB9D9EEFFC6DFF1FFC1DDF0FFB5D8EEFFB6D5E3FF1F75
+          22FF006000FF006000FF006000FF006000FF35813EFF66A57EFF8DB9BAFFAED0
+          E5FFBAD8ECFFBAD8ECFFC1DDF0FFBDDAEFFFB6D3E9FFBED6E9FFB9D4E8FFB1CF
+          E6FFB7D1E5FFB0CCE3FFAFCAE2FFB0CAE2FFB6D2E5FFB3D1E5FFADCCE2FFB3CD
+          E5FFB4D2E7FFB1D0E6FFA9CCE5FFA6C9E3FFB1CFE8FFADCBE5FFB3CFE7FFB7CE
+          E7FFBCD2E7FFADCAD5FFA1C4C2FF91BEAEFF76AE86FF64A470FF4D965FFF62A3
+          78FFB0CAE5FF68A17AFF036500FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF3E7A2BFFA2C291FF9FC285FF94BC73FF99BF79FF9CBF
+          7DFE6C8293F7A8C6DFFFACCFE7FFADD3EBFFC3DFF2FFC3E0F2FFCCE3F3FF9CC3
+          BCFF086600FF006000FF006000FF006000FF3E7B44FFAEC7D9FFBDD7EAFFB7D5
+          E9FFB8D6EAFFADD1E8FFB0D2EAFFBAD7EDFFB5D3EAFFB9D5EAFFB7D4E9FFB9D5
+          E9FFB0CFE6FFA9C7E0FFB2CEE4FF9BC0DBFF94BCDAFF95BFDEFF9CBEDAFFB1CD
+          E3FFB1D1E7FFAACCE5FFACCCE5FFAFCEE6FFAACBE4FFACCCE5FFABCCE5FFB8D1
+          E9FFB3CCE5FFB3CCE6FFBAD1E9FFBBD4EAFFAECCE6FFB0C9E4FFBFD4EAFFB3CC
+          E7FFBBD2EAFFC2D5ECFFB7D2D4FF83B58EFF5EA06AFF1C751BFF006000FF0060
+          00FF006000FF006000FF006000FF669950FF94BC74FF94BC74FF9EC280FF9DC0
+          7DFE798B99F7BAD2E6FFC0DDF2FFBEDDF1FFBCDBF0FFBBD9EFFFBFDBF0FFC1DE
+          F0FF75AC8AFF006000FF006000FF006000FF006000FF4D8165FFA2C1DAFFB4D1
+          E8FFC3DCEFFFC0DCEFFFBEDAEEFFB6D3E9FFB8D3EAFFB6D2E8FFB6D3E9FFB1D1
+          E8FFB3D1E8FFB2D1E7FFB0CEE4FFAFCCE3FFBAD4E8FFB0CEE5FFB8D5E8FFB2D2
+          E8FFB2D0E8FFA5CAE3FFABCCE5FFA8CAE4FFADCDE6FFB4D3E9FFBAD4E9FFBBD3
+          E9FFAEC8E4FFB2CBE5FFB9D1E9FFB7D1E8FFB5CFE8FFBFD5EAFFAAC7E4FFB9D0
+          E9FFB7CFE8FFC3D7EDFFC4D7EDFFB3CEE8FFB7D0EAFFADCBE6FF629E7AFF0263
+          00FF006000FF006000FF006000FF186D0CFF90B76EFF97BD77FFACCC9AFFA3C5
+          89FE768A99F7B7D3E7FFC4DFF1FFC4DEF1FFC3DDF0FFC7E0F2FFC6E0F3FFC8E2
+          F2FFC1DBEEFF509254FF006000FF006000FF006000FF006000FF76A18EFFC5DE
+          F0FFC5E0F1FFC6E0F2FFB6D5EDFFB3D3EAFFB6D4E9FFBFD9EBFFB2D2E8FFAFCF
+          E7FFACCCE7FFA5C8E4FFB1CEE6FFAACAE4FFB2D0E8FFBCD7EBFFBAD7EBFFAECF
+          E8FFA9CBE5FFB1CFE7FFA5C8E3FFB1D0E6FFADCEE6FFB2CEE6FFC2D8ECFFB6CF
+          E7FFB3CDE7FFB7CFE7FFBAD1E9FFB7D0E8FFAEC9E5FFACC9E5FFB1CFE8FFB4CD
+          E7FFC0D6EAFFC1D6EBFFC5D8EDFFBCD4ECFFBBD2ECFFB5CFEBFFA8C4E2FF5789
+          77FF005F00FF006000FF006000FF006000FF74A751FFA4C68DFFADCD9CFFAECD
+          9DFE778999F7BAD4E7FFC5DFF1FFCEE4F3FFD0E5F5FFCBE3F3FFC8E1F3FFBFDC
+          F0FFBAD8EEFFBCD7E8FF2A7E2FFF006000FF006000FF006000FF157110FFBBD9
+          ECFFC2DDF1FFC2DEF1FFC0DDF1FFBDD8ECFFB7D3E8FFB2CDE4FFACCCE4FFAFCB
+          E5FFB1CFE7FFB2D1E9FFB0D0E8FFBAD7ECFFAFD2E9FFB8D5E9FFA9C8DFFFAACA
+          E1FFAECDE5FFABCAE3FFB3D0E7FFB7D3E8FFB5D0E7FFC0D7EBFFB5CFE8FFB5CD
+          E7FFB4CCE5FFBAD0E9FFB3CEE8FFB7CFE8FFB0CBE6FFB2CCE7FFA7C9E5FFB1CC
+          E5FFB6D0E9FFC4D8EDFFC1D5ECFFC4D8EDFFB9CFE9FF9CB4CDFF6B8098FF485C
+          6CFF065B01FF006000FF006000FF006000FF56994BFFA9CA97FFADCD9CFFAFCE
+          9FFE7D8D9AF7C2D7E8FFC8E0F1FFCEE4F3FFC6E0F3FFC4DFF3FFC3DCF1FFC7E1
+          F3FFC2DEF2FFC7E0F2FFB2D0D9FF1B741FFF006000FF006000FF026700FFB9D8
+          E1FFBFDDF3FFC4DFF2FFC0DBF1FFBDDAEEFFBBD5EBFFBED9ECFFABCCE5FFB5D2
+          E7FFBDD9EBFFB6D4EBFFB7D6ECFFABD1EAFFADCBE1FF8A9EB2FF637889FF6980
+          92FF97B3C8FFB1CFE5FFB3D0E7FFB2CEE6FFBFD7EBFFB9D2E9FFB7D2E8FFB4CE
+          E6FFBBD1E8FFBAD2E8FFBAD1E9FFB2CCE7FFB8CFE8FFBCD2E9FFBBD2EAFFBCD5
+          EAFFBAD2E9FFC0D6ECFFC6DAEEFFB3C9E2FF879AB3FF516476FF21562FFF025D
+          00FF006000FF006000FF006000FF006000FF519741FF9BBF7CFFACCC9AFFAFCE
+          9FFE7A8B99F7BBD2E5FFCADEF1FFCAE1F3FFC4E0F2FFC4DFF4FFBFDCF1FFC3DF
+          F2FFC1DDF2FFC1DDF1FFC2DCF1FFA4C9CFFF368839FF086C00FF5CA065FFBDDA
+          F0FFC0DCF1FFC4DFF1FFBFDDF2FFBFDCF0FFC0DBF0FFB3D1EAFFB6D4E9FFB3D2
+          E7FFB4D1E8FFBBD7EBFFAED0EAFFB4D2EAFF7E9CB4FF446057FF115C0FFF035C
+          00FF3C7A43FFA8C5DFFFB1CEE6FFB9D2E9FFB3CFE7FFB5CFE7FFB1CCE5FFB4CF
+          E7FFB5CEE7FFC0D6EBFFBFD5EBFFC0D6EBFFC6D8EBFFC3D7EBFFB8D0E8FFBED4
+          EAFFC1D6ECFFC4D9EDFFAEC4DCFF7D8DA0FF405B5AFF0A5A0FFF006000FF0060
+          00FF006000FF006000FF006000FF006100FF80B260FF94BC72FF9FC382FFADCC
+          9CFE798B9AF7C1D6E7FFCEE4F5FFCAE2F3FFC5DEF2FFBED9EFFFC7E0F3FFBEDC
+          F1FFBFDCF1FFB7D7EEFFBDD8EEFFC1DCEFFFB2D3EBFFB6D5E4FFBCD9EEFFC0DC
+          F0FFC1DEF2FFB9D7EFFFBFDBF0FFBBD8EDFFBBD8EDFFBEDAEDFFB3D2E9FFBAD6
+          EBFFC1D9EBFFB5D3E9FFB5D4ECFF9DBCD5FF576E7BFF0A5E09FF006000FF0060
+          00FF006000FF86B5A7FFBED8ECFFB4D1E8FFAECCE6FFAECCE5FFACCAE5FFB3CD
+          E6FFB4D0E8FFB9D1E8FFBFD5EBFFBAD0E8FFBACEE6FFAEC9E4FFBCD1E8FFC1D5
+          EBFFC2D6EBFFA9BED5FF718092FF325947FF035E00FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF2D831DFFA2C58AFF94BC71FF99BF79FF9FC1
+          81FE808F9CF7C7DBEAFFCDE5F4FFC9E1F3FFC6DFF2FFC7E1F3FFBDDBF2FFC0DC
+          F0FFC1DCF1FFBDDAF0FFBBDAF0FFAFD2EBFFACCFE8FFB8D1E9FFBFD9EDFFBDD9
+          EEFFB2D3ECFFB9D6EDFFBCD6EDFFBAD5ECFFC0DBF0FFB6D4EBFFBDD6EAFFB1CF
+          E5FFB5CFE5FFAFCEE7FFA7C5DEFF71889BFF235D29FF006000FF006000FF0060
+          00FF006000FF81AE9BFF9FC5E3FFACCDE6FFB6D1E8FFB8D2E8FFAACAE4FFA7C7
+          E2FFAECBE5FFB8D1E7FFC2D5E9FFC2D3E8FFBDD0E7FFB0CBE4FFBAD0E7FFC2D5
+          E9FFA9BDCFFF657587FF2B5A37FF005F00FF006000FF006000FF006000FF0060
+          00FF056600FF449036FF75AE58FFA3C68FFF98BE79FF9CC17FFF9ABF7AFF9DC0
+          7DFE81919CF7BED6E7FFC1DBEFFFC6E0F2FFCBE3F4FFBBDAF0FFBDDAF0FFC3DE
+          F0FFCBE2F4FFCAE1F3FFB6D5EEFFB4D2EBFFAECFE9FFBED7ECFFBCD6ECFFBAD7
+          EDFFB1D0EAFFC3DAEFFFC3DAEFFFBED8EEFFC3DBF0FFBDD9EEFFBDD8EDFFBCD8
+          ECFFBDD9EDFFA9C9E2FF8B9FAEFF3E6150FF005F00FF006000FF006000FF0060
+          00FF006000FF418754FFB5D2E9FFB2D0E9FFB5D1E8FFAECDE5FFACCCE4FF9EC2
+          E0FF96C1DFFFB5D1E7FFB8D0E7FFB7CDE7FFB1C9E4FFB3CBE4FFB6CCE5FF9DB4
+          CAFF627183FF245A28FF005F00FF006000FF006000FF006000FF006000FF2F84
+          1FFF97C181FFAACC99FFA4C78EFF99BE7AFF94BB71FFA5C890FFA6C88EFF9EC0
+          7EFE7C8D9AF7BED5E8FFC7E0F2FFC4DFF1FFB9D8EFFFC6DFF2FFC5DFF2FFC5DE
+          F1FFC2DCF0FFBFDAF0FFBBD8EEFFB0D1EBFFB2D2EBFFB9D7ECFFB7D6EDFFC2DD
+          F0FFBBD9EFFFB7D5ECFFB5D2EBFFC2DAEFFFC8E1F2FFC1DEF1FFC1DEF2FFC3DF
+          F2FFB5D3E9FF8EA4B7FF445F5EFF055E03FF006000FF006000FF006000FF0060
+          00FF006000FF0B6907FFB0CCDFFFB4CFE7FFB6D2E9FFB9D5E9FFB1CFE6FFA9C9
+          E5FFABCCE5FFBBD5E9FFB5D1E8FFBBD4EAFFBCD3E9FFBACEE6FFA0B5C9FF5E6F
+          80FF1C591EFF006000FF006000FF006000FF006000FF006300FF60A04CFFACCC
+          9BFFABCC9AFFA8CA96FF9EC382FF9CC181FF9CC180FFA6C891FFADCD9CFFAACB
+          97FE7E8E9BF7BFD6E7FFC4DFF1FFBEDBF0FFC0DEF1FFBCD9EFFFC1DEF2FFBDDC
+          F1FFB8D8EFFFB8D8EFFFB7D5EDFFB8D7EEFFB8D8EEFFC0DCF1FFB0D6ECFFB6D6
+          EDFFBDD9EEFFBBD6EDFFC2DCEFFFC9E1F3FFC6E0F3FFC1DDF2FFB9D8EFFFC1DB
+          EEFF92ABBBFF4D6568FF0C5D0EFF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF7EAD98FFBCD7EBFFB5D1E8FFADCBE6FFADCBE5FFAACA
+          E5FFACCDE6FFADCBE5FFB0CFE7FFB8D2E9FFBCD2E8FFA4B8CDFF576B7EFF1C59
+          1DFF006000FF006000FF006000FF006000FF096900FF7CB269FFADCD9DFFACCC
+          9BFFA9CA97FF9BBF7BFF96BD73FF94BC73FF99BF7BFFA6C892FFADCD9CFFAECD
+          9EFE748998F7BED6E8FFC1DEF1FFBFDCF1FFBBDAEFFFC0DBF0FFBCDBF2FFBBDB
+          F1FFBADAF1FFB6D6ECFFC0DDF1FFBBDBF1FFB9DBF0FFA8D2ECFFBAD9EEFFB7D7
+          EEFFAFD0E9FFB3D2EAFFC7DEF0FFC8E2F3FFC8E1F3FFC6E0F2FFC1DBEEFF8BA6
+          BAFF4F676AFF0C5D0FFF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF4D905EFFB3D1E9FFB4D1E9FFB5D2E9FFB9D3EAFFB2CF
+          E8FFAFCDE5FFA4C6E2FFA0C4E2FFABCBE5FFA4BDD1FF5C7083FF205B21FF0060
+          00FF006000FF006000FF006000FF0D6A01FF83B360FFADCD9CFFADCD9DFFA5C7
+          8DFF9ABF7BFF97BD75FF96BD74FF9CC180FFA8CA96FFA8C996FFADCD9CFFAFCE
+          9FFE7E8E9BF7B7D4E6FFBDDCF0FFBADAEEFFBEDCF0FFC3E0F3FFC2DFF3FFC1DE
+          F3FFC0DEF2FFBCDDF1FFBCDDF1FFB7DBF0FFABD3ECFFBFDBF0FFC3DEF1FFB6D6
+          ECFFBAD8EEFFC2DDEFFFBFDBEFFFC0DBF0FFC5DFF3FFC4DCEDFF8CA6B8FF4C65
+          69FF0D5E0FFF006000FF006000FF006000FF006000FF146E17FF297030FF0060
+          00FF006000FF006000FF21761EFFACCBE5FFAFD0EAFFB5D2EAFFB3D0E9FFACCC
+          E6FFA9CAE4FFB4D0E7FFB6D2E7FFA3C0D7FF5C7588FF205728FF006000FF0060
+          00FF006000FF006000FF126D07FF87B463FF9FC280FFADCC9CFFA5C78FFF98BE
+          78FF97BD77FF96BD73FF9EC284FFA8C996FFA7C894FF9DC282FFAACB98FFAFCE
+          9FFE758998F7B4D0E4FFBBD9EEFFC6E0F3FFC2E0F2FFBFDDF2FFC3DFF4FFC1DF
+          F3FFB9DBF1FFB5D9F0FFAFD7EEFFAED5EDFFC1DEF1FFBBD9EEFFB6D7EDFFBDDB
+          EFFFB1D5EBFFA9D0E9FFB4D5EBFFBEDCF0FFBBD6E9FF829CAFFF4A6364FF0B5D
+          0EFF006000FF006000FF006000FF006000FF146E16FF94BEBFFF417D5AFF0060
+          00FF006000FF006000FF006300FF9DC3D7FFB2D0E9FFB2D2EAFFB1CFE7FFA7C7
+          E3FFAACAE4FFA3C5E1FFACC8DCFF6B8294FF2C5B3AFF005F00FF006000FF0060
+          00FF006000FF146E0AFF98C283FFA5C78BFF9FC281FFA5C78EFF99BF79FF98BE
+          77FF98BF7AFFA1C588FFA9CA97FFA9CA97FFA7C995FF97BE77FF9BBF7BFFABCA
+          98FE7D8E9BF7BFD5E7FFBDDDF0FFBEDCF0FFBBDBF0FFBEDCF1FFBDDCF2FFC1DE
+          F3FFC1DEF3FFB8D9EFFFB9D9F0FFACD5EEFFAAD1ECFFB2D5EDFFAFD3ECFFAFD3
+          EBFFBBD9EEFFB6D7EEFFB5D6EDFFB1CEE4FF7F97A8FF47635BFF095E09FF0060
+          00FF006000FF006000FF006000FF1A731DFF9BC3C6FFA7C9E3FF749891FF0060
+          00FF006000FF006000FF006000FF90B8ADFFB4D2EAFFADCCE8FFB3D0E8FFAFCE
+          E6FFABCBE4FFB0CCE1FF7B92A2FF355D48FF005F00FF006000FF006000FF0060
+          00FF106C06FF96C080FFB1D0A1FFAFCD9EFFABCA97FF9EC280FF9ABF78FF9ABF
+          7AFFA7C992FFAACC9AFFAACB98FFA9CA97FFA6C893FF95BD74FF99BF79FF9EC2
+          80FE778B9AF7B6D1E5FFC2DEF1FFC1DEF2FFBFDCF2FFBCDAF1FFBADBF0FFB0D4
+          EEFFB3D3EDFFABD2ECFFADD6EEFFACD5EDFFAED5EDFFC5E1F4FFC0DEF3FFC2DD
+          F1FFB6D6EEFFB3D4ECFFA5C7DEFF6F8DA0FF375C50FF055E02FF006000FF0060
+          00FF006000FF006000FF267E2CFFA6CAD3FFA5C9E3FFA0C4E2FF87A6BAFF0160
+          00FF006000FF006000FF006000FF69A17FFFB4CEE7FFB3CEE7FFB2CDE5FFB4CF
+          E6FFACC9E1FF8097AAFF435F54FF035F00FF006000FF006000FF006000FF0A69
+          00FF87B767FFB1CFA1FFB1D0A1FFB0CEA0FFAECE9EFFA2C588FF9EC280FFA7C8
+          93FFABCC9AFFAACC9AFFAACB98FFA7C894FF99BE7AFF9CC181FF9ABF7AFF9DC0
+          7DFE7D8E9CF7B5D1E4FFBFDCF0FFCBE2F3FFC3DFF2FFBADBF1FFBFDDF2FFBFDC
+          F3FFC0DDF3FFB3D8EFFFAFD6EFFFBDDCF1FFBFDDF1FFB8D9F1FFC1DDF1FFBBDA
+          F0FFB3D4EEFFABC7DDFF678396FF35604BFF015F00FF006000FF006000FF0060
+          00FF006000FF469046FFACCEE1FFA2C6E3FFA6C7E3FFB2D0E8FF9AB8CEFF0F63
+          0BFF006000FF006000FF006000FF5A9B6DFFB0CDE7FFB0CEE6FFA6C6E1FFAAC6
+          E0FF839FB5FF4D6562FF085F05FF006000FF006000FF006000FF046600FF79AE
+          5BFFA0C483FFA5C68BFFAFCE9DFFAFCE9FFFAECE9EFFABCB97FFACCC9BFFADCD
+          9BFFABCC9AFFAACC9AFFA5C78FFF99BE7BFF94BB71FFA5C790FFA6C890FFA0C2
+          81FE738898F7B4CFE4FFBBDAEFFFB7D8EEFFB9DAF0FFBAD9EFFFBAD9F0FFBEDC
+          F1FFC8E2F4FFC0DEF1FFB7D8F0FFB9D9F0FFB7D8F0FFB8D8F0FFB8D8EFFFBFDB
+          EFFFAEC8DCFF748794FF336141FF005F00FF006000FF006000FF006000FF0466
+          00FF70AA85FFBFD7EBFFB0CEE7FFAAC7E3FFBED7EBFFA0C6E2FF9DBCD5FF2468
+          2FFF006000FF006000FF006000FF488D59FFB3CDE6FFA7C9E4FFADCBE4FF91AB
+          C1FF566B74FF0C5C0FFF006000FF006000FF006000FF006400FF7CB26AFFA7C7
+          8CFFA1C483FFA0C281FFA0C382FFAACA96FFAECE9EFFAECD9EFFADCD9DFFACCC
+          9BFFABCC9BFFA4C78EFF97BE76FF95BC73FF94BC73FFA4C78FFFADCD9CFFADCD
+          9BFE678395F7B0CEE3FFB8D6ECFFB3D6EDFFB9D8EFFFB6D8EFFFB1D4EEFFB7D5
+          EEFFBDD9F0FFC1DCF1FFB9D9EFFFB5D7EFFFB1D3EDFFA4CCE8FFB5D2EBFF95B5
+          CFFF62788BFF2C5E35FF006000FF006000FF006000FF006000FF16721AFF99C2
+          B4FFB2D0E7FFBCD6EAFFB6D1E8FFB8D5EAFFA7C8E2FFA9C9E4FFA2C1D9FF3672
+          49FF006000FF006000FF006000FF327F3EFFA6C4E2FFACCAE4FF96B5CDFF5A6E
+          80FF105916FF006000FF006000FF006000FF006200FF72AC61FFB5D2A6FFB2D0
+          A2FFA8C990FFA0C282FF9EC27FFF9FC280FFA7C88DFFADCC9CFFADCD9DFFACCC
+          9AFFA4C78CFF98BE77FF96BD74FF96BC74FFA1C58BFFA9CA97FFADCD9CFFAFCE
+          9FFE758998F7AFCDE4FFB6D6EDFFBCDAEFFFBCD9F0FFBFDCF2FFC4DFF4FFB9DB
+          F2FFBEDDF3FFB8D9F0FFB9D8F0FFB5D6EEFFAED2EBFFC2DCF0FFAEC4D7FF677A
+          89FF265E2CFF006000FF006000FF006000FF006000FF3C8C41FFAECFDCFFBBD5
+          EBFFC3DAECFFBDD4EAFFB2CEE6FFB8D2E9FFB6D3E8FFB4D3E9FFAAC6DEFF487C
+          55FF006000FF006000FF006000FF2F7E30FFBDD3EAFF9EBED9FF657D90FF1E58
+          26FF006000FF006000FF006000FF006000FF60A04CFFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFABCB96FF9FC280FF9DC17EFF9CC07BFFA8C991FFABCC9AFF9DC2
+          81FF97BD77FF97BD75FF97BE76FFA3C68CFFA8C996FFA5C891FFADCD9CFFAFCE
+          9FFE798C9AF7BAD4E7FFC4DEF2FFBBD8EFFFB9D5EDFFBDD9EFFFBDDDF1FFC0DE
+          F3FFB5D9F1FFBEDDF2FFBBDCF2FFB8D8F0FFBCDCF1FFA6C4D9FF657B8CFF245E
+          26FF006000FF006000FF006000FF046600FF6BA984FFAED1EAFFB6D3E9FFB9D2
+          E9FFB9D2E9FFBAD1E8FFB7D0E7FFB5D0E7FFBAD4E9FFB3D0E8FFA7C9E2FF487C
+          65FF006000FF006000FF006000FF237724FFA8C4E0FF7F96A8FF315B45FF005F
+          00FF006000FF006000FF006000FF4D9434FFB7D4A9FFB6D1A6FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFACCC98FFA0C382FF9DC07CFFA6C78EFF9FC282FF98BE
+          77FF97BD76FF99BE79FFA5C790FFA9CA97FFA6C792FF97BD75FFA8C993FFAFCE
+          9FFE7B8D9AF7B9D2E7FFBBDAF1FFCAE2F4FFC7E0F3FFC0DCF2FFBFDDF2FFC1DF
+          F3FFBFDEF3FFBEDCF3FFBFDEF2FFC1DFF3FFA3C6DEFF6D8394FF295E32FF0060
+          00FF006000FF006000FF187218FF98C4B6FFB6D5ECFFBBD8ECFFACCCE5FFB6D1
+          E8FFB5D1E7FFB1CDE5FFBAD3E8FFB5D1E8FFC1D6EBFFBED4E9FFA9CBE2FF5E86
+          7FFF006000FF006000FF006000FF1E751EFF91ABC0FF41615FFF025D00FF0060
+          00FF006000FF006000FF328623FFB5D2A6FFB5D1A5FFAAC991FFADCC96FFB3D0
+          A3FFB3D1A3FFB2D0A2FFB1D0A1FFADCC9CFFA2C486FF9CC07BFF9ABF79FF98BE
+          77FF9DC17FFFA8CA95FFAACB98FFA9CA97FFA7C895FF97BD77FF9ABF7AFFA7C7
+          8EFE83919DF7BCD5E8FFC1DDF2FFBFDCF2FFBEDCF2FFB5D5EDFFBCDAF0FFB9D9
+          F0FFB7D9F1FFBBDBF1FFB6D9F1FFABD0E7FF758FA2FF305E3FFF006000FF0060
+          00FF006000FF2A822FFFACCED6FFBAD6EDFFB6D2EAFFB3CFE7FFB0CEE6FFB3CD
+          E5FFB9D2E7FFB5D1E8FFB0CEE6FFB9CEE6FFC5D2E8FFC0D4E9FFB3D0E6FF6C8D
+          91FF006000FF006000FF006000FF197012FF5B7283FF0D5B11FF006000FF0060
+          00FF006000FF227B1BFFB1D0A1FFB6D1A5FFA9C98DFFA5C688FFA4C586FFA9C9
+          91FFB2CFA2FFB2D0A2FFB1D0A1FFB0CEA0FFADCD9DFF9DC17DFF9ABF79FF9EC2
+          81FFA9CB98FFAACC9AFFAACB98FFA9CA97FFA6C894FF99BF7BFF99BF78FF9DC0
+          7DFE7B8C9BF7B0CFE5FFBAD9F0FFC2DDF1FFC3DDF1FFC1DDF1FFC6DFF3FFBCDA
+          F0FFC3DDF2FFB7D9F0FFB6D8EFFF8EAABBFF3B6153FF005F00FF006000FF0060
+          00FF469249FFABCFE4FFADD0E9FFABCEE7FFBBD5EAFFB3D1E7FFB5D2E9FFB3CF
+          E6FFAFCFE7FFACCCE6FFB0CDE6FFB3D0E6FFBCD6EBFFB2D0E8FFAFCEE6FF7791
+          9DFF006000FF006000FF006000FF10610DFF265A33FF006000FF006000FF0060
+          00FF1B7313FFAACC98FFB6D1A4FFAAC98EFFA7C88BFFA7C78BFFA4C587FFA2C4
+          85FFA5C588FFAECC9AFFB1D0A1FFB0CEA0FFAECD9EFF9FC281FFA0C384FFABCC
+          9AFFABCC9AFFAACC9AFFA9CA98FFA1C489FF9ABF7BFFA7C995FF9EC180FF9DC0
+          7DFE7A8B9AF7BDD5E7FFC2DDF2FFCDE3F4FFC7E0F4FFBDD9F0FFBCD9F0FFBDDA
+          F0FFBADAF0FFBEDDF2FFABC6DAFF5F757CFF0A5F09FF006000FF006000FF579D
+          66FFB6D6EFFFB7D7EDFFB4D4ECFFB4D2EAFFB1D0E7FFA8C9E3FF9BC1E0FFAAC9
+          E3FFA6C8E3FFAECCE4FFB0D1E7FFA6CBE4FFABCCE4FFAFCEE5FFB3CFE6FF7690
+          9CFF005F00FF006000FF006000FF055D02FF005F00FF006000FF006000FF1770
+          0EFFA4C991FFB2CE9DFFABCA90FFA9C88DFFA9C88DFFB4D1A5FFA8C88EFFA2C4
+          84FFA1C483FFA1C383FFACCC98FFAFCE9FFFADCD9EFFABCB99FFACCC9CFFACCC
+          9BFFABCC9AFFAACB99FF9CC17FFF95BC73FF98BD79FFA9CA97FFABCB98FFA1C3
+          84FE798C9AF7BAD4E7FFC0DDF2FFBEDCF1FFCDE4F4FFCBE3F4FFC3DFF3FFC7E1
+          F4FFBFDEF2FFAFD3EBFF7894A7FF205E27FF006000FF006000FF5C9F6AFFBAD9
+          F0FFB9D9EFFFB1D2EAFFACD0EAFFB6D2EAFFB3D0E7FFB3CFE7FFAFCFE6FFB4D2
+          E8FFB0D0E8FFB8D7EBFFB6D4E9FFA9C8E3FFAACAE4FFABC8E2FFB2CAE2FF748C
+          99FF005F00FF006000FF006000FF006000FF006000FF006000FF17700EFFA5C9
+          92FFB4D09EFFABCA90FFA9C98FFFAAC88FFFB0CE99FFB6D2A8FFB5D1A4FFADCC
+          99FFA1C483FFA0C282FFA0C382FFA7C98FFFAECD9DFFAECD9DFFADCD9DFFACCC
+          9BFFA9CB96FF9EC280FF96BD74FF95BC73FF9BC17DFFA9CA97FFADCD9CFFAECD
+          9DFE83919DF7BFD7E9FFC9E2F5FFC8E2F4FFCAE3F4FFC9E2F4FFC8E2F3FFC1DF
+          F2FFC0DFF4FFA9C7D9FF4F6F6BFF005F00FF006000FF47924EFFB2D1EAFFBAD6
+          EDFFBED9EEFFB5D5ECFFBCDAEEFFADCDE6FFB3D0E8FFAECDE5FFAACAE3FFADCE
+          E6FFB5D3E9FFBDD8EBFFADCEE6FFB1D1E8FFB4CEE6FFB3D0E7FFBCD3E6FF6C86
+          89FF006000FF006000FF006000FF006000FF006000FF217A1AFFA8CB94FFB1CE
+          9AFFADCC93FFABCA91FFACCB93FFB6D2A6FFB8D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFACCB98FFA0C282FF9EC27FFF9DC17EFFA2C588FFACCC9BFFADCD9DFFA9CA
+          95FF9ABF7CFF97BD74FF96BC74FF9ABF7BFFA7C993FFA9CA97FFADCD9CFFAFCE
+          9FFE7C8E9AF7BFD6E9FFCDE4F5FFCBE4F5FFC1DEF3FFBEDDF3FFC2E0F3FFC7E3
+          F4FFBFDFF2FF88A5B7FF1C5F27FF006000FF19751BFFB1D2E2FFBAD7ECFFBBD6
+          EBFFBCD5EBFFB5D1E9FFB2CFE7FFB1CDE5FFAACAE5FFA7C9E4FFAECEE5FFAACB
+          E4FFACCDE4FFB2D1E8FFC0D9EBFFB9D4E9FFADCDE5FFA4C8E2FFB5CDE2FF617F
+          72FF006000FF006000FF006000FF006000FF3D8C28FFB6D3A7FFB3CE9AFFAECC
+          95FFADCB93FFAECB94FFB8D3A8FFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFADCC98FFA2C385FF9DC17DFF9DC07CFFA9C994FFA9CA95FF99BF
+          7AFF97BD77FF96BD74FF9BC07DFFA8C996FFA9CA97FFA6C892FFACCC99FFAFCE
+          9FFE7B8D9CF7C0D7E9FFCCE3F5FFCAE2F4FFC7E1F4FFBFDEF3FFC3E0F4FFC4E0
+          F4FFB8D8EBFF698693FF025E00FF006000FF74B090FFAACCE6FFABCDE6FFB2CF
+          E7FFB5D1E8FFB5D0E6FFB4CEE6FFB4CEE6FFB2CDE6FFAECCE5FFB8D2E8FFB3D0
+          E7FFC4DBECFFC1D9EBFFBFD6E9FFBCD3E9FFBFD4EAFFBBD2E9FFB8CBDEFF4A72
+          51FF006000FF006000FF006000FF61A24BFFB5D09EFFB5D0A0FFB1CD97FFAECC
+          96FFB2CF9DFFB9D4AAFFBAD5ACFFB9D4AAFFB7D4A9FFB4D0A3FFB1CF9FFFB4D1
+          A5FFB2D0A3FFB2D0A2FFAFCE9DFFA2C586FF9BC07BFFA0C385FF9CC07CFF98BE
+          78FF97BD77FFA0C588FFA9CA96FFA9CA97FFA9CA97FF9BC07DFF9DC280FFADCC
+          9AFE818F9DF7C1D8E9FFC9E1F4FFC0DBF1FFC3DDF1FFBCDBF1FFB7D7EEFFC1DE
+          F2FFB0CFE3FF4F7861FF006000FF147110FFAFCFE5FFB7D4EBFFB7D2E9FFB4D0
+          E7FFB5D2E8FFB0CEE7FFBAD3EAFFC3D9ECFFBCD6EBFFB6D1E9FFAFCCE7FFB1D0
+          E7FFB7D2E9FFB0CCE3FFC9DBEBFFBCD2E7FFB9CEE7FFC2D5ECFFAEBDD1FF366A
+          3FFF006000FF006000FF036600FFAECC96FFB5D09DFFB2CE99FFB0CD97FFB7D2
+          A3FFBDD7B0FFBCD6AEFFBAD5ACFFB9D4AAFFB4D1A3FFB0CE9DFFA4C689FFB0CE
+          9FFFB2D0A3FFB2D0A2FFB1D0A1FFAECD9DFFA4C588FF9BC07AFF9ABF7AFF98BE
+          79FFA3C58AFFAACC9AFFAACB98FFA9CA97FFA9CA97FF9DC282FF99BF78FFA0C2
+          82FE7E8E9BF7BCD3E8FFCBE2F4FFCCE2F4FFC9E0F2FFCAE3F4FFB6DAF0FFB7D7
+          EEFFA5C5DBFF326C45FF006000FF479158FFBDD7ECFFC1DBEFFFBFD7ECFFC2DA
+          EDFFC8DCEFFFCDE0F1FFCDE0F0FFCDDDEFFFCADCEEFFBCD3EAFFAFCBE7FFB6D0
+          E9FFB7D1E8FFBCD5E9FFC3D7EAFFC7DAECFFCBDDEEFFC0D7ECFF94A7B9FF1D61
+          21FF006000FF006000FF348424FFC1D8B2FFB9D2A3FFB6D1A1FFB9D3A6FFBED7
+          B1FFBDD7AFFFBCD6ADFFBAD5ACFFB0CD99FFA7C78CFFB0CE9DFFA4C586FFA3C4
+          87FFAACA93FFB2D0A2FFB1D0A1FFAFCEA0FFABCA96FF9CC07AFF9BBF7CFFA5C7
+          8DFFABCC9AFFAACC9AFFAACB98FFA9CA97FFA7C994FFA0C387FF99BE78FF9DC0
+          7DFE83929DF7C2DAEAFFC4DEF3FFBFDBF0FFC8E0F4FFC1DEF2FFBFDEF2FFC0DC
+          F1FFA9C4D8FF2F6C3DFF006000FF6AA677FFC6DBEEFFCADDF0FFCCDEF1FFCCDE
+          F0FFD5E3F1FFD2DFF0FFD0DEEFFFD1E0F0FFCFE2F2FFCADCEFFFC9DDEFFFC0D6
+          ECFFBCD3E8FFC1D4EBFFC8DAEDFFCBDCEEFFC2D8ECFFB5CEE3FF758594FF065F
+          00FF006000FF006000FF76B065FFC4DBB7FFC1D9B4FFC0D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D4A9FFB0CD99FFA8C88DFFA8C88DFFB3D0A2FFA6C68AFFA2C4
+          84FFA1C483FFA8C78EFFB0CF9FFFB0CEA0FFA9CA95FFA1C385FFAACA98FFADCD
+          9BFFABCC9AFFAACC9AFFA9CA98FF9DC180FF99BF7BFFA8CA98FFA3C58AFF9DC0
+          7EFE80909DF7BDD6E9FFC7E1F5FFC6E1F3FFBCDDF2FFBDDEF2FFB9DAF0FFB8D9
+          EEFFA1B9CCFF286436FF006000FF629870FFC8DBEDFFC7DBEDFFCBDDF0FFC9DA
+          EEFFCFDFF1FFD5E2F2FFD5E2F1FFCEDDEFFFC9DBEEFFC3D8EDFFC9D9ECFFC9DA
+          EEFFC2D5EBFFCDDCEEFFCFDFF0FFD2E1F1FFC8DDEEFFA7B9CBFF496A51FF0060
+          00FF006000FF0D6B02FFBCD7AEFFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBBD5ACFFAECC95FFAAC98FFFA8C88DFFAACA92FFB6D3A8FFB2D0A1FFA5C6
+          8AFFA1C483FFA0C282FFA3C586FFAECE9CFFAECE9EFFAECD9DFFADCD9DFFACCC
+          9BFFABCC9AFFAACB98FF9EC283FF94BC73FF95BD75FFA6C892FFADCD9CFFAACB
+          97FE7E8F9DF7BCD5E9FFC4E0F4FFC6E2F5FFBFDEF3FFB3D8F0FFBCDCF1FFBEDC
+          F0FFA4BED3FF1B6819FF006000FF0F670CFF9FB5C6FFC3D7EBFFCDDEEFFFCBDD
+          F0FFC7DBEEFFCEDEF0FFCBDCEEFFCBDBEEFFC0D5EBFFCADCEDFFD1DFF0FFCFDF
+          F0FFD1E0F0FFCADEF0FFCEE0F1FFCADDEFFFB8CFE4FF748495FF1A5E15FF0060
+          00FF006000FF65A24DFFBDD6ABFFC3DAB6FFC2DAB6FFC1D9B4FFC0D8B2FFB9D3
+          A8FFAFCC97FFABCA91FFAAC98FFFAFCD99FFB5D2A5FFB6D2A7FFB5D2A6FFB1CF
+          9FFFA5C68AFFA0C282FF9EC27FFFA1C384FFAACB96FFADCD9DFFADCD9DFFACCC
+          9BFFA8C995FF9CC07EFF96BD74FF95BC72FF9BC17FFFA8C996FFADCD9CFFAFCE
+          9FFE76899AF7BAD5E9FFC4E1F4FFC6E3F6FFB8DBF2FFB0D7EFFFC5E0F2FFC5DF
+          F2FFC5DBECFF3D8347FF006000FF006000FF2E6D2BFF96A6B7FFB3C6DCFFB3CC
+          E4FFB9CFE7FFBFD2E9FFC7D8ECFFCEDEEFFFCADBEEFFC6D9EDFFD0DFF0FFCFDF
+          F1FFD3E2F2FFD0E0F1FFCDDFEFFFCAD9E8FF8D9DADFF406249FF006000FF0060
+          00FF217917FFB5CF9EFFB7D1A1FFBAD3A6FFC1D9B5FFC1D8B4FFBAD4A7FFAFCC
+          96FFADCB93FFABCA91FFB1CE9AFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A2FFA7C88FFF9EC180FF9DC17EFF9CC07DFFA6C78EFFADCD9DFFA9CA
+          95FF99BE7AFF96BD74FF96BC74FF98BE78FFA7C894FFA9CA97FFADCD9CFFAFCE
+          9FFE768999F7AFCEE5FFC0DEF2FFC4DFF4FFC4E0F4FFC2E0F3FFBDDCF1FFB6D6
+          EDFFB8D7ECFFA1C4C1FF056500FF006000FF006000FF176119FF57736DFF8697
+          A7FFA0B1C2FFB4C5D6FFACC3DBFFC5D6E7FFC2D4E7FFCAD8E9FFC8D7EAFFC7D6
+          E8FFC5D1E0FFB5C3D3FFA8B6C3FF8794A1FF50665DFF075F01FF006000FF0E6C
+          04FFA8CA92FFBCD5A8FFB7D1A1FFB5D09EFFB7D2A2FFBAD4A7FFB0CD97FFAECC
+          95FFADCC94FFB3CF9DFFBAD4ABFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB2D0A2FFA8C88FFF9FC280FF9CC07CFFA0C383FFA5C68DFF9ABF
+          7BFF97BD76FF97BD76FFA1C387FFA8C995FFA9CA97FFA9CA97FFA6C78FFFAECD
+          9DFE708798F7BAD5E9FFBADCF2FFC1DFF4FFC4E0F3FFBCDCF2FFBEDBF0FFC4DD
+          F2FFC7DFF0FFB9D6ECFF7AAF91FF006300FF006000FF006000FF005F00FF165E
+          13FF32623AFF4C675EFF6C7985FF778493FF7E8B9AFF808E9CFF7E8B97FF7782
+          8EFF6A747FFF576968FF466549FF2C5F32FF0A6005FF006000FF0F6C04FF9BC5
+          87FFC8DDBDFFC6DBB9FFBBD4A7FFB5D09EFFB4D09DFFB2CE9AFFB0CD97FFAFCC
+          97FFB9D3A8FFBCD6AEFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB1D0A1FFB2CF
+          A0FFB2D0A3FFB2D0A2FFB1D0A1FFACCB99FF9EC17FFF9BC07BFF9ABF79FF98BE
+          78FF97BD76FFA1C489FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C383FFA3C4
+          89FE718A9AF7B1D1E7FFBEDEF3FFC3E1F5FFBFDFF3FFC1DEF2FFBEDAF1FFC7DF
+          F2FFC5DDF1FFC2DBEEFFBAD4ECFF7EB099FF0E6A0AFF006000FF006000FF0060
+          00FF006000FF005F00FF015F00FF0D5E04FF135D10FF165C18FF175E13FF115F
+          08FF035F00FF006000FF006000FF006000FF006000FF318320FFAACB95FFC9DF
+          BEFFC8DDBDFFC6DCBCFFC4DBB8FFBAD3A6FFB4D09DFFB2CE99FFB2CE9AFFBBD5
+          ABFFBDD7AFFFBCD6AEFFBAD5ACFFB9D4ABFFB2D0A0FFB5D1A6FFABCB95FFA4C5
+          88FFADCC99FFB2D0A2FFB1D0A1FFB0CEA0FFA9C994FF9AC07BFF9ABF79FF99BF
+          7AFFA3C68BFFAACC99FFAACB98FFA9CA97FFA9CA97FFA9CA97FFA0C384FF9DC0
+          7DFE728A9BF7B4D2E8FFBEDFF4FFB7DCF2FFB7D7EFFFBFDCF0FFC7E0F2FFC7DD
+          F1FFC2DAEEFFB7D2EAFFB7D0E9FFBED4ECFFAECAD3FF4A8E4DFF026300FF0060
+          00FF006000FF006000FF006000FF006000FF006000FF006000FF006000FF0060
+          00FF006000FF006000FF006000FF0E6C03FF7DB46DFFCBDFC0FFC0D7ACFFC1D7
+          AFFFC6DBB9FFC7DCBBFFC5DCB9FFC3DBB8FFBDD6ACFFB7D1A2FFBCD6ACFFBED7
+          B1FFBDD7AFFFBCD6AEFFB8D4A9FFB0CE9AFFA8C88CFFB4D0A4FFADCC98FFA2C4
+          84FFA1C484FFAACA95FFB0CFA0FFB0CEA0FFADCC9CFF9DC17DFF9DC17EFFA9CA
+          97FFABCC9AFFAACC9AFFAACB98FFA7C893FFA2C58AFFA9CA97FFA6C78EFF9DC0
+          7EFE71889AF7B0D1E8FFBEDFF3FFBCDDF2FFC3DEF2FFC4DEF2FFC1DAEFFFC4D9
+          EEFFC7DBF0FFC4D9EEFFBBD2EBFFB1C8E0FF93A8BFFF687A8CFF435F4FFF025F
+          00FF006000FF006100FF006200FF006000FF006000FF006000FF006000FF0060
+          00FF046700FF277C12FF68A552FFB7D2A2FFC9DDBAFFCCE0C0FFC0D8ACFFBDD5
+          A8FFBED6ABFFC5DBB8FFC5DCB9FFC4DBB7FFC2DAB6FFC1D8B3FFC0D8B2FFBED7
+          B1FFBDD7AFFFB9D5ABFFADCB94FFA9C88DFFA7C88CFFB4D0A3FFB1CE9DFFA3C4
+          85FFA1C483FFA0C282FFA4C589FFAECD9DFFAECD9EFFA3C588FFAACB96FFACCC
+          9BFFABCC9AFFAACC9AFFA7C993FF97BD77FF98BD79FFA9CA97FFADCD9CFFA8C9
+          91FE7E92A0F7B6D5E9FFC5E1F4FFB9D8F0FFC2DEF2FFC2DDF1FFC5DCEFFFC7DB
+          F0FFC6DAEEFFBDCEE2FF95A7BCFF697A8EFF475E5FFF1C5923FF005F00FF0060
+          00FF0C6A00FF91C084FFC9DFBEFFADCF9CFF9BC586FF98C483FFA0C88CFFB3D1
+          A1FFBFD7AEFFC8DCB6FFC6DBB4FFC7DCB7FFCDE0C3FFCCE0C2FFC4DAB4FFBDD5
+          A8FFBBD4A5FFBCD4A7FFC1D8B1FFC4DBB7FFC2DAB6FFC1D9B4FFC0D8B2FFBED7
+          B1FFBAD5ACFFAECC96FFA9C98FFFA9C88CFFAECC97FFB5D1A7FFB5D2A6FFAFCD
+          9BFFA4C688FFA0C282FF9EC17EFFA2C487FFAACB97FFADCD9EFFADCD9DFFADCD
+          9BFFABCC9AFFA6C78FFF99BF7AFF95BC73FF98BD79FFA9CA97FFAFCE9EFFB3D0
+          A4FC879DACE4B5D5E9FFBBDBF1FFBDDCF2FFC8E2F4FFBCD8EFFFC1D8EDFFB0C2
+          D9FF95A4B5FF6D7989FF4B605BFF1B5823FF005E00FF006000FF006000FF3A89
+          29FFBBD7AAFFD7E6CBFFD9E7CEFFDCE9D4FFDBE8D2FFD8E8D1FFD4E4CAFFCCDF
+          BCFFC9DDB9FFC8DCB6FFC9DDBAFFCFE1C5FFCDE1C4FFCCE0C2FFCBDFC0FFC3DA
+          B2FFBCD4A5FFB9D3A4FFB7D1A0FFBED6ACFFC2DAB6FFC1D9B4FFC0D8B2FFB8D3
+          A6FFAECC95FFABCA90FFAAC98EFFAECC98FFB7D3A8FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB1D0A2FFA5C68CFF9EC17FFF9DC17EFF9DC17EFFA7C991FFADCD9DFFACCC
+          9BFFA2C489FF98BD75FF96BD74FF95BC73FF9DC180FFA9CA97FFB4D1A4FFC1D7
+          B3E8AEBCC7AEAACBE2FFC4DEF3FFC7E0F3FFB2D0E5FF9DB6C9FF7A8EA1FF6270
+          7FFF3C5D47FF175C19FF005F00FF006000FF006000FF1F7917FF99C48AFFDEEA
+          D7FFD9E7CDFFD7E6C9FFD5E4C7FFD6E5CBFFD8E7D0FFD3E3C7FFCDE0BEFFCCDF
+          BCFFCADDBAFFCEE1C3FFD0E3C7FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DE
+          BFFFC4DAB4FFBBD3A6FFB7D1A1FFB5D09EFFB8D2A5FFBED7B0FFB9D4A8FFAFCC
+          95FFADCB93FFABCA92FFB2CE9DFFB8D3AAFFB7D4A9FFB6D2A8FFB5D2A6FFB4D1
+          A5FFB2D0A3FFB0CFA0FFA5C689FF9DC17EFF9CC07CFF9CC17DFFA7C993FFA5C6
+          8CFF97BD76FF97BD75FF97BE77FFA2C58AFFA9CA97FFAACB98FFBED7B0FFD5E5
+          CDB1C5C9CB509FBCCFFFACC3D5FF90A4B4FF6C7F8DFF496266FF295D32FF095E
+          08FF006000FF006000FF006000FF17730EFF84B877FFDFECD8FFE3EEDEFFE1ED
+          DBFFDFEBD8FFD8E6CBFFD5E4C8FFD3E3C5FFD1E2C3FFCFE0C0FFCDE0BEFFCCDF
+          BCFFD1E2C5FFD2E4C9FFD1E3C8FFD0E2C5FFCDE1C4FFCCE0C2FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC4DBB6FFB9D2A3FFB5D09EFFB4D09CFFB2CE9AFFB1CD97FFAECC
+          95FFAECC95FFB6D2A6FFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB5D2A6FFB4D1
+          A5FFB3D1A3FFB2D0A2FFB1D0A1FFA9C993FF9CC17DFF9BC07BFF9ABF7AFF98BE
+          78FF96BD76FF98BE78FFA6C790FFA9CA97FFA9CA97FFB2D0A2FFCADEBEFFDCE1
+          D853FEFEFE0183929CC25C7177FF376442FF145D16FF005F00FF006000FF0060
+          00FF006000FF227A17FF87BA7AFFDCE9D3FFE2EDDBFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDEEAD6FFD8E5CCFFD3E3C5FFD1E3C4FFD0E1C1FFCEE0BFFFD2E3
+          C7FFD4E5CCFFD2E4C9FFD1E3C8FFCDE1C2FFCDE0C3FFCCE0C3FFCBDFC0FFC9DF
+          BFFFC8DDBDFFC7DCBBFFC4DBB7FFBCD4A8FFB4D09CFFB2CE9AFFB0CD97FFB0CC
+          97FFB8D3A7FFBCD6ADFFBAD5ACFFB9D4AAFFB7D4A9FFB6D2A7FFB3D1A4FFAAC9
+          92FFB1CFA0FFB2D0A2FFB1D0A1FFB0CEA0FFA6C78FFF9BC07BFF9ABF79FF98BE
+          78FF9ABF7BFFA6C891FFAACB98FFA9CA97FFAFCE9FFFCCDFC2FFDFEBD9C4FEFE
+          FE01FFFFFF00E7E8E718217821DE137900FF056C00FF006100FF006400FF448E
+          38FFA6CC93FFE6F0E2FFE4EDDCFFE2ECD8FFE4EDDCFFE4EFDFFFE3EEDEFFE1ED
+          DBFFE0ECDAFFDFEBD8FFDDEAD6FFD8E6CDFFD1E2C3FFD0E1C1FFCFE1C1FFD5E5
+          CDFFD4E5CCFFD2E4C9FFCFE1C4FFC5DAB3FFCDE0C2FFCCE0C2FFC7DCB9FFC6DC
+          B7FFC8DDBDFFC7DCBBFFC5DCB9FFC3DAB7FFBAD3A6FFB2CE9AFFB5D09FFFBCD5
+          ACFFBDD7AFFFBCD6AEFFBAD5ACFFB6D2A6FFB3CFA0FFB6D2A7FFB4D1A3FFA3C5
+          86FFA2C587FFAECD9DFFB1D0A1FFB0CEA0FFAAC995FF9BC07BFF9ABF79FFA0C3
+          85FFA9CB96FFAACC9AFFABCC9AFFB6D2A7FFD0E2C7FFE3EEDEE2EAEAEA1AFFFF
+          FF00FFFFFF00FFFFFF00E7E9E7185EA345BA5FA53CFF93C17BFFD6E7CCFFF0F6
+          EDFFEFF5EBFFEBF2E5FFE8F1E3FFE8F0E1FFE9F1E4FFEAF2E6FFE8F1E5FFE7F0
+          E1FFE7F0E1FFE6EFE1FFE4EFDFFFE3EEDDFFDFEBD7FFDAE7CFFFD9E7CEFFDEEB
+          D7FFDDEAD6FFDAE8D2FFD3E3C6FFD1E1C2FFD7E6CFFFD7E6CFFFD0E1C2FFCBDE
+          BBFFCFE1C3FFD2E3C9FFD2E3C7FFD0E3C6FFCEE1C4FFC6DBB6FFCCDFC0FFCBDF
+          C1FFCADFC0FFCADEBEFFC4DBB7FFBBD4A6FFBED6ABFFC5DCBAFFC3DAB6FFB6D1
+          9FFFB4D09DFFB5D19FFFBDD6ADFFC0D8B3FFBCD5ABFFAFCD96FFB4D09FFFBDD7
+          B0FFBED7B0FFC3DAB7FFCFE2C5FFDCE9D3FFEDF3E8BEECECEC18FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDA45F9FBF69FF7FAF5D0F7FA
+          F6E0F7FAF4E0F7F8F3E0F6F8F3E1F6F8F4E1F7FAF5E1F6F8F4E1F6F8F3E1F3F7
+          F0E1F3F7EFE1F4F7F1E1F3F7F1E1F3F7F1E2F2F7EFE2F1F7EEE2F0F5EDE2F1F7
+          EFE2EFF4EAE2EDF3E7E2ECF3E7E2EBF3E6E2EEF4EBE2EEF4EBE2ECF2E7E2E8F1
+          E3E3E8F1E2E3E9F1E4E3EBF3E7E3EBF3E7E3EBF3E7E3EAF2E7E3EAF2E6E3E9F2
+          E5E4E8F1E5E4E7EFE2E4E4EDDCE4E3ECDAE4E4EEDDE4E7EFE3E4E7EFE2E4E4EE
+          DDE4E0EBD7E4E0EBD6E4DFEBD6E4E2ECDCE4E4EEDDE4E2ECDBE4E4EEDEE4E4ED
+          DFE5E4EEDFE5E9F1E5D4EFF4EAA1D7D8D648FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00}
+      end
+      object QRLInraPorc: TQRLabel
+        Left = 80
+        Top = 0
+        Width = 640
+        Height = 30
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          79.375000000000000000
+          211.666666666667000000
+          0.000000000000000000
+          1693.333333333330000000)
+        Alignment = taCenter
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Caption = 'InraPorc'#174
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clGreen
+        Font.Height = -24
+        Font.Name = 'Verdana'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 18
+      end
+    end
+    object PFBRapport: TQRBand
+      Left = 38
+      Top = 698
+      Width = 718
+      Height = 107
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        283.104166666666700000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbPageFooter
+      object QRLUser: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 27
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          21.166666666666670000
+          71.437500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'User'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRLWarning: TQRLabel
+        Left = 40
+        Top = 24
+        Width = 383
+        Height = 15
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          39.687500000000000000
+          105.833333333333300000
+          63.500000000000000000
+          1013.354166666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 
+          'INRA cannot be held responsable for the consequences of using th' +
+          'e software.'
+        Color = clWhite
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 8
+      end
+      object QRSDDate: TQRSysData
+        Left = 647
+        Top = 24
+        Width = 31
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1711.854166666667000000
+          63.500000000000000000
+          82.020833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        Color = clWhite
+        Data = qrsDate
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        ExportAs = exptText
+        FontSize = 8
+      end
+    end
+    object DBRapport: TQRBand
+      Left = 38
+      Top = 118
+      Width = 718
+      Height = 552
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        1460.500000000000000000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      BandType = rbDetail
+      object QREFeed_5: TQRExpr
+        Left = 681
+        Top = 280
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1801.812500000000000000
+          740.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREFeed_4: TQRExpr
+        Left = 601
+        Top = 280
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1590.145833333333000000
+          740.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREFeed_3: TQRExpr
+        Left = 521
+        Top = 280
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1378.479166666667000000
+          740.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREFeed_2: TQRExpr
+        Left = 441
+        Top = 280
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1166.812500000000000000
+          740.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREFeed_1: TQRExpr
+        Left = 361
+        Top = 280
+        Width = 37
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          955.145833333333300000
+          740.833333333333300000
+          97.895833333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC_5: TQRDBText
+        Left = 671
+        Top = 340
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1775.354166666667000000
+          899.583333333333300000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2_5: TQRDBText
+        Left = 673
+        Top = 300
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1780.645833333333000000
+          793.750000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMP_5: TQRDBText
+        Left = 662
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1751.541666666667000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMP_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliTot_5: TQRDBText
+        Left = 652
+        Top = 220
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1725.083333333333000000
+          582.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Conso_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeFin_5: TQRDBText
+        Left = 648
+        Top = 80
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1714.500000000000000000
+          211.666666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeFin_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeDeb_5: TQRDBText
+        Left = 643
+        Top = 60
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1701.270833333333000000
+          158.750000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeDeb_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsFin_5: TQRDBText
+        Left = 638
+        Top = 140
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1688.041666666667000000
+          370.416666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsFin_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsDeb_5: TQRDBText
+        Left = 633
+        Top = 120
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1674.812500000000000000
+          317.500000000000000000
+          224.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsDeb_5_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDuree_5: TQRExpr
+        Left = 410
+        Top = 100
+        Width = 308
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1084.791666666667000000
+          264.583333333333300000
+          814.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeFin_5_ - CDSRapport._AgeDeb_5_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREGMQ_5: TQRExpr
+        Left = 14
+        Top = 160
+        Width = 704
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          37.041666666666670000
+          423.333333333333300000
+          1862.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._PoidsFin_5_ - CDSRapport._PoidsDeb_5_) * 1000 / (CD' +
+          'SRapport._AgeFin_5_ - CDSRapport._AgeDeb_5_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAliMoy_5: TQRExpr
+        Left = 208
+        Top = 240
+        Width = 510
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          550.333333333333300000
+          635.000000000000000000
+          1349.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._Conso_5_ * 1000 / (CDSRapport._AgeFin_5_ - CDSRappor' +
+          't._AgeDeb_5_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPD_5: TQRExpr
+        Left = 66
+        Top = 180
+        Width = 652
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          174.625000000000000000
+          476.250000000000000000
+          1725.083333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._pFin_5_ - CDSRapport._pDeb_5_) * 1000 / (CDSRapport' +
+          '._AgeFin_5_ - CDSRapport._AgeDeb_5_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELD_5: TQRExpr
+        Left = 74
+        Top = 200
+        Width = 644
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          195.791666666666700000
+          529.166666666666700000
+          1703.916666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._lFin_5_ - CDSRapport._lDeb_5_) * 1000 / (CDSRapport' +
+          '._AgeFin_5_ - CDSRapport._AgeDeb_5_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREWastage_5: TQRExpr
+        Left = 158
+        Top = 260
+        Width = 560
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          418.041666666666700000
+          687.916666666666700000
+          1481.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._Conso_5_ = 0, 0, (1 - CDSRapport._Ingere_5_ / CDS' +
+          'Rapport._Conso_5_) * 100)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC_4: TQRDBText
+        Left = 591
+        Top = 340
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1563.687500000000000000
+          899.583333333333300000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2_4: TQRDBText
+        Left = 593
+        Top = 300
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1568.979166666667000000
+          793.750000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMP_4: TQRDBText
+        Left = 582
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1539.875000000000000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMP_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliTot_4: TQRDBText
+        Left = 572
+        Top = 220
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1513.416666666667000000
+          582.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Conso_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeFin_4: TQRDBText
+        Left = 568
+        Top = 80
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1502.833333333333000000
+          211.666666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeFin_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeDeb_4: TQRDBText
+        Left = 563
+        Top = 60
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1489.604166666667000000
+          158.750000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeDeb_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsFin_4: TQRDBText
+        Left = 558
+        Top = 140
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1476.375000000000000000
+          370.416666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsFin_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsDeb_4: TQRDBText
+        Left = 553
+        Top = 120
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1463.145833333333000000
+          317.500000000000000000
+          224.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsDeb_4_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDuree_4: TQRExpr
+        Left = 330
+        Top = 100
+        Width = 308
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          873.125000000000000000
+          264.583333333333300000
+          814.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeFin_4_ - CDSRapport._AgeDeb_4_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREGMQ_4: TQRExpr
+        Left = -66
+        Top = 160
+        Width = 704
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -174.625000000000000000
+          423.333333333333300000
+          1862.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._PoidsFin_4_ - CDSRapport._PoidsDeb_4_) * 1000 / (CD' +
+          'SRapport._AgeFin_4_ - CDSRapport._AgeDeb_4_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAliMoy_4: TQRExpr
+        Left = 128
+        Top = 240
+        Width = 510
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          338.666666666666700000
+          635.000000000000000000
+          1349.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._Conso_4_ * 1000 / (CDSRapport._AgeFin_4_ - CDSRappor' +
+          't._AgeDeb_4_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPD_4: TQRExpr
+        Left = -14
+        Top = 180
+        Width = 652
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -37.041666666666670000
+          476.250000000000000000
+          1725.083333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._pFin_4_ - CDSRapport._pDeb_4_) * 1000 / (CDSRapport' +
+          '._AgeFin_4_ - CDSRapport._AgeDeb_4_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELD_4: TQRExpr
+        Left = -6
+        Top = 200
+        Width = 644
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -15.875000000000000000
+          529.166666666666700000
+          1703.916666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._lFin_4_ - CDSRapport._lDeb_4_) * 1000 / (CDSRapport' +
+          '._AgeFin_4_ - CDSRapport._AgeDeb_4_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREWastage_4: TQRExpr
+        Left = 78
+        Top = 260
+        Width = 560
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          206.375000000000000000
+          687.916666666666700000
+          1481.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._Conso_4_ = 0, 0, (1 - CDSRapport._Ingere_4_ / CDS' +
+          'Rapport._Conso_4_) * 100)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC_3: TQRDBText
+        Left = 511
+        Top = 340
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1352.020833333333000000
+          899.583333333333300000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2_3: TQRDBText
+        Left = 513
+        Top = 300
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1357.312500000000000000
+          793.750000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMP_3: TQRDBText
+        Left = 502
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1328.208333333333000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMP_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliTot_3: TQRDBText
+        Left = 492
+        Top = 220
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1301.750000000000000000
+          582.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Conso_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeFin_3: TQRDBText
+        Left = 488
+        Top = 80
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1291.166666666667000000
+          211.666666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeFin_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeDeb_3: TQRDBText
+        Left = 483
+        Top = 60
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1277.937500000000000000
+          158.750000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeDeb_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsFin_3: TQRDBText
+        Left = 478
+        Top = 140
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1264.708333333333000000
+          370.416666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsFin_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsDeb_3: TQRDBText
+        Left = 473
+        Top = 120
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1251.479166666667000000
+          317.500000000000000000
+          224.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsDeb_3_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDuree_3: TQRExpr
+        Left = 250
+        Top = 100
+        Width = 308
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          661.458333333333300000
+          264.583333333333300000
+          814.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeFin_3_ - CDSRapport._AgeDeb_3_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREGMQ_3: TQRExpr
+        Left = -146
+        Top = 160
+        Width = 704
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -386.291666666666700000
+          423.333333333333300000
+          1862.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._PoidsFin_3_ - CDSRapport._PoidsDeb_3_) * 1000 / (CD' +
+          'SRapport._AgeFin_3_ - CDSRapport._AgeDeb_3_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAliMoy_3: TQRExpr
+        Left = 48
+        Top = 240
+        Width = 510
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          127.000000000000000000
+          635.000000000000000000
+          1349.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._Conso_3_ * 1000 / (CDSRapport._AgeFin_3_ - CDSRappor' +
+          't._AgeDeb_3_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPD_3: TQRExpr
+        Left = -94
+        Top = 180
+        Width = 652
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -248.708333333333300000
+          476.250000000000000000
+          1725.083333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._pFin_3_ - CDSRapport._pDeb_3_) * 1000 / (CDSRapport' +
+          '._AgeFin_3_ - CDSRapport._AgeDeb_3_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELD_3: TQRExpr
+        Left = -86
+        Top = 200
+        Width = 644
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -227.541666666666700000
+          529.166666666666700000
+          1703.916666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._lFin_3_ - CDSRapport._lDeb_3_) * 1000 / (CDSRapport' +
+          '._AgeFin_3_ - CDSRapport._AgeDeb_3_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREWastage_3: TQRExpr
+        Left = -2
+        Top = 260
+        Width = 560
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -5.291666666666667000
+          687.916666666666700000
+          1481.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._Conso_3_ = 0, 0, (1 - CDSRapport._Ingere_3_ / CDS' +
+          'Rapport._Conso_3_) * 100)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC_2: TQRDBText
+        Left = 431
+        Top = 340
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1140.354166666667000000
+          899.583333333333300000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2_2: TQRDBText
+        Left = 433
+        Top = 300
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1145.645833333333000000
+          793.750000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMP_2: TQRDBText
+        Left = 422
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1116.541666666667000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMP_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliTot_2: TQRDBText
+        Left = 412
+        Top = 220
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1090.083333333333000000
+          582.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Conso_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeFin_2: TQRDBText
+        Left = 408
+        Top = 80
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1079.500000000000000000
+          211.666666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeFin_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeDeb_2: TQRDBText
+        Left = 403
+        Top = 60
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1066.270833333333000000
+          158.750000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeDeb_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsFin_2: TQRDBText
+        Left = 398
+        Top = 140
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1053.041666666667000000
+          370.416666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsFin_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsDeb_2: TQRDBText
+        Left = 393
+        Top = 120
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          1039.812500000000000000
+          317.500000000000000000
+          224.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsDeb_2_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDuree_2: TQRExpr
+        Left = 170
+        Top = 100
+        Width = 308
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          449.791666666666700000
+          264.583333333333300000
+          814.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeFin_2_ - CDSRapport._AgeDeb_2_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREGMQ_2: TQRExpr
+        Left = -226
+        Top = 160
+        Width = 704
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -597.958333333333300000
+          423.333333333333300000
+          1862.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._PoidsFin_2_ - CDSRapport._PoidsDeb_2_) * 1000 / (CD' +
+          'SRapport._AgeFin_2_ - CDSRapport._AgeDeb_2_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAliMoy_2: TQRExpr
+        Left = -32
+        Top = 240
+        Width = 510
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -84.666666666666670000
+          635.000000000000000000
+          1349.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._Conso_2_ * 1000 / (CDSRapport._AgeFin_2_ - CDSRappor' +
+          't._AgeDeb_2_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPD_2: TQRExpr
+        Left = -174
+        Top = 180
+        Width = 652
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -460.375000000000000000
+          476.250000000000000000
+          1725.083333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._pFin_2_ - CDSRapport._pDeb_2_) * 1000 / (CDSRapport' +
+          '._AgeFin_2_ - CDSRapport._AgeDeb_2_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELD_2: TQRExpr
+        Left = -166
+        Top = 200
+        Width = 644
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -439.208333333333300000
+          529.166666666666700000
+          1703.916666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._lFin_2_ - CDSRapport._lDeb_2_) * 1000 / (CDSRapport' +
+          '._AgeFin_2_ - CDSRapport._AgeDeb_2_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREWastage_2: TQRExpr
+        Left = -82
+        Top = 260
+        Width = 560
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -216.958333333333300000
+          687.916666666666700000
+          1481.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._Conso_2_ = 0, 0, (1 - CDSRapport._Ingere_2_ / CDS' +
+          'Rapport._Conso_2_) * 100)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREWastage_1: TQRExpr
+        Left = -162
+        Top = 260
+        Width = 560
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -428.625000000000000000
+          687.916666666666700000
+          1481.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'IF(CDSRapport._Conso_1_ = 0, 0, (1 - CDSRapport._Ingere_1_ / CDS' +
+          'Rapport._Conso_1_) * 100)'
+        Mask = '0.00'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRELD_1: TQRExpr
+        Left = -246
+        Top = 200
+        Width = 644
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -650.875000000000000000
+          529.166666666666700000
+          1703.916666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._lFin_1_ - CDSRapport._lDeb_1_) * 1000 / (CDSRapport' +
+          '._AgeFin_1_ - CDSRapport._AgeDeb_1_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREPD_1: TQRExpr
+        Left = -254
+        Top = 180
+        Width = 652
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -672.041666666666700000
+          476.250000000000000000
+          1725.083333333333000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._pFin_1_ - CDSRapport._pDeb_1_) * 1000 / (CDSRapport' +
+          '._AgeFin_1_ - CDSRapport._AgeDeb_1_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREAliMoy_1: TQRExpr
+        Left = -112
+        Top = 240
+        Width = 510
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -296.333333333333300000
+          635.000000000000000000
+          1349.375000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          'CDSRapport._Conso_1_ * 1000 / (CDSRapport._AgeFin_1_ - CDSRappor' +
+          't._AgeDeb_1_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREGMQ_1: TQRExpr
+        Left = -306
+        Top = 160
+        Width = 704
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          -809.625000000000000000
+          423.333333333333300000
+          1862.666666666667000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 
+          '(CDSRapport._PoidsFin_1_ - CDSRapport._PoidsDeb_1_) * 1000 / (CD' +
+          'SRapport._AgeFin_1_ - CDSRapport._AgeDeb_1_)'
+        Mask = '0'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QREDuree_1: TQRExpr
+        Left = 90
+        Top = 100
+        Width = 308
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          238.125000000000000000
+          264.583333333333300000
+          814.916666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Color = clWhite
+        ParentFont = False
+        ResetAfterPrint = False
+        Transparent = False
+        WordWrap = True
+        Expression = 'CDSRapport._AgeFin_1_ - CDSRapport._AgeDeb_1_'
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPerf: TQRLabel
+        Left = 40
+        Top = 8
+        Width = 151
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          21.166666666666670000
+          399.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Global performance'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLPoidsDeb: TQRLabel
+        Left = 40
+        Top = 120
+        Width = 119
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          317.500000000000000000
+          314.854166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial body weight'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPoidsFin: TQRLabel
+        Left = 40
+        Top = 140
+        Width = 115
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          370.416666666666700000
+          304.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Final body weight'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsDeb_1: TQRDBText
+        Left = 313
+        Top = 120
+        Width = 85
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          828.145833333333300000
+          317.500000000000000000
+          224.895833333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsDeb_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTPoidsFin_1: TQRDBText
+        Left = 318
+        Top = 140
+        Width = 80
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          841.375000000000000000
+          370.416666666666700000
+          211.666666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_PoidsFin_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAgeDeb: TQRLabel
+        Left = 40
+        Top = 60
+        Width = 65
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          158.750000000000000000
+          171.979166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Initial age'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAgeFin: TQRLabel
+        Left = 40
+        Top = 80
+        Width = 61
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          211.666666666666700000
+          161.395833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Final age'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeDeb_1: TQRDBText
+        Left = 323
+        Top = 60
+        Width = 75
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          854.604166666666700000
+          158.750000000000000000
+          198.437500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeDeb_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAgeFin_1: TQRDBText
+        Left = 328
+        Top = 80
+        Width = 70
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          867.833333333333300000
+          211.666666666666700000
+          185.208333333333300000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_AgeFin_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLDuree: TQRLabel
+        Left = 40
+        Top = 100
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          264.583333333333300000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Duration'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLGMQ: TQRLabel
+        Left = 40
+        Top = 160
+        Width = 121
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          423.333333333333300000
+          320.145833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average daily gain'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLPD: TQRLabel
+        Left = 40
+        Top = 180
+        Width = 173
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          476.250000000000000000
+          457.729166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average protein deposition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLLD: TQRLabel
+        Left = 40
+        Top = 200
+        Width = 156
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          529.166666666666700000
+          412.750000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average lipid deposition'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliTot: TQRLabel
+        Left = 40
+        Top = 220
+        Width = 107
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          582.083333333333300000
+          283.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Total feed usage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLAliMoy: TQRLabel
+        Left = 40
+        Top = 240
+        Width = 163
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          635.000000000000000000
+          431.270833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Average daily feed usage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTAliTot_1: TQRDBText
+        Left = 332
+        Top = 220
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          878.416666666666700000
+          582.083333333333300000
+          174.625000000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Conso_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLWastage: TQRLabel
+        Left = 40
+        Top = 260
+        Width = 90
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          687.916666666666700000
+          238.125000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed wastage'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLFeed: TQRLabel
+        Left = 40
+        Top = 280
+        Width = 98
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          740.833333333333300000
+          259.291666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed efficiency'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLTMP: TQRLabel
+        Left = 40
+        Top = 320
+        Width = 148
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          846.666666666666700000
+          391.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Lean meat at slaughter'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTTMP_1: TQRDBText
+        Left = 342
+        Top = 320
+        Width = 56
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          904.875000000000000000
+          846.666666666666700000
+          148.166666666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_TMP_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLP2: TQRLabel
+        Left = 40
+        Top = 300
+        Width = 189
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          793.750000000000000000
+          500.062500000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Backfat thickness at slaughter'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTP2_1: TQRDBText
+        Left = 353
+        Top = 300
+        Width = 45
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          933.979166666666700000
+          793.750000000000000000
+          119.062500000000000000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_P2_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLRC: TQRLabel
+        Left = 40
+        Top = 340
+        Width = 55
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          899.583333333333300000
+          145.520833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Dressing'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRC_1: TQRDBText
+        Left = 351
+        Top = 340
+        Width = 47
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          928.687500000000000000
+          899.583333333333300000
+          124.354166666666700000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_RC_1_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        Mask = '0.0'
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLCaract: TQRLabel
+        Left = 40
+        Top = 372
+        Width = 116
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          984.250000000000000000
+          306.916666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Characteristics'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold, fsUnderline]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLSimulNo: TQRLabel
+        Left = 40
+        Top = 40
+        Width = 82
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          105.833333333333300000
+          216.958333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Simulation'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLNo1: TQRLabel
+        Left = 388
+        Top = 40
+        Width = 10
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1026.583333333333000000
+          105.833333333333300000
+          26.458333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '1'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLabel1: TQRLabel
+        Left = 468
+        Top = 40
+        Width = 10
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1238.250000000000000000
+          105.833333333333300000
+          26.458333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '2'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLabel2: TQRLabel
+        Left = 548
+        Top = 40
+        Width = 10
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1449.916666666667000000
+          105.833333333333300000
+          26.458333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '3'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLabel3: TQRLabel
+        Left = 628
+        Top = 40
+        Width = 10
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1661.583333333333000000
+          105.833333333333300000
+          26.458333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '4'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRLabel4: TQRLabel
+        Left = 708
+        Top = 40
+        Width = 10
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          1873.250000000000000000
+          105.833333333333300000
+          26.458333333333330000)
+        Alignment = taRightJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = '5'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRDBTProfil: TQRDBText
+        Left = 264
+        Top = 492
+        Width = 44
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          1301.750000000000000000
+          116.416666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Profil_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLProfil: TQRLabel
+        Left = 40
+        Top = 492
+        Width = 91
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1301.750000000000000000
+          240.770833333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Animal profile'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSeqAli: TQRLabel
+        Left = 40
+        Top = 512
+        Width = 130
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1354.666666666667000000
+          343.958333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed sequence plan'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLRation: TQRLabel
+        Left = 40
+        Top = 532
+        Width = 126
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1407.583333333333000000
+          333.375000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Feed rationing plan'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSeqAli: TQRDBText
+        Left = 264
+        Top = 512
+        Width = 53
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          1354.666666666667000000
+          140.229166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_SeqAli_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTRation: TQRDBText
+        Left = 264
+        Top = 532
+        Width = 52
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          1407.583333333333000000
+          137.583333333333300000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Ration_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLSimul: TQRLabel
+        Left = 40
+        Top = 404
+        Width = 38
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1068.916666666667000000
+          100.541666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Name'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRDBTSimul: TQRDBText
+        Left = 264
+        Top = 404
+        Width = 48
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          1068.916666666667000000
+          127.000000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSRapport
+        DataField = '_Simul_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLMemo: TQRLabel
+        Left = 40
+        Top = 424
+        Width = 62
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          105.833333333333300000
+          1121.833333333333000000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Comment'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRMMemo: TQRMemo
+        Left = 264
+        Top = 424
+        Width = 452
+        Height = 60
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          158.750000000000000000
+          698.500000000000000000
+          1121.833333333333000000
+          1195.916666666667000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = False
+        AutoStretch = False
+        Color = clWhite
+        Transparent = False
+        WordWrap = True
+        FontSize = 10
+      end
+    end
+    object QRSDRapport: TQRSubDetail
+      Left = 38
+      Top = 670
+      Width = 718
+      Height = 28
+      Frame.Color = clBlack
+      Frame.DrawTop = False
+      Frame.DrawBottom = False
+      Frame.DrawLeft = False
+      Frame.DrawRight = False
+      AlignToBottom = False
+      Color = clWhite
+      TransparentBand = False
+      ForceNewColumn = False
+      ForceNewPage = False
+      Size.Values = (
+        74.083333333333330000
+        1899.708333333333000000)
+      PreCaluculateBandHeight = False
+      KeepOnOnePage = False
+      Master = QRRapport
+      DataSet = CDSSimul
+      PrintBefore = False
+      PrintIfEmpty = True
+      object QRDBTSimulNo: TQRDBText
+        Left = 40
+        Top = 8
+        Width = 62
+        Height = 20
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          52.916666666666670000
+          105.833333333333300000
+          21.166666666666670000
+          164.041666666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSSimul
+        DataField = '_Simul_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -16
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 12
+      end
+      object QRDBTVariation: TQRDBText
+        Left = 264
+        Top = 8
+        Width = 66
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          698.500000000000000000
+          21.166666666666670000
+          174.625000000000000000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Color = clWhite
+        DataSet = CDSSimul
+        DataField = '_Variation_'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = []
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+      object QRLVariation: TQRLabel
+        Left = 200
+        Top = 8
+        Width = 59
+        Height = 17
+        Frame.Color = clBlack
+        Frame.DrawTop = False
+        Frame.DrawBottom = False
+        Frame.DrawLeft = False
+        Frame.DrawRight = False
+        Size.Values = (
+          44.979166666666670000
+          529.166666666666700000
+          21.166666666666670000
+          156.104166666666700000)
+        Alignment = taLeftJustify
+        AlignToBand = False
+        AutoSize = True
+        AutoStretch = False
+        Caption = 'Variation'
+        Color = clWhite
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Arial'
+        Font.Style = [fsBold]
+        ParentFont = False
+        Transparent = False
+        WordWrap = True
+        ExportAs = exptText
+        WrapStyle = BreakOnSpaces
+        FontSize = 10
+      end
+    end
+  end
+  object CDSRapport: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 8
+    Top = 8
+    object CDSRapport_Simul_: TStringField
+      FieldName = '_Simul_'
+      Size = 25
+    end
+    object SFProfil: TStringField
+      FieldName = '_Profil_'
+      Size = 25
+    end
+    object SFSeqAli: TStringField
+      FieldName = '_SeqAli_'
+      Size = 25
+    end
+    object SFRation: TStringField
+      FieldName = '_Ration_'
+      Size = 25
+    end
+    object IFAgeDeb_1: TIntegerField
+      FieldName = '_AgeDeb_1_'
+    end
+    object IFAgeFin_1: TIntegerField
+      FieldName = '_AgeFin_1_'
+    end
+    object FFPoidsDeb_1: TFloatField
+      FieldName = '_PoidsDeb_1_'
+    end
+    object FFPoidsFin_1: TFloatField
+      FieldName = '_PoidsFin_1_'
+    end
+    object FFpDeb_1: TFloatField
+      FieldName = '_pDeb_1_'
+    end
+    object FFpFin_1: TFloatField
+      FieldName = '_pFin_1_'
+    end
+    object FFlDeb_1: TFloatField
+      FieldName = '_lDeb_1_'
+    end
+    object FFlFin_1: TFloatField
+      FieldName = '_lFin_1_'
+    end
+    object FFConso_1: TFloatField
+      FieldName = '_Conso_1_'
+    end
+    object FFIngere_1: TFloatField
+      FieldName = '_Ingere_1_'
+    end
+    object FFP2_1: TFloatField
+      FieldName = '_P2_1_'
+    end
+    object FFTMP_1: TFloatField
+      FieldName = '_TMP_1_'
+    end
+    object FFRC_1: TFloatField
+      FieldName = '_RC_1_'
+    end
+    object IFAgeDeb_2: TIntegerField
+      FieldName = '_AgeDeb_2_'
+    end
+    object IFAgeFin_2: TIntegerField
+      FieldName = '_AgeFin_2_'
+    end
+    object FFPoidsDeb_2: TFloatField
+      FieldName = '_PoidsDeb_2_'
+    end
+    object FFPoidsFin_2: TFloatField
+      FieldName = '_PoidsFin_2_'
+    end
+    object FFpDeb_2: TFloatField
+      FieldName = '_pDeb_2_'
+    end
+    object FFpFin_2: TFloatField
+      FieldName = '_pFin_2_'
+    end
+    object FFlDeb_2: TFloatField
+      FieldName = '_lDeb_2_'
+    end
+    object FFlFin_2: TFloatField
+      FieldName = '_lFin_2_'
+    end
+    object FFConso_2: TFloatField
+      FieldName = '_Conso_2_'
+    end
+    object FFIngere_2: TFloatField
+      FieldName = '_Ingere_2_'
+    end
+    object FFP2_2: TFloatField
+      FieldName = '_P2_2_'
+    end
+    object FFTMP_2: TFloatField
+      FieldName = '_TMP_2_'
+    end
+    object FFRC_2: TFloatField
+      FieldName = '_RC_2_'
+    end
+    object IFAgeDeb_3: TIntegerField
+      FieldName = '_AgeDeb_3_'
+    end
+    object IFAgeFin_3: TIntegerField
+      FieldName = '_AgeFin_3_'
+    end
+    object FFPoidsDeb_3: TFloatField
+      FieldName = '_PoidsDeb_3_'
+    end
+    object FFPoidsFin_3: TFloatField
+      FieldName = '_PoidsFin_3_'
+    end
+    object FFpDeb_3: TFloatField
+      FieldName = '_pDeb_3_'
+    end
+    object FFpFin_3: TFloatField
+      FieldName = '_pFin_3_'
+    end
+    object FFlDeb_3: TFloatField
+      FieldName = '_lDeb_3_'
+    end
+    object FFlFin_3: TFloatField
+      FieldName = '_lFin_3_'
+    end
+    object FFConso_3: TFloatField
+      FieldName = '_Conso_3_'
+    end
+    object FFIngere_3: TFloatField
+      FieldName = '_Ingere_3_'
+    end
+    object FFP2_3: TFloatField
+      FieldName = '_P2_3_'
+    end
+    object FFTMP_3: TFloatField
+      FieldName = '_TMP_3_'
+    end
+    object FFRC_3: TFloatField
+      FieldName = '_RC_3_'
+    end
+    object IFAgeDeb_4: TIntegerField
+      FieldName = '_AgeDeb_4_'
+    end
+    object IFAgeFin_4: TIntegerField
+      FieldName = '_AgeFin_4_'
+    end
+    object FFPoidsDeb_4: TFloatField
+      FieldName = '_PoidsDeb_4_'
+    end
+    object FFPoidsFin_4: TFloatField
+      FieldName = '_PoidsFin_4_'
+    end
+    object FFpDeb_4: TFloatField
+      FieldName = '_pDeb_4_'
+    end
+    object FFpFin_4: TFloatField
+      FieldName = '_pFin_4_'
+    end
+    object FFlDeb_4: TFloatField
+      FieldName = '_lDeb_4_'
+    end
+    object FFlFin_4: TFloatField
+      FieldName = '_lFin_4_'
+    end
+    object FFConso_4: TFloatField
+      FieldName = '_Conso_4_'
+    end
+    object FFIngere_4: TFloatField
+      FieldName = '_Ingere_4_'
+    end
+    object FFP2_4: TFloatField
+      FieldName = '_P2_4_'
+    end
+    object FFTMP_4: TFloatField
+      FieldName = '_TMP_4_'
+    end
+    object FFRC_4: TFloatField
+      FieldName = '_RC_4_'
+    end
+    object IFAgeDeb_5: TIntegerField
+      FieldName = '_AgeDeb_5_'
+    end
+    object IFAgeFin_5: TIntegerField
+      FieldName = '_AgeFin_5_'
+    end
+    object FFPoidsDeb_5: TFloatField
+      FieldName = '_PoidsDeb_5_'
+    end
+    object FFPoidsFin_5: TFloatField
+      FieldName = '_PoidsFin_5_'
+    end
+    object FFpDeb_5: TFloatField
+      FieldName = '_pDeb_5_'
+    end
+    object FFpFin_5: TFloatField
+      FieldName = '_pFin_5_'
+    end
+    object FFlDeb_5: TFloatField
+      FieldName = '_lDeb_5_'
+    end
+    object FFlFin_5: TFloatField
+      FieldName = '_lFin_5_'
+    end
+    object FFConso_5: TFloatField
+      FieldName = '_Conso_5_'
+    end
+    object FFIngere_5: TFloatField
+      FieldName = '_Ingere_5_'
+    end
+    object FFP2_5: TFloatField
+      FieldName = '_P2_5_'
+    end
+    object FFTMP_5: TFloatField
+      FieldName = '_TMP_5_'
+    end
+    object FFRC_5: TFloatField
+      FieldName = '_RC_5_'
+    end
+  end
+  object CDSSimul: TClientDataSet
+    Aggregates = <>
+    FieldDefs = <>
+    IndexDefs = <>
+    Params = <>
+    StoreDefs = True
+    Left = 40
+    Top = 8
+    object SFSimul: TStringField
+      FieldName = '_Simul_'
+      Size = 25
+    end
+    object SFVariation: TStringField
+      DisplayWidth = 80
+      FieldName = '_Variation_'
+      Size = 25
+    end
+  end
+end
Index: UFCommentAli.pas
===================================================================
--- UFCommentAli.pas	(révision 0)
+++ UFCommentAli.pas	(révision 3)
@@ -0,0 +1,56 @@
+unit UFCommentAli;
+
+interface
+
+uses
+  Windows, Forms, Classes, Controls, StdCtrls, Buttons, PBNumEdit;
+
+type
+  TFCommentAli = class(TForm)
+    Memo: TMemo;
+    BBOk: TBitBtn;
+    BBCancel: TBitBtn;
+    LType: TLabel;
+    CBType: TComboBox;
+    LPrix: TLabel;
+    PBPrix: TPBNumEdit;
+    LMonnaie: TLabel;
+    LPresentation: TLabel;
+    CBPresentation: TComboBox;
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { D�clarations priv�es }
+  public
+    { D�clarations publiques }
+  end;
+
+var
+  FCommentAli: TFCommentAli;
+
+implementation
+
+uses
+  gnugettext;
+
+{$R *.dfm}
+
+{ TFCommentAli }
+
+procedure TFCommentAli.FormCreate(Sender: TObject);
+begin
+  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
+  then
+    Font.Name := 'Arial Unicode MS';
+  TranslateComponent(Self);
+  CBType.ItemIndex := 0;
+  CBPresentation.ItemIndex := 0;
+end;
+
+procedure TFCommentAli.FormShow(Sender: TObject);
+begin
+  Memo.SelectAll;
+  ActiveControl := Memo;
+end;
+
+end.
Index: UCalcSimulT.pas
===================================================================
--- UCalcSimulT.pas	(révision 0)
+++ UCalcSimulT.pas	(révision 3)
@@ -0,0 +1,919 @@
+unit UCalcSimulT ;
+
+interface
+
+uses
+  UVariables ;
+
+procedure CalcSimulT (Simulation : integer ;
+  Variable : integer ; Variation : double ;
+  CycleInitVar, CycleFinVar, StadeVar : integer ;
+  PResSimulT : PTabResSimulT) ;
+// Simulation = N� de la simulation
+// Variable = N� de la variable � moduler
+// Variation = Coefficient de variation
+// CycleInitVar = Port�e de d�but de variation
+// CycleFinVar = Port�e de fin de variation
+// StadeVar = Stade sur lequel s'applique la variation
+// PResSimulT = Tableau de r�sultats
+
+implementation
+
+uses
+  Math, UFindRec, UCalcul ;
+
+procedure CalcSimulT (Simulation : integer ;
+  Variable : integer ; Variation : double ;
+  CycleInitVar, CycleFinVar, StadeVar : integer ;
+  PResSimulT : PTabResSimulT) ;
+var
+  i, j : integer ;
+  ok : boolean ;
+  Stade, StadeInit, StadeFin, TypeStade, Cycle : integer ;
+  Jour, Duree, Age, Ecart : integer ;
+  RuleSeqAli : array[1..MAX_RULE] of RecRuleSeqAliT ;
+  RuleRation : array[1..MAX_RULE] of RecRuleRationT ;
+  RuleLoge : array[1..MAX_RULE] of RecRuleLogeT ;
+  Unite : integer ;
+  NumRuleLoge, NumRuleSeqAli, NumRuleRation : integer ;
+  RuleSeqAliInit, RuleRationInit, RuleLogeInit : integer ;
+  RecCC1, RecCC2 : CompositionChimique ;
+  TabAAtotal1, TabAAtotal2, TabCUDAA1, TabCUDAA2 : array[0..12] of double ;
+  PctAli1, PctAli2, Quantite, Ingere, IngereSec, IngSec1, IngSec2 : double ;
+  TabAAdig : array[0..12] of double ;
+  NRAA : array[0..14] of double ;
+  EqLysd : double ;
+  Temperature, Activite : integer ;
+  PVTot, PVVTot, PVNet, PVVNet, P2, P2Var : double ;
+  p, l, PDNet, PDTot, LD, R1, R2, RA : double ;
+  NesTotaux, Sevres, PdsNais, PdsSev, PdsPt, GMQPt, GainLact, GainProfil, GainSimul : double ;
+  CorrPP, CorrCU, CorrJ, CorrNR, TeneurLysPot : double ; // Facteur de correction (poids port�e, contenus ut�rins, jour, r�tention azot�e)
+  CoeffEntGest, CoeffNR, CoeffEntLact, RatioLP : double ;
+  EMIng, EMEnt, EMEntInit, EMThe, EMAct, EMProd, EMProt, EMLip, EMRes : double ;
+  ENProd, ENProdCum, ENProdTot, ENProt, ENLip, ENRes, ENResCum : double ;
+  NRPotAA, NRPot, NR, NRProd, NRProdCum, NRProdTot, NRRes : double ;
+  PProd, PProdCum, PProdTot : double ;
+  NExcF, NExcU : double ; // Azote excr�t� f�c�s, urine
+  Chaleur : double ;
+  MATIng, MATdIng : double ;
+begin
+  // Initialisation du tableau de r�sultat
+  for i := 1 to NB_COL_TRUIE do
+    for j := 1 to MAX_LIG_TRUIE do
+      PResSimulT.TabResult[i, j] := 0 ;
+  // Initialisation de la simulation
+  PResSimulT.NbJSim := 0 ;
+  if Simulation = -1
+  then // Profil
+  begin
+    // D�but et fin de simulation
+    StadeInit := 0 ;
+    StadeFin := 23 ;
+    // Age initial
+    Age := PProfilT.Truies[1].AgeSail ;
+  end
+  else // Simulation
+  begin
+    // Initialisation des param�tres de simulation
+    PSimulT := ListSimulT[FindIdxSimulT (FindNomSimulT (Simulation))] ;
+    // Initialisation du profil animal
+    PProfilT := ListProfilT[FindIdxProfilT (FindNomProfilT (PSimulT.Profil))] ;
+    // D�but et fin de simulation
+    StadeInit := PSimulT.StadeInit ;
+    StadeFin := PSimulT.StadeFin ;
+    // Age initial
+    if StadeInit mod 3 = 0
+    then // Gestation : age saillie
+      Age := PProfilT.Truies[StadeInit div 3 + 1].AgeSail
+    else // Lactation : age mise-bas
+      Age := PProfilT.Truies[StadeInit div 3 + 1].AgeSail + DureeGest ;
+    // Sensibilit� (Age initial)
+    if (Variable = 0)
+    then
+      Age := Round (Age * Variation) ;
+  end ;
+  // Coefficients de calibrage
+  CoeffEntGest := PProfilT.CoefEntretienGest ;
+  CoeffEntLact := PProfilT.CoefEntretienLact ;
+  RatioLP := PProfilT.RatioLipProt ;
+  // Boucle stades
+  for Stade := StadeInit to StadeFin - 1 do
+  begin
+    Cycle := Stade div 3 + 1 ;
+    TypeStade := Stade mod 3 ;
+    if (Stade = StadeInit) or ((Simulation <> -1) and ((PSimulT.OptInit = 0) or ((PSimulT.OptInit = 1) and (TypeStade = 0))))
+    then // Initialisation PV et P2
+    begin
+      // Initialisation du poids vif
+      case TypeStade of
+        0 : // Gestation
+          PVTot := PProfilT.Truies[Cycle].PdsSail ;
+        1 : // Lactation
+          PVTot := PProfilT.Truies[Cycle].PdsApMB ;
+      end ;
+      // Sensibilit� (Poids vif initial)
+      if (Variable = 1) and (Stade = StadeInit)
+      then
+        PVTot := PVTot * Variation ;
+      // Initialisation de l'�paisseur de lard
+      case TypeStade of
+        0 : // Gestation
+          P2 := PProfilT.Truies[Cycle].P2Sail ;
+        1 : // Lactation
+          P2 := PProfilT.Truies[Cycle].P2MB ;
+      end ;
+      // Sensibilit� (Epaisseur de lard initiale)
+      if (Variable = 2) and (Stade = StadeInit)
+      then
+        P2 := P2 * Variation ;
+      PVVTot := PVTot * PV2PVV ;
+      p := 2.28 + (0.178 * PVVTot) - (0.333 * P2) ;
+      l := -26.4 + (0.221 * PVVTot) + (1.331 * P2) ;
+      ENResCum := -1024 + (13.66 * PVVTot) + (45.94 * P2) ;
+    end ;
+    // Initialisation de la s�quence alimentaire
+    if (Simulation = -1) or (PSimulT.SeqAli[Cycle] = -1)
+    then // Profil
+      PSeqAliT := ListSeqAliT[FindIdxSeqAliT (FindNomSeqAliT (PProfilT.SeqAli))]
+    else // Simulation
+      PSeqAliT := ListSeqAliT[FindIdxSeqAliT (FindNomSeqAliT (PSimulT.SeqAli[Cycle]))] ;
+    case TypeStade of
+      0 : // Gestation
+        for i := 1 to PSeqAliT.NbRuleGest do
+          RuleSeqAli[i] := PSeqAliT.RuleGest[i] ;
+      1 : // Lactation
+        for i := 1 to PSeqAliT.NbRuleLact do
+          RuleSeqAli[i] := PSeqAliT.RuleLact[i] ;
+      else // ISSF
+        for i := 1 to PSeqAliT.NbRuleISSF do
+          RuleSeqAli[i] := PSeqAliT.RuleISSF[i] ;
+    end ;
+    NumRuleSeqAli := 1 ;
+    RuleSeqAliInit := 1 ;
+    // Initialisation du plan de rationnement
+    if (Simulation = -1) or (PSimulT.Ration[Cycle] = -1)
+    then // Profil
+    begin
+      with RuleRation[1] do
+      begin
+        ModeFin := -1 ;
+        if TypeStade = 1
+        then // Lactation
+        begin
+          Equation := 3 ; // Curvilin�aire
+          a := PProfilT.Lact[Cycle] / 2 ; // Initial
+          c := PProfilT.Lact[Cycle] ; // Moyenne
+          d := PProfilT.DureeLact ; // Dur�e
+        end
+        else // Gestation (ou ISSF)
+        begin
+          Equation := 0 ; // Constant
+          a := PProfilT.Gest[Cycle] ;
+        end ;
+      end ;
+      Unite := PProfilT.Unite ;
+    end
+    else // Simulation
+    begin
+      PRationT := ListRationT[FindIdxRationT (FindNomRationT (PSimulT.Ration[Cycle]))] ;
+      case TypeStade of
+        0 : // Gestation
+          for i := 1 to PRationT.NbRuleGest do
+            RuleRation[i] := PRationT.RuleGest[i] ;
+        1 : // Lactation
+          for i := 1 to PRationT.NbRuleLact do
+            RuleRation[i] := PRationT.RuleLact[i] ;
+        else // ISSF
+          for i := 1 to PRationT.NbRuleISSF do
+            RuleRation[i] := PRationT.RuleISSF[i] ;
+      end ;
+      case TypeStade of
+        0 : // Gestation
+          Unite := PRationT.UniteGest ;
+        1 : // Lactation
+          Unite := PRationT.UniteLact ;
+        else // ISSF
+          Unite := PRationT.UniteISSF ;
+      end ;
+    end ;
+    NumRuleRation := 1 ;
+    RuleRationInit := 1 ;
+    // Initialisation du logement
+    if Simulation = -1
+    then // Profil
+      PLogeT := ListLogeT[FindIdxLogeT (FindNomLogeT (PProfilT.Loge))]
+    else // Simulation
+      PLogeT := ListLogeT[FindIdxLogeT (FindNomLogeT (PSimulT.Logement))] ;
+    case TypeStade of
+      0 : // Gestation
+        for i := 1 to PLogeT.NbRuleGest do
+          RuleLoge[i] := PLogeT.RuleGest[i] ;
+      1 : // Lactation
+        for i := 1 to PLogeT.NbRuleLact do
+          RuleLoge[i] := PLogeT.RuleLact[i] ;
+      else // ISSF
+        for i := 1 to PLogeT.NbRuleISSF do
+          RuleLoge[i] := PLogeT.RuleISSF[i] ;
+    end ;
+    NumRuleLoge := 1 ;
+    RuleLogeInit := 1 ;
+    // Dur�e du stade
+    case TypeStade of
+      0 : // Gestation
+        Duree := DureeGest ;
+      1 : // Lactation
+        if Simulation = -1
+        then // Profil
+          Duree := PProfilT.DureeLact
+        else // Simulation
+          Duree := PSimulT.DureeLact ;
+      else // ISSF
+        Duree := PProfilT.Truies[Cycle + 1].AgeSail - PProfilT.Truies[Cycle].AgeSail - DureeGest - PProfilT.DureeLact ;
+    end ;
+    // Coefficients de calibrage
+    CoeffNR := Max (PProfilT.CoefNR[Cycle], 0) ;
+    // Initialisation du stade
+    PVNet := PVTot ;
+    case TypeStade of
+      0 : // Gestation
+      begin
+        NesTotaux := PProfilT.Porcelets[Cycle].NesTotaux ;
+        PdsNais := PProfilT.Porcelets[Cycle].PdsNais ;
+        PdsPt := NesTotaux * PdsNais ;
+        CorrPP := PdsPt * 1000 / Exp (9.095 - 17.69 * Exp (-0.0305 * DureeGest) + 0.0878 * NesTotaux) ;
+        CorrCU := (0.3 + (1.329 * PdsPt)) * 1000 / Exp (8.621 - 21.02 * Exp (-0.05302 * DureeGest) + 0.1114 * NesTotaux) ;
+        ENProdTot := Exp (11.72 - 8.62 * Exp (-0.01382 * 0) + 0.0932 * NesTotaux) / 1000 ;
+        ENProdTot := ENProdTot * CorrPP ; // Correction
+        ENProdCum := ENProdTot ;
+        PProdTot := Exp (8.621 - 21.02 * Exp (-0.05302 * 0) + 0.1114 * NesTotaux) ;
+        PProdTot := PProdTot * CorrCu ; // Correction
+        PProdCum := PProdTot ;
+        NRProdCum := 0 ;
+        NRProdTot := Exp (8.09 - 8.71 * Exp (-0.01494 * 0) + 0.0872 * NesTotaux) / 6.25 ;
+        NRProdTot := NRProdTot * CorrPP ; // Correction
+        NRProdCum := NRProdTot ;
+        EMEntInit := Power (PVVTot, 0.75) * EEGest * CoeffEntGest ;
+      end ;
+      1 : // Lactation
+      begin
+        NesTotaux := PProfilT.Porcelets[Cycle].NesTotaux ;
+        PdsNais := PProfilT.Porcelets[Cycle].PdsNais ;
+        Sevres := PProfilT.Porcelets[Cycle].Sevres ;
+        PdsSev := PProfilT.Porcelets[Cycle].PdsSev ;
+        if Simulation <> -1
+        then // Ajustement du poids de sevrage � la dur�e de lactation
+        begin
+          GainProfil := (273 * PProfilT.DureeLact + (289 / 0.38) * Exp (-0.38 * PProfilT.DureeLact) - 289 / 0.38) / 1000 ;
+          GainSimul := (273 * PSimulT.DureeLact + (289 / 0.38) * Exp (-0.38 * PSimulT.DureeLact) - 289 / 0.38) / 1000 ;
+          PdsSev := PdsNais + GainSimul * (PdsSev - PdsNais) / GainProfil ;
+        end ;
+        ENProdCum := 0 ;
+        NRProdCum := 0 ;
+        PProdCum := 0 ;
+        // Gain de poids de la port�e
+        GMQPt := (PdsSev - PdsNais) * Sevres / Duree ;
+      end ;
+      else // ISSF
+      begin
+        NesTotaux := 0 ;
+        PdsNais := 0 ;
+        EMEntInit := Power (PVVTot, 0.75) * EEGest * CoeffEntGest ;
+      end ;
+    end ;
+    // Eviter le d�bordement du tableau de r�sultats
+    if PResSimulT.NbJSim + Duree > MAX_LIG_TRUIE
+    then
+      Duree := MAX_LIG_TRUIE - PResSimulT.NbJSim ;
+    // Boucle jours
+    for Jour := 1 to Duree do
+    begin
+      Inc (PResSimulT.NbJSim) ;
+      PResSimulT.TabResult[78, PResSimulT.NbJSim] := Jour ;
+      PResSimulT.TabResult[1, PResSimulT.NbJSim] := Age ;
+      PResSimulT.TabResult[2, PResSimulT.NbJSim] := Cycle ;
+      PResSimulT.TabResult[3, PResSimulT.NbJSim] := TypeStade ;
+      PResSimulT.TabResult[58, PResSimulT.NbJSim] := PVTot ;
+      PResSimulT.TabResult[60, PResSimulT.NbJSim] := PVNet ;
+      PResSimulT.TabResult[67, PResSimulT.NbJSim] := P2 ;
+      PResSimulT.TabResult[62, PResSimulT.NbJSim] := p ;
+      PResSimulT.TabResult[65, PResSimulT.NbJSim] := l ;
+      PVVNet := PVNet * PV2PVV ;
+      /////////////////////////
+      // Apports journaliers //
+      /////////////////////////
+      // Aliment(s) distribu�(s)
+      repeat
+        ok := TRUE ;
+        with RuleSeqAli[NumRuleSeqAli] do
+          if ModeFin = 0
+          then // Dur�e
+            if Jour - RuleSeqAliInit >= ValFin then ok := FALSE ;
+        if not (ok)
+        then // Changement de r�gle
+        begin
+          Inc (NumRuleSeqAli) ;
+          RuleSeqAliInit := Jour ;
+        end ;
+      until ok ;
+      PResSimulT.TabResult[4, PResSimulT.NbJSim] := NumRuleSeqAli ;
+      with RuleSeqAli[NumRuleSeqAli] do
+      begin
+        PResSimulT.TabResult[7, PResSimulT.NbJSim] := NumAli1 ;
+        PResSimulT.TabResult[8, PResSimulT.NbJSim] := NumAli2 ;
+        // Composition aliment 1
+        if NumAli1 = -1
+        then
+        begin
+          RecCC1 := CCVide ;
+          for i := 0 to 12 do
+            TabAAtotal1[i] := 0 ;
+          for i := 0 to 12 do
+            TabCUDAA1[i] := 0 ;
+        end
+        else
+        begin
+          PAliment := ListAliment[FindIdxAliment (FindNomAliment (NumAli1))] ;
+          RecCC1 := PAliment.CC ;
+          for i := 0 to 12 do
+            TabAAtotal1[i] := PAliment.AAtotal[i] ;
+          for i := 0 to 12 do
+            TabCUDAA1[i] := PAliment.CUDAA[i] ;
+        end ;
+        // Composition aliment 2
+        if NumAli2 = -1
+        then
+        begin
+          RecCC2 := CCVide ;
+          for i := 0 to 12 do
+            TabAAtotal2[i] := 0 ;
+          for i := 0 to 12 do
+            TabCUDAA2[i] := 0 ;
+        end
+        else
+        begin
+          PAliment := ListAliment[FindIdxAliment (FindNomAliment (NumAli2))] ;
+          RecCC2 := PAliment.CC ;
+          for i := 0 to 12 do
+            TabAAtotal2[i] := PAliment.AAtotal[i] ;
+          for i := 0 to 12 do
+            TabCUDAA2[i] := PAliment.CUDAA[i] ;
+        end ;
+        // Calcul des % aliments
+        if PctAli1Init = PctAli1Fin
+        then
+          PctAli1 := PctAli1Init
+        else // Transition
+        begin
+          Ecart := PctAli1Fin - PctAli1Init ;
+          if ModeFin = 0
+          then // Dur�e
+            PctAli1 := PctAli1Init + (Jour - RuleSeqAliInit) * Ecart / (ValFin - 1)
+          else // Fin
+            PctAli1 := PctAli1Init + (Jour - RuleSeqAliInit) * Ecart / (Duree - RuleSeqAliInit) ;
+        end ;
+      end ;
+      PResSimulT.TabResult[9, PResSimulT.NbJSim] := PctAli1 ;
+      PctAli2 := 100 - PctAli1 ;
+      PResSimulT.TabResult[10, PResSimulT.NbJSim] := PctAli2 ;
+      // Quantit�(s) distribu�e(s)
+      repeat
+        ok := TRUE ;
+        with RuleRation[NumRuleRation] do
+          if ModeFin = 0
+          then // Dur�e
+            if Jour - RuleRationInit >= ValFin then ok := FALSE ;
+        if not (ok)
+        then // Changement de r�gle
+        begin
+          Inc (NumRuleRation) ;
+          RuleRationInit := Jour ;
+        end ;
+      until ok ;
+      PResSimulT.TabResult[5, PResSimulT.NbJSim] := NumRuleRation ;
+      with RuleRation[NumRuleRation] do
+      begin
+        // Calcul des quantit�s
+        case Equation of
+          0 : // Constant
+            Quantite := a ;
+          1 : // Lin�aire
+            Quantite := a + b * (Jour - RuleRationInit) ;
+          2 : // Lin�aire-plateau
+            Quantite := LPvaleur (a, b, c, Jour - RuleRationInit + 1, d) ;
+          3 : // Curvilin�aire
+            Quantite := CLvaleur (a, c, Jour - RuleRationInit + 1, d) ;
+          else
+            Quantite := 0 ;
+        end ;
+        // Convertion de ED, EM, EN en quantit� si besoin
+        case Unite of
+          1 : // ED (MJ/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.ED_T * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.ED_T * RecCC2.MS / 1000) ;
+          2 : // EM (MJ/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.EM_T * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.EM_T * RecCC2.MS / 1000) ;
+          3 : // EN (MJ/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.EN_T * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.EN_T * RecCC2.MS / 1000) ;
+          4 : // MS (kg/j)
+            Ingere := Quantite
+              / (PctAli1 / 100 * RecCC1.MS / 1000
+                + PctAli2 / 100 * RecCC2.MS / 1000) ;
+          else // Quantit� (kg/j)
+            Ingere := Quantite ;
+        end ;
+      end ;
+      // Sensibilit� (Quantit� d'aliment)
+      if (Variable = 5)
+        and ((Cycle >= CycleInitVar) and (Cycle <= CycleFinVar))
+        and ((StadeVar = 2) or (TypeStade = StadeVar))
+      then
+        Ingere := Ingere * Variation ;
+      PResSimulT.TabResult[11, PResSimulT.NbJSim] := Ingere ;
+      // Calcul des apports journaliers
+      IngSec1 := Ingere * PctAli1 / 100 * RecCC1.MS / 1000 ;
+      IngSec2 := Ingere * PctAli2 / 100 * RecCC2.MS / 1000 ;
+      IngereSec := IngSec1 + IngSec2 ;
+      PResSimulT.TabResult[12, PResSimulT.NbJSim] := IngereSec ;
+      // Energie brute ing�r�e
+      PResSimulT.TabResult[13, PResSimulT.NbJSim] := IngSec1 * RecCC1.EB
+        + IngSec2 * RecCC2.EB ;
+      // Energie digestible ing�r�e
+      PResSimulT.TabResult[71, PResSimulT.NbJSim] := IngSec1 * RecCC1.ED_T
+        + IngSec2 * RecCC2.ED_T ;
+      // Energie m�tabolisable ing�r�e
+      EMIng := IngSec1 * RecCC1.EM_T + IngSec2 * RecCC2.EM_T ;
+      PResSimulT.TabResult[72, PResSimulT.NbJSim] := EMIng ;
+      // Energie nette ing�r�e
+      PResSimulT.TabResult[73, PResSimulT.NbJSim] := IngSec1 * RecCC1.EN_T
+        + IngSec2 * RecCC2.EN_T ;
+      // Sensibilit� (Acides amin�s)
+      if (Variable > 5)
+        and ((Cycle >= CycleInitVar) and (Cycle <= CycleFinVar))
+        and ((StadeVar = 2) or (TypeStade = StadeVar))
+      then
+      begin
+        TabAAtotal1[Variable - 5] := TabAAtotal1[Variable - 5] * Variation ;
+        TabAAtotal2[Variable - 5] := TabAAtotal2[Variable - 5] * Variation ;
+        if (Variable = 8) or (Variable = 12)
+        then // met+cys ou phe+tyr
+        begin
+          TabAAtotal1[Variable - 6] := TabAAtotal1[Variable - 6] * Variation ;
+          TabAAtotal2[Variable - 6] := TabAAtotal2[Variable - 6] * Variation ;
+        end ;
+      end ;
+      // Acides amin�s totaux ing�r�s
+      for i:= 0 to 12 do
+        PResSimulT.TabResult[14 + i, PResSimulT.NbJSim] := IngSec1 * TabAAtotal1[i]
+          + IngSec2 * TabAAtotal2[i] ;
+      // Acides amin�s digestibles ing�r�s
+      for i := 0 to 12 do
+        TabAAdig[i] := IngSec1 * TabAAtotal1[i] * TabCUDAA1[i] / 100
+          + IngSec2 * TabAAtotal2[i] * TabCUDAA2[i] / 100 ;
+      for i := 0 to 12 do
+        PResSimulT.TabResult[27 + i, PResSimulT.NbJSim] := TabAAdig[i] ;
+      ////////////////
+      // Simulation //
+      ////////////////
+      // Logement
+      repeat
+        ok := TRUE ;
+        with RuleLoge[NumRuleLoge] do
+          if ModeFin = 0
+          then // Dur�e
+            if Jour - RuleLogeInit >= ValFin then ok := FALSE ;
+        if not (ok)
+        then // Changement de r�gle
+        begin
+          Inc (NumRuleLoge) ;
+          RuleLogeInit := Jour ;
+        end ;
+      until ok ;
+      PResSimulT.TabResult[6, PResSimulT.NbJSim] := NumRuleLoge ;
+      with RuleLoge[NumRuleLoge] do
+      begin
+        if (Sol = 1)
+        then // Paill�
+          Temperature := Temp + 3
+        else
+          Temperature := Temp ;
+        // Sensibilit� (Temp�rature ambiante)
+        if (Variable = 3)
+          and ((Cycle >= CycleInitVar) and (Cycle <= CycleFinVar))
+          and ((StadeVar = 2) or (TypeStade = StadeVar))
+        then
+          Temperature := Round (Temperature * Variation) ;
+        Activite := Act ;
+        // Sensibilit� (Temps debout)
+        if (Variable = 4)
+          and ((Cycle >= CycleInitVar) and (Cycle <= CycleFinVar))
+          and ((StadeVar = 2) or (TypeStade = StadeVar))
+        then
+          Activite := Round (Activite * Variation) ;
+      end ;
+      PResSimulT.TabResult[56, PResSimulT.NbJSim] := Temperature ;
+      PResSimulT.TabResult[57, PResSimulT.NbJSim] := Activite ;
+      case TypeStade of
+        0 : // Gestation
+        begin
+          // Energie m�tabolisable entretien
+          EMEnt := Power (PVVTot, 0.75) * EEGest * CoeffEntGest ;
+          PResSimulT.TabResult[74, PResSimulT.NbJSim] := EMEnt ;
+          // Energie m�tabolisable thermor�gulation
+          if (RuleLoge[NumRuleLoge].Typ = 1)
+          then // Collectif
+            if Temperature < TCICol
+            then
+              EMThe := (TCICol - Temperature) * Power (PVVTot, 0.75) * EThCol / 1000
+            else
+              EMThe := 0
+          else
+            if Temperature < TCIInd
+            then
+              EMThe := (TCIInd - Temperature) * Power (PVVTot, 0.75) * EThInd / 1000
+            else
+              EMThe := 0 ;
+          PResSimulT.TabResult[75, PResSimulT.NbJSim] := EMThe ;
+          // Energie m�tabolisable activit�
+          EMAct := 0.3 * Power (PVVTot, 0.75) * (Activite - 240) / 1000 ;
+          PResSimulT.TabResult[76, PResSimulT.NbJSim] := EMAct ;
+          // Energie contenus ut�rins
+          ENProdTot := Exp (11.72 - 8.62 * Exp (-0.01382 * Jour) + 0.0932 * NesTotaux) / 1000 ;
+          ENProdTot := ENProdTot * CorrPP ; // Correction
+          ENProd := ENProdTot - ENProdCum ;
+          ENProdCum := ENProdTot ;
+          EMProd := ENProd / KU ;
+          PResSimulT.TabResult[77, PResSimulT.NbJSim] := EMProd ;
+          // Poids contenus ut�rins
+          PProdTot := Exp (8.621 - 21.02 * Exp (-0.05302 * Jour) + 0.1114 * NesTotaux) ;
+          PProdTot := PProdTot * CorrCu ; // Correction
+          PProd := PProdTot - PProdCum ;
+          PProdCum := PProdTot ;
+          // Azote contenus ut�rins
+          NRProdTot := Exp (8.09 - 8.71 * Exp (-0.01494 * Jour) + 0.0872 * NesTotaux) / 6.25 ;
+          NRProdTot := NRProdTot * CorrPP ; // Correction
+          NRProd := NRProdTot - NRProdCum ;
+          NRProdCum := NRProdTot ;
+          // R�tention azot�e potentielle
+          Case Cycle of
+            1 : // Port�e 1
+              CorrNR := 0.5708 ;
+            2 : // Port�e 2
+              CorrNR := 0.4345 ;
+            else
+              CorrNR := 0.3664 ;
+          end ;
+          if (Jour < 98)
+          then
+            CorrJ := Jour
+          else
+            CorrJ := Jour - 6 / 16 * (Jour - 98) ;
+          NRPot := NRProd + CoeffNR * (-0.43 + 45.92 * (CorrJ / 100) - 105.35 * Power ((CorrJ / 100), 2) + 64.388 * Power ((CorrJ / 100), 3) + CorrNR * (EMIng - EMThe - EMEntInit)) * 0.85 ;
+          PResSimulT.TabResult[40, PResSimulT.NbJSim] := NRPot * 6.25 ;
+          // R�tention possible par les apports d'acides amin�s
+          TeneurLysPot := (0.060 * NRProd + 0.070 * (NRPot - NRProd)) / NRPot ;
+          NRAA[0] := (TabAAdig[0] - (AAm75[0] * Power (PVTot, 0.75) + IngereSec * AAendogene[0])) * kAA[0] / AAbody[0] / 6.25 ;
+          NRAA[1] := (TabAAdig[1] - (AAm75[1] * Power (PVTot, 0.75) + IngereSec * AAendogene[1])) * KLysGest / TeneurLysPot / 6.25 ;
+          for i := 2 to 12 do
+          begin
+            if ProtIdGest[i] = 0
+            then
+              EqLysd := 0
+            else
+              EqLysd := TabAAdig[i] * 100 / ProtIdGest[i] ;
+            NRAA[i] := (EqLysd - (AAm75[i] * Power (PVTot, 0.75) + IngereSec * AAendogene[i])) * KLysGest / TeneurLysPot / 6.25 ;
+          end ;
+          // met+cys
+          if ProtIdGest[2] + ProtIdGest[3] = 0
+          then
+            EqLysd := 0
+          else
+            EqLysd := (TabAAdig[2] + TabAAdig[3]) * 100 / (ProtIdGest[2] + ProtIdGest[3]) ;
+          NRAA[13] := (EqLysd - ((AAm75[2] + AAm75[3]) * Power (PVTot, 0.75) + IngereSec * (AAendogene[2] + AAendogene[3]))) * KLysGest / TeneurLysPot / 6.25 ;
+          // phe+tyr
+          if ProtIdGest[6] + ProtIdGest[7] = 0
+          then
+            EqLysd := 0
+          else
+            EqLysd := (TabAAdig[6] + TabAAdig[7]) * 100 / (ProtIdGest[6] + ProtIdGest[7]) ;
+          NRAA[14] := (EqLysd - ((AAm75[6] + AAm75[7]) * Power (PVTot, 0.75) + IngereSec * (AAendogene[6] + AAendogene[7]))) * KLysGest / TeneurLysPot / 6.25 ;
+          for i := 0 to 14 do
+            if NRAA[i] > 0
+            then
+              PResSimulT.TabResult[41 + i, PResSimulT.NbJSim] := NRAA[i] * 6.25 ;
+          // Premier facteur limitant le d�pot de prot�ines
+          NRPotAA := NRAA[0] ;
+          for i := 1 to 14 do
+            if (i <> 3) and (i <> 7) // Ignorer 'cys' et 'tyr'
+            then
+              if (NRAA[i] > 0) and (NRAA[i] < NRPotAA)
+              then
+                NRPotAA := NRAA[i] ;
+          // R�tention azot�e
+          NR := Min (NRPot, NRPotAA) ;
+          // R�tention azot�e maternelle
+          NRRes := NR - NRProd ;
+          // Energie retenue dans les tissus maternels et production de chaleur
+          ENProt := NRRes * 6.25 * 23.8 / 1000 ;
+          EMProt := ENProt / KProt ;
+          EMLip := EMIng - EMEnt - EMThe - EMAct - EMProd - EMProt ;
+          if EMLip > 0
+          then // D�p�t
+          begin
+            ENLip := EMLip * KLip ;
+            Chaleur := EMEnt + EMThe + EMAct + EMProd * (1 - KU) + EMProt * (1 - KProt) + EMLip * (1 - KLip) ;
+          end
+          else // Mobilisation
+          begin
+            ENLip := (EMIng - EMEnt - EMThe - EMAct - EMProd - EMProt) / KResGest ;
+            Chaleur := EMEnt + EMThe + EMAct + EMProd * (1 - KU) + EMProt * (1 - KProt) - EMLip * (1 - KResGest);
+          end;
+          PResSimulT.TabResult[70, PResSimulT.NbJSim] := Chaleur ;
+          ENRes := ENProt + ENLip ;
+          ENResCum := ENResCum + ENRes ;
+          // Excr�tion azot�e
+          NExcF := (MATIng - MATdIng) / 6.25 ;
+          NExcU := (MATdIng / 6.25) - NR ;
+          // D�p�ts de prot�ines et lipides
+          PDNet := NRRes * 6.25 ;
+          PResSimulT.TabResult[63, PResSimulT.NbJSim] := PDNet ;
+          PDTot := NR * 6.25 ;
+          PResSimulT.TabResult[64, PResSimulT.NbJSim] := PDTot ;
+          LD := ENLip / 39.7 * 1000 ;
+          PResSimulT.TabResult[66, PResSimulT.NbJSim] := LD ;
+          p := p + PDNet / 1000 ;
+          l := l + LD / 1000 ;
+          // Poids vif
+          R1 := -((p - 2.28) * 45.94 + (ENResCum + 1024) * 0.333) / APN ;
+          R2 := -((p - 2.28) * 1.3311 + (l + 24.5) * 0.333) / BPN ;
+          PVVNet := (R1 + R2) / 2 ;
+          PVVTot := PVVNet + PProdTot / 1000 ;
+          PVTot := PVVTot / PV2PVV ;
+          PResSimulT.TabResult[59, PResSimulT.NbJSim] := PVTot
+            - PResSimulT.TabResult[58, PResSimulT.NbJSim] ;
+          PVNet := PVVNet / PV2PVV ;
+          PResSimulT.TabResult[61, PResSimulT.NbJSim] := PVNet
+            - PResSimulT.TabResult[60, PResSimulT.NbJSim] ;
+          // Epaisseur de lard dorsale
+          R1 := ((p - 2.28) * 13.66 - (ENResCum + 1024) * 0.178) / APN ;
+          R2 := ((p - 2.28) * 0.221 - (l + 26.4) * 0.178) / BPN ;
+          P2 := (R1 + R2) / 2 ;
+          PResSimulT.TabResult[68, PResSimulT.NbJSim] := P2
+            - PResSimulT.TabResult[67, PResSimulT.NbJSim] ;
+        end ;
+        1 : // Lactation
+        begin
+          // Energie m�tabolisable entretien
+          EMEnt := Power (PVVNet, 0.75) * EELact * CoeffEntLact ;
+          PResSimulT.TabResult[74, PResSimulT.NbJSim] := EMEnt ;
+          // Energie m�tabolisable thermor�gulation
+          EMThe := 0 ;
+          PResSimulT.TabResult[75, PResSimulT.NbJSim] := EMThe ;
+          // Energie m�tabolisable activit�
+          EMAct := 0 ;
+          PResSimulT.TabResult[76, PResSimulT.NbJSim] := EMAct ;
+          // Production d'�nergie dans le lait
+          RA := 0.0000023096 * Power (Duree, 4) - 0.00027619 * Power (Duree, 3) + 0.012889 * Power (Duree, 2) - 0.28116 * Duree + 4.799 ;
+          ENProd := (20.6 * GMQPt * 1000 - 376 * Sevres) * RA * Exp (-0.025 * Jour) * Exp (-Exp (0.5 - 0.1 * Jour)) / 1000 ;
+          ENProdCum := ENPRodCum + ENProd ;
+          EMProd := ENProd / KL ;
+          PResSimulT.TabResult[77, PResSimulT.NbJSim] := EMProd ;
+          // Production d'azote dans le lait
+          NRProd := (0.0257 * GMQPt * 1000 + 0.42 * Sevres) * RA * Exp (-0.025 * Jour) * Exp (- Exp (0.5 - 0.1 * Jour)) ;
+          NRProdCum := NRProdCum + NRProd ;
+          PProd := NRProd * 6.38 / 50 ;
+          PResSimulT.TabResult[69, PResSimulT.NbJSim] := PProd ;
+          PProdCum := PProdCum + PProd ;
+          PResSimulT.TabResult[40, PResSimulT.NbJSim] := NRProd * 6.38 ;
+          // R�tention possible par les apports d'acides amin�s
+          PResSimulT.TabResult[41, PResSimulT.NbJSim] := (TabAAdig[0] - (AAm75[0] * Power (PVVTot, 0.75) + IngereSec * AAendogene[0])) * kAA[0] / AAbody[0] ;
+          NRAA[1] := -14.2 + 1.335 * TabAAdig[1] - 0.629 * NRProd ;
+          PResSimulT.TabResult[42, PResSimulT.NbJSim] := (-14.2 + 1.335 * TabAAdig[1]) / 0.629 * 6.25 ;
+          for i := 2 to 12 do
+          begin
+            EqLysd := TabAAdig[i] * 100 / ProtIdLact[i] ;
+            NRAA[i] := -14.2 + 1.335 * EqLysd - 0.629 * NRProd ;
+            if EqLysd > 0
+            then
+              PResSimulT.TabResult[41 + i, PResSimulT.NbJSim] := (-14.2 + 1.335 * EqLysd) / 0.629 * 6.25 ;
+          end ;
+          // met+cys
+          EqLysd := (TabAAdig[2] + TabAAdig[3]) * 100 / (ProtIdLact[2] + ProtIdLact[3]) ;
+          NRAA[13] := -14.2 + 1.335 * EqLysd - 0.629 * NRProd ;
+          if EqLysd > 0
+          then
+            PResSimulT.TabResult[54, PResSimulT.NbJSim] := (-14.2 + 1.335 * EqLysd) / 0.629 * 6.25 ;
+          // phe+tyr
+          EqLysd := (TabAAdig[6] + TabAAdig[7]) * 100 / (ProtIdLact[6] + ProtIdLact[7]) ;
+          NRAA[14] := -14.2 + 1.335 * EqLysd - 0.629 * NRProd ;
+          if EqLysd > 0
+          then
+            PResSimulT.TabResult[55, PResSimulT.NbJSim] := (-14.2 + 1.335 * EqLysd) / 0.629 * 6.25 ;
+          // Premier facteur limitant le d�pot de prot�ines
+          NR := NRAA[1] ;
+          for i := 2 to 14 do
+            if (i <> 3) and (i <> 7) // Ignorer 'cys' et 'tyr'
+            then
+              if NRAA[i] < NR
+              then
+                NR := NRAA[i] ;
+          // R�tention azot�e maternelle
+          if NR > 0
+          then
+            NR := 0 ;
+          // Mobilisation des r�serves �nerg�tiques
+          EMRes := EMIng - EMEnt - EMThe - EMAct - EMProd ;
+          if EMRes > 0
+          then // D�p�t
+          begin
+            ENRes := EMRes * KLip ;
+            ENProt := 0 ;
+            ENLip := ENRes ;
+            Chaleur := EMEnt + EMThe + EMAct + EMProd * (1 - KL) + EMRes * (1 - KLip)
+          end
+          else // Mobilisation
+          begin
+            ENRes := EMRes * KL / KResL ;
+            ENProt := Min (NR * 6.25 * 23.8 / 1000, ENRes * (1 - RatioLP)) ;
+            ENLip := ENRes - ENProt ;
+            Chaleur := EMEnt + EMThe + EMAct + (EMProd + EMRes) * (1 - KL) - EMRes * KL / KResL * (1 - KResL) ;
+          end ;
+          ENResCum := ENResCum + ENRes ;
+          PResSimulT.TabResult[70, PResSimulT.NbJSim] := Chaleur ;
+          NRRes := ENProt / 6.25 / 23.8 * 1000 ;
+          // Excr�tion azot�e
+          NExcF := (MATIng - MATdIng) / 6.25 ;
+          NExcU := (MATdIng / 6.25) - NR - NRProd ;
+          // D�p�ts de prot�ines et lipides
+          PDNet := NRRes * 6.25 ;
+          PResSimulT.TabResult[63, PResSimulT.NbJSim] := PDNet ;
+          PDTot := NR * 6.25 ;
+          PResSimulT.TabResult[64, PResSimulT.NbJSim] := PDTot ;
+          LD := ENLip / 39.7 * 1000 ;
+          PResSimulT.TabResult[66, PResSimulT.NbJSim] := LD ;
+          p := p + PDNet / 1000 ;
+          l := l + LD / 1000 ;
+          // Poids vif
+          R1 := -((p - 2.28) * 45.94 + (ENResCum + 1024) * 0.333) / APN ;
+          R2 := -((p - 2.28) * 1.3311 + (l + 24.5) * 0.333) / BPN ;
+          PVVNet := (R1 + R2) / 2 ;
+          PVVTot := PVVNet ;
+          PVTot := PVVTot / PV2PVV ;
+          PResSimulT.TabResult[59, PResSimulT.NbJSim] := PVTot
+            - PResSimulT.TabResult[58, PResSimulT.NbJSim] ;
+          PVNet := PVVNet / PV2PVV ;
+          PResSimulT.TabResult[61, PResSimulT.NbJSim] := PVNet
+            - PResSimulT.TabResult[60, PResSimulT.NbJSim] ;
+          // Epaisseur de lard dorsale
+          R1 := ((p - 2.28) * 13.66 - (ENResCum + 1024) * 0.178) / APN ;
+          R2 := ((p - 2.28) * 0.221 - (l + 26.4) * 0.178) / BPN ;
+          P2 := (R1 + R2) / 2 ;
+          PResSimulT.TabResult[68, PResSimulT.NbJSim] := P2
+            - PResSimulT.TabResult[67, PResSimulT.NbJSim] ;
+        end ;
+        else // ISSF
+        begin
+          // Energie m�tabolisable entretien
+          EMEnt := Power (PVVTot, 0.75) * EEGest * CoeffEntGest ;
+          PResSimulT.TabResult[74, PResSimulT.NbJSim] := EMEnt ;
+          // Energie m�tabolisable thermor�gulation
+          case RuleLoge[NumRuleLoge].Typ of
+            0 : // Logement individuel
+              if Temperature < TCIInd
+              then
+                EMThe := (TCIInd - Temperature) * Power (PVVTot, 0.75) * EThInd / 1000
+              else
+                EMThe := 0 ;
+            1 : // Logement Collectif
+              if Temperature < TCICol
+              then
+                EMThe := (TCICol - Temperature) * Power (PVVTot, 0.75) * EThCol / 1000
+              else
+                EMThe := 0 ;
+            else
+              EMThe := 0 ;
+          end ;
+          PResSimulT.TabResult[75, PResSimulT.NbJSim] := EMThe ;
+          // Energie m�tabolisable acivit�
+          EMAct := 0.3 * Power (PVVTot, 0.75) * (Activite - 240) / 1000 ;
+          PResSimulT.TabResult[76, PResSimulT.NbJSim] := EMAct ;
+          // R�tention azot�e potentielle
+          Case Cycle of
+            1 : // Port�e 1
+              CorrNR := 0.5708 ;
+            2 : // Port�e 2
+              CorrNR := 0.4345 ;
+            else
+              CorrNR := 0.3664 ;
+          end;
+          if (Jour < 98)
+          then
+            CorrJ := Jour
+          else
+            CorrJ := Jour - 6 / 16 * (Jour - 98) ;
+          NRPot := (-0.43 + 45.92 * (CorrJ / 100) - 105.35 * Power ((CorrJ / 100), 2) + 64.388 * Power ((CorrJ / 100), 3) + CorrNR * (EMIng - EMThe - EMEntInit)) * 0.85 ;
+          PResSimulT.TabResult[40, PResSimulT.NbJSim] := NRPot * 6.25 ;
+          // R�tention possible par les apports d'acides amin�s
+          NRAA[0] := (TabAAdig[0] - (AAm75[0] * Power (PVVTot, 0.75) + IngereSec * AAendogene[0])) * kAA[0] / AAbody[0] / 6.25 ;
+          NRAA[1] := (TabAAdig[1] - 0.036 * Power (PVVTot, 0.75)) * KLysGest / 0.065 / 6.25 ;
+          for i := 2 to 12 do
+          begin
+            if ProtIdGest[i] = 0
+            then
+              EqLysd := 0
+            else
+              EqLysd := TabAAdig[i] * 100 / ProtIdGest[i] ;
+            NRAA[i] := (EqLysd - 0.036 * Power (PVVTot, 0.75)) * KLysGest / 0.065 / 6.25 ;
+          end ;
+          // met+cys
+          if ProtIdGest[2] + ProtIdGest[3] = 0
+          then
+            EqLysd := 0
+          else
+            EqLysd := (TabAAdig[2] + TabAAdig[3]) * 100 / (ProtIdGest[2] + ProtIdGest[3]) ;
+          NRAA[13] := (EqLysd - 0.036 * Power (PVVTot, 0.75)) * KLysGest / 0.065 / 6.25 ;
+          // phe+tyr
+          if ProtIdGest[6] + ProtIdGest[7] = 0
+          then
+            EqLysd := 0
+          else
+            EqLysd := (TabAAdig[6] + TabAAdig[7]) * 100 / (ProtIdGest[6] + ProtIdGest[7]) ;
+          NRAA[14] := (EqLysd - 0.036 * Power (PVVTot, 0.75)) * KLysGest / 0.065 / 6.25 ;
+          for i := 0 to 14 do
+            if NRAA[i] > 0
+            then
+              PResSimulT.TabResult[41 + i, PResSimulT.NbJSim] := NRAA[i] * 6.25 ;
+          // Premier facteur limitant le d�pot de prot�ines
+          NRPotAA := NRAA[0] ;
+          for i := 1 to 14 do
+            if (i <> 3) and (i <> 7) // Ignorer 'cys' et 'tyr'
+            then
+              if (NRAA[i] > 0) and (NRAA[i] < NRPotAA)
+              then
+                NRPotAA := NRAA[i] ;
+          // R�tention azot�e
+          NR := Min (NRPot, NRPotAA) ;
+          // R�tention azot�e maternelle
+          NRRes := NR ;
+          // Energie retenue dans les tissus maternels et production de chaleur
+          ENProt := NRRes * 6.25 * 23.8 / 1000 ;
+          EMProt := ENProt / KProt ;
+          EMLip := EMIng - EMEnt - EMThe - EMAct - EMProt ;
+          if EMLip > 0
+          then
+          begin
+            ENLip := EMLip * KLip ;
+            Chaleur := EMEnt + EMThe + EMAct + EMProt * (1 - KProt) + EMLip * (1 - KLip) ;
+          end
+          else
+          begin
+            ENLip := (EMIng - EMEnt - EMThe - EMAct - EMProt) / KResGest ;
+            Chaleur := EMEnt + EMThe + EMAct + EMProt * (1 - KProt) - EMLip * (1 - KResGest);
+          end;
+          PResSimulT.TabResult[70, PResSimulT.NbJSim] := Chaleur ;
+          ENRes := ENProt + ENLip ;
+          ENResCum := ENResCum + ENRes ;
+          // Excr�tion azot�e
+          NExcF := (MATIng - MATdIng) / 6.25 ;
+          NExcU := (MATdIng / 6.25) - NR ;
+          // D�p�ts de prot�ines et lipides
+          PDNet := NRRes * 6.25 ;
+          PResSimulT.TabResult[63, PResSimulT.NbJSim] := PDNet ;
+          PDTot := NR * 6.25 ;
+          PResSimulT.TabResult[64, PResSimulT.NbJSim] := PDTot ;
+          LD := ENLip / 39.7 * 1000 ;
+          PResSimulT.TabResult[66, PResSimulT.NbJSim] := LD ;
+          p := p + PDNet / 1000 ;
+          l := l + LD / 1000 ;
+          // Poids vif
+          R1 := -((p - 2.28) * 45.94 + (ENResCum + 1024) * 0.333) / APN ;
+          R2 := -((p - 2.28) * 1.3311 + (l + 24.5) * 0.333) / BPN ;
+          PVVNet := (R1 + R2) / 2 ;
+          PVVTot := PVVNet ;
+          PVTot := PVVTot / PV2PVV ;
+          PResSimulT.TabResult[59, PResSimulT.NbJSim] := PVTot
+            - PResSimulT.TabResult[58, PResSimulT.NbJSim] ;
+          PVNet := PVVNet / PV2PVV ;
+          PResSimulT.TabResult[61, PResSimulT.NbJSim] := PVNet
+            - PResSimulT.TabResult[60, PResSimulT.NbJSim] ;
+          // Epaisseur de lard dorsale
+          R1 := ((p - 2.28) * 13.66 - (ENResCum + 1024) * 0.178) / APN ;
+          R2 := ((p - 2.28) * 0.221 - (l + 26.4) * 0.178) / BPN ;
+          P2 := (R1 + R2) / 2 ;
+          PResSimulT.TabResult[68, PResSimulT.NbJSim] := P2
+            - PResSimulT.TabResult[67, PResSimulT.NbJSim] ;
+        end ;
+      end ;
+      Inc (Age) ;
+    end ; // Fin boucle jours
+    if TypeStade = 0
+    then // Gestation
+      PVTot := PVNet ; // Mise bas
+  end ; // Fin boucle stades
+end ;
+
+end.
