[gtk+] (226 commits) Non-fast-forward update to branch wip/otte/shader



The branch 'wip/otte/shader' was changed in a way that was not a fast-forward update.
NOTE: This may cause problems for people pulling from the branch. For more information,
please see:

 https://wiki.gnome.org/Git/Help/NonFastForward

Commits removed from the branch:

  98b1aa9... gsk: Add a skeleton for a GLSL parser
  baddc27... gsksl: Start parsing statements by parsing constants
  866af2a... gsksl: Parse assignments
  34690af... gsksl: Add gsksltypesprivate.h
  84b0494... gskslnode: Add gsk_sl_node_get_return_type()
  45a8d8d... gskslnode: Add gsk_sl_node_is_constant()
  04fb84f... gskslnode: Add variables
  26e8395... gskslnode: Add GskSlNodeOperation
  ccab6fd... gsksltype: Add support for vector types
  38b1691... gsksltype: Add matrix type
  94bbe66... gskslnode: Add comparison and shift operators
  5ccdaa4... gskslnode: Add builtin constructors
  c17cae1... gskslnode: Parse return statements
  d66ab40... gtk: Add gtk-glsl binary
  58d3398... gsk: Add GskSlPointerType
  7db3f70... gsksl: Implement skeleton SPIRV output
  8428a82... gsksltokenizer: Always return idents
  ea24bd7... gsksl: Split out GskSlProgram
  8345763... gsksl: Introduce GskSlCompiler
  fc23ca1... gskslcompiler: Add support for adding defines
  3c2e375... gskslpreprocessor: Implement #define and #undef
  73b3f34... gsksl: Add GskSlVariable
  62722e1... gsksl: Split Expression from Node
  12284ac... gsksl: Turn functions into functions
  4dccc0b... gskslfunction: Change name printing to name getting
  4513271... gskslprogram: Parse global variables
  2032dd0... gsksl: Introduce GskSlValue
  15bda4f... gsksl: Redo declaration "decorator" parsing
  5deeec3... gsksl: Parse common layout() specifiers
  d5541f9... gskslexpression: Change is_constant() to get_constant()
  7769bdb... gskslvariable: Store constness of variables
  c49cd9a... gsksldeclaration: Throw an error if a variable initializer 
  6a0ff0f... gskslvariable: Allow storing an initializer value with a va
  30b4ac6... gskslprogram: Allow variables to have constant initializers
  6f9738a... gskslexpression: References to const variables are const
  4055d15... gsksltype: Add gsk_sl_type_get_index_stride()
  931d04b... gskslexpression: Parse swizzles
  60c3588... gskslpreprocessor: Redo error emission
  9aeeaa2... gsksl: Add an error enum
  1304e46... gskslpreprocessor: Return fatalness of parsing
  9903e98... gsksl: Make expression parsing never fail
  4fdd779... gskslnode: Always return a statement
  b2a92bb... gskslscope: Track function calls
  b88fbe8... gskslexpression: Implment function calls
  c968f8e... gsksl: Add support for structs
  74785d0... gsksl: Add support for parsing members of struct variables
  18b04e7... gsksltype: Generate better type names
  df62d36... gskslfunction: Properly type-check calls to struct construc
  7e55acc... gsksl: Introduce gsk_sl_preprocessor_sync()
  1b37f36... gskslfunction: Parse arguments
  fce7621... gskslexpression: Parse (sub)expressions in parenthesis
  32bc73e... gskslexpression: Change function call error handling
  d85af64... gskslexpression: Implement negation
  94e3a88... gskslfunction: Split regular and builtin constructors
  bc02d00... gskslfunction: Reorganize gsk_sl_function_matches()
  096ebd0... gsksl: Add support for overloaded functions
  2371e6d... gsksl: Add GskSlPrinter
  cf56d4a... gsksl: Add native functions
  54f91fd... gsksl: Rename GskSlNode to GskSlStatement
  0e67033... gskslstatement: Print semicolon in the statement print func
  8fe27a8... gskslstatement: Parse compound statements
  a198b7d... gsksl: Don't return a value from gsk_sl_statement_write_spv
  bb627e5... gskslfunction: the body of a function is a single statement
  d4652eb... gskslstatement: Handle if statements
  47a845a... gskslpreprocessor: Implement #ifdef, #else and #endif
  28fc521... gsksltype: Turn void into a custom type class
  23e58df... gskslstatement: Add gsk_sl_Stement_get_jump()
  4295317... gsksl: Redo qualifier handling
  b305bc3... gskslqualifier: Handle uniform variables
  f0322e2... gsksl: Add support for parsing blocks
  ecdcdfe... gskslqualifier: Implement layout(push_constant)
  a557b67... gsksltokenizer: Parse strings
  66cb3be... gsk: Add GskCodeSource
  cdc93ff... gskslcompiler: Provide a way to compile files
  56a3471... gskslpreprocessor: Implement #include
  98b0c77... gskslpreprocessor: Support parsing #version
  cf8bd60... gsksltype: Add concept of components
  7b51615... gskslvalue: Add gsk_sl_value_to_string ()
  ba7aae8... gsksl: Builtin constructors are no longer functions
  4aa45db... gskslfunction: Add gsk_sl_function_get_constant()
  4e33c39... gsksltype: Add gsk_sl_type_value_equal()
  30714c6... gsksl: Implement constructor writing to SPIR-V
  3abcd5f... gskslexpression: Split multiplication from other binary ope
  51f65f0... gskslprinter: Deal with non-normal floating points
  03ea423... gsksl: Add gsk_spv_writer_get_id_for_zero()
  accfbb1... gsksltype: Add gsk_sl_type_get_matching()
  dd69bc7... gskslstatement: Add SPV code for return statement
  53ef891... gskslfunction: Actually write arguments to SPV
  5c5a8ae... gskslexpression: Implement Division
  30b28cd... gskpsv: Completely redo SPV writing
  cdab5b5... gskspv: Add GskSpvCodeBlock
  728b378... gskspv: Allow writing function calls
  b22bfa2... gskspvwriter: Put the declaration section into the block
  5357d62... gskspv: emit Debug information
  f8316f7... gskspvwriter: Allow writing a function with initializer
  b3f4b0d... gskspv: Reorganize code more
  80dc046... gskspv: Claim to support the same source extensions as glsl
  7b69fe0... gskspv: Variables can go different places
  7055d15... gsksl: Split binary expressions into their own header
  95a2e49... gskslexpression: Move division to the new binary vfuncs
  b31be12... gskslexpression: Move GskSlExpressionOperation to binaries
  4fb9d96... gskslexpression: Convert assignment expression to GskSlBina
  e18e973... gskslexpression: Add gsk_sl_expression_is_assignable()
  a6d805c... gsksl: Get rid of pointer types
  4ab684f... gskspv: Add GskSpvAccessChain
  0e78b78... gskspv: Ensure function labels come before variables
  8fa27a4... gsksl: Introduce GskSlFunctionType
  6f68831... gskslvariable: Add load()/store() functions
  df2baa0... gskslvariable: Make it classed
  80d1278... gskslvariable: Add a class for parameters
  eed9ff6... gskslvariable: Fold constant variables away in SPV output
  ffc1724... gskspvwriter: Add optimization for access chain
  b07c423... gskslexpression: Add spv writing optimization
  b6b0ed2... gskspv: Pass inout parameters by reference
  ee7ccf0... gskslprogram: Split out GskSlDeclaration
  abbc4f6... gsksldeclaration: Type declarations aren't variables
  cf647a5... gskspv: Collect in and out variables
  487aaf2... gsksl: Emit decorations for variables
  85c7d3f... gsksl: Implement addition
  3953dd5... gskspv: Implement writing constructor functions
  8e1655d... gsksl: Implement subtraction
  286271c... gsksl: Implement relational comparisons
  1bb1532... gskslexpression: Add a logical or expression
  885c087... gskslexpression: Fold constant expressions into SPIRV
  ce2c5a8... gskslexpression: Implement a logical and expression
  344ece7... gsk: Add GskSlEnvironment
  a4b7c95... gskslfunction: Move native function details to native funct
  b8b1d03... gskslnative: Reorganize more
  4dae048... gskslstatement: Add a return value to spirv writing
  dd1112c... gskslexpression: Function arguments are evaluated randomly
  f6aff70... gskspv: Generate code for the extended instructions
  1c402f6... gskspv: Change the way we deal with labels
  9252050... gskslnative: Implement all native functions
  d6b9c38... gsksltype: Write decorations for struct and block members
  be818d8... gskslvariable: Add API to query if access chain usage is po
  eaa8b48... testsuite: Add a simple test runner for errors
  fe2f469... gsksldeclaration: Correctly parse initializers
  861768e... gsksl: Add support for stages
  6529a0f... gsksl: Check qualifier/type combinations are valid
  ead6c8c... gsksl: Parse interpolation qualifiers
  04c22a9... gskslexpression: Parse ++ and -- increment and decrement
  a1523ac... gsksltype: Add gsk_sl_type_is_basic()
  121a5c5... gskspvwriter: Change get_id_for_zero/one() functions
  16b69d0... gsksl: Don't pass matcher to function argument parser
  db13828... gskslstatement: Implement for loops
  16dbb7d... gsksl: Allow an optional access qualifier of -1
  50cff05... gskslqualifier: Require type to determine storage class
  d9e641f... gskspv: Deal with ImageOperands
  dac4dc0... gsksltype: Add sampler types
  dd2ee39... gsksl: Comparisons aren't allowed between opaque types
  46f02d0... gskslbinary: Implement equal and not equal operations
  bf6e9a2... gsksl: Add gsk_sl_expression_parse_integral_constant()
  57ca613... gsksltype: Implement arrays
  2a789a1... gsksltype: Add hash/equal vfuncs
  67c7318... gsksl: Parse array declarations
  85edae6... gsksl: Add a special case for vector-to-vector casts
  2a3adb2... gsksl: Add initial support for native variables
  62e0c30... gskslexpression: Detect out of range for array indexing
  8ffe444... gskslexpression: Implement conditional expressions
  8f47681... gskslstatement: Implement discard statement
  2aa03a1... gskslexpression: Make gsk_sl_expression_write_spv() take a 
  c400f47... gskslexpression: Implement initializers
  33fb785... gsksl: Move access chain API to GskSlVariable
  afa391d... gskslvariable: Refactor
  8947ad4... gsksltype: Make sure blocks can't be compared
  5c7f959... gskslexpression: Add an "error" expression
  39e8159... gskslvariable: Remove gsk_sl_variable_store_spv()
  6d84cbc... gskslvariable: Make creating the access chain a vfunc
  8f2d807... gsksl: Redo block parsing
  0e9a762... gsksl: Add support for native blocks
  7f4e90a... gsksl: Error on redeclaration of variable
  1909611... gskslpreprocessor: Redo preprocessor directive parsing
  5e21959... gskslpreprocessor: Error if #endif is missing
  a6973a3... gskslpreprocessor: Implement #if and #elif
  22cf015... gskslstatement: Implement break
  038ba31... gskslbinary: Implement modulo
  3f99c22... gskslstatement: Implement switch()

Commits added to the branch:

  a65730f... modules/input/gtkimcontextime.c: Fix build (*)
  006207e... gdk/win32/gdkwindow-win32.c: Fix gdk_win32_window_set_icon_ (*)
  a601e5d... gtk/gtkwin32theme.c: Include gdk/gdkprivate.h (*)
  5b9177f... testsuite/gsk/test-render-nodes.c: Include <stdlib.h> (*)
  20fc576... gtk/gtkcssenumvalue.c: Deal with __builtin_popcount on MSVC (*)
  0d82de5... Adwaita: Remove focus outlines from scrollbars and scales (*)
  b6c41e5... gdk: Clear GL context when window is withdrawn (*)
  18b8a7f... Add a state flag for visible focus (*)
  8b15eab... Set the new state flag (*)
  4209c17... Support the new state in CSS selectors (*)
  0d4bd03... Always draw outline (*)
  46d4dee... Remove a shortcut in gtk_widget_set_focus_child (*)
  f8e74e8... Some minimal theme fixes for focus drawing (*)
  fb85896... Drop unused includes of gtkrender.h (*)
  5bdc67f... Drop gtk_cell_renderer_get_size (*)
  d2d8fb0... icon-browser: Make non-symbolic icons visible again (*)
  db49d12... wayland: Don't spew warnings for blank cursors (*)
  fda120c... printing: Install printbackends (*)
  29d1cc2... actionable: Allow all detailed action name formats (*)
  07beb6d... appchooserwidget: Don't limit application list unconditiona (*)
  028e39d... wayland: Do not constrain saved window size (*)
  1b279e3... Wayland: Implement KDE's SSD protocol (*)
  bdd2ca9... GtkHeaderBar: Reconsider buttons if any tiling state change (*)
  999848e... wayland: scale down reported monitor geometry (*)
  ea91ab1... gsk: Make text nodes more compact (*)
  559d324... GtkPathBar: Centralize handling of outstanding cancellables (*)
  4dee08d... sizerequest: Don't pass uninitialized values to measure (*)
  50d9484... Adwaita: Add back visible focus outlines for list rows (*)
  183538c... Bump up the dependency on libepoxy (*)
  02eb344... x11: Query whether we have GLX support (*)
  dc0570c... gsk: Drop the GskRenderer::scale-factor property (*)
  6560961... vulkan: Handle changing window scale (*)
  a0bbd14... gsk: Scale glyphs in the glyph cache (*)
  a48015d... inspector: Show details for shadow nodes (*)
  439e105... Triival cleanup (*)
  ca7c148... gsk: Apply scale factor for fallback rendering (*)
  1dbc50f... Adwaita: Add scaled version of bullets and checks (*)
  99d3d31... Adwaita: Use scaled icons for checks and bullets (*)
  598d22d... Avoid creating trivial shadow nodes (*)
  457bd2b... cssimagescaled: Just return the computed image (*)
  8b0f60b... checkbutton: Destroy indicator widget when draw-indicator i (*)
  0be4166... inspector: Remove node != NULL check from recorder model (*)
  ff6cd8f... widget: Remove parent-set signal (*)
  09239eb... widget: Don't notify :parent when rearranging widgets (*)
  91f40eb... widget: Make parent property read-only (*)
  d5155ef... screen: Remove unused vfuncs (*)
  4811898... inspector: Use the new monitor change signals (*)
  f29b774... gdk: Remove leftovers from GdkScreen::size-changed removal (*)
  916981f... cssimagescaled: Remove now unused struct member (*)
  3a298f8... gsk: Add a skeleton for a GLSL parser
  bc5c3e1... gsksl: Start parsing statements by parsing constants
  4e0def2... gsksl: Parse assignments
  da5417d... gsksl: Add gsksltypesprivate.h
  7a215a6... gskslnode: Add gsk_sl_node_get_return_type()
  dc519ad... gskslnode: Add gsk_sl_node_is_constant()
  ad4b456... gskslnode: Add variables
  0362778... gskslnode: Add GskSlNodeOperation
  0e56c28... gsksltype: Add support for vector types
  b6adb44... gsksltype: Add matrix type
  36a61f0... gskslnode: Add comparison and shift operators
  f607087... gskslnode: Add builtin constructors
  c7590f3... gskslnode: Parse return statements
  447f525... gtk: Add gtk-glsl binary
  45ad50a... gsk: Add GskSlPointerType
  9417507... gsksl: Implement skeleton SPIRV output
  d351100... gsksltokenizer: Always return idents
  eee9142... gsksl: Split out GskSlProgram
  f829971... gsksl: Introduce GskSlCompiler
  67b60b5... gskslcompiler: Add support for adding defines
  935402e... gskslpreprocessor: Implement #define and #undef
  4deadde... gsksl: Add GskSlVariable
  7e86043... gsksl: Split Expression from Node
  eb12740... gsksl: Turn functions into functions
  b522801... gskslfunction: Change name printing to name getting
  4395675... gskslprogram: Parse global variables
  cf40318... gsksl: Introduce GskSlValue
  a7fce56... gsksl: Redo declaration "decorator" parsing
  c267254... gsksl: Parse common layout() specifiers
  545ce13... gskslexpression: Change is_constant() to get_constant()
  3fc253c... gskslvariable: Store constness of variables
  ea45570... gsksldeclaration: Throw an error if a variable initializer 
  850c6d1... gskslvariable: Allow storing an initializer value with a va
  7e4d163... gskslprogram: Allow variables to have constant initializers
  0e28413... gskslexpression: References to const variables are const
  c8f2349... gsksltype: Add gsk_sl_type_get_index_stride()
  13dd620... gskslexpression: Parse swizzles
  46c9a3a... gskslpreprocessor: Redo error emission
  2bceaed... gsksl: Add an error enum
  a2aaf2b... gskslpreprocessor: Return fatalness of parsing
  2a7f343... gsksl: Make expression parsing never fail
  1d87210... gskslnode: Always return a statement
  458a9e3... gskslscope: Track function calls
  4d5cf80... gskslexpression: Implment function calls
  8d6a332... gsksl: Add support for structs
  500e6bc... gsksl: Add support for parsing members of struct variables
  4450d83... gsksltype: Generate better type names
  c30089a... gskslfunction: Properly type-check calls to struct construc
  fad4112... gsksl: Introduce gsk_sl_preprocessor_sync()
  c22b36d... gskslfunction: Parse arguments
  6fa6e99... gskslexpression: Parse (sub)expressions in parenthesis
  69b4834... gskslexpression: Change function call error handling
  21fe62e... gskslexpression: Implement negation
  88eac26... gskslfunction: Split regular and builtin constructors
  d3b452e... gskslfunction: Reorganize gsk_sl_function_matches()
  11ab6f8... gsksl: Add support for overloaded functions
  6f80039... gsksl: Add GskSlPrinter
  3279b11... gsksl: Add native functions
  6247fae... gsksl: Rename GskSlNode to GskSlStatement
  622dccd... gskslstatement: Print semicolon in the statement print func
  607b4b4... gskslstatement: Parse compound statements
  e2d6d07... gsksl: Don't return a value from gsk_sl_statement_write_spv
  7e55c47... gskslfunction: the body of a function is a single statement
  a05961d... gskslstatement: Handle if statements
  7b416c9... gskslpreprocessor: Implement #ifdef, #else and #endif
  196ee55... gsksltype: Turn void into a custom type class
  a3dec06... gskslstatement: Add gsk_sl_Stement_get_jump()
  19ae9c0... gsksl: Redo qualifier handling
  60add60... gskslqualifier: Handle uniform variables
  deb3d26... gsksl: Add support for parsing blocks
  4927e22... gskslqualifier: Implement layout(push_constant)
  a07924c... gsksltokenizer: Parse strings
  e48be68... gsk: Add GskCodeSource
  3547663... gskslcompiler: Provide a way to compile files
  c5a1eaf... gskslpreprocessor: Implement #include
  c624bae... gskslpreprocessor: Support parsing #version
  6af46a0... gsksltype: Add concept of components
  a50d932... gskslvalue: Add gsk_sl_value_to_string ()
  0c567d6... gsksl: Builtin constructors are no longer functions
  0a9f758... gskslfunction: Add gsk_sl_function_get_constant()
  6e7c348... gsksltype: Add gsk_sl_type_value_equal()
  764f670... gsksl: Implement constructor writing to SPIR-V
  420fb00... gskslexpression: Split multiplication from other binary ope
  6bdf46f... gskslprinter: Deal with non-normal floating points
  9825d95... gsksl: Add gsk_spv_writer_get_id_for_zero()
  737bb72... gsksltype: Add gsk_sl_type_get_matching()
  bc83778... gskslstatement: Add SPV code for return statement
  c45e88f... gskslfunction: Actually write arguments to SPV
  bfdc7ad... gskslexpression: Implement Division
  918ff3d... gskpsv: Completely redo SPV writing
  807b63f... gskspv: Add GskSpvCodeBlock
  a29a486... gskspv: Allow writing function calls
  cccca8c... gskspvwriter: Put the declaration section into the block
  1455ef2... gskspv: emit Debug information
  17661af... gskspvwriter: Allow writing a function with initializer
  6d9a5fe... gskspv: Reorganize code more
  c803f5e... gskspv: Claim to support the same source extensions as glsl
  3482a7d... gskspv: Variables can go different places
  cb975b4... gsksl: Split binary expressions into their own header
  093e919... gskslexpression: Move division to the new binary vfuncs
  41a0ce4... gskslexpression: Move GskSlExpressionOperation to binaries
  115182d... gskslexpression: Convert assignment expression to GskSlBina
  bda72e2... gskslexpression: Add gsk_sl_expression_is_assignable()
  88413ad... gsksl: Get rid of pointer types
  31db111... gskspv: Add GskSpvAccessChain
  940c13c... gskspv: Ensure function labels come before variables
  b63463f... gsksl: Introduce GskSlFunctionType
  1a5615e... gskslvariable: Add load()/store() functions
  53bc1a1... gskslvariable: Make it classed
  6f551ad... gskslvariable: Add a class for parameters
  a0233d9... gskslvariable: Fold constant variables away in SPV output
  c4299a1... gskspvwriter: Add optimization for access chain
  9aa7360... gskslexpression: Add spv writing optimization
  1d5ac3b... gskspv: Pass inout parameters by reference
  9711814... gskslprogram: Split out GskSlDeclaration
  fabb555... gsksldeclaration: Type declarations aren't variables
  bde7a1f... gskspv: Collect in and out variables
  3124dff... gsksl: Emit decorations for variables
  a7f11b5... gsksl: Implement addition
  d6c2c00... gskspv: Implement writing constructor functions
  4e61c71... gsksl: Implement subtraction
  9a0374f... gsksl: Implement relational comparisons
  2ee2457... gskslexpression: Add a logical or expression
  7445483... gskslexpression: Fold constant expressions into SPIRV
  97a80e9... gskslexpression: Implement a logical and expression
  481cb8f... gsk: Add GskSlEnvironment
  4d49471... gskslfunction: Move native function details to native funct
  04dc25e... gskslnative: Reorganize more
  c546e64... gskslstatement: Add a return value to spirv writing
  fde721e... gskslexpression: Function arguments are evaluated randomly
  fd83132... gskspv: Generate code for the extended instructions
  8d5fce4... gskspv: Change the way we deal with labels
  f440e23... gskslnative: Implement all native functions
  4f8a422... gsksltype: Write decorations for struct and block members
  0b7b7a3... gskslvariable: Add API to query if access chain usage is po
  8a59ade... testsuite: Add a simple test runner for errors
  d17abee... gsksldeclaration: Correctly parse initializers
  8431b63... gsksl: Add support for stages
  5472458... gsksl: Check qualifier/type combinations are valid
  41fd672... gsksl: Parse interpolation qualifiers
  b5919bf... gskslexpression: Parse ++ and -- increment and decrement
  6a95433... gsksltype: Add gsk_sl_type_is_basic()
  fe4d17f... gskspvwriter: Change get_id_for_zero/one() functions
  d59333d... gsksl: Don't pass matcher to function argument parser
  031a181... gskslstatement: Implement for loops
  caaf184... gsksl: Allow an optional access qualifier of -1
  15cbfc8... gskslqualifier: Require type to determine storage class
  38a255d... gskspv: Deal with ImageOperands
  516cd4b... gsksltype: Add sampler types
  119f7fe... gsksl: Comparisons aren't allowed between opaque types
  38bc5f3... gskslbinary: Implement equal and not equal operations
  7e9aa97... gsksl: Add gsk_sl_expression_parse_integral_constant()
  d33881e... gsksltype: Implement arrays
  6573df5... gsksltype: Add hash/equal vfuncs
  e304738... gsksl: Parse array declarations
  ac95c06... gsksl: Add a special case for vector-to-vector casts
  59f415d... gsksl: Add initial support for native variables
  9275cec... gskslexpression: Detect out of range for array indexing
  c2773ef... gskslexpression: Implement conditional expressions
  b68aff2... gskslstatement: Implement discard statement
  30c040a... gskslexpression: Make gsk_sl_expression_write_spv() take a 
  ab91b01... gskslexpression: Implement initializers
  2ce1bba... gsksl: Move access chain API to GskSlVariable
  0bc1204... gskslvariable: Refactor
  056cce9... gsksltype: Make sure blocks can't be compared
  ff05d6c... gskslexpression: Add an "error" expression
  648cf09... gskslvariable: Remove gsk_sl_variable_store_spv()
  ad53eed... gskslvariable: Make creating the access chain a vfunc
  a7dac28... gsksl: Redo block parsing
  cb857e7... gsksl: Add support for native blocks
  9f4da8c... gsksl: Error on redeclaration of variable
  651b5bb... gskslpreprocessor: Redo preprocessor directive parsing
  5bb7c2e... gskslpreprocessor: Error if #endif is missing
  39a2772... gskslpreprocessor: Implement #if and #elif
  73ec373... gskslstatement: Implement break
  92fd8cc... gskslbinary: Implement modulo
  3680f08... gskslstatement: Implement switch()

(*) This commit already existed in another branch; no separate mail sent


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]